21 static ip46_address_t *
24 ip46_address_t *srcs =
NULL;
40 for (ii = 0; ii < n; ii++)
53 ip46_address_t *src, *srcs;
55 ip46_address_t key = {
62 IGMP_DBG (
" ..group-update: %U (%U, %U)",
85 ip46_address_t *s, *srcs;
88 ip46_address_t key = {
95 IGMP_DBG (
" ..group-block: %U (%U, %U)",
136 switch (igmp_group->
type)
138 case IGMP_MEMBERSHIP_GROUP_mode_is_include:
139 case IGMP_MEMBERSHIP_GROUP_change_to_include:
140 case IGMP_MEMBERSHIP_GROUP_allow_new_sources:
143 case IGMP_MEMBERSHIP_GROUP_block_old_sources:
146 case IGMP_MEMBERSHIP_GROUP_mode_is_exclude:
147 case IGMP_MEMBERSHIP_GROUP_change_to_exclude:
170 if (IGMP_MODE_HOST == config->
mode)
186 for (ii = 0; ii < n_groups; ii++)
#define vec_validate(V, I)
Make sure vector is long enough for given index (no header, unspecified alignment) ...
igmp_membership_group_v3_type_t type
void igmp_pkt_query_v3_send(igmp_pkt_build_query_t *bq)
igmp_membership_group_v3_t groups[0]
igmp_group_t * igmp_group_lookup(igmp_config_t *config, const igmp_key_t *key)
igmp group lookup
vnet_main_t * vnet_get_main(void)
static void igmp_handle_group_update(igmp_config_t *config, const igmp_membership_group_v3_t *igmp_group)
void igmp_handle_report(const igmp_report_args_t *args)
igmp_src_t * igmp_group_src_update(igmp_group_t *group, const igmp_key_t *skey, igmp_mode_t mode)
void igmp_src_blocked(igmp_src_t *src)
format_function_t format_vnet_sw_if_index_name
igmp_membership_report_v3_t report[0]
static void igmp_handle_group(igmp_config_t *config, const igmp_membership_group_v3_t *igmp_group)
igmp_config_t * igmp_config_lookup(u32 sw_if_index)
igmp config lookup
igmp_src_t * igmp_src_lookup(igmp_group_t *group, const igmp_key_t *key)
igmp group lookup
A copy of the report message sent from the worker to the main thread.
igmp_group_t * igmp_group_alloc(igmp_config_t *config, const igmp_key_t *gkey, igmp_filter_mode_t mode)
#define vec_free(V)
Free vector's memory (no header).
void igmp_pkt_query_v3_add_group(igmp_pkt_build_query_t *bq, const igmp_group_t *group, const ip46_address_t *srcs)
static ip46_address_t * igmp_group_mk_source_list(const igmp_membership_group_v3_t *r)
ip4_address_t group_address
IGMP interface configuration.
static u32 igmp_membership_group_v3_length(const igmp_membership_group_v3_t *g)
IGMP group A multicast group address for which reception has been requested.
void igmp_pkt_build_query_init(igmp_pkt_build_query_t *bq, u32 sw_if_index)
ip4_address_t src_addresses[0]
#define vec_foreach(var, vec)
Vector iterator.
static void igmp_handle_group_block(igmp_config_t *config, const igmp_membership_group_v3_t *igmp_group)
IGMP source The representation of a specified source address with in multicast group.