diff options
Diffstat (limited to 'src/vnet/mpls')
-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 |
3 files changed, 8 insertions, 4 deletions
diff --git a/src/vnet/mpls/mpls.api b/src/vnet/mpls/mpls.api index 7fa24f4812d..7d38ffc5bdc 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 dbd1d8b6e31..97b66965190 100644 --- a/src/vnet/mpls/mpls_api.c +++ b/src/vnet/mpls/mpls_api.c @@ -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); diff --git a/src/vnet/mpls/mpls_tunnel.c b/src/vnet/mpls/mpls_tunnel.c index 1d85c3bc78c..55b60cdb1e5 100644 --- a/src/vnet/mpls/mpls_tunnel.c +++ b/src/vnet/mpls/mpls_tunnel.c @@ -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)) { |