+ /*
+ * Add RX interface route, whenNAT isn't running on the real input
+ * interface
+ */
+ if (sw_if_index != ~0)
+ {
+ u32 fib_index;
+ fib_prefix_t fibpfx = {
+ .fp_len = plen,
+ .fp_proto = FIB_PROTOCOL_IP6,
+ .fp_addr = {.ip6 = prefix}
+ };
+
+ if (is_add)
+ {
+ fib_index = fib_table_find_or_create_and_lock (FIB_PROTOCOL_IP6,
+ vrf_id,
+ FIB_SOURCE_PLUGIN_HI);
+ fib_table_entry_update_one_path (fib_index, &fibpfx,
+ FIB_SOURCE_PLUGIN_HI,
+ FIB_ENTRY_FLAG_NONE, DPO_PROTO_IP6,
+ NULL, sw_if_index, ~0, 0, NULL,
+ FIB_ROUTE_PATH_INTF_RX);
+ }
+ else
+ {
+ fib_index = fib_table_find (FIB_PROTOCOL_IP6, vrf_id);
+ fib_table_entry_path_remove (fib_index, &fibpfx,
+ FIB_SOURCE_PLUGIN_HI, DPO_PROTO_IP6,
+ NULL, sw_if_index, ~0, 1,
+ FIB_ROUTE_PATH_INTF_RX);
+ fib_table_unlock (fib_index, FIB_PROTOCOL_IP6,
+ FIB_SOURCE_PLUGIN_HI);
+ }
+ }
+