|
FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
|
Go to the documentation of this file.
21 static ip46_address_t *
24 ip46_address_t *srcs = NULL;
32 n = clib_net_to_host_u16 (
r->n_src_addresses);
38 srcs[0].ip4.as_u32 = 0;
45 for (ii = 0; ii < n; ii++)
59 ip46_address_t
key = {
67 n = clib_net_to_host_u16 (
igmp_group->n_src_addresses);
71 ip46_address_t *
src, *srcs;
77 IGMP_DBG (
" ..group-update: %U (*, %U)",
94 IGMP_DBG (
" ..group-update: %U (*, %U) source exclude ignored",
104 ip46_address_t *s, *srcs;
107 ip46_address_t
key = {
114 IGMP_DBG (
" ..group-block: %U (%U, %U)",
151 ip46_address_t *
src, *srcs;
153 ip46_address_t
key = {
160 if (0 == clib_net_to_host_u16 (
igmp_group->n_src_addresses))
168 IGMP_DBG (
" ..group-update: %U (%U, %U)",
197 case IGMP_MEMBERSHIP_GROUP_mode_is_include:
198 case IGMP_MEMBERSHIP_GROUP_change_to_include:
199 case IGMP_MEMBERSHIP_GROUP_allow_new_sources:
202 case IGMP_MEMBERSHIP_GROUP_block_old_sources:
205 case IGMP_MEMBERSHIP_GROUP_mode_is_exclude:
206 case IGMP_MEMBERSHIP_GROUP_change_to_exclude:
230 if (IGMP_MODE_HOST == config->
mode)
246 for (ii = 0; ii < n_groups; ii++)
IGMP source The representation of a specified source address with in multicast group.
A copy of the report message sent from the worker to the main thread.
void igmp_pkt_query_v3_add_group(igmp_pkt_build_query_t *bq, const igmp_group_t *group, const ip46_address_t *srcs)
IGMP interface configuration.
igmp_src_t * igmp_src_lookup(igmp_group_t *group, const igmp_key_t *key)
igmp group lookup
void igmp_pkt_query_v3_send(igmp_pkt_build_query_t *bq)
IGMP group A multicast group address for which reception has been requested.
igmp_config_t * igmp_config_lookup(u32 sw_if_index)
igmp config lookup
vnet_hw_if_output_node_runtime_t * r
igmp_src_t * igmp_group_src_update(igmp_group_t *group, const igmp_key_t *skey, igmp_mode_t mode)
static void igmp_handle_group_exclude(igmp_config_t *config, const igmp_membership_group_v3_t *igmp_group)
void igmp_pkt_build_query_init(igmp_pkt_build_query_t *bq, u32 sw_if_index)
static u32 igmp_membership_group_v3_length(const igmp_membership_group_v3_t *g)
vnet_main_t * vnet_get_main(void)
igmp_group_t * igmp_group_lookup(igmp_config_t *config, const igmp_key_t *key)
igmp group lookup
static ip46_address_t * igmp_group_mk_source_list(const igmp_membership_group_v3_t *r)
void igmp_handle_report(const igmp_report_args_t *args)
#define vec_validate(V, I)
Make sure vector is long enough for given index (no header, unspecified alignment)
static void igmp_handle_group_block(igmp_config_t *config, const igmp_membership_group_v3_t *igmp_group)
static void igmp_handle_group(igmp_config_t *config, const igmp_membership_group_v3_t *igmp_group)
igmp_membership_report_v3_t report[0]
#define vec_free(V)
Free vector's memory (no header).
format_function_t format_vnet_sw_if_index_name
void igmp_src_blocked(igmp_src_t *src)
#define vec_foreach(var, vec)
Vector iterator.
static void igmp_handle_group_update(igmp_config_t *config, const igmp_membership_group_v3_t *igmp_group)
void igmp_proxy_device_merge_config(igmp_config_t *config, u8 block)
igmp_group_t * igmp_group_alloc(igmp_config_t *config, const igmp_key_t *gkey, igmp_filter_mode_t mode)
typedef igmp_group
Used by a 'host' to enable the reception/listening of packets for a specific multicast group.
igmp_membership_group_v3_t groups[0]