diff options
| -rw-r--r-- | zebra/zebra_mpls.h | 12 | ||||
| -rw-r--r-- | zebra/zebra_rib.c | 20 |
2 files changed, 24 insertions, 8 deletions
diff --git a/zebra/zebra_mpls.h b/zebra/zebra_mpls.h index c8df8670f4..51279798a4 100644 --- a/zebra/zebra_mpls.h +++ b/zebra/zebra_mpls.h @@ -408,10 +408,16 @@ void zebra_mpls_vty_init(void); */ static inline u_char lsp_distance(enum lsp_types_t type) { - if (type == ZEBRA_LSP_STATIC) + switch (type) { + case ZEBRA_LSP_STATIC: return (route_distance(ZEBRA_ROUTE_STATIC)); - - return 150; + case ZEBRA_LSP_LDP: + return (route_distance(ZEBRA_ROUTE_LDP)); + case ZEBRA_LSP_BGP: + return (route_distance(ZEBRA_ROUTE_BGP)); + default: + return 150; + } } /* diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index b1c2ae25c0..4c63d1d8bf 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -78,7 +78,20 @@ static const struct { [ZEBRA_ROUTE_OSPF6] = {ZEBRA_ROUTE_OSPF6, 110}, [ZEBRA_ROUTE_ISIS] = {ZEBRA_ROUTE_ISIS, 115}, [ZEBRA_ROUTE_BGP] = {ZEBRA_ROUTE_BGP, 20 /* IBGP is 200. */}, + [ZEBRA_ROUTE_PIM] = {ZEBRA_ROUTE_PIM, 255}, + [ZEBRA_ROUTE_EIGRP] = {ZEBRA_ROUTE_EIGRP, 90}, [ZEBRA_ROUTE_NHRP] = {ZEBRA_ROUTE_NHRP, 10}, + [ZEBRA_ROUTE_HSLS] = {ZEBRA_ROUTE_HSLS, 255}, + [ZEBRA_ROUTE_OLSR] = {ZEBRA_ROUTE_OLSR, 255}, + [ZEBRA_ROUTE_TABLE] = {ZEBRA_ROUTE_TABLE, 150}, + [ZEBRA_ROUTE_LDP] = {ZEBRA_ROUTE_LDP, 150}, + [ZEBRA_ROUTE_VNC] = {ZEBRA_ROUTE_VNC, 20}, + [ZEBRA_ROUTE_VNC_DIRECT] = {ZEBRA_ROUTE_VNC_DIRECT, 20}, + [ZEBRA_ROUTE_VNC_DIRECT_RH] = {ZEBRA_ROUTE_VNC_DIRECT_RH, 20}, + [ZEBRA_ROUTE_BGP_DIRECT] = {ZEBRA_ROUTE_BGP_DIRECT, 20}, + [ZEBRA_ROUTE_BGP_DIRECT_EXT] = {ZEBRA_ROUTE_BGP_DIRECT_EXT, 20}, + [ZEBRA_ROUTE_BABEL] = {ZEBRA_ROUTE_BABEL, 100}, + /* no entry/default: 150 */ }; @@ -2228,7 +2241,7 @@ int rib_add_multipath(afi_t afi, safi_t safi, struct prefix *p, /* Set default distance by route type. */ if (re->distance == 0) { - re->distance = route_info[re->type].distance; + re->distance = route_distance(re->type); /* iBGP distance is 200. */ if (re->type == ZEBRA_ROUTE_BGP @@ -2443,10 +2456,7 @@ int rib_add(afi_t afi, safi_t safi, vrf_id_t vrf_id, int type, u_short instance, /* Set default distance by route type. */ if (distance == 0) { - if ((unsigned)type >= array_size(route_info)) - distance = 150; - else - distance = route_info[type].distance; + distance = route_distance(type); /* iBGP distance is 200. */ if (type == ZEBRA_ROUTE_BGP |
