FD.io VPP
v18.10-34-gcce845e
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | ip4_forward_next_trace_t |
struct | ip4_local_last_check_t |
Macros | |
#define | ip4_local_csum_is_offloaded(_b) |
#define | ip4_local_need_csum_check(is_tcp_udp, _b) |
#define | ip4_local_csum_is_valid(_b) |
#define | foreach_notrace_ip4_arp_error |
#define | IP4_MCAST_ADDR_MASK 0xffff7f00 |
This bits of an IPv4 address to mask to construct a multicast MAC address. More... | |
Variables | |
vlib_node_registration_t | ip4_lookup_node |
(constructor) VLIB_REGISTER_NODE (ip4_lookup_node) More... | |
vlib_node_registration_t | ip4_load_balance_node |
(constructor) VLIB_REGISTER_NODE (ip4_load_balance_node) More... | |
ip4_main_t | ip4_main |
Global ip4 main structure. More... | |
vlib_node_registration_t | ip4_local_node |
(constructor) VLIB_REGISTER_NODE (ip4_local_node) More... | |
vlib_node_registration_t | ip4_local_end_of_arc_node |
(constructor) VLIB_REGISTER_NODE (ip4_local_end_of_arc_node) More... | |
static vlib_cli_command_t | show_ip_local |
(constructor) VLIB_CLI_COMMAND (show_ip_local) More... | |
static char * | ip4_arp_error_strings [] |
vlib_node_registration_t | ip4_arp_node |
(constructor) VLIB_REGISTER_NODE (ip4_arp_node) More... | |
vlib_node_registration_t | ip4_glean_node |
(constructor) VLIB_REGISTER_NODE (ip4_glean_node) More... | |
vlib_node_registration_t | ip4_rewrite_node |
(constructor) VLIB_REGISTER_NODE (ip4_rewrite_node) More... | |
vlib_node_registration_t | ip4_rewrite_bcast_node |
(constructor) VLIB_REGISTER_NODE (ip4_rewrite_bcast_node) More... | |
vlib_node_registration_t | ip4_rewrite_mcast_node |
(constructor) VLIB_REGISTER_NODE (ip4_rewrite_mcast_node) More... | |
vlib_node_registration_t | ip4_mcast_midchain_node |
(constructor) VLIB_REGISTER_NODE (ip4_mcast_midchain_node) More... | |
vlib_node_registration_t | ip4_midchain_node |
(constructor) VLIB_REGISTER_NODE (ip4_midchain_node) More... | |
static vlib_cli_command_t | lookup_test_command |
(constructor) VLIB_CLI_COMMAND (lookup_test_command) More... | |
static vlib_cli_command_t | set_ip_flow_hash_command |
(constructor) VLIB_CLI_COMMAND (set_ip_flow_hash_command) More... | |
static vlib_cli_command_t | set_ip_classify_command |
(constructor) VLIB_CLI_COMMAND (set_ip_classify_command) More... | |
#define foreach_notrace_ip4_arp_error |
Definition at line 1965 of file ip4_forward.c.
#define ip4_local_csum_is_offloaded | ( | _b | ) |
Definition at line 1242 of file ip4_forward.c.
#define ip4_local_csum_is_valid | ( | _b | ) |
Definition at line 1250 of file ip4_forward.c.
#define ip4_local_need_csum_check | ( | is_tcp_udp, | |
_b | |||
) |
Definition at line 1246 of file ip4_forward.c.
#define IP4_MCAST_ADDR_MASK 0xffff7f00 |
This bits of an IPv4 address to mask to construct a multicast MAC address.
Definition at line 2115 of file ip4_forward.c.
enum ip4_rewrite_next_t |
Enumerator | |
---|---|
IP4_REWRITE_NEXT_DROP | |
IP4_REWRITE_NEXT_ICMP_ERROR | |
IP4_REWRITE_NEXT_FRAGMENT | |
IP4_REWRITE_N_NEXT |
Definition at line 2100 of file ip4_forward.c.
Enumerator | |
---|---|
IP_LOCAL_PACKET_TYPE_L4 | |
IP_LOCAL_PACKET_TYPE_NAT | |
IP_LOCAL_PACKET_TYPE_FRAG |
Definition at line 1484 of file ip4_forward.c.
|
static |
Definition at line 988 of file ip4_forward.c.
Definition at line 1002 of file ip4_forward.c.
clib_error_t* ip4_add_del_interface_address | ( | vlib_main_t * | vm, |
u32 | sw_if_index, | ||
ip4_address_t * | address, | ||
u32 | address_length, | ||
u32 | is_del | ||
) |
Definition at line 659 of file ip4_forward.c.
|
static |
Definition at line 553 of file ip4_forward.c.
|
static |
Definition at line 376 of file ip4_forward.c.
|
static |
Definition at line 337 of file ip4_forward.c.
|
inlinestatic |
Definition at line 1743 of file ip4_forward.c.
VLIB_NODE_FN() ip4_arp_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
|
static |
|
static |
Definition at line 480 of file ip4_forward.c.
void ip4_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 1038 of file ip4_forward.c.
VLIB_NODE_FN() ip4_glean_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
ip4_address_t* ip4_interface_first_address | ( | ip4_main_t * | im, |
u32 | sw_if_index, | ||
ip_interface_address_t ** | result_ia | ||
) |
Definition at line 313 of file ip4_forward.c.
VLIB_NODE_FN() ip4_load_balance_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
|
inlinestatic |
Definition at line 1255 of file ip4_forward.c.
|
inlinestatic |
Definition at line 1274 of file ip4_forward.c.
|
inlinestatic |
Definition at line 1336 of file ip4_forward.c.
|
inlinestatic |
Definition at line 1395 of file ip4_forward.c.
|
inlinestatic |
Determine packet type and next node.
The expectation is that all packets that are not L4 will skip checksums and source checks.
Definition at line 1498 of file ip4_forward.c.
VLIB_NODE_FN() ip4_local_end_of_arc_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
|
inlinestatic |
Definition at line 1518 of file ip4_forward.c.
|
inlinestatic |
Definition at line 1219 of file ip4_forward.c.
VLIB_NODE_FN() ip4_local_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
|
inlinestatic |
Definition at line 1306 of file ip4_forward.c.
|
static |
Definition at line 903 of file ip4_forward.c.
VLIB_NODE_FN() ip4_lookup_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
IPv4 lookup node.
ip4-lookup
This is the main IPv4 lookup dispatch node.
vm | vlib_main_t corresponding to the current thread |
node | vlib_node_runtime_t |
frame | vlib_frame_t whose contents should be dispatched |
Uses:
vnet_buffer(b)->sw_if_index[VLIB_RX]
sw_if_index
value of the interface that the packet was received on.vnet_buffer(b)->sw_if_index[VLIB_TX]
~0
then the node performs a longest prefix match (LPM) for the packet destination address in the FIB attached to the receive interface.[VLIB_TX]
is a FIB index value (0, 1, ...) and not a VRF id.Sets:
vnet_buffer(b)->ip.adj_index[VLIB_TX]
Next Index:
adj->lookup_next_index
(where adj
is the lookup result adjacency). Definition at line 91 of file ip4_forward.c.
|
static |
Definition at line 2599 of file ip4_forward.c.
VLIB_NODE_FN() ip4_mcast_midchain_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
VLIB_NODE_FN() ip4_midchain_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
|
inlinestatic |
Definition at line 2119 of file ip4_forward.c.
clib_error_t* ip4_probe_neighbor | ( | vlib_main_t * | vm, |
ip4_address_t * | dst, | ||
u32 | sw_if_index, | ||
u8 | refresh | ||
) |
Definition at line 1992 of file ip4_forward.c.
Definition at line 1684 of file ip4_forward.c.
VLIB_NODE_FN() ip4_rewrite_bcast_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
|
inlinestatic |
Definition at line 2190 of file ip4_forward.c.
VLIB_NODE_FN() ip4_rewrite_mcast_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
VLIB_NODE_FN() ip4_rewrite_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
IPv4 rewrite node.
ip4-rewrite
This is the IPv4 transit-rewrite node: decrement TTL, fix the ipv4 header checksum, fetch the ip adjacency, check the outbound mtu, apply the adjacency rewrite, and send pkts to the adjacency rewrite header's rewrite_next_index.
vm | vlib_main_t corresponding to the current thread |
node | vlib_node_runtime_t |
frame | vlib_frame_t whose contents should be dispatched |
Uses:
vnet_buffer(b)->ip.adj_index[VLIB_TX]
adj->lookup_next_index
adj->rewrite_header
Sets:
b->current_data, b->current_length
Next Indices:
adj->rewrite_header.next_index
or ip4-drop
Definition at line 2502 of file ip4_forward.c.
|
static |
Definition at line 524 of file ip4_forward.c.
u16 ip4_tcp_udp_compute_checksum | ( | vlib_main_t * | vm, |
vlib_buffer_t * | p0, | ||
ip4_header_t * | ip0 | ||
) |
Definition at line 1126 of file ip4_forward.c.
u32 ip4_tcp_udp_validate_checksum | ( | vlib_main_t * | vm, |
vlib_buffer_t * | p0 | ||
) |
Definition at line 1184 of file ip4_forward.c.
static_always_inline void ip4_ttl_and_checksum_check | ( | vlib_buffer_t * | b, |
ip4_header_t * | ip, | ||
u16 * | next, | ||
u32 * | error | ||
) |
Definition at line 2146 of file ip4_forward.c.
|
static |
|
static |
|
static |
|
static |
VNET_FEATURE_ARC_INIT | ( | ip4_unicast | , |
static | |||
) |
VNET_FEATURE_ARC_INIT | ( | ip4_multicast | , |
static | |||
) |
VNET_FEATURE_ARC_INIT | ( | ip4_output | , |
static | |||
) |
VNET_FEATURE_ARC_INIT | ( | ip4_local | ) |
VNET_FEATURE_INIT | ( | ip4_flow_classify | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_inacl | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_source_check_1 | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_source_check_2 | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_source_and_port_range_check_rx | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_policer_classify | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_ipsec | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_vpath | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_vxlan_bypass | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_not_enabled | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_lookup | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_vpath_mc | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_mc_not_enabled | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_lookup_mc | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_source_and_port_range_check_tx | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_outacl | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_ipsec_output | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_interface_output | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_local_end_of_arc | , |
static | |||
) |
int vnet_set_ip4_classify_intfc | ( | vlib_main_t * | vm, |
u32 | sw_if_index, | ||
u32 | table_index | ||
) |
Definition at line 2851 of file ip4_forward.c.
Definition at line 2697 of file ip4_forward.c.
VNET_SW_INTERFACE_ADD_DEL_FUNCTION | ( | ip4_sw_interface_add_del | ) |
|
static |
Definition at line 1927 of file ip4_forward.c.
vlib_node_registration_t ip4_arp_node |
(constructor) VLIB_REGISTER_NODE (ip4_arp_node)
Definition at line 1937 of file ip4_forward.c.
vlib_node_registration_t ip4_glean_node |
(constructor) VLIB_REGISTER_NODE (ip4_glean_node)
Definition at line 1951 of file ip4_forward.c.
vlib_node_registration_t ip4_load_balance_node |
(constructor) VLIB_REGISTER_NODE (ip4_load_balance_node)
Definition at line 301 of file ip4_forward.c.
vlib_node_registration_t ip4_local_end_of_arc_node |
(constructor) VLIB_REGISTER_NODE (ip4_local_end_of_arc_node)
Definition at line 1667 of file ip4_forward.c.
vlib_node_registration_t ip4_local_node |
(constructor) VLIB_REGISTER_NODE (ip4_local_node)
Definition at line 1641 of file ip4_forward.c.
vlib_node_registration_t ip4_lookup_node |
(constructor) VLIB_REGISTER_NODE (ip4_lookup_node)
Definition at line 103 of file ip4_forward.c.
ip4_main_t ip4_main |
Global ip4 main structure.
Definition at line 900 of file ip4_forward.c.
vlib_node_registration_t ip4_mcast_midchain_node |
(constructor) VLIB_REGISTER_NODE (ip4_mcast_midchain_node)
Definition at line 2582 of file ip4_forward.c.
vlib_node_registration_t ip4_midchain_node |
(constructor) VLIB_REGISTER_NODE (ip4_midchain_node)
Definition at line 2590 of file ip4_forward.c.
vlib_node_registration_t ip4_rewrite_bcast_node |
(constructor) VLIB_REGISTER_NODE (ip4_rewrite_bcast_node)
Definition at line 2566 of file ip4_forward.c.
vlib_node_registration_t ip4_rewrite_mcast_node |
(constructor) VLIB_REGISTER_NODE (ip4_rewrite_mcast_node)
Definition at line 2574 of file ip4_forward.c.
vlib_node_registration_t ip4_rewrite_node |
(constructor) VLIB_REGISTER_NODE (ip4_rewrite_node)
Definition at line 2552 of file ip4_forward.c.
|
static |
(constructor) VLIB_CLI_COMMAND (lookup_test_command)
Definition at line 2687 of file ip4_forward.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip_classify_command)
Definition at line 2965 of file ip4_forward.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip_flow_hash_command)
Definition at line 2840 of file ip4_forward.c.
|
static |
(constructor) VLIB_CLI_COMMAND (show_ip_local)
Definition at line 1734 of file ip4_forward.c.