FD.io VPP
v17.01-9-ge7dcee4
Vector Packet Processing
|
Definitions for all things IP (v4|v6) unicast and multicast lookup related. More...
Go to the source code of this file.
Data Structures | |
struct | ip_adjacency_t_ |
IP unicast adjacency. More... | |
struct | ip_multicast_rewrite_t |
struct | ip_multicast_rewrite_string_t |
struct | ip_multicast_lookup_main_t |
struct | ip_interface_address_t |
struct | ip_lookup_main_t |
Macros | |
#define | IP4_LOOKUP_NEXT_NODES |
#define | IP6_LOOKUP_NEXT_NODES |
#define | IP_FLOW_HASH_SRC_ADDR (1<<0) |
Flow hash configuration. More... | |
#define | IP_FLOW_HASH_DST_ADDR (1<<1) |
#define | IP_FLOW_HASH_PROTO (1<<2) |
#define | IP_FLOW_HASH_SRC_PORT (1<<3) |
#define | IP_FLOW_HASH_DST_PORT (1<<4) |
#define | IP_FLOW_HASH_REVERSE_SRC_DST (1<<5) |
#define | IP_FLOW_HASH_DEFAULT (0x1F) |
Default: 5-tuple without the "reverse" bit. More... | |
#define | foreach_flow_hash_bit |
#define | ip_prefetch_adjacency(lm, adj_index, type) |
#define | foreach_ip_interface_address(lm, a, sw_if_index, loop, body) |
Typedefs | |
typedef u32 | flow_hash_config_t |
A flow hash configuration is a mask of the flow hash options. More... | |
typedef void(* | adj_midchain_fixup_t) (vlib_main_t *vm, struct ip_adjacency_t_ *adj, vlib_buffer_t *b0) |
A function type for post-rewrite fixups on midchain adjacency. More... | |
typedef enum ip_adjacency_flags_t_ | ip_adjacency_flags_t |
Flags on an IP adjacency. More... | |
typedef struct ip_adjacency_t_ | ip_adjacency_t |
IP unicast adjacency. More... | |
typedef struct ip_lookup_main_t | ip_lookup_main_t |
Enumerations | |
enum | ip_lookup_next_t { IP_LOOKUP_NEXT_DROP, IP_LOOKUP_NEXT_PUNT, IP_LOOKUP_NEXT_LOCAL, IP_LOOKUP_NEXT_ARP, IP_LOOKUP_NEXT_GLEAN, IP_LOOKUP_NEXT_REWRITE, IP_LOOKUP_NEXT_LOAD_BALANCE, IP_LOOKUP_NEXT_MIDCHAIN, IP_LOOKUP_NEXT_ICMP_ERROR, IP_LOOKUP_N_NEXT } |
Common (IP4/IP6) next index stored in adjacency. More... | |
enum | ip4_lookup_next_t { IP4_LOOKUP_N_NEXT = IP_LOOKUP_N_NEXT } |
enum | ip6_lookup_next_t { IP6_LOOKUP_NEXT_HOP_BY_HOP = IP_LOOKUP_N_NEXT, IP6_LOOKUP_NEXT_ADD_HOP_BY_HOP, IP6_LOOKUP_NEXT_POP_HOP_BY_HOP, IP6_LOOKUP_N_NEXT } |
enum | ip_adjacency_flags_t_ { IP_ADJ_SYNC_WALK_ACTIVE = (1 << 0) } |
Flags on an IP adjacency. More... | |
enum | ip_local_next_t { IP_LOCAL_NEXT_DROP, IP_LOCAL_NEXT_PUNT, IP_LOCAL_NEXT_UDP_LOOKUP, IP_LOCAL_NEXT_ICMP, IP_LOCAL_N_NEXT } |
Functions | |
STATIC_ASSERT ((STRUCT_OFFSET_OF(ip_adjacency_t, cacheline0)==0),"IP adjacency cachline 0 is not offset") | |
STATIC_ASSERT ((STRUCT_OFFSET_OF(ip_adjacency_t, cacheline1)==CLIB_CACHE_LINE_BYTES),"IP adjacency cachline 1 is more than one cachline size offset") | |
static ip_adjacency_t * | ip_get_adjacency (ip_lookup_main_t *lm, u32 adj_index) |
ip_adjacency_t * | ip_add_adjacency (ip_lookup_main_t *lm, ip_adjacency_t *adj, u32 n_adj, u32 *adj_index_result) |
clib_error_t * | ip_interface_address_add_del (ip_lookup_main_t *lm, u32 sw_if_index, void *address, u32 address_length, u32 is_del, u32 *result_index) |
u8 * | format_ip_flow_hash_config (u8 *s, va_list *args) |
static ip_interface_address_t * | ip_get_interface_address (ip_lookup_main_t *lm, void *addr_fib) |
u32 | fib_table_id_find_fib_index (fib_protocol_t proto, u32 table_id) |
static void * | ip_interface_address_get_address (ip_lookup_main_t *lm, ip_interface_address_t *a) |
void | ip_lookup_init (ip_lookup_main_t *lm, u32 ip_lookup_node_index) |
Variables | |
const ip46_address_t | zero_addr |
Definitions for all things IP (v4|v6) unicast and multicast lookup related.
Definition in file lookup.h.
#define foreach_flow_hash_bit |
#define foreach_ip_interface_address | ( | lm, | |
a, | |||
sw_if_index, | |||
loop, | |||
body | |||
) |
#define IP4_LOOKUP_NEXT_NODES |
#define IP6_LOOKUP_NEXT_NODES |
#define IP_FLOW_HASH_DEFAULT (0x1F) |
#define IP_FLOW_HASH_SRC_ADDR (1<<0) |
#define ip_prefetch_adjacency | ( | lm, | |
adj_index, | |||
type | |||
) |
typedef void(* adj_midchain_fixup_t) (vlib_main_t *vm, struct ip_adjacency_t_ *adj, vlib_buffer_t *b0) |
typedef u32 flow_hash_config_t |
typedef enum ip_adjacency_flags_t_ ip_adjacency_flags_t |
Flags on an IP adjacency.
typedef struct ip_adjacency_t_ ip_adjacency_t |
IP unicast adjacency.
typedef struct ip_lookup_main_t ip_lookup_main_t |
enum ip4_lookup_next_t |
enum ip6_lookup_next_t |
enum ip_local_next_t |
enum ip_lookup_next_t |
Common (IP4/IP6) next index stored in adjacency.
u32 fib_table_id_find_fib_index | ( | fib_protocol_t | proto, |
u32 | table_id | ||
) |
ip_adjacency_t* ip_add_adjacency | ( | ip_lookup_main_t * | lm, |
ip_adjacency_t * | adj, | ||
u32 | n_adj, | ||
u32 * | adj_index_result | ||
) |
|
inlinestatic |
|
inlinestatic |
clib_error_t* ip_interface_address_add_del | ( | ip_lookup_main_t * | lm, |
u32 | sw_if_index, | ||
void * | address, | ||
u32 | address_length, | ||
u32 | is_del, | ||
u32 * | result_index | ||
) |
|
inlinestatic |
void ip_lookup_init | ( | ip_lookup_main_t * | lm, |
u32 | ip_lookup_node_index | ||
) |
STATIC_ASSERT | ( | (STRUCT_OFFSET_OF(ip_adjacency_t, cacheline0)==0) | , |
"IP adjacency cachline 0 is not offset" | |||
) |
STATIC_ASSERT | ( | (STRUCT_OFFSET_OF(ip_adjacency_t, cacheline1)==CLIB_CACHE_LINE_BYTES) | , |
"IP adjacency cachline 1 is more than one cachline size offset" | |||
) |