![]() |
FD.io VPP
v16.09
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_multipath_next_hop_t |
struct | ip_multipath_adjacency_t |
struct | ip_multicast_rewrite_t |
struct | ip_multicast_rewrite_string_t |
struct | ip_multicast_lookup_main_t |
struct | ip_interface_address_t |
struct | ip_config_main_t |
struct | ip_adj_register_struct |
This structure is used to dynamically register a custom adjacency for ip lookup. More... | |
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_ADJACENCY_OPAQUE_SZ 16 |
#define | IP_LOOKUP_MISS_ADJ_INDEX 0 |
Miss adjacency is always first in adjacency table. More... | |
#define | ip_prefetch_adjacency(lm, adj_index, type) |
#define | VNET_IP_REGISTER_ADJACENCY(ip, x, ...) |
#define | VNET_IP4_REGISTER_ADJACENCY(x, ...) VNET_IP_REGISTER_ADJACENCY(ip4, x, __VA_ARGS__) |
#define | VNET_IP6_REGISTER_ADJACENCY(x, ...) VNET_IP_REGISTER_ADJACENCY(ip6, x, __VA_ARGS__) |
#define | foreach_ip_interface_address(lm, a, sw_if_index, loop, body) |
Typedefs | |
typedef u32 | ip_adjacency_index_t |
typedef void(* | ip_add_del_adjacency_callback_t) (struct ip_lookup_main_t *lm, u32 adj_index, ip_adjacency_t *adj, u32 is_del) |
typedef struct ip_adj_register_struct | ip_adj_register_t |
This structure is used to dynamically register a custom adjacency for ip lookup. More... | |
typedef struct ip_lookup_main_t | ip_lookup_main_t |
Enumerations | |
enum | ip_lookup_next_t { IP_LOOKUP_NEXT_MISS, IP_LOOKUP_NEXT_DROP, IP_LOOKUP_NEXT_PUNT, IP_LOOKUP_NEXT_LOCAL, IP_LOOKUP_NEXT_ARP, IP_LOOKUP_NEXT_REWRITE, IP_LOOKUP_NEXT_CLASSIFY, IP_LOOKUP_NEXT_MAP, IP_LOOKUP_NEXT_MAP_T, IP_LOOKUP_NEXT_INDIRECT, 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_local_next_t { IP_LOCAL_NEXT_DROP, IP_LOCAL_NEXT_PUNT, IP_LOCAL_NEXT_UDP_LOOKUP, IP_LOCAL_NEXT_ICMP, IP_LOCAL_N_NEXT } |
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_LOOKUP_MISS_ADJ_INDEX 0 |
#define ip_prefetch_adjacency | ( | lm, | |
adj_index, | |||
type | |||
) |
#define VNET_IP4_REGISTER_ADJACENCY | ( | x, | |
... | |||
) | VNET_IP_REGISTER_ADJACENCY(ip4, x, __VA_ARGS__) |
#define VNET_IP6_REGISTER_ADJACENCY | ( | x, | |
... | |||
) | VNET_IP_REGISTER_ADJACENCY(ip6, x, __VA_ARGS__) |
#define VNET_IP_REGISTER_ADJACENCY | ( | ip, | |
x, | |||
... | |||
) |
typedef void(* ip_add_del_adjacency_callback_t) (struct ip_lookup_main_t *lm, u32 adj_index, ip_adjacency_t *adj, u32 is_del) |
typedef struct ip_adj_register_struct ip_adj_register_t |
This structure is used to dynamically register a custom adjacency for ip lookup.
Typically used with VNET_IP4_REGISTER_ADJACENCY or VNET_IP6_REGISTER_ADJACENCY macros.
typedef u32 ip_adjacency_index_t |
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.
ip_adjacency_t* ip_add_adjacency | ( | ip_lookup_main_t * | lm, |
ip_adjacency_t * | adj, | ||
u32 | n_adj, | ||
u32 * | adj_index_result | ||
) |
|
inlinestatic |
|
inlinestatic |
void ip_del_adjacency | ( | ip_lookup_main_t * | lm, |
u32 | adj_index | ||
) |
|
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 |
|
inlinestatic |
void ip_lookup_init | ( | ip_lookup_main_t * | lm, |
u32 | ip_lookup_node_index | ||
) |
void ip_multipath_adjacency_free | ( | ip_lookup_main_t * | lm, |
ip_multipath_adjacency_t * | a | ||
) |
|
inlinestatic |
int ip_register_adjacency | ( | vlib_main_t * | vm, |
u8 | is_ip4, | ||
ip_adj_register_t * | reg | ||
) |
void ip_update_adjacency | ( | ip_lookup_main_t * | lm, |
u32 | adj_index, | ||
ip_adjacency_t * | copy_adj | ||
) |
|
inlinestatic |
|
inlinestatic |
u32 vnet_register_special_adjacency_format_function | ( | ip_lookup_main_t * | lm, |
format_function_t * | fp | ||
) |