X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fip%2Flookup.h;h=4c598e3a4605a6a82ba9640b92910d49e323ced6;hb=2af0e3a74c40e5df946813324574ccc18feb4761;hp=90c6a25573f53931b983bb80bfd91e5278081ba0;hpb=d5b6aa139856a1447f7bc5377058202110eaa4cf;p=vpp.git diff --git a/src/vnet/ip/lookup.h b/src/vnet/ip/lookup.h index 90c6a25573f..4c598e3a460 100644 --- a/src/vnet/ip/lookup.h +++ b/src/vnet/ip/lookup.h @@ -64,6 +64,7 @@ #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_SYMMETRIC (1<<6) /** Default: 5-tuple without the "reverse" bit */ #define IP_FLOW_HASH_DEFAULT (0x1F) @@ -74,7 +75,8 @@ _(dst, IP_FLOW_HASH_DST_ADDR) \ _(sport, IP_FLOW_HASH_SRC_PORT) \ _(dport, IP_FLOW_HASH_DST_PORT) \ _(proto, IP_FLOW_HASH_PROTO) \ -_(reverse, IP_FLOW_HASH_REVERSE_SRC_DST) +_(reverse, IP_FLOW_HASH_REVERSE_SRC_DST) \ +_(symmetric, IP_FLOW_HASH_SYMMETRIC) /** * A flow hash configuration is a mask of the flow hash options @@ -93,9 +95,6 @@ typedef struct /* Interface which has this address. */ u32 sw_if_index; - /* Adjacency for neighbor probe (ARP) for this interface address. */ - u32 neighbor_probe_adj_index; - /* Address (prefix) length for this interface. */ u16 address_length; @@ -114,6 +113,7 @@ typedef enum IP_LOCAL_NEXT_PUNT, IP_LOCAL_NEXT_UDP_LOOKUP, IP_LOCAL_NEXT_ICMP, + IP_LOCAL_NEXT_REASSEMBLY, IP_LOCAL_N_NEXT, } ip_local_next_t; @@ -214,10 +214,37 @@ do { \ } while (0) /* *INDENT-ON* */ +always_inline void +ip_lookup_set_buffer_fib_index (u32 * fib_index_by_sw_if_index, + vlib_buffer_t * b) +{ + /* *INDENT-OFF* */ + vnet_buffer (b)->ip.fib_index = + vec_elt (fib_index_by_sw_if_index, vnet_buffer (b)->sw_if_index[VLIB_RX]); + vnet_buffer (b)->ip.fib_index = + ((vnet_buffer (b)->sw_if_index[VLIB_TX] == (u32) ~ 0) ? + vnet_buffer (b)->ip.fib_index : + vnet_buffer (b)->sw_if_index[VLIB_TX]); + /* *INDENT-ON* */ +} + +typedef struct _vnet_ip_container_proxy_args +{ + fib_prefix_t prefix; + u32 sw_if_index; + u8 is_add; +} vnet_ip_container_proxy_args_t; + +clib_error_t *vnet_ip_container_proxy_add_del (vnet_ip_container_proxy_args_t + * args); + +typedef int (*ip_container_proxy_cb_t) (const fib_prefix_t * pfx, + u32 sw_if_index, void *ctx); +void ip_container_proxy_walk (ip_container_proxy_cb_t cb, void *ctx); + void ip_lookup_init (ip_lookup_main_t * lm, u32 ip_lookup_node_index); #endif /* included_ip_lookup_h */ - /* * fd.io coding-style-patch-verification: ON *