diff options
| author | Renato Westphal <renatowestphal@gmail.com> | 2017-05-12 15:38:18 -0400 | 
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-05-13 13:08:00 -0400 | 
| commit | 76220653492a3eb9eadc3d1d78a1a4bfbc1b5ece (patch) | |
| tree | 98ace6add23a1ec1503aa2612f65db575c60e973 /eigrpd/eigrp_topology.c | |
| parent | dfdbe7e4b0340c46cd8338e7e44e6bfa5f52e933 (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.c | 26 | 
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);  }  /*  | 
