diff options
| author | Renato Westphal <renato@opensourcerouting.org> | 2017-09-11 22:51:40 -0300 |
|---|---|---|
| committer | Renato Westphal <renato@opensourcerouting.org> | 2017-09-12 11:02:25 -0300 |
| commit | 0492eea08e5708b6931b0264d9731b532e00aade (patch) | |
| tree | a0ea2a5776d2de193a10a155841a644a5b1a5599 | |
| parent | c710b277cfde65fab8ae071fd80992e836bff7f2 (diff) | |
zebra: fix administrative distance issues
* Reuse route_distance() on rib_add_multipath() and on rib_add();
* Set the admin distance of LDP and BGP MPLS LSPs.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
| -rw-r--r-- | zebra/zebra_mpls.h | 12 | ||||
| -rw-r--r-- | zebra/zebra_rib.c | 7 |
2 files changed, 11 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 e0c92801ce..959ffdce8a 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -2233,7 +2233,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 @@ -2450,10 +2450,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 |
