97 #define _(v,t) case IGMP_CONFIG_TIMER_##v: return (format (s, "%s", t)); 116 s =
format (s,
"interface: %U mode: %U %U",
123 s =
format (s,
"\n %U:%U",
igmp_timer_id_t timers[IGMP_CONFIG_N_TIMERS]
A vector of scheduled query-response timers.
void igmp_timer_retire(igmp_timer_id_t *tid)
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)
igmp_config_t * configs
pool of configs
format_function_t format_vnet_sw_if_index_name
enum igmp_config_timer_type_t_ igmp_config_timer_type_t
void igmp_clear_config(igmp_config_t *config)
igmp clear config
u32 igmp_config_index(const igmp_config_t *c)
Get the pool index for a config.
#define vec_elt_at_index(v, i)
Get vector value at index i checking that i is in bounds.
igmp_config_t * igmp_config_get(u32 index)
Get the config from the pool index.
#define FOR_EACH_GROUP(_group, _config, _body)
uword * igmp_group_by_key
Database of groups joined on the link.
igmp_config_t * igmp_config_lookup(u32 sw_if_index)
igmp config lookup
#define IGMP_CONFIG_N_TIMERS
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
u8 * format_igmp_config_timer_type(u8 *s, va_list *args)
collection of data related to IGMP
u8 * format_igmp_group(u8 *s, va_list *args)
u32 * igmp_config_by_sw_if_index
per-interface DB of configs
ip46_address_t igmp_key_t
IGMP Key Used to index groups within an interface config and sources within a list.
u8 * format_igmp_config(u8 *s, va_list *args)
IGMP interface configuration.
u8 * format_igmp_timer_id(u8 *s, va_list *args)
u32 proxy_device_id
ID of a proxy device this configuration is on.
igmp_group_t * groups
pool of groups
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
IGMP group A multicast group address for which reception has been requested.
#define hash_get_mem(h, key)
void igmp_group_clear(igmp_group_t *group)