FD.io VPP  v21.10.1-2-g0a485f517
Vector Packet Processing
igmp_group.h File Reference
+ Include dependency graph for igmp_group.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  igmp_group_t_
 IGMP group A multicast group address for which reception has been requested. More...
 

Macros

#define foreach_igmp_group_timer
 QUERY_REPLY = Timer running to reply to a G/SG specific query QUERY_SENT = wait for response from a sent G/SG specific query. More...
 
#define IGMP_GROUP_N_TIMERS   (IGMP_GROUP_TIMER_FILTER_MODE_CHANGE + 1)
 
#define FOR_EACH_SRC(_src, _group, _filter, _body)
 

Typedefs

typedef enum igmp_group_timer_type_t_ igmp_group_timer_type_t
 Types of timers maintained for each group. More...
 
typedef struct igmp_group_t_ igmp_group_t
 IGMP group A multicast group address for which reception has been requested. More...
 

Enumerations

enum  igmp_group_timer_type_t_ { foreach_igmp_group_timer }
 Types of timers maintained for each group. More...
 

Functions

u8format_igmp_group_timer_type (u8 *s, va_list *args)
 
void igmp_group_clear (igmp_group_t **group)
 
void igmp_group_free_all_srcs (igmp_group_t *group)
 
igmp_group_tigmp_group_alloc (struct igmp_config_t_ *config, const igmp_key_t *gkey, igmp_filter_mode_t mode)
 
igmp_src_tigmp_group_src_update (igmp_group_t *group, const igmp_key_t *skey, igmp_mode_t mode)
 
void igmp_group_src_remove (igmp_group_t *group, igmp_src_t *src)
 
u8format_igmp_group (u8 *s, va_list *args)
 
ip46_address_t * igmp_group_present_minus_new (igmp_group_t *group, igmp_filter_mode_t mode, const ip46_address_t *saddrs)
 the set of present sources minus the new set More...
 
ip46_address_t * igmp_group_new_minus_present (igmp_group_t *group, igmp_filter_mode_t mode, const ip46_address_t *saddrs)
 the set of new sources minus the present set More...
 
ip46_address_t * igmp_group_new_intersect_present (igmp_group_t *group, igmp_filter_mode_t mode, const ip46_address_t *saddrs)
 
u32 igmp_group_n_srcs (const igmp_group_t *group, igmp_filter_mode_t mode)
 
igmp_src_tigmp_src_lookup (igmp_group_t *group, const igmp_key_t *key)
 igmp group lookup More...
 
u32 igmp_group_index (const igmp_group_t *g)
 
igmp_group_tigmp_group_get (u32 index)
 

Macro Definition Documentation

◆ FOR_EACH_SRC

#define FOR_EACH_SRC (   _src,
  _group,
  _filter,
  _body 
)
Value:
do { \
igmp_key_t *__key__; \
u32 __sid__; \
hash_foreach_mem(__key__, __sid__, ((igmp_group_t*)_group)->igmp_src_by_key[(_filter)], \
({ \
_src = pool_elt_at_index(igmp_main.srcs, __sid__); \
do { _body; } while (0); \
})); \
} while (0);

Definition at line 90 of file igmp_group.h.

◆ foreach_igmp_group_timer

#define foreach_igmp_group_timer
Value:
_(QUERY_REPLY, "query-reply") \
_(QUERY_SENT, "query-sent") \
_(RESEND_REPORT, "resend-report") \
_(FILTER_MODE_CHANGE, "filter-mode-change")

QUERY_REPLY = Timer running to reply to a G/SG specific query QUERY_SENT = wait for response from a sent G/SG specific query.

Sent when a host leaves a group RESEND_REPORT = Timer running to resend report FILTER_MODE_CHANGE = to check if the group can swap to INCLUDE mode (section 6.2.2)

Definition at line 32 of file igmp_group.h.

◆ IGMP_GROUP_N_TIMERS

#define IGMP_GROUP_N_TIMERS   (IGMP_GROUP_TIMER_FILTER_MODE_CHANGE + 1)

Definition at line 48 of file igmp_group.h.

Typedef Documentation

◆ igmp_group_t

typedef struct igmp_group_t_ igmp_group_t

IGMP group A multicast group address for which reception has been requested.

◆ igmp_group_timer_type_t

Types of timers maintained for each group.

Enumeration Type Documentation

◆ igmp_group_timer_type_t_

Types of timers maintained for each group.

Enumerator
foreach_igmp_group_timer 

Definition at line 41 of file igmp_group.h.

Function Documentation

◆ format_igmp_group()

u8* format_igmp_group ( u8 s,
va_list *  args 
)

Definition at line 299 of file igmp_group.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ format_igmp_group_timer_type()

u8* format_igmp_group_timer_type ( u8 s,
va_list *  args 
)

Definition at line 285 of file igmp_group.c.

+ Here is the caller graph for this function:

◆ igmp_group_alloc()

igmp_group_t* igmp_group_alloc ( struct igmp_config_t_ config,
const igmp_key_t gkey,
igmp_filter_mode_t  mode 
)

Definition at line 104 of file igmp_group.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ igmp_group_clear()

void igmp_group_clear ( igmp_group_t **  group)

Definition at line 68 of file igmp_group.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ igmp_group_free_all_srcs()

void igmp_group_free_all_srcs ( igmp_group_t group)

Definition at line 22 of file igmp_group.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ igmp_group_get()

igmp_group_t* igmp_group_get ( u32  index)

Definition at line 279 of file igmp_group.c.

+ Here is the caller graph for this function:

◆ igmp_group_index()

u32 igmp_group_index ( const igmp_group_t g)

Definition at line 273 of file igmp_group.c.

+ Here is the caller graph for this function:

◆ igmp_group_n_srcs()

u32 igmp_group_n_srcs ( const igmp_group_t group,
igmp_filter_mode_t  mode 
)

Definition at line 251 of file igmp_group.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ igmp_group_new_intersect_present()

ip46_address_t* igmp_group_new_intersect_present ( igmp_group_t group,
igmp_filter_mode_t  mode,
const ip46_address_t *  saddrs 
)

Definition at line 223 of file igmp_group.c.

+ Here is the caller graph for this function:

◆ igmp_group_new_minus_present()

ip46_address_t* igmp_group_new_minus_present ( igmp_group_t group,
igmp_filter_mode_t  mode,
const ip46_address_t *  saddrs 
)

the set of new sources minus the present set

Definition at line 190 of file igmp_group.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ igmp_group_present_minus_new()

ip46_address_t* igmp_group_present_minus_new ( igmp_group_t group,
igmp_filter_mode_t  mode,
const ip46_address_t *  saddrs 
)

the set of present sources minus the new set

Definition at line 144 of file igmp_group.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ igmp_group_src_remove()

void igmp_group_src_remove ( igmp_group_t group,
igmp_src_t src 
)

Definition at line 38 of file igmp_group.c.

+ Here is the caller graph for this function:

◆ igmp_group_src_update()

igmp_src_t* igmp_group_src_update ( igmp_group_t group,
const igmp_key_t skey,
igmp_mode_t  mode 
)

Definition at line 45 of file igmp_group.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ igmp_src_lookup()

igmp_src_t* igmp_src_lookup ( igmp_group_t group,
const igmp_key_t key 
)

igmp group lookup

Parameters
group- igmp group
key- igmp key

Definition at line 258 of file igmp_group.c.

+ Here is the caller graph for this function:
igmp_main_t_::srcs
igmp_src_t * srcs
pool of sources
Definition: igmp.h:104
pool_elt_at_index
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
Definition: pool.h:549
igmp_group_t_
IGMP group A multicast group address for which reception has been requested.
Definition: igmp_group.h:56
igmp_main
igmp_main_t igmp_main
Definition: igmp.c:36