diff options
author | Neale Ranns <neale.ranns@cisco.com> | 2018-09-25 07:22:36 -0700 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2018-09-25 19:47:37 +0000 |
commit | 6a5bc5173a9050e0e038638b7eac5a0c9ecf5c7d (patch) | |
tree | 0e6b5b051aac81c077af51971e9b9fd18d415ee8 | |
parent | d159e6f3114360c52d9cded5c9ee617334d41e68 (diff) |
MPLS tunnel dump fix
Change-Id: I9d3d5243841d5b888f079e3ea5dc1e2e8befd1dc
Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
-rw-r--r-- | src/vnet/mpls/mpls.api | 2 | ||||
-rw-r--r-- | src/vnet/mpls/mpls_api.c | 1 | ||||
-rw-r--r-- | src/vnet/mpls/mpls_tunnel.c | 9 | ||||
-rw-r--r-- | test/vpp_mpls_tunnel_interface.py | 20 | ||||
-rw-r--r-- | test/vpp_papi_provider.py | 3 |
5 files changed, 29 insertions, 6 deletions
diff --git a/src/vnet/mpls/mpls.api b/src/vnet/mpls/mpls.api index 7ab0f3750cc..21dcc8f1f83 100644 --- a/src/vnet/mpls/mpls.api +++ b/src/vnet/mpls/mpls.api @@ -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; diff --git a/src/vnet/mpls/mpls_api.c b/src/vnet/mpls/mpls_api.c index 47a3408520e..e62fce47291 100644 --- a/src/vnet/mpls/mpls_api.c +++ b/src/vnet/mpls/mpls_api.c @@ -429,6 +429,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); diff --git a/src/vnet/mpls/mpls_tunnel.c b/src/vnet/mpls/mpls_tunnel.c index 84d569bcfee..784dd545d12 100644 --- a/src/vnet/mpls/mpls_tunnel.c +++ b/src/vnet/mpls/mpls_tunnel.c @@ -170,9 +170,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)) { diff --git a/test/vpp_mpls_tunnel_interface.py b/test/vpp_mpls_tunnel_interface.py index b125f3c7277..3cbf856dfc5 100644 --- a/test/vpp_mpls_tunnel_interface.py +++ b/test/vpp_mpls_tunnel_interface.py @@ -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) diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py index 30777d3d495..90cf625a840 100644 --- a/test/vpp_papi_provider.py +++ b/test/vpp_papi_provider.py @@ -1332,6 +1332,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, |