FD.io VPP  v20.05.1-6-gf53edbc3b
Vector Packet Processing
ip6_mld.c File Reference

IPv6 Neighbor Adjacency and Neighbor Discovery. More...

+ Include dependency graph for ip6_mld.c:

Go to the source code of this file.

Data Structures

struct  ip6_mldp_group_t
 
struct  ip6_nd_t_
 

Typedefs

typedef struct ip6_nd_t_ ip6_mld_t
 

Functions

typedef CLIB_PACKED (struct { ip6_hop_by_hop_ext_t ext_hdr;ip6_router_alert_option_t alert;ip6_padN_option_t pad;icmp46_header_t icmp;u16 rsvd;u16 num_addr_records;icmp6_multicast_address_record_t records[0];})
 
static ip6_mld_tip6_mld_get_itf (u32 sw_if_index)
 
static void ip6_neighbor_add_mld_prefix (ip6_mld_t *imd, ip6_address_t *addr)
 Add a multicast Address to the advertised MLD set. More...
 
static void ip6_neighbor_del_mld_prefix (ip6_mld_t *imd, ip6_address_t *addr)
 Delete a multicast Address from the advertised MLD set. More...
 
static void ip6_neighbor_add_mld_grp (ip6_mld_t *a, ip6_multicast_address_scope_t scope, ip6_multicast_link_local_group_id_t group)
 Add a multicast Address to the advertised MLD set. More...
 
static const ethernet_interface_tip6_mld_get_eth_itf (u32 sw_if_index)
 
static void ip6_mld_link_enable (u32 sw_if_index)
 create and initialize router advertisement parameters with default values for this intfc More...
 
static void ip6_mld_delegate_disable (index_t imdi)
 
static void ip6_neighbor_send_mldpv2_report (u32 sw_if_index)
 
static uword ip6_mld_timer_event (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword ip6_mld_event_process (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static u8format_ip6_mld (u8 *s, va_list *args)
 
static void ip6_mld_address_add (u32 imi, const ip6_address_t *address, u8 address_oength)
 callback when an interface address is added or deleted More...
 
static void ip6_mld_address_del (u32 imi, const ip6_address_t *address, u8 address_oength)
 
static clib_error_tip6_mld_init (vlib_main_t *vm)
 

Variables

 icmp6_multicast_listener_report_packet_t
 
static ip6_link_delegate_id_t ip6_mld_delegate_id
 
static ip6_mld_tip6_mld_pool
 
vlib_node_registration_t ip6_mld_event_process_node
 (constructor) VLIB_REGISTER_NODE (ip6_mld_event_process_node) More...
 
static const ip6_link_delegate_vft_t ip6_mld_delegate_vft
 VFT for registering as a delegate to an IP6 link. More...
 

Detailed Description

IPv6 Neighbor Adjacency and Neighbor Discovery.

The files contains the API and CLI code for managing IPv6 neighbor adjacency tables and neighbor discovery logic.

Definition in file ip6_mld.c.

Typedef Documentation

◆ ip6_mld_t

typedef struct ip6_nd_t_ ip6_mld_t

Function Documentation

◆ CLIB_PACKED()

typedef CLIB_PACKED ( struct { ip6_hop_by_hop_ext_t ext_hdr;ip6_router_alert_option_t alert;ip6_padN_option_t pad;icmp46_header_t icmp;u16 rsvd;u16 num_addr_records;icmp6_multicast_address_record_t records[0];}  )

Definition at line 37 of file ip6_mld.c.

◆ format_ip6_mld()

static u8* format_ip6_mld ( u8 s,
va_list *  args 
)
static

Definition at line 444 of file ip6_mld.c.

+ Here is the call graph for this function:

◆ ip6_mld_address_add()

static void ip6_mld_address_add ( u32  imi,
const ip6_address_t *  address,
u8  address_oength 
)
static

callback when an interface address is added or deleted

Definition at line 472 of file ip6_mld.c.

+ Here is the call graph for this function:

◆ ip6_mld_address_del()

static void ip6_mld_address_del ( u32  imi,
const ip6_address_t *  address,
u8  address_oength 
)
static

Definition at line 491 of file ip6_mld.c.

+ Here is the call graph for this function:

◆ ip6_mld_delegate_disable()

static void ip6_mld_delegate_disable ( index_t  imdi)
static

Definition at line 218 of file ip6_mld.c.

+ Here is the call graph for this function:

◆ ip6_mld_event_process()

static uword ip6_mld_event_process ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
static

Definition at line 413 of file ip6_mld.c.

+ Here is the call graph for this function:

◆ ip6_mld_get_eth_itf()

static const ethernet_interface_t* ip6_mld_get_eth_itf ( u32  sw_if_index)
static

Definition at line 165 of file ip6_mld.c.

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

◆ ip6_mld_get_itf()

static ip6_mld_t* ip6_mld_get_itf ( u32  sw_if_index)
inlinestatic

Definition at line 85 of file ip6_mld.c.

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

◆ ip6_mld_init()

static clib_error_t* ip6_mld_init ( vlib_main_t vm)
static

Definition at line 521 of file ip6_mld.c.

+ Here is the call graph for this function:

◆ ip6_mld_link_enable()

static void ip6_mld_link_enable ( u32  sw_if_index)
static

create and initialize router advertisement parameters with default values for this intfc

Definition at line 182 of file ip6_mld.c.

+ Here is the call graph for this function:

◆ ip6_mld_timer_event()

static uword ip6_mld_timer_event ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
static

Definition at line 383 of file ip6_mld.c.

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

◆ ip6_neighbor_add_mld_grp()

static void ip6_neighbor_add_mld_grp ( ip6_mld_t a,
ip6_multicast_address_scope_t  scope,
ip6_multicast_link_local_group_id_t  group 
)
static

Add a multicast Address to the advertised MLD set.

Definition at line 153 of file ip6_mld.c.

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

◆ ip6_neighbor_add_mld_prefix()

static void ip6_neighbor_add_mld_prefix ( ip6_mld_t imd,
ip6_address_t *  addr 
)
static

Add a multicast Address to the advertised MLD set.

Definition at line 101 of file ip6_mld.c.

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

◆ ip6_neighbor_del_mld_prefix()

static void ip6_neighbor_del_mld_prefix ( ip6_mld_t imd,
ip6_address_t *  addr 
)
static

Delete a multicast Address from the advertised MLD set.

Definition at line 133 of file ip6_mld.c.

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

◆ ip6_neighbor_send_mldpv2_report()

static void ip6_neighbor_send_mldpv2_report ( u32  sw_if_index)
static

Definition at line 242 of file ip6_mld.c.

+ Here is the call graph for this function:

Variable Documentation

◆ icmp6_multicast_listener_report_packet_t

icmp6_multicast_listener_report_packet_t

Definition at line 52 of file ip6_mld.c.

◆ ip6_mld_delegate_id

ip6_link_delegate_id_t ip6_mld_delegate_id
static

Definition at line 79 of file ip6_mld.c.

◆ ip6_mld_delegate_vft

const ip6_link_delegate_vft_t ip6_mld_delegate_vft
static
Initial value:
= {
.ildv_disable = ip6_mld_delegate_disable,
.ildv_enable = ip6_mld_link_enable,
.ildv_format = format_ip6_mld,
.ildv_addr_add = ip6_mld_address_add,
.ildv_addr_del = ip6_mld_address_del,
}
static void ip6_mld_link_enable(u32 sw_if_index)
create and initialize router advertisement parameters with default values for this intfc ...
Definition: ip6_mld.c:182
static void ip6_mld_address_add(u32 imi, const ip6_address_t *address, u8 address_oength)
callback when an interface address is added or deleted
Definition: ip6_mld.c:472
static void ip6_mld_delegate_disable(index_t imdi)
Definition: ip6_mld.c:218
static u8 * format_ip6_mld(u8 *s, va_list *args)
Definition: ip6_mld.c:444
static void ip6_mld_address_del(u32 imi, const ip6_address_t *address, u8 address_oength)
Definition: ip6_mld.c:491

VFT for registering as a delegate to an IP6 link.

Definition at line 512 of file ip6_mld.c.

◆ ip6_mld_event_process_node

vlib_node_registration_t ip6_mld_event_process_node
Initial value:
= {
.function = ip6_mld_event_process,
.name = "ip6-mld-process",
}
static uword ip6_mld_event_process(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_mld.c:413

(constructor) VLIB_REGISTER_NODE (ip6_mld_event_process_node)

Definition at line 436 of file ip6_mld.c.

◆ ip6_mld_pool

ip6_mld_t* ip6_mld_pool
static

Definition at line 80 of file ip6_mld.c.