]> git.proxmox.com Git - mirror_frr.git/blobdiff - eigrpd/eigrp_topology.c
tools: retain sanity when reloading under systemd
[mirror_frr.git] / eigrpd / eigrp_topology.c
index 3520972731b646911dca7f040912685582e3176e..e861cdb333b0538d49b707afad1e0eb20fe0bb2b 100644 (file)
@@ -61,7 +61,7 @@ static int eigrp_nexthop_entry_cmp(struct eigrp_nexthop_entry *,
  * del - assigned function executed before deleting topology node by list
  * function
  */
-struct route_table *eigrp_topology_new()
+struct route_table *eigrp_topology_new(void)
 {
        return route_table_init();
 }
@@ -70,7 +70,7 @@ struct route_table *eigrp_topology_new()
  * Returns new created toplogy node
  * cmp - assigned function for comparing topology entry
  */
-struct eigrp_prefix_entry *eigrp_prefix_entry_new()
+struct eigrp_prefix_entry *eigrp_prefix_entry_new(void)
 {
        struct eigrp_prefix_entry *new;
        new = XCALLOC(MTYPE_EIGRP_PREFIX_ENTRY,
@@ -102,7 +102,7 @@ static int eigrp_nexthop_entry_cmp(struct eigrp_nexthop_entry *entry1,
  * Returns new topology entry
  */
 
-struct eigrp_nexthop_entry *eigrp_nexthop_entry_new()
+struct eigrp_nexthop_entry *eigrp_nexthop_entry_new(void)
 {
        struct eigrp_nexthop_entry *new;
 
@@ -141,10 +141,10 @@ void eigrp_prefix_entry_add(struct route_table *topology,
                                __PRETTY_FUNCTION__,
                                prefix2str(pe->destination, buf, sizeof(buf)));
                }
+               route_unlock_node(rn);
        }
 
        rn->info = pe;
-       route_lock_node(rn);
 }
 
 /*
@@ -161,10 +161,10 @@ void eigrp_nexthop_entry_add(struct eigrp_prefix_entry *node,
                listnode_add_sort(node->entries, entry);
                entry->prefix = node;
 
-               eigrp_zebra_route_add(node->destination, l);
+               eigrp_zebra_route_add(node->destination, l, node->fdistance);
        }
 
-       list_delete_and_null(&l);
+       list_delete(&l);
 }
 
 /*
@@ -193,8 +193,8 @@ void eigrp_prefix_entry_delete(struct route_table *table,
 
        for (ALL_LIST_ELEMENTS(pe->entries, node, nnode, ne))
                eigrp_nexthop_entry_delete(pe, ne);
-       list_delete_and_null(&pe->entries);
-       list_delete_and_null(&pe->rij);
+       list_delete(&pe->entries);
+       list_delete(&pe->rij);
        eigrp_zebra_route_delete(pe->destination);
        prefix_free(pe->destination);
 
@@ -276,7 +276,7 @@ struct list *eigrp_topology_get_successor(struct eigrp_prefix_entry *table_node)
         * If we have no successors return NULL
         */
        if (!successors->count) {
-               list_delete_and_null(&successors);
+               list_delete(&successors);
                successors = NULL;
        }
 
@@ -477,11 +477,12 @@ void eigrp_update_routing_table(struct eigrp_prefix_entry *prefix)
        successors = eigrp_topology_get_successor_max(prefix, eigrp->max_paths);
 
        if (successors) {
-               eigrp_zebra_route_add(prefix->destination, successors);
+               eigrp_zebra_route_add(prefix->destination, successors,
+                                     prefix->fdistance);
                for (ALL_LIST_ELEMENTS_RO(successors, node, entry))
                        entry->flags |= EIGRP_NEXTHOP_ENTRY_INTABLE_FLAG;
 
-               list_delete_and_null(&successors);
+               list_delete(&successors);
        } else {
                eigrp_zebra_route_delete(prefix->destination);
                for (ALL_LIST_ELEMENTS_RO(prefix->entries, node, entry))