FD.io VPP  v17.10-9-gd594711
Vector Packet Processing
ip6_forward.c File Reference

IPv6 Forwarding. More...

+ Include dependency graph for ip6_forward.c:

Go to the source code of this file.

Data Structures

struct  ip6_forward_next_trace_t
 
struct  ip6_hop_by_hop_trace_t
 

Macros

#define OI_DECAP   0x80000000
 
#define foreach_ip6_hop_by_hop_error
 

Enumerations

enum  ip6_discover_neighbor_next_t { IP6_DISCOVER_NEIGHBOR_NEXT_DROP, IP6_DISCOVER_NEIGHBOR_NEXT_REPLY_TX, IP6_DISCOVER_NEIGHBOR_N_NEXT }
 
enum  ip6_discover_neighbor_error_t { IP6_DISCOVER_NEIGHBOR_ERROR_DROP, IP6_DISCOVER_NEIGHBOR_ERROR_REQUEST_SENT, IP6_DISCOVER_NEIGHBOR_ERROR_NO_SOURCE_ADDRESS }
 
enum  ip6_rewrite_next_t { IP6_REWRITE_NEXT_DROP, IP6_REWRITE_NEXT_ICMP_ERROR }
 
enum  ip6_hop_by_hop_error_t { IP6_HOP_BY_HOP_N_ERROR }
 

Functions

void ip6_forward_next_trace (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, vlib_rx_or_tx_t which_adj_index)
 
static uword ip6_lookup_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static void ip6_add_interface_routes (vnet_main_t *vnm, u32 sw_if_index, ip6_main_t *im, u32 fib_index, ip_interface_address_t *a)
 
static void ip6_del_interface_routes (ip6_main_t *im, u32 fib_index, ip6_address_t *address, u32 address_length)
 
void ip6_sw_interface_enable_disable (u32 sw_if_index, u32 is_enable)
 
ip6_address_tip6_interface_first_address (ip6_main_t *im, u32 sw_if_index)
 get first IPv6 interface address More...
 
clib_error_tip6_add_del_interface_address (vlib_main_t *vm, u32 sw_if_index, ip6_address_t *address, u32 address_length, u32 is_del)
 
clib_error_tip6_sw_interface_admin_up_down (vnet_main_t *vnm, u32 sw_if_index, u32 flags)
 
 VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION (ip6_sw_interface_admin_up_down)
 
 VNET_FEATURE_ARC_INIT (ip6_unicast, static)
 
 VNET_FEATURE_INIT (ip6_flow_classify, static)
 
 VNET_FEATURE_INIT (ip6_inacl, static)
 
 VNET_FEATURE_INIT (ip6_policer_classify, static)
 
 VNET_FEATURE_INIT (ip6_ipsec, static)
 
 VNET_FEATURE_INIT (ip6_l2tp, static)
 
 VNET_FEATURE_INIT (ip6_vpath, static)
 
 VNET_FEATURE_INIT (ip6_vxlan_bypass, static)
 
 VNET_FEATURE_INIT (ip6_drop, static)
 
 VNET_FEATURE_INIT (ip6_lookup, static)
 
 VNET_FEATURE_ARC_INIT (ip6_multicast, static)
 
 VNET_FEATURE_INIT (ip6_vpath_mc, static)
 
 VNET_FEATURE_INIT (ip6_drop_mc, static)
 
 VNET_FEATURE_INIT (ip6_mc_lookup, static)
 
 VNET_FEATURE_ARC_INIT (ip6_output, static)
 
 VNET_FEATURE_INIT (ip6_ipsec_output, static)
 
 VNET_FEATURE_INIT (ip6_interface_output, static)
 
clib_error_tip6_sw_interface_add_del (vnet_main_t *vnm, u32 sw_if_index, u32 is_add)
 
 VNET_SW_INTERFACE_ADD_DEL_FUNCTION (ip6_sw_interface_add_del)
 
static uword ip6_lookup (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static u8format_ip6_lookup_trace (u8 *s, va_list *args)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_lookup_node, ip6_lookup)
 
static uword ip6_load_balance (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_load_balance_node, ip6_load_balance)
 
u8format_ip6_forward_next_trace (u8 *s, va_list *args)
 
static u8format_ip6_rewrite_trace (u8 *s, va_list *args)
 
static uword ip6_drop_or_punt (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, ip6_error_t error_code)
 
static uword ip6_drop (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword ip6_punt (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_drop_node, ip6_drop)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_punt_node, ip6_punt)
 
u16 ip6_tcp_udp_icmp_compute_checksum (vlib_main_t *vm, vlib_buffer_t *p0, ip6_header_t *ip0, int *bogus_lengthp)
 
u32 ip6_tcp_udp_icmp_validate_checksum (vlib_main_t *vm, vlib_buffer_t *p0)
 
static int ip6_urpf_loose_check (ip6_main_t *im, vlib_buffer_t *b, ip6_header_t *i)
 returns number of links on which src is reachable. More...
 
static u8 ip6_next_proto_is_tcp_udp (vlib_buffer_t *p0, ip6_header_t *ip0, u32 *udp_offset0)
 
 VNET_FEATURE_ARC_INIT (ip6_local)
 
static uword ip6_local_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, int head_of_feature_arc)
 
static uword ip6_local (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_local_node, ip6_local)
 
static uword ip6_local_end_of_arc (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
 VNET_FEATURE_INIT (ip6_local_end_of_arc, static)
 
void ip6_register_protocol (u32 protocol, u32 node_index)
 
static uword ip6_discover_neighbor_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, int is_glean)
 
static uword ip6_discover_neighbor (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword ip6_glean (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
clib_error_tip6_probe_neighbor (vlib_main_t *vm, ip6_address_t *dst, u32 sw_if_index)
 
static uword ip6_rewrite_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, int do_counters, int is_midchain, int is_mcast)
 
static uword ip6_rewrite (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword ip6_rewrite_mcast (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword ip6_midchain (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword ip6_mcast_midchain (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_midchain_node, ip6_midchain)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_rewrite_node, ip6_rewrite)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_rewrite_mcast_node, ip6_rewrite_mcast)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_mcast_midchain_node, ip6_mcast_midchain)
 
u8format_ip6_hop_by_hop_ext_hdr (u8 *s, va_list *args)
 
static u8format_ip6_hop_by_hop_trace (u8 *s, va_list *args)
 
static u8 ip6_scan_hbh_options (vlib_buffer_t *b0, ip6_header_t *ip0, ip6_hop_by_hop_header_t *hbh0, ip6_hop_by_hop_option_t *opt0, ip6_hop_by_hop_option_t *limit0, u32 *next0)
 
static uword ip6_hop_by_hop (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_hop_by_hop_node, ip6_hop_by_hop)
 
static clib_error_tip6_hop_by_hop_init (vlib_main_t *vm)
 
void ip6_hbh_set_next_override (uword next)
 
int ip6_hbh_register_option (u8 option, int options(vlib_buffer_t *b, ip6_header_t *ip, ip6_hop_by_hop_option_t *opt), u8 *trace(u8 *s, ip6_hop_by_hop_option_t *opt))
 
int ip6_hbh_unregister_option (u8 option)
 
static clib_error_tip6_lookup_init (vlib_main_t *vm)
 
void ip6_link_local_address_from_ethernet_mac_address (ip6_address_t *ip, u8 *mac)
 
void ip6_ethernet_mac_address_from_link_local_address (u8 *mac, ip6_address_t *ip)
 
static clib_error_ttest_ip6_link_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
int vnet_set_ip6_flow_hash (u32 table_id, u32 flow_hash_config)
 
static clib_error_tset_ip6_flow_hash_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tshow_ip6_local_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
int vnet_set_ip6_classify_intfc (vlib_main_t *vm, u32 sw_if_index, u32 table_index)
 
static clib_error_tset_ip6_classify_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tip6_config (vlib_main_t *vm, unformat_input_t *input)
 

Variables

vlib_node_registration_t ip6_lookup_node
 (constructor) VLIB_REGISTER_NODE (ip6_lookup_node) More...
 
vlib_node_registration_t ip6_load_balance_node
 (constructor) VLIB_REGISTER_NODE (ip6_load_balance_node) More...
 
static vlib_node_registration_t ip6_drop_node
 (constructor) VLIB_REGISTER_NODE (ip6_drop_node) More...
 
static vlib_node_registration_t ip6_punt_node
 (constructor) VLIB_REGISTER_NODE (ip6_punt_node) More...
 
static vlib_node_registration_t ip6_local_node
 (constructor) VLIB_REGISTER_NODE (ip6_local_node) More...
 
static vlib_node_registration_t ip6_local_end_of_arc_node
 (constructor) VLIB_REGISTER_NODE (ip6_local_end_of_arc_node) More...
 
static char * ip6_discover_neighbor_error_strings []
 
vlib_node_registration_t ip6_discover_neighbor_node
 (constructor) VLIB_REGISTER_NODE (ip6_discover_neighbor_node) More...
 
vlib_node_registration_t ip6_glean_node
 (constructor) VLIB_REGISTER_NODE (ip6_glean_node) More...
 
vlib_node_registration_t ip6_midchain_node
 (constructor) VLIB_REGISTER_NODE (ip6_midchain_node) More...
 
vlib_node_registration_t ip6_rewrite_node
 (constructor) VLIB_REGISTER_NODE (ip6_rewrite_node) More...
 
vlib_node_registration_t ip6_rewrite_mcast_node
 (constructor) VLIB_REGISTER_NODE (ip6_rewrite_mcast_node) More...
 
static vlib_node_registration_t ip6_mcast_midchain_node
 (constructor) VLIB_REGISTER_NODE (ip6_mcast_midchain_node) More...
 
ip6_hop_by_hop_main_t ip6_hop_by_hop_main
 
vlib_node_registration_t ip6_hop_by_hop_node
 (constructor) VLIB_REGISTER_NODE (ip6_hop_by_hop_node) More...
 
static char * ip6_hop_by_hop_error_strings []
 
ip6_main_t ip6_main
 
static vlib_cli_command_t test_link_command
 (constructor) VLIB_CLI_COMMAND (test_link_command) More...
 
static vlib_cli_command_t set_ip6_flow_hash_command
 (constructor) VLIB_CLI_COMMAND (set_ip6_flow_hash_command) More...
 
static vlib_cli_command_t show_ip6_local
 (constructor) VLIB_CLI_COMMAND (show_ip6_local) More...
 
static vlib_cli_command_t set_ip6_classify_command
 (constructor) VLIB_CLI_COMMAND (set_ip6_classify_command) More...
 

Detailed Description

IPv6 Forwarding.

This file contains the source code for IPv6 forwarding.

Definition in file ip6_forward.c.

Macro Definition Documentation

#define foreach_ip6_hop_by_hop_error
Value:
_(PROCESSED, "pkts with ip6 hop-by-hop options") \
_(FORMAT, "incorrectly formatted hop-by-hop options") \
_(UNKNOWN_OPTION, "unknown ip6 hop-by-hop options")

Definition at line 2508 of file ip6_forward.c.

#define OI_DECAP   0x80000000

Definition at line 55 of file ip6_forward.c.

Enumeration Type Documentation

Enumerator
IP6_DISCOVER_NEIGHBOR_ERROR_DROP 
IP6_DISCOVER_NEIGHBOR_ERROR_REQUEST_SENT 
IP6_DISCOVER_NEIGHBOR_ERROR_NO_SOURCE_ADDRESS 

Definition at line 1708 of file ip6_forward.c.

Enumerator
IP6_DISCOVER_NEIGHBOR_NEXT_DROP 
IP6_DISCOVER_NEIGHBOR_NEXT_REPLY_TX 
IP6_DISCOVER_NEIGHBOR_N_NEXT 

Definition at line 1701 of file ip6_forward.c.

Enumerator
IP6_HOP_BY_HOP_N_ERROR 

Definition at line 2514 of file ip6_forward.c.

Enumerator
IP6_REWRITE_NEXT_DROP 
IP6_REWRITE_NEXT_ICMP_ERROR 

Definition at line 2067 of file ip6_forward.c.

Function Documentation

u8* format_ip6_forward_next_trace ( u8 s,
va_list *  args 
)

Definition at line 996 of file ip6_forward.c.

+ Here is the call graph for this function:

u8* format_ip6_hop_by_hop_ext_hdr ( u8 s,
va_list *  args 
)

Definition at line 2543 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 2587 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1010 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1027 of file ip6_forward.c.

+ Here is the call graph for this function:

clib_error_t* ip6_add_del_interface_address ( vlib_main_t vm,
u32  sw_if_index,
ip6_address_t address,
u32  address_length,
u32  is_del 
)

Definition at line 472 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void ip6_add_interface_routes ( vnet_main_t vnm,
u32  sw_if_index,
ip6_main_t im,
u32  fib_index,
ip_interface_address_t a 
)
static

Definition at line 339 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* ip6_config ( vlib_main_t vm,
unformat_input_t input 
)
static

Definition at line 3520 of file ip6_forward.c.

+ Here is the call graph for this function:

static void ip6_del_interface_routes ( ip6_main_t im,
u32  fib_index,
ip6_address_t address,
u32  address_length 
)
static

Definition at line 400 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1908 of file ip6_forward.c.

+ Here is the call graph for this function:

static uword ip6_discover_neighbor_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame,
int  is_glean 
)
static

Definition at line 1716 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1157 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword ip6_drop_or_punt ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame,
ip6_error_t  error_code 
)
static

Definition at line 1137 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_ethernet_mac_address_from_link_local_address ( u8 mac,
ip6_address_t ip 
)

Definition at line 3153 of file ip6_forward.c.

+ Here is the caller graph for this function:

void ip6_forward_next_trace ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame,
vlib_rx_or_tx_t  which_adj_index 
)

Definition at line 1046 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1915 of file ip6_forward.c.

+ Here is the call graph for this function:

int ip6_hbh_register_option ( u8  option,
int   optionsvlib_buffer_t *b, ip6_header_t *ip,ip6_hop_by_hop_option_t *opt,
u8 traceu8 *s, ip6_hop_by_hop_option_t *opt 
)

Definition at line 2987 of file ip6_forward.c.

+ Here is the caller graph for this function:

void ip6_hbh_set_next_override ( uword  next)

Definition at line 2979 of file ip6_forward.c.

+ Here is the caller graph for this function:

int ip6_hbh_unregister_option ( u8  option)

Definition at line 3011 of file ip6_forward.c.

+ Here is the caller graph for this function:

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

Definition at line 2713 of file ip6_forward.c.

+ Here is the call graph for this function:

static clib_error_t* ip6_hop_by_hop_init ( vlib_main_t vm)
static

Definition at line 2967 of file ip6_forward.c.

+ Here is the caller graph for this function:

ip6_address_t* ip6_interface_first_address ( ip6_main_t im,
u32  sw_if_index 
)

get first IPv6 interface address

Definition at line 453 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_link_local_address_from_ethernet_mac_address ( ip6_address_t ip,
u8 mac 
)

Definition at line 3137 of file ip6_forward.c.

+ Here is the caller graph for this function:

static uword ip6_load_balance ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
inlinestatic

Definition at line 754 of file ip6_forward.c.

+ Here is the call graph for this function:

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

Definition at line 1637 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1664 of file ip6_forward.c.

+ Here is the call graph for this function:

static uword ip6_local_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame,
int  head_of_feature_arc 
)
static

Definition at line 1349 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 731 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* ip6_lookup_init ( vlib_main_t vm)
static

Definition at line 3046 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword ip6_lookup_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
inlinestatic

Definition at line 71 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 2437 of file ip6_forward.c.

+ Here is the call graph for this function:

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

Definition at line 2427 of file ip6_forward.c.

+ Here is the call graph for this function:

static u8 ip6_next_proto_is_tcp_udp ( vlib_buffer_t p0,
ip6_header_t ip0,
u32 udp_offset0 
)
inlinestatic

Definition at line 1327 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* ip6_probe_neighbor ( vlib_main_t vm,
ip6_address_t dst,
u32  sw_if_index 
)

Definition at line 1964 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1163 of file ip6_forward.c.

+ Here is the call graph for this function:

void ip6_register_protocol ( u32  protocol,
u32  node_index 
)

Definition at line 1690 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 2407 of file ip6_forward.c.

+ Here is the call graph for this function:

static uword ip6_rewrite_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame,
int  do_counters,
int  is_midchain,
int  is_mcast 
)
inlinestatic

Definition at line 2074 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 2417 of file ip6_forward.c.

+ Here is the call graph for this function:

static u8 ip6_scan_hbh_options ( vlib_buffer_t b0,
ip6_header_t ip0,
ip6_hop_by_hop_header_t hbh0,
ip6_hop_by_hop_option_t opt0,
ip6_hop_by_hop_option_t limit0,
u32 next0 
)
inlinestatic

Definition at line 2636 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* ip6_sw_interface_add_del ( vnet_main_t vnm,
u32  sw_if_index,
u32  is_add 
)

Definition at line 692 of file ip6_forward.c.

+ Here is the call graph for this function:

clib_error_t* ip6_sw_interface_admin_up_down ( vnet_main_t vnm,
u32  sw_if_index,
u32  flags 
)

Definition at line 534 of file ip6_forward.c.

+ Here is the call graph for this function:

void ip6_sw_interface_enable_disable ( u32  sw_if_index,
u32  is_enable 
)

Definition at line 421 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u16 ip6_tcp_udp_icmp_compute_checksum ( vlib_main_t vm,
vlib_buffer_t p0,
ip6_header_t ip0,
int *  bogus_lengthp 
)

Definition at line 1202 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 ip6_tcp_udp_icmp_validate_checksum ( vlib_main_t vm,
vlib_buffer_t p0 
)

Definition at line 1278 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int ip6_urpf_loose_check ( ip6_main_t im,
vlib_buffer_t b,
ip6_header_t i 
)
inlinestatic

returns number of links on which src is reachable.

Definition at line 1311 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* set_ip6_classify_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 3457 of file ip6_forward.c.

+ Here is the call graph for this function:

static clib_error_t* set_ip6_flow_hash_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 3221 of file ip6_forward.c.

+ Here is the call graph for this function:

static clib_error_t* show_ip6_local_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 3349 of file ip6_forward.c.

+ Here is the call graph for this function:

static clib_error_t* test_ip6_link_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 3166 of file ip6_forward.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ip6_lookup_node  ,
ip6_lookup   
)

+ Here is the caller graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ip6_load_balance_node  ,
ip6_load_balance   
)
VLIB_NODE_FUNCTION_MULTIARCH ( ip6_drop_node  ,
ip6_drop   
)
VLIB_NODE_FUNCTION_MULTIARCH ( ip6_punt_node  ,
ip6_punt   
)
VLIB_NODE_FUNCTION_MULTIARCH ( ip6_local_node  ,
ip6_local   
)
VLIB_NODE_FUNCTION_MULTIARCH ( ip6_midchain_node  ,
ip6_midchain   
)
VLIB_NODE_FUNCTION_MULTIARCH ( ip6_rewrite_node  ,
ip6_rewrite   
)
VLIB_NODE_FUNCTION_MULTIARCH ( ip6_rewrite_mcast_node  ,
ip6_rewrite_mcast   
)
VLIB_NODE_FUNCTION_MULTIARCH ( ip6_mcast_midchain_node  ,
ip6_mcast_midchain   
)
VLIB_NODE_FUNCTION_MULTIARCH ( ip6_hop_by_hop_node  ,
ip6_hop_by_hop   
)
VNET_FEATURE_ARC_INIT ( ip6_unicast  ,
static   
)

+ Here is the caller graph for this function:

VNET_FEATURE_ARC_INIT ( ip6_multicast  ,
static   
)
VNET_FEATURE_ARC_INIT ( ip6_output  ,
static   
)
VNET_FEATURE_ARC_INIT ( ip6_local  )
VNET_FEATURE_INIT ( ip6_flow_classify  ,
static   
)

+ Here is the caller graph for this function:

VNET_FEATURE_INIT ( ip6_inacl  ,
static   
)
VNET_FEATURE_INIT ( ip6_policer_classify  ,
static   
)
VNET_FEATURE_INIT ( ip6_ipsec  ,
static   
)
VNET_FEATURE_INIT ( ip6_l2tp  ,
static   
)
VNET_FEATURE_INIT ( ip6_vpath  ,
static   
)
VNET_FEATURE_INIT ( ip6_vxlan_bypass  ,
static   
)
VNET_FEATURE_INIT ( ip6_drop  ,
static   
)
VNET_FEATURE_INIT ( ip6_lookup  ,
static   
)
VNET_FEATURE_INIT ( ip6_vpath_mc  ,
static   
)
VNET_FEATURE_INIT ( ip6_drop_mc  ,
static   
)
VNET_FEATURE_INIT ( ip6_mc_lookup  ,
static   
)
VNET_FEATURE_INIT ( ip6_ipsec_output  ,
static   
)
VNET_FEATURE_INIT ( ip6_interface_output  ,
static   
)
VNET_FEATURE_INIT ( ip6_local_end_of_arc  ,
static   
)
int vnet_set_ip6_classify_intfc ( vlib_main_t vm,
u32  sw_if_index,
u32  table_index 
)

Definition at line 3397 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int vnet_set_ip6_flow_hash ( u32  table_id,
u32  flow_hash_config 
)

Definition at line 3205 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

VNET_SW_INTERFACE_ADD_DEL_FUNCTION ( ip6_sw_interface_add_del  )

+ Here is the caller graph for this function:

VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION ( ip6_sw_interface_admin_up_down  )

+ Here is the caller graph for this function:

Variable Documentation

char* ip6_discover_neighbor_error_strings[]
static
vlib_node_registration_t ip6_discover_neighbor_node
Initial value:
=
{
.function = ip6_discover_neighbor,
.name = "ip6-discover-neighbor",
.vector_size = sizeof (u32),
.next_nodes =
{
[IP6_DISCOVER_NEIGHBOR_NEXT_REPLY_TX] = "interface-output",
},
}
u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:996
#define ARRAY_LEN(x)
Definition: clib.h:59
unsigned int u32
Definition: types.h:88
static uword ip6_discover_neighbor(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:1908
static char * ip6_discover_neighbor_error_strings[]
Definition: ip6_forward.c:1920

(constructor) VLIB_REGISTER_NODE (ip6_discover_neighbor_node)

Definition at line 1928 of file ip6_forward.c.

vlib_node_registration_t ip6_drop_node
static
Initial value:
=
{
.function = ip6_drop,
.name = "ip6-drop",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes =
{
[0] = "error-drop",},
}
u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:996
static uword ip6_drop(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:1157
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_drop_node)

Definition at line 1169 of file ip6_forward.c.

vlib_node_registration_t ip6_glean_node
Initial value:
=
{
.function = ip6_glean,
.name = "ip6-glean",
.vector_size = sizeof (u32),
.next_nodes =
{
[IP6_DISCOVER_NEIGHBOR_NEXT_REPLY_TX] = "interface-output",
},
}
u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:996
static uword ip6_glean(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:1915
#define ARRAY_LEN(x)
Definition: clib.h:59
unsigned int u32
Definition: types.h:88
static char * ip6_discover_neighbor_error_strings[]
Definition: ip6_forward.c:1920

(constructor) VLIB_REGISTER_NODE (ip6_glean_node)

Definition at line 1946 of file ip6_forward.c.

char* ip6_hop_by_hop_error_strings[]
static
Initial value:
= {
#define _(sym,string)
}
#define foreach_ip6_hop_by_hop_error
Definition: ip6_forward.c:2508

Definition at line 2536 of file ip6_forward.c.

ip6_hop_by_hop_main_t ip6_hop_by_hop_main

Definition at line 2506 of file ip6_forward.c.

vlib_node_registration_t ip6_hop_by_hop_node
Initial value:
=
{
.function = ip6_hop_by_hop,
.name = "ip6-hop-by-hop",
.sibling_of = "ip6-lookup",
.vector_size = sizeof (u32),
.format_trace = format_ip6_hop_by_hop_trace,
.error_strings = ip6_hop_by_hop_error_strings,
.n_next_nodes = 0,
}
static char * ip6_hop_by_hop_error_strings[]
Definition: ip6_forward.c:2536
static uword ip6_hop_by_hop(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:2713
static u8 * format_ip6_hop_by_hop_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:2587
#define ARRAY_LEN(x)
Definition: clib.h:59
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_hop_by_hop_node)

Definition at line 2534 of file ip6_forward.c.

vlib_node_registration_t ip6_load_balance_node
Initial value:
=
{
.function = ip6_load_balance,
.name = "ip6-load-balance",
.vector_size = sizeof (u32),
.sibling_of = "ip6-lookup",
.format_trace = format_ip6_lookup_trace,
}
static u8 * format_ip6_lookup_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1010
static uword ip6_load_balance(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:754
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_load_balance_node)

Definition at line 971 of file ip6_forward.c.

vlib_node_registration_t ip6_local_end_of_arc_node
static
Initial value:
= {
.function = ip6_local_end_of_arc,
.name = "ip6-local-end-of-arc",
.vector_size = sizeof (u32),
.sibling_of = "ip6-local",
}
u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:996
static uword ip6_local_end_of_arc(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:1664
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_local_end_of_arc_node)

Definition at line 1671 of file ip6_forward.c.

vlib_node_registration_t ip6_local_node
static
Initial value:
=
{
.function = ip6_local,
.name = "ip6-local",
.vector_size = sizeof (u32),
.n_next_nodes = IP_LOCAL_N_NEXT,
.next_nodes =
{
[IP_LOCAL_NEXT_DROP] = "error-drop",
[IP_LOCAL_NEXT_PUNT] = "error-punt",
[IP_LOCAL_NEXT_UDP_LOOKUP] = "ip6-udp-lookup",
[IP_LOCAL_NEXT_ICMP] = "ip6-icmp-input",
},
}
u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:996
static uword ip6_local(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:1637
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_local_node)

Definition at line 1643 of file ip6_forward.c.

vlib_node_registration_t ip6_lookup_node
Initial value:
=
{
.function = ip6_lookup,
.name = "ip6-lookup",
.vector_size = sizeof (u32),
.format_trace = format_ip6_lookup_trace,
.n_next_nodes = IP6_LOOKUP_N_NEXT,
.next_nodes = IP6_LOOKUP_NEXT_NODES,
}
static u8 * format_ip6_lookup_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1010
#define IP6_LOOKUP_NEXT_NODES
Definition: adj.h:118
unsigned int u32
Definition: types.h:88
static uword ip6_lookup(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:731

(constructor) VLIB_REGISTER_NODE (ip6_lookup_node)

Definition at line 740 of file ip6_forward.c.

ip6_main_t ip6_main

Definition at line 3043 of file ip6_forward.c.

vlib_node_registration_t ip6_mcast_midchain_node
static
Initial value:
=
{
.function = ip6_mcast_midchain,
.name = "ip6-mcast-midchain",
.vector_size = sizeof (u32),
.format_trace = format_ip6_rewrite_trace,
.sibling_of = "ip6-rewrite",
}
static u8 * format_ip6_rewrite_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1027
unsigned int u32
Definition: types.h:88
static uword ip6_mcast_midchain(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:2437

(constructor) VLIB_REGISTER_NODE (ip6_mcast_midchain_node)

Definition at line 2491 of file ip6_forward.c.

vlib_node_registration_t ip6_midchain_node
Initial value:
=
{
.function = ip6_midchain,
.name = "ip6-midchain",
.vector_size = sizeof (u32),
.sibling_of = "ip6-rewrite",
}
u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:996
static uword ip6_midchain(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:2427
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_midchain_node)

Definition at line 2447 of file ip6_forward.c.

vlib_node_registration_t ip6_punt_node
static
Initial value:
=
{
.function = ip6_punt,
.name = "ip6-punt",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes =
{
[0] = "error-punt",},
}
u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:996
unsigned int u32
Definition: types.h:88
static uword ip6_punt(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:1163

(constructor) VLIB_REGISTER_NODE (ip6_punt_node)

Definition at line 1185 of file ip6_forward.c.

vlib_node_registration_t ip6_rewrite_mcast_node
Initial value:
=
{
.function = ip6_rewrite_mcast,
.name = "ip6-rewrite-mcast",
.vector_size = sizeof (u32),
.format_trace = format_ip6_rewrite_trace,
.sibling_of = "ip6-rewrite",
}
static u8 * format_ip6_rewrite_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1027
unsigned int u32
Definition: types.h:88
static uword ip6_rewrite_mcast(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:2417

(constructor) VLIB_REGISTER_NODE (ip6_rewrite_mcast_node)

Definition at line 2478 of file ip6_forward.c.

vlib_node_registration_t ip6_rewrite_node
Initial value:
=
{
.function = ip6_rewrite,
.name = "ip6-rewrite",
.vector_size = sizeof (u32),
.format_trace = format_ip6_rewrite_trace,
.n_next_nodes = 2,
.next_nodes =
{
[IP6_REWRITE_NEXT_DROP] = "error-drop",
[IP6_REWRITE_NEXT_ICMP_ERROR] = "ip6-icmp-error",
},
}
static uword ip6_rewrite(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:2407
static u8 * format_ip6_rewrite_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1027
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_rewrite_node)

Definition at line 2460 of file ip6_forward.c.

vlib_cli_command_t set_ip6_classify_command
static
Initial value:
=
{
.path = "set ip6 classify",
.short_help =
"set ip6 classify intfc <interface> table-index <classify-idx>",
}
static clib_error_t * set_ip6_classify_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: ip6_forward.c:3457

(constructor) VLIB_CLI_COMMAND (set_ip6_classify_command)

Definition at line 3510 of file ip6_forward.c.

vlib_cli_command_t set_ip6_flow_hash_command
static
Initial value:
=
{
.path = "set ip6 flow-hash",
.short_help =
"set ip6 flow-hash table <table-id> [src] [dst] [sport] [dport] [proto] [reverse]",
}
static clib_error_t * set_ip6_flow_hash_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: ip6_forward.c:3221

(constructor) VLIB_CLI_COMMAND (set_ip6_flow_hash_command)

Definition at line 3339 of file ip6_forward.c.

vlib_cli_command_t show_ip6_local
static
Initial value:
=
{
.path = "show ip6 local",
.short_help = "show ip6 local",
}
static clib_error_t * show_ip6_local_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: ip6_forward.c:3349

(constructor) VLIB_CLI_COMMAND (show_ip6_local)

Definition at line 3388 of file ip6_forward.c.

vlib_cli_command_t test_link_command
static
Initial value:
=
{
.path = "test ip6 link",
.short_help = "test ip6 link <mac-address>",
}
static clib_error_t * test_ip6_link_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: ip6_forward.c:3166

(constructor) VLIB_CLI_COMMAND (test_link_command)

Definition at line 3196 of file ip6_forward.c.