summaryrefslogtreecommitdiff
path: root/zebra/zebra_static.c
diff options
context:
space:
mode:
authorRenato Westphal <renato@opensourcerouting.org>2017-09-01 14:43:24 -0300
committerRenato Westphal <renato@opensourcerouting.org>2017-09-05 11:50:34 -0300
commit9aabb2ea7421e1bcdd010f474d9b74d8f447b3bb (patch)
tree62c91f640379c39a335c22fbec19eeceb66d45e3 /zebra/zebra_static.c
parenteb1e453f9a4ff7c1c805b2f5ea90df328b027e39 (diff)
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 <renato@opensourcerouting.org>
Diffstat (limited to 'zebra/zebra_static.c')
-rw-r--r--zebra/zebra_static.c18
1 files changed, 15 insertions, 3 deletions
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)
{