summaryrefslogtreecommitdiffstats
path: root/src/vnet/ip/ip6_forward.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/ip/ip6_forward.c')
-rw-r--r--src/vnet/ip/ip6_forward.c26
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];