From: Renato Westphal Date: Tue, 12 Sep 2017 01:51:40 +0000 (-0300) Subject: zebra: fix administrative distance issues X-Git-Tag: frr-4.0-dev~292^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=refs%2Fpull%2F1160%2Fhead;p=mirror%2Ffrr.git 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 --- 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