diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-04-02 19:35:42 -0400 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-04-02 19:35:42 -0400 |
| commit | 4325044689716f13f975e15660ed973b11dbdff4 (patch) | |
| tree | 7a8908a8bc7d972f931369166f92c66ae22fd9ba /eigrpd/eigrp_interface.c | |
| parent | 505a2c46d12bd4b128de50ca0045f68fa4c34a19 (diff) | |
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 <sharpd@cumulusnetworks.com>
Diffstat (limited to 'eigrpd/eigrp_interface.c')
| -rw-r--r-- | eigrpd/eigrp_interface.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/eigrpd/eigrp_interface.c b/eigrpd/eigrp_interface.c index 18573caa00..b3f80c57d8 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); |
