]> git.puffer.fish Git - mirror/frr.git/commitdiff
eigrpd: Valgrind complained about not removing entry
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 3 Apr 2017 01:21:21 +0000 (21:21 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 3 Apr 2017 01:21:21 +0000 (21:21 -0400)
We were not removing the pe from the topology list.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
eigrpd/eigrp_topology.c
eigrpd/eigrp_vty.c

index 5d45e03bd92cc068f8e482703e099f86e66ae240..32758b0408d1ad38fda7767d69da1f9a3439b9ed 100644 (file)
@@ -243,6 +243,14 @@ void
 eigrp_prefix_entry_delete(struct list *topology,
     struct eigrp_prefix_entry *node)
 {
+  struct eigrp *eigrp = eigrp_lookup ();
+
+  /*
+   * Emergency removal of the node from this list.
+   * Whatever it is.
+   */
+  listnode_delete(eigrp->topology_changes_internalIPV4, node);
+
   if (listnode_lookup(topology, node) != NULL)
     {
       list_delete_all_node(node->entries);
@@ -549,20 +557,20 @@ eigrp_topology_neighbor_down(struct eigrp *eigrp, struct eigrp_neighbor * nbr)
 void
 eigrp_update_topology_table_prefix(struct list * table, struct eigrp_prefix_entry * prefix)
 {
-       struct listnode *node1, *node2;
-
-         struct eigrp_neighbor_entry *entry;
-             for (ALL_LIST_ELEMENTS(prefix->entries, node1, node2, entry))
-               {
-                 if(entry->distance == EIGRP_MAX_METRIC)
-                 {
-                         eigrp_neighbor_entry_delete(prefix,entry);
-                 }
-               }
-             if(prefix->distance == EIGRP_MAX_METRIC && prefix->nt != EIGRP_TOPOLOGY_TYPE_CONNECTED)
-             {
-                 eigrp_prefix_entry_delete(table,prefix);
-             }
+  struct listnode *node1, *node2;
+
+  struct eigrp_neighbor_entry *entry;
+  for (ALL_LIST_ELEMENTS(prefix->entries, node1, node2, entry))
+    {
+      if(entry->distance == EIGRP_MAX_METRIC)
+        {
+          eigrp_neighbor_entry_delete(prefix,entry);
+        }
+    }
+  if(prefix->distance == EIGRP_MAX_METRIC && prefix->nt != EIGRP_TOPOLOGY_TYPE_CONNECTED)
+    {
+      eigrp_prefix_entry_delete(table,prefix);
+    }
 }
 /*int
  eigrp_topology_get_successor_count (struct eigrp_prefix_entry *prefix)
index 60835ece18041f2e240adbae421c2dace6444bad..61a173292310113b22e2d2b353915e13f18dbf70 100644 (file)
@@ -518,12 +518,7 @@ DEFUN (show_ip_eigrp_interfaces,
         show_ip_eigrp_interface_header (vty, eigrp);
       }
 
-  //   if ((strncmp (argv[1], "f", 1) == 0 && strncmp (eigrp_if_name_string (ei), "F",1) == 0) ||
-  //           (strncmp (argv[1], "l", 1) == 0 && strncmp (eigrp_if_name_string (ei), "L",1) == 0) ||
-  //           (strncmp (argv[1], "s", 1) == 0 && strncmp (eigrp_if_name_string (ei), "S",1) == 0))
-  //   {
     show_ip_eigrp_interface_sub (vty, eigrp, ei);
-    //}
     idx = 0;
     if (argv_find (argv, argc, "detail", &idx))
       {