summaryrefslogtreecommitdiff
path: root/eigrpd/eigrp_interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'eigrpd/eigrp_interface.c')
-rw-r--r--eigrpd/eigrp_interface.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/eigrpd/eigrp_interface.c b/eigrpd/eigrp_interface.c
index e6cfe1deea..4ad1005f2f 100644
--- a/eigrpd/eigrp_interface.c
+++ b/eigrpd/eigrp_interface.c
@@ -114,6 +114,8 @@ int eigrp_if_delete_hook(struct interface *ifp)
eigrp = ei->eigrp;
listnode_delete(eigrp->eiflist, ei);
+ eigrp_fifo_free(ei->obuf);
+
XFREE(MTYPE_EIGRP_IF_INFO, ifp->info);
ifp->info = NULL;
@@ -265,16 +267,11 @@ void eigrp_if_stream_unset(struct eigrp_interface *ei)
{
struct eigrp *eigrp = ei->eigrp;
- if (ei->obuf) {
- eigrp_fifo_free(ei->obuf);
- ei->obuf = NULL;
-
- if (ei->on_write_q) {
- listnode_delete(eigrp->oi_write_q, ei);
- if (list_isempty(eigrp->oi_write_q))
- thread_cancel(eigrp->t_write);
- ei->on_write_q = 0;
- }
+ if (ei->on_write_q) {
+ listnode_delete(eigrp->oi_write_q, ei);
+ if (list_isempty(eigrp->oi_write_q))
+ thread_cancel(eigrp->t_write);
+ ei->on_write_q = 0;
}
}
@@ -351,7 +348,6 @@ void eigrp_if_free(struct eigrp_interface *ei, int source)
eigrp_if_down(ei);
- list_delete(&ei->nbrs);
listnode_delete(ei->eigrp->eiflist, ei);
}