diff options
Diffstat (limited to 'src/vnet/ip/ip6_forward.c')
-rw-r--r-- | src/vnet/ip/ip6_forward.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/vnet/ip/ip6_forward.c b/src/vnet/ip/ip6_forward.c index f54b433485f..6b89ec38aae 100644 --- a/src/vnet/ip/ip6_forward.c +++ b/src/vnet/ip/ip6_forward.c @@ -1428,6 +1428,24 @@ ip6_local_inline (vlib_main_t * vm, vlib_node_runtime_t * node, ? IP6_ERROR_SRC_LOOKUP_MISS : error1); } + /* TODO maybe move to lookup? */ + vnet_buffer (p0)->ip.fib_index = + vec_elt (im->fib_index_by_sw_if_index, + vnet_buffer (p0)->sw_if_index[VLIB_RX]); + vnet_buffer (p0)->ip.fib_index = + (vnet_buffer (p0)->sw_if_index[VLIB_TX] == + (u32) ~ 0) ? vnet_buffer (p0)->ip. + fib_index : vnet_buffer (p0)->sw_if_index[VLIB_TX]; + + vnet_buffer (p1)->ip.fib_index = + vec_elt (im->fib_index_by_sw_if_index, + vnet_buffer (p1)->sw_if_index[VLIB_RX]); + vnet_buffer (p1)->ip.fib_index = + (vnet_buffer (p1)->sw_if_index[VLIB_TX] == + (u32) ~ 0) ? vnet_buffer (p1)->ip. + fib_index : vnet_buffer (p1)->sw_if_index[VLIB_TX]; + + skip_checks: next0 = lm->local_next_by_ip_protocol[ip0->protocol]; @@ -1538,6 +1556,14 @@ ip6_local_inline (vlib_main_t * vm, vlib_node_runtime_t * node, ? IP6_ERROR_SRC_LOOKUP_MISS : error0); } + vnet_buffer (p0)->ip.fib_index = + vec_elt (im->fib_index_by_sw_if_index, + vnet_buffer (p0)->sw_if_index[VLIB_RX]); + vnet_buffer (p0)->ip.fib_index = + (vnet_buffer (p0)->sw_if_index[VLIB_TX] == + (u32) ~ 0) ? vnet_buffer (p0)->ip. + fib_index : vnet_buffer (p0)->sw_if_index[VLIB_TX]; + skip_check: next0 = lm->local_next_by_ip_protocol[ip0->protocol]; |