28 #define IGMP_QUERY_TIMER (60) 29 #define IGMP_SRC_TIMER (3 * IGMP_QUERY_TIMER) 30 #define IGMP_DEFAULT_ROBUSTNESS_VARIABLE (2) 32 #define ENABLE_IGMP_DBG 0 34 #if ENABLE_IGMP_DBG == 1 35 #define IGMP_DBG(...) clib_warning(__VA_ARGS__) 41 #define IGMP_GENERAL_QUERY_ADDRESS (0xE0000001) 43 #define IGMP_MEMBERSHIP_REPORT_ADDRESS (0xE0000016) 46 #define group_ptr(p, l) ((igmp_membership_group_v3_t *)((char*)p + l)) 127 #define IGMP_GROUP_FLAG_QUERY_RESP_RECVED (1 << 0) 159 #define IGMP_CONFIG_FLAG_QUERY_RESP_RECVED (1 << 0) 160 #define IGMP_CONFIG_FLAG_CAN_SEND_REPORT (1 << 1) 266 ip46_address_t saddr, ip46_address_t gaddr,
267 u8 cli_api_configured);
igmp_membership_group_v3_type_t type
void igmp_clear_group(igmp_config_t *config, igmp_group_t *group)
igmp clear group
void igmp_query_resp_exp(vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer)
igmp query response expiration (igmp_timer_function_t)
struct igmp_group_t_ igmp_group_t
igmp group
void igmp_create_int_timer(f64 time, u32 sw_if_index, igmp_timer_function_t *func)
igmp create int timer
void( create_msg_t)(vlib_buffer_t *b, igmp_config_t *config, igmp_group_t *group)
create message
static igmp_group_t * igmp_group_lookup(igmp_config_t *config, igmp_key_t *key)
igmp group lookup
igmp_membership_group_v3_type_t
vlib_node_registration_t igmp_parse_query_node
(constructor) VLIB_REGISTER_NODE (igmp_parse_query_node)
void igmp_src_exp(vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer)
igmp source expiration (igmp_timer_function_t)
void igmp_sort_timers(igmp_timer_t *timers)
igmp sort timers
igmp_type_info_t * type_infos
void igmp_create_group_timer(f64 time, u32 sw_if_index, igmp_key_t *gkey, igmp_timer_function_t *func)
igmp create group timer
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)
uword * igmp_group_by_key
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)
igmp timer function
vlib_node_registration_t igmp_parse_report_node
(constructor) VLIB_REGISTER_NODE (igmp_parse_report_node)
static igmp_src_t * igmp_src_lookup(igmp_group_t *group, igmp_key_t *key)
igmp group lookup
vpe_client_registration_t * api_clients
vlib_node_registration_t igmp_input_node
(constructor) VLIB_REGISTER_NODE (igmp_input_node)
void igmp_clear_config(igmp_config_t *config)
igmp clear 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)
igmp listen
enum @390 igmp_process_event_t
void igmp_event(igmp_main_t *im, igmp_config_t *config, igmp_group_t *group, igmp_src_t *src)
igmp event
void igmp_send_state_changed(vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer)
igmp send state changed (igmp_timer_function_t)
igmp_membership_group_v3_type_t type
uword * report_type_info_by_report_type
struct igmp_config_t_ igmp_config_t
igmp configuration
void igmp_send_query(vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer)
igmp send query (igmp_timer_function_t)
struct _vlib_node_registration vlib_node_registration_t
static igmp_config_t * igmp_config_lookup(igmp_main_t *im, u32 sw_if_index)
igmp config lookup
void igmp_send_report(vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer)
igmp send report (igmp_timer_function_t)
#define hash_get_mem(h, key)
void igmp_create_src_timer(f64 time, u32 sw_if_index, igmp_key_t *gkey, igmp_key_t *skey, igmp_timer_function_t *func)
igmp create group timer
struct igmp_main_t_ igmp_main_t
igmp main
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
igmp timer
uword * type_info_by_type
igmp_report_type_info_t * report_type_infos
create_msg_t * next_create_msg