|
FD.io VPP
v21.10.1-2-g0a485f517
Vector Packet Processing
|
Go to the documentation of this file.
18 #ifndef __IGMP_GROUP_H__
19 #define __IGMP_GROUP_H__
32 #define foreach_igmp_group_timer \
33 _(QUERY_REPLY, "query-reply") \
34 _(QUERY_SENT, "query-sent") \
35 _(RESEND_REPORT, "resend-report") \
36 _(FILTER_MODE_CHANGE, "filter-mode-change")
43 #define _(v,s) IGMP_GROUP_TIMER_##v,
48 #define IGMP_GROUP_N_TIMERS (IGMP_GROUP_TIMER_FILTER_MODE_CHANGE + 1)
90 #define FOR_EACH_SRC(_src, _group, _filter, _body) \
92 igmp_key_t *__key__; \
94 hash_foreach_mem(__key__, __sid__, ((igmp_group_t*)_group)->igmp_src_by_key[(_filter)], \
96 _src = pool_elt_at_index(igmp_main.srcs, __sid__); \
97 do { _body; } while (0); \
123 const ip46_address_t *
128 const ip46_address_t *
enum igmp_mode_t_ igmp_mode_t
IGMP source The representation of a specified source address with in multicast group.
igmp_group_t * igmp_group_alloc(struct igmp_config_t_ *config, const igmp_key_t *gkey, igmp_filter_mode_t mode)
u32 igmp_group_index(const igmp_group_t *g)
IGMP interface configuration.
IGMP group A multicast group address for which reception has been requested.
vl_api_tunnel_mode_t mode
u32 igmp_group_n_srcs(const igmp_group_t *group, igmp_filter_mode_t mode)
void igmp_group_src_remove(igmp_group_t *group, igmp_src_t *src)
u32 n_reports_sent
The number of times the last report has been sent.
igmp_group_timer_type_t_
Types of timers maintained for each group.
u32 config
The pool index of the config object this group is in.
igmp_src_t * igmp_src_lookup(igmp_group_t *group, const igmp_key_t *key)
igmp group lookup
ip46_address_t * igmp_group_new_intersect_present(igmp_group_t *group, igmp_filter_mode_t mode, const ip46_address_t *saddrs)
#define IGMP_GROUP_N_TIMERS
u32 timers[IGMP_GROUP_N_TIMERS]
A vector of running timers for the group.
#define foreach_igmp_group_timer
QUERY_REPLY = Timer running to reply to a G/SG specific query QUERY_SENT = wait for response from a s...
void igmp_group_clear(igmp_group_t **group)
u8 * format_igmp_group_timer_type(u8 *s, va_list *args)
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
void igmp_group_free_all_srcs(igmp_group_t *group)
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
u8 * format_igmp_group(u8 *s, va_list *args)
igmp_key_t * key
The group's key within the per-interface config.
vl_api_ip4_address_t saddrs[n_srcs]
#define IGMP_N_FILTER_MODES
struct igmp_group_t_ igmp_group_t
IGMP group A multicast group address for which reception has been requested.
igmp_filter_mode_t router_filter_mode
The current filter mode of the group (see 6.2.1)
enum igmp_group_timer_type_t_ igmp_group_timer_type_t
Types of timers maintained for each group.
enum igmp_filter_mode_t_ igmp_filter_mode_t
igmp_group_t * igmp_group_get(u32 index)
igmp_src_t * igmp_group_src_update(igmp_group_t *group, const igmp_key_t *skey, igmp_mode_t mode)
uword * igmp_src_by_key[IGMP_N_FILTER_MODES]
Source list per-filter mode.
ip46_address_t igmp_key_t
IGMP Key Used to index groups within an interface config and sources within a list.