FD.io VPP  v21.10.1-2-g0a485f517
Vector Packet Processing
igmp.c File Reference
+ Include dependency graph for igmp.c:

Go to the source code of this file.

Functions

static void igmp_send_general_query (u32 obj, void *dat)
 igmp send query (igmp_timer_function_t) More...
 
static void igmp_send_state_change_group_report_v3 (u32 sw_if_index, const igmp_group_t *group)
 
static void igmp_resend_state_change_group_report_v3 (u32 gi, void *data)
 
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 More...
 
static walk_rc_t igmp_sw_if_down (vnet_main_t *vnm, u32 sw_if_index, void *ctx)
 
static clib_error_tigmp_hw_interface_link_up_down (vnet_main_t *vnm, u32 hw_if_index, u32 flags)
 igmp hardware interface link up down More...
 
 VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION (igmp_hw_interface_link_up_down)
 
int igmp_enable_disable (u32 sw_if_index, u8 enable, igmp_mode_t mode)
 IGMP interface enable/disable. More...
 
static clib_error_tigmp_init (vlib_main_t *vm)
 igmp initialization More...
 
 VLIB_PLUGIN_REGISTER ()
 

Variables

igmp_main_t igmp_main
 
const static mfib_prefix_t mpfx_general_query
 
const static mfib_prefix_t mpfx_report
 

Function Documentation

◆ igmp_enable_disable()

int igmp_enable_disable ( u32  sw_if_index,
u8  enable,
igmp_mode_t  mode 
)

IGMP interface enable/disable.

Parameters
sw_if_index- Interface
enable- enable/disable
mode- Host or router

Definition at line 340 of file igmp.c.

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

◆ igmp_hw_interface_link_up_down()

static clib_error_t* igmp_hw_interface_link_up_down ( vnet_main_t vnm,
u32  hw_if_index,
u32  flags 
)
static

igmp hardware interface link up down

Parameters
vnm- vnet main
hw_if_index- interface hw_if_index
flags- hw interface flags

If an interface goes down, remove its (S,G)s.

Definition at line 329 of file igmp.c.

+ Here is the call graph for this function:

◆ igmp_init()

static clib_error_t* igmp_init ( vlib_main_t vm)
static

igmp initialization

Parameters
vm- vlib main

initialize igmp plugin. Initialize igmp_main, set mfib to allow igmp traffic.

Definition at line 478 of file igmp.c.

+ Here is the call graph for this function:

◆ igmp_listen()

int igmp_listen ( vlib_main_t vm,
igmp_filter_mode_t  filter,
u32  sw_if_index,
const ip46_address_t *  saddr,
const ip46_address_t *  gaddr 
)

igmp listen Called by a host to request reception of multicast packets

Parameters
vm- vlib main
filter- Filter mode
sw_if_index- interface sw_if_index
saddr- source address
gaddr- group address

Add/del (S,G) on an interface. send a status change report from the interface.

Definition at line 133 of file igmp.c.

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

◆ igmp_resend_state_change_group_report_v3()

static void igmp_resend_state_change_group_report_v3 ( u32  gi,
void *  data 
)
static

Definition at line 112 of file igmp.c.

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

◆ igmp_send_general_query()

static void igmp_send_general_query ( u32  obj,
void *  dat 
)
static

igmp send query (igmp_timer_function_t)

Send an igmp query. If the timer holds group key, send Group-Specific query, else send General query.

Definition at line 70 of file igmp.c.

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

◆ igmp_send_state_change_group_report_v3()

static void igmp_send_state_change_group_report_v3 ( u32  sw_if_index,
const igmp_group_t group 
)
static

Definition at line 97 of file igmp.c.

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

◆ igmp_sw_if_down()

static walk_rc_t igmp_sw_if_down ( vnet_main_t vnm,
u32  sw_if_index,
void *  ctx 
)
static

Definition at line 307 of file igmp.c.

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

◆ VLIB_PLUGIN_REGISTER()

VLIB_PLUGIN_REGISTER ( )

◆ VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION()

VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION ( igmp_hw_interface_link_up_down  )

Variable Documentation

◆ igmp_main

igmp_main_t igmp_main

Definition at line 36 of file igmp.c.

◆ mpfx_general_query

const static mfib_prefix_t mpfx_general_query
static
Initial value:
= {
.fp_proto = FIB_PROTOCOL_IP4,
.fp_len = 32,
.fp_grp_addr = {
.ip4 = {
},
},
}

Definition at line 40 of file igmp.c.

◆ mpfx_report

const static mfib_prefix_t mpfx_report
static
Initial value:
= {
.fp_proto = FIB_PROTOCOL_IP4,
.fp_len = 32,
.fp_grp_addr = {
.ip4 = {
},
},
}

Definition at line 51 of file igmp.c.

IGMP_MEMBERSHIP_REPORT_ADDRESS
#define IGMP_MEMBERSHIP_REPORT_ADDRESS
Definition: igmp.h:52
IGMP_GENERAL_QUERY_ADDRESS
#define IGMP_GENERAL_QUERY_ADDRESS
General Query address - 224.0.0.1 Membership Report address - 224.0.0.22 SSM default range 232/8.
Definition: igmp.h:51
FIB_PROTOCOL_IP4
@ FIB_PROTOCOL_IP4
Definition: fib_types.h:36