]> git.proxmox.com Git - mirror_frr.git/blobdiff - eigrpd/eigrpd.c
zebra: Allow ns delete to happen after under/over flow checks
[mirror_frr.git] / eigrpd / eigrpd.c
index 735b319c1d38678ef4f5d4f1d3abcade6a967f73..9bbecdf9e39df04e4c38d338d6d1bc607d4a6c49 100644 (file)
@@ -62,9 +62,7 @@ static struct eigrp_master eigrp_master;
 
 struct eigrp_master *eigrp_om;
 
-static void eigrp_delete(struct eigrp *);
 static struct eigrp *eigrp_new(const char *);
-static void eigrp_add(struct eigrp *);
 
 extern struct zclient *zclient;
 extern struct in_addr router_id_zebra;
@@ -162,8 +160,9 @@ static struct eigrp *eigrp_new(const char *AS)
        eigrp->networks = eigrp_topology_new();
 
        if ((eigrp_socket = eigrp_sock_init()) < 0) {
-               zlog_ferr(LIB_ERR_SOCKET,
-                        "eigrp_new: fatal error: eigrp_sock_init was unable to open a socket");
+               flog_err_sys(
+                       EC_LIB_SOCKET,
+                       "eigrp_new: fatal error: eigrp_sock_init was unable to open a socket");
                exit(1);
        }
 
@@ -202,16 +201,6 @@ static struct eigrp *eigrp_new(const char *AS)
        return eigrp;
 }
 
-static void eigrp_add(struct eigrp *eigrp)
-{
-       listnode_add(eigrp_om->eigrp, eigrp);
-}
-
-static void eigrp_delete(struct eigrp *eigrp)
-{
-       listnode_delete(eigrp_om->eigrp, eigrp);
-}
-
 struct eigrp *eigrp_get(const char *AS)
 {
        struct eigrp *eigrp;
@@ -219,7 +208,7 @@ struct eigrp *eigrp_get(const char *AS)
        eigrp = eigrp_lookup();
        if (eigrp == NULL) {
                eigrp = eigrp_new(AS);
-               eigrp_add(eigrp);
+               listnode_add(eigrp_om->eigrp, eigrp);
        }
 
        return eigrp;
@@ -277,19 +266,19 @@ void eigrp_finish_final(struct eigrp *eigrp)
        THREAD_OFF(eigrp->t_read);
        close(eigrp->fd);
 
-       list_delete_and_null(&eigrp->eiflist);
-       list_delete_and_null(&eigrp->oi_write_q);
+       list_delete(&eigrp->eiflist);
+       list_delete(&eigrp->oi_write_q);
 
-       eigrp_topology_cleanup(eigrp->topology_table);
        eigrp_topology_free(eigrp->topology_table);
 
        eigrp_nbr_delete(eigrp->neighbor_self);
 
-       list_delete_and_null(&eigrp->topology_changes_externalIPV4);
-       list_delete_and_null(&eigrp->topology_changes_internalIPV4);
+       list_delete(&eigrp->topology_changes_externalIPV4);
+       list_delete(&eigrp->topology_changes_internalIPV4);
 
-       eigrp_delete(eigrp);
+       listnode_delete(eigrp_om->eigrp, eigrp);
 
+       stream_free(eigrp->ibuf);
        XFREE(MTYPE_EIGRP_TOP, eigrp);
 }