From 9aabb2ea7421e1bcdd010f474d9b74d8f447b3bb Mon Sep 17 00:00:00 2001 From: Renato Westphal Date: Fri, 1 Sep 2017 14:43:24 -0300 Subject: zebra: display static blackhole routes consistently If we configure a static route pointing to null0 and zebra displays it with the 'blackhole' keyword in the running configuration, the frr-reload.py script will have issues. Fix this by introducing the 'static_blackhole_type' enum. Fixes #1091. Signed-off-by: Renato Westphal --- zebra/zebra_static.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'zebra/zebra_static.c') diff --git a/zebra/zebra_static.c b/zebra/zebra_static.c index ec6d406325..658f060fff 100644 --- a/zebra/zebra_static.c +++ b/zebra/zebra_static.c @@ -45,6 +45,7 @@ void static_install_route(afi_t afi, safi_t safi, struct prefix *p, struct route_table *table; struct prefix nh_p; struct nexthop *nexthop = NULL; + enum blackhole_type bh_type = 0; /* Lookup table. */ table = zebra_vrf_table(afi, safi, si->vrf_id); @@ -52,6 +53,17 @@ void static_install_route(afi_t afi, safi_t safi, struct prefix *p, return; memset(&nh_p, 0, sizeof(nh_p)); + if (si->type == STATIC_BLACKHOLE) { + switch (si->bh_type) { + case STATIC_BLACKHOLE_DROP: + case STATIC_BLACKHOLE_NULL: + bh_type = BLACKHOLE_NULL; + break; + case STATIC_BLACKHOLE_REJECT: + bh_type = BLACKHOLE_REJECT; + break; + } + } /* Lookup existing route */ rn = srcdest_rnode_get(table, p, src_p); @@ -92,7 +104,7 @@ void static_install_route(afi_t afi, safi_t safi, struct prefix *p, break; case STATIC_BLACKHOLE: nexthop = route_entry_nexthop_blackhole_add( - re, si->bh_type); + re, bh_type); break; case STATIC_IPV6_GATEWAY: nexthop = route_entry_nexthop_ipv6_add(re, @@ -168,7 +180,7 @@ void static_install_route(afi_t afi, safi_t safi, struct prefix *p, break; case STATIC_BLACKHOLE: nexthop = route_entry_nexthop_blackhole_add( - re, si->bh_type); + re, bh_type); break; case STATIC_IPV6_GATEWAY: nexthop = route_entry_nexthop_ipv6_add(re, @@ -363,7 +375,7 @@ void static_uninstall_route(afi_t afi, safi_t safi, struct prefix *p, int static_add_route(afi_t afi, safi_t safi, u_char type, struct prefix *p, struct prefix_ipv6 *src_p, union g_addr *gate, - const char *ifname, enum blackhole_type bh_type, + const char *ifname, enum static_blackhole_type bh_type, route_tag_t tag, u_char distance, struct zebra_vrf *zvrf, struct static_nh_label *snh_label) { -- cgit v1.2.3