summaryrefslogtreecommitdiff
path: root/eigrpd/eigrp_topology.c
diff options
context:
space:
mode:
authorRenato Westphal <renatowestphal@gmail.com>2017-05-12 15:38:18 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-05-13 13:08:00 -0400
commit76220653492a3eb9eadc3d1d78a1a4bfbc1b5ece (patch)
tree98ace6add23a1ec1503aa2612f65db575c60e973 /eigrpd/eigrp_topology.c
parentdfdbe7e4b0340c46cd8338e7e44e6bfa5f52e933 (diff)
eigrpd: Some Basic Corrections
* Advertise routes to zebra * Connected routes should not have a nexthop address * Fix segfaut on exit Signed-off-by: Renato Westphal <renatowestphal@gmail.com>
Diffstat (limited to 'eigrpd/eigrp_topology.c')
-rw-r--r--eigrpd/eigrp_topology.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/eigrpd/eigrp_topology.c b/eigrpd/eigrp_topology.c
index 25beb63e80..4fcbef7f14 100644
--- a/eigrpd/eigrp_topology.c
+++ b/eigrpd/eigrp_topology.c
@@ -216,11 +216,17 @@ void
eigrp_neighbor_entry_add(struct eigrp_prefix_entry *node,
struct eigrp_neighbor_entry *entry)
{
- if (listnode_lookup(node->entries, entry) == NULL)
+ struct list *l = list_new ();
+
+ if (listnode_lookup (node->entries, entry) == NULL)
{
- listnode_add_sort(node->entries, entry);
+ listnode_add_sort (node->entries, entry);
entry->prefix = node;
}
+
+ listnode_add (l, entry);
+ eigrp_zebra_route_add (node->destination_ipv4, l);
+ list_delete (l);
}
/*
@@ -236,16 +242,18 @@ eigrp_prefix_entry_delete(struct list *topology,
* Emergency removal of the node from this list.
* Whatever it is.
*/
- listnode_delete(eigrp->topology_changes_internalIPV4, node);
+ listnode_delete (eigrp->topology_changes_internalIPV4, node);
- if (listnode_lookup(topology, node) != NULL)
+ if (listnode_lookup (topology, node) != NULL)
{
- list_delete_all_node(node->entries);
- list_free(node->entries);
- list_free(node->rij);
- listnode_delete(topology, node);
- XFREE(MTYPE_EIGRP_PREFIX_ENTRY,node);
+ list_delete_all_node (node->entries);
+ list_free (node->entries);
+ list_free (node->rij);
+ listnode_delete (topology, node);
+ XFREE (MTYPE_EIGRP_PREFIX_ENTRY,node);
}
+
+ eigrp_zebra_route_delete (node->destination_ipv4);
}
/*