summaryrefslogtreecommitdiffstats
path: root/eigrpd
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2019-02-11 03:19:48 +0100
committerDonald Sharp <sharpd@cumulusnetworks.com>2019-02-11 13:23:23 +0100
commit84b5e534e6bbf4ca69d4692dc89f472eb18adc68 (patch)
treedc064373d0fa5ecff0c4d8ac68ce1dec70be88d5 /eigrpd
parenteigrpd: Correctly handle the ref-count in a couple of spots (diff)
downloadfrr-84b5e534e6bbf4ca69d4692dc89f472eb18adc68.tar.xz
frr-84b5e534e6bbf4ca69d4692dc89f472eb18adc68.zip
eigrpd: Do not redelete the eigrp interface data structure
On interface down do not delete the eigrp interface data structure. Ensure that the address that we have setup the eigrp data structure ontop of is what we are deleting. Additionally add a test to show that this is no-longer crashing eigrp. Future commits will further modify this test to actually ensure that the eigrp topo is updated correctly and the rib has the correct data. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'eigrpd')
-rw-r--r--eigrpd/eigrp_zebra.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/eigrpd/eigrp_zebra.c b/eigrpd/eigrp_zebra.c
index 09d876afa..dc1ae675b 100644
--- a/eigrpd/eigrp_zebra.c
+++ b/eigrpd/eigrp_zebra.c
@@ -258,7 +258,8 @@ static int eigrp_interface_address_delete(int command, struct zclient *zclient,
return 0;
/* Call interface hook functions to clean up */
- eigrp_if_free(ei, INTERFACE_DOWN_BY_ZEBRA);
+ if (prefix_cmp(&ei->address, c->address) == 0)
+ eigrp_if_free(ei, INTERFACE_DOWN_BY_ZEBRA);
connected_free(c);