ip: use main heap for mtrie, part 2 (remove args)
[vpp.git] / src / vnet / ip / ip6.h
index 575c6a0..ad70b7e 100644 (file)
@@ -47,6 +47,7 @@
 #include <vnet/ip/ip46_address.h>
 #include <vnet/ip/ip6_hop_by_hop_packet.h>
 #include <vnet/ip/lookup.h>
+#include <vnet/ip/ip_interface.h>
 #include <stdbool.h>
 #include <vppinfra/bihash_24_8.h>
 #include <vppinfra/bihash_40_8.h>
@@ -253,6 +254,7 @@ extern vlib_node_registration_t ip6_rewrite_local_node;
 extern vlib_node_registration_t ip6_discover_neighbor_node;
 extern vlib_node_registration_t ip6_glean_node;
 extern vlib_node_registration_t ip6_midchain_node;
+extern vlib_node_registration_t ip6_punt_node;
 
 extern void ip6_forward_next_trace (vlib_main_t * vm,
                                    vlib_node_runtime_t * node,
@@ -336,7 +338,7 @@ clib_error_t *ip6_add_del_interface_address (vlib_main_t * vm,
 void ip6_sw_interface_enable_disable (u32 sw_if_index, u32 is_enable);
 
 /**
- * @brie get first IPv6 interface address
+ * @brief get first IPv6 interface address
  */
 ip6_address_t *ip6_interface_first_address (ip6_main_t * im, u32 sw_if_index);
 
@@ -608,6 +610,16 @@ vlib_buffer_push_ip6 (vlib_main_t * vm, vlib_buffer_t * b,
                                      0 /* flow label */ );
 
 }
+
+always_inline u32
+vlib_buffer_get_ip6_fib_index (vlib_buffer_t * b)
+{
+  u32 fib_index, sw_if_index;
+  sw_if_index = vnet_buffer (b)->sw_if_index[VLIB_RX];
+  fib_index = vnet_buffer (b)->sw_if_index[VLIB_TX];
+  return (fib_index == (u32) ~ 0) ?
+    vec_elt (ip6_main.fib_index_by_sw_if_index, sw_if_index) : fib_index;
+}
 #endif /* included_ip_ip6_h */
 
 /*