FD.io VPP  v18.07-34-g55fbdb9
Vector Packet Processing
igmp_pkt.c File Reference
+ Include dependency graph for igmp_pkt.c:

Go to the source code of this file.

Functions

static void vlib_buffer_append (vlib_buffer_t *b, uword l)
 
static vlib_buffer_tigmp_pkt_get_buffer (igmp_pkt_build_t *bk)
 
static vlib_buffer_tigmp_pkt_build_ip_header (igmp_pkt_build_t *bk, igmp_msg_type_t msg_type, const igmp_group_t *group)
 
static vlib_buffer_tigmp_pkt_build_report_v3 (igmp_pkt_build_report_t *br, const igmp_group_t *group)
 
static void igmp_pkt_tx (igmp_pkt_build_t *bk)
 
static vlib_buffer_tigmp_pkt_build_report_get_active (igmp_pkt_build_report_t *br)
 
static void igmp_pkt_build_report_bake (igmp_pkt_build_report_t *br)
 
void igmp_pkt_report_v3_send (igmp_pkt_build_report_t *br)
 
static u32 igmp_pkt_report_v3_get_size (const igmp_group_t *group)
 
static igmp_membership_group_v3_tigmp_pkt_report_v3_append_group (igmp_pkt_build_report_t *br, const ip46_address_t *grp, igmp_membership_group_v3_type_t type)
 
static igmp_membership_group_v3_tigmp_pkt_report_v3_append_src (igmp_pkt_build_report_t *br, igmp_membership_group_v3_t *igmp_group, const ip46_address_t *grp, igmp_membership_group_v3_type_t type, const ip46_address_t *src)
 4.2.16 " If the set of Group Records required in a Report does not fit within the size limit of a single Report message (as determined by the MTU of the network on which it will be sent), the Group Records are sent in as many Report messages as needed to report the entire set. More...
 
void igmp_pkt_report_v3_add_report (igmp_pkt_build_report_t *br, const ip46_address_t *grp, const ip46_address_t *srcs, igmp_membership_group_v3_type_t type)
 
void igmp_pkt_report_v3_add_group (igmp_pkt_build_report_t *br, const igmp_group_t *group, igmp_membership_group_v3_type_t type)
 
void igmp_pkt_build_report_init (igmp_pkt_build_report_t *br, u32 sw_if_index)
 
static vlib_buffer_tigmp_pkt_build_query_get_active (igmp_pkt_build_query_t *bq)
 
static vlib_buffer_tigmp_pkt_build_query_v3 (igmp_pkt_build_query_t *bq, const igmp_group_t *group)
 
void igmp_pkt_query_v3_add_group (igmp_pkt_build_query_t *bq, const igmp_group_t *group, const ip46_address_t *srcs)
 
static void igmp_pkt_build_query_bake (igmp_pkt_build_query_t *bq)
 
void igmp_pkt_query_v3_send (igmp_pkt_build_query_t *bq)
 
void igmp_pkt_build_query_init (igmp_pkt_build_query_t *bq, u32 sw_if_index)
 

Function Documentation

static vlib_buffer_t* igmp_pkt_build_ip_header ( igmp_pkt_build_t bk,
igmp_msg_type_t  msg_type,
const igmp_group_t group 
)
static

Definition at line 62 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void igmp_pkt_build_query_bake ( igmp_pkt_build_query_t bq)
static

Definition at line 490 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_buffer_t* igmp_pkt_build_query_get_active ( igmp_pkt_build_query_t bq)
static

Definition at line 410 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void igmp_pkt_build_query_init ( igmp_pkt_build_query_t bq,
u32  sw_if_index 
)

Definition at line 526 of file igmp_pkt.c.

+ Here is the caller graph for this function:

static vlib_buffer_t* igmp_pkt_build_query_v3 ( igmp_pkt_build_query_t bq,
const igmp_group_t group 
)
static

Definition at line 420 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void igmp_pkt_build_report_bake ( igmp_pkt_build_report_t br)
static

Definition at line 186 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_buffer_t* igmp_pkt_build_report_get_active ( igmp_pkt_build_report_t br)
static

Definition at line 176 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void igmp_pkt_build_report_init ( igmp_pkt_build_report_t br,
u32  sw_if_index 
)

Definition at line 403 of file igmp_pkt.c.

+ Here is the caller graph for this function:

static vlib_buffer_t* igmp_pkt_build_report_v3 ( igmp_pkt_build_report_t br,
const igmp_group_t group 
)
static

Definition at line 115 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_buffer_t* igmp_pkt_get_buffer ( igmp_pkt_build_t bk)
static

Definition at line 28 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void igmp_pkt_query_v3_add_group ( igmp_pkt_build_query_t bq,
const igmp_group_t group,
const ip46_address_t *  srcs 
)

Definition at line 451 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void igmp_pkt_query_v3_send ( igmp_pkt_build_query_t bq)

Definition at line 516 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void igmp_pkt_report_v3_add_group ( igmp_pkt_build_report_t br,
const igmp_group_t group,
igmp_membership_group_v3_type_t  type 
)

Definition at line 352 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void igmp_pkt_report_v3_add_report ( igmp_pkt_build_report_t br,
const ip46_address_t *  grp,
const ip46_address_t *  srcs,
igmp_membership_group_v3_type_t  type 
)

Definition at line 312 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static igmp_membership_group_v3_t* igmp_pkt_report_v3_append_group ( igmp_pkt_build_report_t br,
const ip46_address_t *  grp,
igmp_membership_group_v3_type_t  type 
)
static

Definition at line 230 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static igmp_membership_group_v3_t* igmp_pkt_report_v3_append_src ( igmp_pkt_build_report_t br,
igmp_membership_group_v3_t igmp_group,
const ip46_address_t *  grp,
igmp_membership_group_v3_type_t  type,
const ip46_address_t *  src 
)
static

4.2.16 " If the set of Group Records required in a Report does not fit within the size limit of a single Report message (as determined by the MTU of the network on which it will be sent), the Group Records are sent in as many Report messages as needed to report the entire set.

If a single Group Record contains so many source addresses that it does not fit within the size limit of a single Report message, if its Type is not MODE_IS_EXCLUDE or CHANGE_TO_EXCLUDE_MODE, it is split into multiple Group Records, each containing a different subset of the source addresses and each sent in a separate Report message. If its Type is MODE_IS_EXCLUDE or CHANGE_TO_EXCLUDE_MODE, a single Group Record is sent, containing as many source addresses as can fit, and the remaining source addresses are not reported; though the choice of which sources to report is arbitrary, it is preferable to report the same set of sources in each subsequent report, rather than reporting different sources each time."

Definition at line 282 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 igmp_pkt_report_v3_get_size ( const igmp_group_t group)
static

Definition at line 221 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void igmp_pkt_report_v3_send ( igmp_pkt_build_report_t br)

Definition at line 211 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void igmp_pkt_tx ( igmp_pkt_build_t bk)
static

Definition at line 140 of file igmp_pkt.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_buffer_append ( vlib_buffer_t b,
uword  l 
)
static

Definition at line 21 of file igmp_pkt.c.

+ Here is the caller graph for this function: