MPLS tunnel dump fix 72/14972/1
authorNeale Ranns <neale.ranns@cisco.com>
Tue, 25 Sep 2018 14:22:36 +0000 (07:22 -0700)
committerNeale Ranns <neale.ranns@cisco.com>
Tue, 25 Sep 2018 14:22:36 +0000 (07:22 -0700)
Change-Id: I9d3d5243841d5b888f079e3ea5dc1e2e8befd1dc
Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
src/vnet/mpls/mpls.api
src/vnet/mpls/mpls_api.c
src/vnet/mpls/mpls_tunnel.c
test/vpp_mpls_tunnel_interface.py
test/vpp_papi_provider.py

index 7fa24f4..7d38ffc 100644 (file)
@@ -88,7 +88,7 @@ define mpls_tunnel_dump
 manual_endian manual_print define mpls_tunnel_details
 {
   u32 context;
-  u8 mt_sw_if_index;
+  u32 mt_sw_if_index;
   u8 mt_tunnel_index;
   u8 mt_l2_only;
   u8 mt_is_multicast;
index dbd1d8b..97b6696 100644 (file)
@@ -439,6 +439,7 @@ send_mpls_tunnel_entry (u32 mti, void *arg)
   mp->context = ctx->context;
 
   mp->mt_tunnel_index = ntohl (mti);
+  mp->mt_sw_if_index = ntohl (mt->mt_sw_if_index);
   mp->mt_count = ntohl (n);
 
   fib_path_list_walk (mt->mt_path_list, fib_path_encode, &api_rpaths);
index 1d85c3b..55b60cd 100644 (file)
@@ -165,9 +165,12 @@ mpls_tunnel_mk_lb (mpls_tunnel_t *mt,
 
     lb_proto = fib_forw_chain_type_to_dpo_proto(fct);
 
-    fib_path_list_walk(mt->mt_path_list,
-                       mpls_tunnel_collect_forwarding,
-                       &ctx);
+    if (FIB_NODE_INDEX_INVALID != mt->mt_path_list)
+    {
+        fib_path_list_walk(mt->mt_path_list,
+                           mpls_tunnel_collect_forwarding,
+                           &ctx);
+    }
 
     if (!dpo_id_is_valid(dpo_lb))
     {
index b125f3c..3cbf856 100644 (file)
@@ -33,9 +33,12 @@ class VppMPLSTunnelInterface(VppInterface):
                 l2_only=self.is_l2)
             sw_if_index = reply.sw_if_index
         self.set_sw_if_index(sw_if_index)
+        self._test.registry.register(self, self._test.logger)
 
     def remove_vpp_config(self):
         for path in self.t_paths:
+            lstack = path.encode_labels()
+
             self.test.vapi.mpls_tunnel_add_del(
                 self.sw_if_index,
                 1,  # IPv4 next-hop
@@ -44,6 +47,19 @@ class VppMPLSTunnelInterface(VppInterface):
                 path.nh_table_id,
                 path.weight,
                 next_hop_via_label=path.nh_via_label,
-                next_hop_out_label_stack=path.nh_labels,
-                next_hop_n_out_labels=len(path.nh_labels),
+                next_hop_out_label_stack=lstack,
+                next_hop_n_out_labels=len(lstack),
                 is_add=0)
+
+    def query_vpp_config(self):
+        dump = self._test.vapi.mpls_tunnel_dump()
+        for t in dump:
+            if self.sw_if_index == t.mt_sw_if_index:
+                return True
+        return False
+
+    def __str__(self):
+        return self.object_id()
+
+    def object_id(self):
+        return ("mpls-tunnel%d" % self.sw_if_index)
index 92173ef..0c98f7a 100644 (file)
@@ -1345,6 +1345,9 @@ class VppPapiProvider(object):
              'mt_next_hop_via_label': next_hop_via_label,
              'mt_next_hop_out_label_stack': next_hop_out_label_stack})
 
+    def mpls_tunnel_dump(self):
+        return self.api(self.papi.mpls_tunnel_dump, {})
+
     def nat44_interface_add_del_feature(
             self,
             sw_if_index,