FD.io VPP  v19.01.3-6-g70449b9b9
Vector Packet Processing
igmp_api.c File Reference
+ Include dependency graph for igmp_api.c:

Go to the source code of this file.

Data Structures

struct  igmp_ssm_range_walk_ctx_t_
 

Macros

#define vl_typedefs
 
#define vl_endianfun
 
#define vl_print(handle, ...)   vlib_cli_output (handle, __VA_ARGS__)
 
#define vl_printfun
 
#define vl_api_version(n, v)   static u32 api_version=(v);
 
#define IGMP_MSG_ID(_id)   (_id + igmp_main.msg_id_base)
 
#define foreach_igmp_plugin_api_msg
 
#define vl_msg_name_crc_list
 

Typedefs

typedef struct igmp_ssm_range_walk_ctx_t_ igmp_ssm_range_walk_ctx_t
 

Functions

static void vl_api_igmp_listen_t_handler (vl_api_igmp_listen_t *mp)
 
static void vl_api_igmp_enable_disable_t_handler (vl_api_igmp_enable_disable_t *mp)
 
static void vl_api_igmp_proxy_device_add_del_t_handler (vl_api_igmp_proxy_device_add_del_t *mp)
 
static void vl_api_igmp_proxy_device_add_del_interface_t_handler (vl_api_igmp_proxy_device_add_del_interface_t *mp)
 
static void send_igmp_details (unix_shared_memory_queue_t *q, igmp_main_t *im, igmp_config_t *config, igmp_group_t *group, igmp_src_t *src, u32 context)
 
static void igmp_config_dump (igmp_main_t *im, unix_shared_memory_queue_t *q, u32 context, igmp_config_t *config)
 
static void vl_api_igmp_dump_t_handler (vl_api_igmp_dump_t *mp)
 
static void vl_api_igmp_clear_interface_t_handler (vl_api_igmp_clear_interface_t *mp)
 
static vl_api_group_prefix_type_t igmp_group_type_int_to_api (igmp_group_prefix_type_t t)
 
static igmp_group_prefix_type_t igmp_group_type_api_to_int (vl_api_group_prefix_type_t t)
 
static void vl_api_igmp_group_prefix_set_t_handler (vl_api_igmp_group_prefix_set_t *mp)
 
static walk_rc_t igmp_ssm_range_walk_dump (const fib_prefix_t *pfx, igmp_group_prefix_type_t type, void *args)
 
static void vl_api_igmp_group_prefix_dump_t_handler (vl_api_igmp_dump_t *mp)
 
static vpe_client_registration_tigmp_api_client_lookup (igmp_main_t *im, u32 client_index)
 
static void vl_api_want_igmp_events_t_handler (vl_api_want_igmp_events_t *mp)
 
static clib_error_twant_igmp_events_reaper (u32 client_index)
 
 VL_MSG_API_REAPER_FUNCTION (want_igmp_events_reaper)
 
void send_igmp_event (unix_shared_memory_queue_t *q, u32 context, igmp_filter_mode_t filter, u32 sw_if_index, const ip46_address_t *saddr, const ip46_address_t *gaddr)
 
void igmp_event (igmp_filter_mode_t filter, u32 sw_if_index, const ip46_address_t *saddr, const ip46_address_t *gaddr)
 Send an IGMP event to listening parties. More...
 
static void setup_message_id_table (igmp_main_t *im, api_main_t *am)
 
static clib_error_tigmp_plugin_api_hookup (vlib_main_t *vm)
 
 VLIB_API_INIT_FUNCTION (igmp_plugin_api_hookup)
 

Macro Definition Documentation

◆ foreach_igmp_plugin_api_msg

#define foreach_igmp_plugin_api_msg
Value:
_(IGMP_LISTEN, igmp_listen) \
_(IGMP_ENABLE_DISABLE, igmp_enable_disable) \
_(IGMP_PROXY_DEVICE_ADD_DEL, igmp_proxy_device_add_del) \
_(IGMP_PROXY_DEVICE_ADD_DEL_INTERFACE, igmp_proxy_device_add_del_interface) \
_(IGMP_DUMP, igmp_dump) \
_(IGMP_CLEAR_INTERFACE, igmp_clear_interface) \
_(IGMP_CLEAR_INTERFACE, igmp_clear_interface) \
_(IGMP_GROUP_PREFIX_SET, igmp_group_prefix_set) \
_(IGMP_GROUP_PREFIX_DUMP, igmp_group_prefix_dump) \
_(WANT_IGMP_EVENTS, want_igmp_events) \
int igmp_listen(vlib_main_t *vm, igmp_filter_mode_t mode, u32 sw_if_index, const ip46_address_t *saddrs, const ip46_address_t *gaddr)
igmp listen Called by a host to request reception of multicast packets
Definition: igmp.c:133
int igmp_proxy_device_add_del_interface(u32 vrf_id, u32 sw_if_index, u8 add)
IGMP proxy device add/del interface.
Definition: igmp_proxy.c:141
int igmp_enable_disable(u32 sw_if_index, u8 enable, igmp_mode_t mode)
IGMP interface enable/disable.
Definition: igmp.c:340
void igmp_group_prefix_set(const fib_prefix_t *pfx, igmp_group_prefix_type_t type)
int igmp_proxy_device_add_del(u32 vrf_id, u32 sw_if_index, u8 add)
IGMP proxy device add/del.
Definition: igmp_proxy.c:80

Definition at line 53 of file igmp_api.c.

◆ IGMP_MSG_ID

#define IGMP_MSG_ID (   _id)    (_id + igmp_main.msg_id_base)

Definition at line 51 of file igmp_api.c.

◆ vl_api_version

#define vl_api_version (   n,
 
)    static u32 api_version=(v);

Definition at line 45 of file igmp_api.c.

◆ vl_endianfun

#define vl_endianfun

Definition at line 34 of file igmp_api.c.

◆ vl_msg_name_crc_list

#define vl_msg_name_crc_list

Definition at line 448 of file igmp_api.c.

◆ vl_print

#define vl_print (   handle,
  ... 
)    vlib_cli_output (handle, __VA_ARGS__)

Definition at line 39 of file igmp_api.c.

◆ vl_printfun

#define vl_printfun

Definition at line 40 of file igmp_api.c.

◆ vl_typedefs

#define vl_typedefs

Definition at line 29 of file igmp_api.c.

Typedef Documentation

◆ igmp_ssm_range_walk_ctx_t

Function Documentation

◆ igmp_api_client_lookup()

static vpe_client_registration_t* igmp_api_client_lookup ( igmp_main_t im,
u32  client_index 
)
static

Definition at line 331 of file igmp_api.c.

+ Here is the caller graph for this function:

◆ igmp_config_dump()

static void igmp_config_dump ( igmp_main_t im,
unix_shared_memory_queue_t q,
u32  context,
igmp_config_t config 
)
static

Definition at line 182 of file igmp_api.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ igmp_event()

void igmp_event ( igmp_filter_mode_t  filter,
u32  sw_if_index,
const ip46_address_t *  saddr,
const ip46_address_t *  gaddr 
)

Send an IGMP event to listening parties.

Parameters
filtermode
sw_if_index
saddr
gaddr

Definition at line 421 of file igmp_api.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ igmp_group_type_api_to_int()

static igmp_group_prefix_type_t igmp_group_type_api_to_int ( vl_api_group_prefix_type_t  t)
static

Definition at line 261 of file igmp_api.c.

+ Here is the caller graph for this function:

◆ igmp_group_type_int_to_api()

static vl_api_group_prefix_type_t igmp_group_type_int_to_api ( igmp_group_prefix_type_t  t)
static

Definition at line 247 of file igmp_api.c.

+ Here is the caller graph for this function:

◆ igmp_plugin_api_hookup()

static clib_error_t* igmp_plugin_api_hookup ( vlib_main_t vm)
static

Definition at line 463 of file igmp_api.c.

+ Here is the call graph for this function:

◆ igmp_ssm_range_walk_dump()

static walk_rc_t igmp_ssm_range_walk_dump ( const fib_prefix_t pfx,
igmp_group_prefix_type_t  type,
void *  args 
)
static

Definition at line 294 of file igmp_api.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ send_igmp_details()

static void send_igmp_details ( unix_shared_memory_queue_t q,
igmp_main_t im,
igmp_config_t config,
igmp_group_t group,
igmp_src_t src,
u32  context 
)
static

Definition at line 163 of file igmp_api.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ send_igmp_event()

void send_igmp_event ( unix_shared_memory_queue_t q,
u32  context,
igmp_filter_mode_t  filter,
u32  sw_if_index,
const ip46_address_t *  saddr,
const ip46_address_t *  gaddr 
)

Definition at line 401 of file igmp_api.c.

+ Here is the call graph for this function:

◆ setup_message_id_table()

static void setup_message_id_table ( igmp_main_t im,
api_main_t am 
)
static

Definition at line 453 of file igmp_api.c.

+ Here is the caller graph for this function:

◆ vl_api_igmp_clear_interface_t_handler()

static void vl_api_igmp_clear_interface_t_handler ( vl_api_igmp_clear_interface_t mp)
static

Definition at line 233 of file igmp_api.c.

+ Here is the call graph for this function:

◆ vl_api_igmp_dump_t_handler()

static void vl_api_igmp_dump_t_handler ( vl_api_igmp_dump_t mp)
static

Definition at line 201 of file igmp_api.c.

+ Here is the call graph for this function:

◆ vl_api_igmp_enable_disable_t_handler()

static void vl_api_igmp_enable_disable_t_handler ( vl_api_igmp_enable_disable_t mp)
static

Definition at line 109 of file igmp_api.c.

+ Here is the call graph for this function:

◆ vl_api_igmp_group_prefix_dump_t_handler()

static void vl_api_igmp_group_prefix_dump_t_handler ( vl_api_igmp_dump_t mp)
static

Definition at line 314 of file igmp_api.c.

+ Here is the call graph for this function:

◆ vl_api_igmp_group_prefix_set_t_handler()

static void vl_api_igmp_group_prefix_set_t_handler ( vl_api_igmp_group_prefix_set_t mp)
static

Definition at line 275 of file igmp_api.c.

+ Here is the call graph for this function:

◆ vl_api_igmp_listen_t_handler()

static void vl_api_igmp_listen_t_handler ( vl_api_igmp_listen_t mp)
static

Definition at line 66 of file igmp_api.c.

+ Here is the call graph for this function:

◆ vl_api_igmp_proxy_device_add_del_interface_t_handler()

static void vl_api_igmp_proxy_device_add_del_interface_t_handler ( vl_api_igmp_proxy_device_add_del_interface_t mp)
static

Definition at line 145 of file igmp_api.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vl_api_igmp_proxy_device_add_del_t_handler()

static void vl_api_igmp_proxy_device_add_del_t_handler ( vl_api_igmp_proxy_device_add_del_t mp)
static

Definition at line 126 of file igmp_api.c.

+ Here is the call graph for this function:

◆ vl_api_want_igmp_events_t_handler()

static void vl_api_want_igmp_events_t_handler ( vl_api_want_igmp_events_t mp)
static

Definition at line 344 of file igmp_api.c.

+ Here is the call graph for this function:

◆ VL_MSG_API_REAPER_FUNCTION()

VL_MSG_API_REAPER_FUNCTION ( want_igmp_events_reaper  )
+ Here is the caller graph for this function:

◆ VLIB_API_INIT_FUNCTION()

VLIB_API_INIT_FUNCTION ( igmp_plugin_api_hookup  )
+ Here is the caller graph for this function:

◆ want_igmp_events_reaper()

static clib_error_t* want_igmp_events_reaper ( u32  client_index)
static

Definition at line 381 of file igmp_api.c.

+ Here is the call graph for this function: