summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDinesh G Dutt <ddutt@cumulusnetworks.com>2014-09-30 15:21:27 -0700
committerTimo Teräs <timo.teras@iki.fi>2015-06-04 11:30:34 +0300
commit4bd168929cf25d2c71c244deeebfc85991ce8990 (patch)
tree777c62c381ac9b4d871d2edf49a8328ff4ce44db
parent7962cbaa540e2ecbb2c2777db9644e49a3c3225c (diff)
downloadquagga-4bd168929cf25d2c71c244deeebfc85991ce8990.tar.bz2
quagga-4bd168929cf25d2c71c244deeebfc85991ce8990.tar.xz
bgpd-delete-route-on-invalid-nh.patch
BGPd: Delete the route from the kernel when a valid NH changes to invalid NH A route has been announced by a BGP peer with a valid NH and has been populated into the kernel. Now, if the NH announced changes (say via routemap) to an invalid NH, the route is marked as inactive/inaccessible inside Quagga, but is not deleted from the kernel. This patch fixes that issue. The problem is caused by BGP losing the old valid NH and using the new, invalid NH to delete the now-inaccessible route. However, the kernel/zebra has the route using the old NH and so they reject the delete. Fix involves not sending the invalid NH when its the only NH. Things worked fine if the route had BGP multipath. Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
-rw-r--r--bgpd/bgp_zebra.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c
index 146a7153..c45b04f5 100644
--- a/bgpd/bgp_zebra.c
+++ b/bgpd/bgp_zebra.c
@@ -874,8 +874,8 @@ bgp_zebra_withdraw (struct prefix *p, struct bgp_info *info, safi_t safi)
api.message = 0;
api.safi = safi;
SET_FLAG (api.message, ZAPI_MESSAGE_NEXTHOP);
- api.nexthop_num = 1;
- api.nexthop = &nexthop;
+ api.nexthop_num = 0;
+ api.nexthop = NULL;
api.ifindex_num = 0;
SET_FLAG (api.message, ZAPI_MESSAGE_METRIC);
api.metric = info->attr->med;