28 #define IGMP_QUERY_TIMER (60) 29 #define IGMP_SG_TIMER (3 * IGMP_QUERY_TIMER) 30 #define IGMP_DEFAULT_ROBUSTNESS_VARIABLE (2) 35 #define DBG(...) clib_warning(__VA_ARGS__) 40 #define group_ptr(p, l) ((igmp_membership_group_v3_t *)((char*)p + l)) 101 #define IGMP_CONFIG_FLAG_QUERY_RESP_RECVED (1 << 0) 102 #define IGMP_CONFIG_FLAG_CAN_SEND_REPORT (1 << 1) 181 ip46_address_t saddr, ip46_address_t gaddr,
182 u8 cli_api_configured);
void igmp_query_resp_exp(vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer)
void igmp_create_int_timer(f64 time, u32 sw_if_index, igmp_timer_function_t *func)
void igmp_sg_exp(vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer)
static igmp_sg_t * igmp_sg_lookup(igmp_config_t *config, igmp_sg_key_t *key)
igmp_config_t * configs
pool of igmp configurations
struct igmp_index_t_ igmp_index_t
igmp_membership_group_v3_type_t
vlib_node_registration_t igmp_parse_query_node
(constructor) VLIB_REGISTER_NODE (igmp_parse_query_node)
u16 msg_id_base
API message ID base.
void igmp_sort_timers(igmp_timer_t *timers)
igmp_type_info_t * type_infos
struct igmp_sg_key_t_ igmp_sg_key_t
static timer_callback_t * timers
#define vec_elt_at_index(v, i)
Get vector value at index i checking that i is in bounds.
static igmp_report_type_info_t * igmp_get_report_type_info(igmp_main_t *im, u8 report_type)
igmp_membership_group_v3_type_t group_type
enum @378 igmp_process_event_t
uword * igmp_config_by_sw_if_index
void( igmp_timer_function_t)(vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer)
vlib_node_registration_t igmp_parse_report_node
(constructor) VLIB_REGISTER_NODE (igmp_parse_report_node)
void igmp_event(igmp_main_t *im, igmp_config_t *config, igmp_sg_t *sg)
vpe_client_registration_t * api_clients
pool of api clients registered for join/leave notifications
vlib_node_registration_t igmp_input_node
(constructor) VLIB_REGISTER_NODE (igmp_input_node)
void igmp_clear_config(igmp_config_t *config)
u32 adj_index_t
An index for adjacencies.
int igmp_listen(vlib_main_t *vm, u8 enable, u32 sw_if_index, ip46_address_t saddr, ip46_address_t gaddr, u8 cli_api_configured)
void igmp_create_sg_timer(f64 time, u32 sw_if_index, igmp_sg_key_t *key, igmp_timer_function_t *func)
void igmp_send_state_changed(vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer)
void( create_msg_t)(vlib_buffer_t *b, igmp_config_t *config)
igmp_membership_group_v3_type_t type
u32 ** buffers
buffer cache
struct igmp_sg_t_ igmp_sg_t
uword * report_type_info_by_report_type
struct igmp_config_t_ igmp_config_t
void igmp_send_query(vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer)
struct _vlib_node_registration vlib_node_registration_t
static igmp_config_t * igmp_config_lookup(igmp_main_t *im, u32 sw_if_index)
void igmp_send_report(vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer)
igmp_timer_t * timers
pool of igmp timers
#define hash_get_mem(h, key)
struct igmp_main_t_ igmp_main_t
igmp_timer_function_t * func
uword * igmp_api_client_by_client_index
vlib_node_registration_t igmp_timer_process_node
(constructor) VLIB_REGISTER_NODE (igmp_timer_process_node)
static igmp_type_info_t * igmp_get_type_info(igmp_main_t *im, u32 type)
struct igmp_timer_t_ igmp_timer_t
uword * type_info_by_type
igmp_report_type_info_t * report_type_infos
create_msg_t * next_create_msg