From 4325044689716f13f975e15660ed973b11dbdff4 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Sun, 2 Apr 2017 19:35:42 -0400 Subject: [PATCH] eigrpd: When deleting interface remove connected routes from topo table When we are deleting an interface, remove the connected routes associated with that interface from the topo table. Signed-off-by: Donald Sharp --- eigrpd/eigrp_interface.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/eigrpd/eigrp_interface.c b/eigrpd/eigrp_interface.c index 18573caa0..b3f80c57d 100644 --- a/eigrpd/eigrp_interface.c +++ b/eigrpd/eigrp_interface.c @@ -436,6 +436,9 @@ eigrp_default_iftype (struct interface *ifp) void eigrp_if_free (struct eigrp_interface *ei, int source) { + struct prefix_ipv4 dest_addr; + struct eigrp_prefix_entry *pe; + struct eigrp *eigrp = eigrp_lookup (); if (source == INTERFACE_DOWN_BY_VTY) { @@ -443,6 +446,14 @@ eigrp_if_free (struct eigrp_interface *ei, int source) eigrp_hello_send(ei,EIGRP_HELLO_GRACEFUL_SHUTDOWN, NULL); } + dest_addr.family = AF_INET; + dest_addr.prefix = ei->connected->address->u.prefix4; + dest_addr.prefixlen = ei->connected->address->prefixlen; + apply_mask_ipv4(&dest_addr); + pe = eigrp_topology_table_lookup_ipv4 (eigrp->topology_table, &dest_addr); + if (pe) + eigrp_prefix_entry_delete (eigrp->topology_table, pe); + eigrp_if_down (ei); list_delete (ei->nbrs); -- 2.39.2