FD.io VPP  v16.09
Vector Packet Processing
ip6_forward.c File Reference
+ Include dependency graph for ip6_forward.c:

Go to the source code of this file.

Data Structures

struct  ip6_interface_address_t
 
struct  ip6_forward_next_trace_t
 
struct  ip6_hop_by_hop_trace_t
 

Macros

#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

static void compute_prefix_lengths_in_search_order (ip6_main_t *im)
 
u32 ip6_fib_lookup_with_table (ip6_main_t *im, u32 fib_index, ip6_address_t *dst)
 
u32 ip6_fib_lookup (ip6_main_t *im, u32 sw_if_index, ip6_address_t *dst)
 
void vnet_ip6_fib_init (ip6_main_t *im, u32 fib_index)
 
static ip6_fib_tcreate_fib_with_table_id (ip6_main_t *im, u32 table_id)
 
ip6_fib_tfind_ip6_fib_by_table_index_or_id (ip6_main_t *im, u32 table_index_or_id, u32 flags)
 Get or create an IPv6 fib. More...
 
void ip6_add_del_route (ip6_main_t *im, ip6_add_del_route_args_t *a)
 
u32 ip6_route_get_next_hop_adj (ip6_main_t *im, u32 fib_index, ip6_address_t *next_hop, u32 next_hop_sw_if_index, u32 explicit_fib_index)
 
void ip6_add_del_route_next_hop (ip6_main_t *im, u32 flags, ip6_address_t *dst_address, u32 dst_address_length, ip6_address_t *next_hop, u32 next_hop_sw_if_index, u32 next_hop_weight, u32 adj_index, u32 explicit_fib_index)
 
u32 ip6_get_route (ip6_main_t *im, u32 table_index_or_table_id, u32 flags, ip6_address_t *address, u32 address_length)
 
void ip6_foreach_matching_route (ip6_main_t *im, u32 table_index_or_table_id, u32 flags, ip6_address_t *dst_address, u32 address_length, ip6_address_t **results, u8 **result_lengths)
 
void ip6_maybe_remap_adjacencies (ip6_main_t *im, u32 table_index_or_table_id, u32 flags)
 
void ip6_delete_matching_routes (ip6_main_t *im, u32 table_index_or_table_id, u32 flags, ip6_address_t *address, u32 address_length)
 
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, int is_indirect)
 
void ip6_adjacency_set_interface_route (vnet_main_t *vnm, ip_adjacency_t *adj, u32 sw_if_index, u32 if_address_index)
 
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)
 
static clib_error_tip6_add_del_interface_address_internal (vlib_main_t *vm, u32 sw_if_index, ip6_address_t *new_address, u32 new_length, u32 redistribute, u32 insert_routes, u32 is_del)
 
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_IP6_UNICAST_FEATURE_INIT (ip6_inacl, static)
 
 VNET_IP6_UNICAST_FEATURE_INIT (ip6_policer_classify, static)
 
 VNET_IP6_UNICAST_FEATURE_INIT (ip6_ipsec, static)
 
 VNET_IP6_UNICAST_FEATURE_INIT (ip6_l2tp, static)
 
 VNET_IP6_UNICAST_FEATURE_INIT (ip6_vpath, static)
 
 VNET_IP6_UNICAST_FEATURE_INIT (ip6_lookup, static)
 
 VNET_IP6_MULTICAST_FEATURE_INIT (ip4_vpath_mc, static)
 
 VNET_IP6_MULTICAST_FEATURE_INIT (ip6_lookup, static)
 
static clib_error_tip6_feature_init (vlib_main_t *vm, ip6_main_t *im)
 
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)
 
static uword ip6_indirect (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static 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)
 
static uword ip6_miss (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
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 uword ip6_local (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
void ip6_register_protocol (u32 protocol, u32 node_index)
 
static uword ip6_discover_neighbor (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 rewrite_for_locally_received_packets)
 
static uword ip6_rewrite_transit (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword ip6_rewrite_local (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static u8format_ip6_hop_by_hop_trace (u8 *s, va_list *args)
 
static uword ip6_hop_by_hop (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static clib_error_tip6_hop_by_hop_init (vlib_main_t *vm)
 
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)
 
static clib_error_tadd_del_ip6_interface_table (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
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

static char * feature_start_nodes []
 
vlib_node_registration_t ip6_lookup_node
 (constructor) VLIB_REGISTER_NODE (ip6_lookup_node) More...
 
vlib_node_registration_t ip6_indirect_node
 (constructor) VLIB_REGISTER_NODE (ip6_indirect_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_miss_node
 (constructor) VLIB_REGISTER_NODE (ip6_miss_node) More...
 
static vlib_node_registration_t ip6_multicast_node
 (constructor) VLIB_REGISTER_NODE (ip6_multicast_node) More...
 
static vlib_node_registration_t ip6_local_node
 (constructor) VLIB_REGISTER_NODE (ip6_local_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_rewrite_node
 (constructor) VLIB_REGISTER_NODE (ip6_rewrite_node) More...
 
vlib_node_registration_t ip6_rewrite_local_node
 (constructor) VLIB_REGISTER_NODE (ip6_rewrite_local_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 set_interface_ip6_table_command
 (constructor) VLIB_CLI_COMMAND (set_interface_ip6_table_command) More...
 
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...
 

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 2673 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 2048 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 2042 of file ip6_forward.c.

Enumerator
IP6_HOP_BY_HOP_N_ERROR 

Definition at line 2678 of file ip6_forward.c.

Enumerator
IP6_REWRITE_NEXT_DROP 
IP6_REWRITE_NEXT_ICMP_ERROR 

Definition at line 2333 of file ip6_forward.c.

Function Documentation

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

Definition at line 3036 of file ip6_forward.c.

+ Here is the call graph for this function:

static void compute_prefix_lengths_in_search_order ( ip6_main_t im)
static

Definition at line 48 of file ip6_forward.c.

+ Here is the caller graph for this function:

static ip6_fib_t* create_fib_with_table_id ( ip6_main_t im,
u32  table_id 
)
static

Definition at line 172 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ip6_fib_t* find_ip6_fib_by_table_index_or_id ( ip6_main_t im,
u32  table_index_or_id,
u32  flags 
)

Get or create an IPv6 fib.

Get or create an IPv6 fib with the provided fib ID or index. The fib ID is a possibly-sparse user-defined value while the fib index defines the position of the fib in the fib vector.

Parameters
imip6_main pointer.
table_index_or_idThe table index if IP6_ROUTE_FLAG_FIB_INDEX bit is set in flags. Otherwise, when set to ~0, an arbitrary and unused fib ID is picked and can be retrieved with ret->table_id. Otherwise, it is the fib ID to be used to retrieve or create the desired fib.
flagsIndicates whether table_index_or_id is the fib index or ID. When the bit IP6_ROUTE_FLAG_FIB_INDEX is set, table_index_or_id is considered as the fib index, and the fib ID otherwise.
Returns
A pointer to the retrieved or created fib.
Remarks
When getting a fib with the fib index, the fib MUST already exist.

Definition at line 185 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_forward_next_trace ( u8 s,
va_list *  args 
)
static

Definition at line 1424 of file ip6_forward.c.

+ Here is the call graph for this function:

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

Definition at line 2704 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 1437 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 1456 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 1204 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_add_del_interface_address_internal ( vlib_main_t vm,
u32  sw_if_index,
ip6_address_t new_address,
u32  new_length,
u32  redistribute,
u32  insert_routes,
u32  is_del 
)
static

Definition at line 1139 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_add_del_route ( ip6_main_t im,
ip6_add_del_route_args_t a 
)

Definition at line 208 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_add_del_route_next_hop ( ip6_main_t im,
u32  flags,
ip6_address_t dst_address,
u32  dst_address_length,
ip6_address_t next_hop,
u32  next_hop_sw_if_index,
u32  next_hop_weight,
u32  adj_index,
u32  explicit_fib_index 
)

Definition at line 397 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 1032 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_adjacency_set_interface_route ( vnet_main_t vnm,
ip_adjacency_t adj,
u32  sw_if_index,
u32  if_address_index 
)

Definition at line 994 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 3300 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 1089 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_delete_matching_routes ( ip6_main_t im,
u32  table_index_or_table_id,
u32  flags,
ip6_address_t address,
u32  address_length 
)

Definition at line 669 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 2055 of file ip6_forward.c.

+ Here is the call 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 1590 of file ip6_forward.c.

+ Here is the call 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 1567 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 3101 of file ip6_forward.c.

+ Here is the caller graph for this function:

static clib_error_t* ip6_feature_init ( vlib_main_t vm,
ip6_main_t im 
)
static

Definition at line 1306 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 ip6_fib_lookup ( ip6_main_t im,
u32  sw_if_index,
ip6_address_t dst 
)

Definition at line 94 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 ip6_fib_lookup_with_table ( ip6_main_t im,
u32  fib_index,
ip6_address_t dst 
)

Definition at line 61 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_foreach_matching_route ( ip6_main_t im,
u32  table_index_or_table_id,
u32  flags,
ip6_address_t dst_address,
u32  address_length,
ip6_address_t **  results,
u8 **  result_lengths 
)

Definition at line 596 of file ip6_forward.c.

+ Here is the call graph for this function:

+ 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 1478 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 ip6_get_route ( ip6_main_t im,
u32  table_index_or_table_id,
u32  flags,
ip6_address_t address,
u32  address_length 
)

Definition at line 572 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller 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 2902 of file ip6_forward.c.

+ Here is the caller graph for this function:

int ip6_hbh_unregister_option ( u8  option)

Definition at line 2925 of file ip6_forward.c.

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

Definition at line 2747 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 2890 of file ip6_forward.c.

+ Here is the caller graph for this function:

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

Definition at line 1395 of file ip6_forward.c.

+ Here is the call graph for this function:

void ip6_link_local_address_from_ethernet_mac_address ( ip6_address_t ip,
u8 mac 
)

Definition at line 3085 of file ip6_forward.c.

+ Here is the caller 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 1791 of file ip6_forward.c.

+ Here is the call 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 1372 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 2958 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,
int  is_indirect 
)
inlinestatic

Definition at line 714 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_maybe_remap_adjacencies ( ip6_main_t im,
u32  table_index_or_table_id,
u32  flags 
)

Definition at line 650 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1602 of file ip6_forward.c.

+ Here is the call 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 2261 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 1596 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 2032 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_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame,
int  rewrite_for_locally_received_packets 
)
inlinestatic

Definition at line 2339 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_local ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
static

Definition at line 2629 of file ip6_forward.c.

+ Here is the call graph for this function:

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

Definition at line 2620 of file ip6_forward.c.

+ Here is the call graph for this function:

u32 ip6_route_get_next_hop_adj ( ip6_main_t im,
u32  fib_index,
ip6_address_t next_hop,
u32  next_hop_sw_if_index,
u32  explicit_fib_index 
)

Definition at line 301 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 1328 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 1216 of file ip6_forward.c.

+ Here is the call 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 1666 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 1761 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 3251 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 3156 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 3204 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 3114 of file ip6_forward.c.

+ Here is the call graph for this function:

void vnet_ip6_fib_init ( ip6_main_t im,
u32  fib_index 
)

Definition at line 101 of file ip6_forward.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

VNET_IP6_MULTICAST_FEATURE_INIT ( ip4_vpath_mc  ,
static   
)

+ Here is the caller graph for this function:

VNET_IP6_MULTICAST_FEATURE_INIT ( ip6_lookup  ,
static   
)
VNET_IP6_UNICAST_FEATURE_INIT ( ip6_inacl  ,
static   
)

+ Here is the caller graph for this function:

VNET_IP6_UNICAST_FEATURE_INIT ( ip6_policer_classify  ,
static   
)
VNET_IP6_UNICAST_FEATURE_INIT ( ip6_ipsec  ,
static   
)
VNET_IP6_UNICAST_FEATURE_INIT ( ip6_l2tp  ,
static   
)
VNET_IP6_UNICAST_FEATURE_INIT ( ip6_vpath  ,
static   
)
VNET_IP6_UNICAST_FEATURE_INIT ( ip6_lookup  ,
static   
)
int vnet_set_ip6_classify_intfc ( vlib_main_t vm,
u32  sw_if_index,
u32  table_index 
)

Definition at line 3229 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 3140 of file ip6_forward.c.

+ 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* feature_start_nodes[]
static
Initial value:
=
{"ip6-input"}

Definition at line 1302 of file ip6_forward.c.

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",
},
}
static u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1424
#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:2055
static char * ip6_discover_neighbor_error_strings[]
Definition: ip6_forward.c:2235

(constructor) VLIB_REGISTER_NODE (ip6_discover_neighbor_node)

Definition at line 2243 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",
},
}
static uword ip6_drop(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:1590
static u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1424
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_drop_node)

Definition at line 1607 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:2673

Definition at line 2697 of file ip6_forward.c.

ip6_hop_by_hop_main_t ip6_hop_by_hop_main

Definition at line 2671 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,
}
bad routing header type(not 4)") sr_error (NO_MORE_SEGMENTS
static char * ip6_hop_by_hop_error_strings[]
Definition: ip6_forward.c:2697
static uword ip6_hop_by_hop(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:2747
static u8 * format_ip6_hop_by_hop_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:2704
#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 2695 of file ip6_forward.c.

vlib_node_registration_t ip6_indirect_node
Initial value:
= {
.function = ip6_indirect,
.name = "ip6-indirect",
.vector_size = sizeof (u32),
.sibling_of = "ip6-lookup",
.format_trace = format_ip6_lookup_trace,
.n_next_nodes = 0,
}
static u8 * format_ip6_lookup_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1437
static uword ip6_indirect(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:1395
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_indirect_node)

Definition at line 1403 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",
},
}
static uword ip6_local(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:1791
static u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1424
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_local_node)

Definition at line 2014 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:1437
#define IP6_LOOKUP_NEXT_NODES
Definition: lookup.h:124
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:1372

(constructor) VLIB_REGISTER_NODE (ip6_lookup_node)

Definition at line 1381 of file ip6_forward.c.

ip6_main_t ip6_main

Definition at line 2955 of file ip6_forward.c.

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

(constructor) VLIB_REGISTER_NODE (ip6_miss_node)

Definition at line 1637 of file ip6_forward.c.

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

(constructor) VLIB_REGISTER_NODE (ip6_multicast_node)

Definition at line 1652 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",
},
}
static u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1424
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:1596

(constructor) VLIB_REGISTER_NODE (ip6_punt_node)

Definition at line 1622 of file ip6_forward.c.

vlib_node_registration_t ip6_rewrite_local_node
Initial value:
= {
.function = ip6_rewrite_local,
.name = "ip6-rewrite-local",
.vector_size = sizeof (u32),
.sibling_of = "ip6-rewrite",
.format_trace = format_ip6_rewrite_trace,
.n_next_nodes = 0,
}
static uword ip6_rewrite_local(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:2629
static u8 * format_ip6_rewrite_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1456
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_rewrite_local_node)

Definition at line 2653 of file ip6_forward.c.

vlib_node_registration_t ip6_rewrite_node
Initial value:
= {
.function = ip6_rewrite_transit,
.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 u8 * format_ip6_rewrite_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:1456
static uword ip6_rewrite_transit(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_forward.c:2620
unsigned int u32
Definition: types.h:88

(constructor) VLIB_REGISTER_NODE (ip6_rewrite_node)

Definition at line 2637 of file ip6_forward.c.

vlib_cli_command_t set_interface_ip6_table_command
static
Initial value:
= {
.path = "set interface ip6 table",
.short_help = "set interface ip6 table <intfc> <table-id>"
}
static clib_error_t * add_del_ip6_interface_table(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: ip6_forward.c:3036

(constructor) VLIB_CLI_COMMAND (set_interface_ip6_table_command)

Definition at line 3078 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 <int> table-index <index>",
}
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:3251

(constructor) VLIB_CLI_COMMAND (set_ip6_classify_command)

Definition at line 3292 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 ip table flow-hash table <fib-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:3156

(constructor) VLIB_CLI_COMMAND (set_ip6_flow_hash_command)

Definition at line 3196 of file ip6_forward.c.

vlib_cli_command_t show_ip6_local
static
Initial value:
= {
.path = "show ip6 local",
.short_help = "Show ip6 local protocol table",
}
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:3204

(constructor) VLIB_CLI_COMMAND (show_ip6_local)

Definition at line 3223 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:3114

(constructor) VLIB_CLI_COMMAND (test_link_command)

Definition at line 3134 of file ip6_forward.c.