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.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/eigrpd/eigrp_interface.c b/eigrpd/eigrp_interface.c
index fb8f47e723..05012e63b2 100644
--- a/eigrpd/eigrp_interface.c
+++ b/eigrpd/eigrp_interface.c
@@ -66,7 +66,7 @@ struct eigrp_interface *eigrp_if_new(struct eigrp *eigrp, struct interface *ifp,
ei->type = EIGRP_IFTYPE_BROADCAST;
/* Initialize neighbor list. */
- ei->nbrs = list_new();
+ eigrp_nbr_hash_init(&ei->nbr_hash_head);
ei->crypt_seqnum = frr_sequence32_next();
@@ -102,7 +102,7 @@ int eigrp_if_delete_hook(struct interface *ifp)
if (!ei)
return 0;
- list_delete(&ei->nbrs);
+ eigrp_nbr_hash_fini(&ei->nbr_hash_head);
eigrp = ei->eigrp;
listnode_delete(eigrp->eiflist, ei);
@@ -327,9 +327,6 @@ int eigrp_if_up(struct eigrp_interface *ei)
int eigrp_if_down(struct eigrp_interface *ei)
{
- struct listnode *node, *nnode;
- struct eigrp_neighbor *nbr;
-
if (ei == NULL)
return 0;
@@ -340,9 +337,9 @@ int eigrp_if_down(struct eigrp_interface *ei)
/*Set infinite metrics to routes learned by this interface and start
* query process*/
- for (ALL_LIST_ELEMENTS(ei->nbrs, node, nnode, nbr)) {
- eigrp_nbr_delete(nbr);
- }
+ while (eigrp_nbr_hash_count(&ei->nbr_hash_head) > 0)
+ eigrp_nbr_delete(eigrp_nbr_hash_first(&ei->nbr_hash_head));
+
return 1;
}