21 static ip46_address_t *
24 ip46_address_t *srcs =
NULL;
38 srcs[0].ip4.as_u32 = 0;
45 for (ii = 0; ii < n; ii++)
59 ip46_address_t *
src, *srcs;
61 ip46_address_t key = {
68 IGMP_DBG (
" ..group-update: %U (%U, %U)",
91 ip46_address_t *s, *srcs;
94 ip46_address_t key = {
101 IGMP_DBG (
" ..group-block: %U (%U, %U)",
142 switch (igmp_group->
type)
144 case IGMP_MEMBERSHIP_GROUP_mode_is_include:
145 case IGMP_MEMBERSHIP_GROUP_change_to_include:
146 case IGMP_MEMBERSHIP_GROUP_allow_new_sources:
149 case IGMP_MEMBERSHIP_GROUP_block_old_sources:
152 case IGMP_MEMBERSHIP_GROUP_mode_is_exclude:
153 case IGMP_MEMBERSHIP_GROUP_change_to_exclude:
176 if (IGMP_MODE_HOST == config->
mode)
192 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.