From 3a0325f9cab7838c21b19698b89cfc65e3236085 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Fri, 1 Jun 2018 12:22:23 -0700 Subject: ip: save fib index for buffer in ip lookup Avoids recomputing the fib index in ip local for locally delivered packets and should incur no extra cost when forwarding packets. Change-Id: Id826ffa8206392087327f154337eabc8a801b4d7 Signed-off-by: Florin Coras --- src/vnet/ip/lookup.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/vnet/ip/lookup.h') diff --git a/src/vnet/ip/lookup.h b/src/vnet/ip/lookup.h index a89546f5d92..ecabd817a00 100644 --- a/src/vnet/ip/lookup.h +++ b/src/vnet/ip/lookup.h @@ -211,6 +211,18 @@ 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) +{ + 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]; +} + typedef struct _vnet_ip_container_proxy_args { fib_prefix_t prefix; -- cgit 1.2.3-korg