LISP: add stats API/CLI
[vpp.git] / src / vnet / interface_api.c
index f94928b..2b6ff0c 100644 (file)
@@ -29,6 +29,7 @@
 #include <vnet/l2/l2_vtr.h>
 #include <vnet/vnet_msg_enum.h>
 #include <vnet/fib/fib_api.h>
+#include <vnet/mfib/mfib_table.h>
 
 #define vl_typedefs            /* define message structures */
 #include <vnet/vnet_all_api_h.h>
@@ -204,21 +205,21 @@ send_sw_interface_details (vpe_api_main_t * am,
     }
 
   /* pbb tag rewrite data */
+  ethernet_header_t eth_hdr;
   u32 vtr_op = L2_VTR_DISABLED;
   u16 outer_tag = 0;
-  u8 b_dmac[6];
-  u8 b_smac[6];
   u16 b_vlanid = 0;
   u32 i_sid = 0;
-  memset (b_dmac, 0, sizeof (b_dmac));
-  memset (b_smac, 0, sizeof (b_smac));
+  memset (&eth_hdr, 0, sizeof (eth_hdr));
 
   if (!l2pbb_get (am->vlib_main, am->vnet_main, swif->sw_if_index,
-                 &vtr_op, &outer_tag, b_dmac, b_smac, &b_vlanid, &i_sid))
+                 &vtr_op, &outer_tag, &eth_hdr, &b_vlanid, &i_sid))
     {
       mp->sub_dot1ah = 1;
-      clib_memcpy (mp->b_dmac, b_dmac, sizeof (b_dmac));
-      clib_memcpy (mp->b_smac, b_smac, sizeof (b_smac));
+      clib_memcpy (mp->b_dmac, eth_hdr.dst_address,
+                  sizeof (eth_hdr.dst_address));
+      clib_memcpy (mp->b_smac, eth_hdr.src_address,
+                  sizeof (eth_hdr.src_address));
       mp->b_vlanid = b_vlanid;
       mp->i_sid = i_sid;
     }
@@ -340,9 +341,9 @@ vl_api_sw_interface_set_table_t_handler (vl_api_sw_interface_set_table_t * mp)
 
       fib_index = fib_table_find_or_create_and_lock (FIB_PROTOCOL_IP6,
                                                     table_id);
-
       vec_validate (ip6_main.fib_index_by_sw_if_index, sw_if_index);
       ip6_main.fib_index_by_sw_if_index[sw_if_index] = fib_index;
+
       fib_index = mfib_table_find_or_create_and_lock (FIB_PROTOCOL_IP6,
                                                      table_id);
       vec_validate (ip6_main.mfib_index_by_sw_if_index, sw_if_index);
@@ -362,7 +363,6 @@ vl_api_sw_interface_set_table_t_handler (vl_api_sw_interface_set_table_t * mp)
 
       fib_index = fib_table_find_or_create_and_lock (FIB_PROTOCOL_IP4,
                                                     table_id);
-
       vec_validate (ip4_main.fib_index_by_sw_if_index, sw_if_index);
       ip4_main.fib_index_by_sw_if_index[sw_if_index] = fib_index;