18 #ifndef __IGMP_GROUP_H__ 19 #define __IGMP_GROUP_H__ 49 #define IGMP_GROUP_N_TIMERS (IGMP_GROUP_TIMER_FILTER_MODE_CHANGE + 1) 89 #define FOR_EACH_SRC(_src, _group, _filter, _body) \ 91 igmp_key_t *__key__; \ 93 hash_foreach_mem(__key__, __sid__, ((igmp_group_t*)_group)->igmp_src_by_key[(_filter)], \ 95 _src = pool_elt_at_index(igmp_main.srcs, __sid__); \ 96 do { _body; } while (0); \ 120 const ip46_address_t *
125 const ip46_address_t *
u32 igmp_group_index(const igmp_group_t *g)
filter-mode change timer, to check if the group can swap to INCLUDE mode (section 6...
Timer running to resend report.
void igmp_group_free_all_srcs(igmp_group_t *group)
igmp_group_t * igmp_group_get(u32 index)
enum igmp_group_timer_type_t_ igmp_group_timer_type_t
Types of timers maintained for each group.
struct igmp_group_t_ igmp_group_t
IGMP group A multicast group address for which reception has been requested.
#define IGMP_N_FILTER_MODES
u32 n_reports_sent
The number of times the last report has been sent.
igmp_group_t * igmp_group_alloc(struct igmp_config_t_ *config, const igmp_key_t *gkey, igmp_filter_mode_t mode)
void igmp_group_src_remove(igmp_group_t *group, igmp_src_t *src)
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
igmp_src_t * igmp_group_src_update(igmp_group_t *group, const igmp_key_t *skey, igmp_mode_t mode)
Timer running to reply to a G/SG specific query.
u32 timers[IGMP_GROUP_N_TIMERS]
A vector of running timers for the group.
wait for response from a sent G/SG specific query.
ip46_address_t * igmp_group_new_intersect_present(igmp_group_t *group, igmp_filter_mode_t mode, const ip46_address_t *saddrs)
enum igmp_filter_mode_t_ igmp_filter_mode_t
#define IGMP_GROUP_N_TIMERS
void igmp_group_clear(igmp_group_t *group)
ip46_address_t igmp_key_t
IGMP Key Used to index groups within an interface config and sources within a list.
igmp_group_timer_type_t_
Types of timers maintained for each group.
igmp_filter_mode_t router_filter_mode
The current filter mode of the group (see 6.2.1)
IGMP interface configuration.
igmp_key_t * key
The group's key within the per-interface config.
IGMP group A multicast group address for which reception has been requested.
enum igmp_mode_t_ igmp_mode_t
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
uword * igmp_src_by_key[IGMP_N_FILTER_MODES]
Source list per-filter mode.
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
IGMP source The representation of a specified source address with in multicast group.
u32 igmp_group_n_srcs(const igmp_group_t *group, igmp_filter_mode_t mode)