summaryrefslogtreecommitdiffstats
path: root/vnet/vnet/fib/fib_types.c
diff options
context:
space:
mode:
Diffstat (limited to 'vnet/vnet/fib/fib_types.c')
-rw-r--r--vnet/vnet/fib/fib_types.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/vnet/vnet/fib/fib_types.c b/vnet/vnet/fib/fib_types.c
index d25a7731c64..b66e71940a5 100644
--- a/vnet/vnet/fib/fib_types.c
+++ b/vnet/vnet/fib/fib_types.c
@@ -194,9 +194,17 @@ fib_route_path_cmp (const fib_route_path_t *rpath1,
if (0 != res) return (res);
- res = vnet_sw_interface_compare(vnet_get_main(),
- rpath1->frp_sw_if_index,
- rpath2->frp_sw_if_index);
+ if (~0 != rpath1->frp_sw_if_index &&
+ ~0 != rpath2->frp_sw_if_index)
+ {
+ res = vnet_sw_interface_compare(vnet_get_main(),
+ rpath1->frp_sw_if_index,
+ rpath2->frp_sw_if_index);
+ }
+ else
+ {
+ res = rpath1->frp_sw_if_index - rpath2->frp_sw_if_index;
+ }
if (0 != res) return (res);