FD.io VPP  v18.07.1-19-g511ce25
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 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_ { IGMP_GROUP_TIMER_QUERY_REPLY, IGMP_GROUP_TIMER_QUERY_SENT, IGMP_GROUP_TIMER_RESEND_REPORT, IGMP_GROUP_TIMER_FILTER_MODE_CHANGE }
 Types of timers maintained for each group. More...
 

Functions

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)
 
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

#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);
igmp_main_t igmp_main
Definition: igmp.c:36
unsigned int u32
Definition: types.h:88
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
Definition: pool.h:464
#define hash_foreach_mem(key_var, value_var, h, body)
Definition: hash.h:461
ip46_address_t igmp_key_t
IGMP Key Used to index groups within an interface config and sources within a list.
Definition: igmp_types.h:49
IGMP group A multicast group address for which reception has been requested.
Definition: igmp_group.h:55
igmp_src_t * srcs
pool of sources
Definition: igmp.h:103

Definition at line 89 of file igmp_group.h.

#define IGMP_GROUP_N_TIMERS   (IGMP_GROUP_TIMER_FILTER_MODE_CHANGE + 1)

Definition at line 49 of file igmp_group.h.

Typedef Documentation

typedef struct igmp_group_t_ igmp_group_t

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

Types of timers maintained for each group.

Enumeration Type Documentation

Types of timers maintained for each group.

Enumerator
IGMP_GROUP_TIMER_QUERY_REPLY 

Timer running to reply to a G/SG specific query.

IGMP_GROUP_TIMER_QUERY_SENT 

wait for response from a sent G/SG specfic query.

Sent when a host leaves a group

IGMP_GROUP_TIMER_RESEND_REPORT 

Timer running to resend report.

IGMP_GROUP_TIMER_FILTER_MODE_CHANGE 

filter-mode change timer, to check if the group can swap to INCLUDE mode (section 6.2.2)

Definition at line 27 of file igmp_group.h.

Function Documentation

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

Definition at line 95 of file igmp_group.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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:

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_t* igmp_group_get ( u32  index)

Definition at line 261 of file igmp_group.c.

+ Here is the caller graph for this function:

u32 igmp_group_index ( const igmp_group_t g)

Definition at line 255 of file igmp_group.c.

+ Here is the caller graph for this function:

u32 igmp_group_n_srcs ( const igmp_group_t group,
igmp_filter_mode_t  mode 
)

Definition at line 233 of file igmp_group.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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 205 of file igmp_group.c.

+ Here is the caller graph for this function:

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 172 of file igmp_group.c.

+ Here is the caller graph for this function:

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 126 of file igmp_group.c.

+ Here is the caller graph for this function:

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_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_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 240 of file igmp_group.c.

+ Here is the caller graph for this function: