]> git.proxmox.com Git - mirror_frr.git/blobdiff - eigrpd/eigrp_interface.c
zebra: Allow ns delete to happen after under/over flow checks
[mirror_frr.git] / eigrpd / eigrp_interface.c
index cd459fdc42940fbb8fa580972971b5a91c96eaa2..e450c7d999322c23a718bda5c2f30b690d8c87e9 100644 (file)
@@ -109,7 +109,7 @@ int eigrp_if_delete_hook(struct interface *ifp)
        if (!ei)
                return 0;
 
-       list_delete_and_null(&ei->nbrs);
+       list_delete(&ei->nbrs);
 
        eigrp = ei->eigrp;
        listnode_delete(eigrp->eiflist, ei);
@@ -183,9 +183,7 @@ int eigrp_if_up(struct eigrp_interface *ei)
 
        struct prefix dest_addr;
 
-       dest_addr.family = AF_INET;
-       dest_addr.u.prefix4 = ei->connected->address->u.prefix4;
-       dest_addr.prefixlen = ei->connected->address->prefixlen;
+       dest_addr = *ei->address;
        apply_mask(&dest_addr);
        pe = eigrp_topology_table_lookup_ipv4(eigrp->topology_table,
                                              &dest_addr);
@@ -336,12 +334,15 @@ void eigrp_if_free(struct eigrp_interface *ei, int source)
        struct eigrp_prefix_entry *pe;
        struct eigrp *eigrp = eigrp_lookup();
 
+       if (!eigrp)
+               return;
+
        if (source == INTERFACE_DOWN_BY_VTY) {
                THREAD_OFF(ei->t_hello);
                eigrp_hello_send(ei, EIGRP_HELLO_GRACEFUL_SHUTDOWN, NULL);
        }
 
-       dest_addr = *ei->connected->address;
+       dest_addr = *ei->address;
        apply_mask(&dest_addr);
        pe = eigrp_topology_table_lookup_ipv4(eigrp->topology_table,
                                              &dest_addr);
@@ -350,7 +351,7 @@ void eigrp_if_free(struct eigrp_interface *ei, int source)
 
        eigrp_if_down(ei);
 
-       list_delete_and_null(&ei->nbrs);
+       list_delete(&ei->nbrs);
        listnode_delete(ei->eigrp->eiflist, ei);
 }