summaryrefslogtreecommitdiff
path: root/ospf6d/ospf6_route.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2015-05-19 18:03:53 -0700
committerDonald Sharp <sharpd@cumulusnetworks.com>2015-05-19 18:03:53 -0700
commit0f23bb679b966782fe72060d112b60ce1bd0af7a (patch)
tree834b919ad71c45d913fdec581b084c47f8851434 /ospf6d/ospf6_route.c
parentd973c4f045872450aa5c9b087d71f407dfe53591 (diff)
Fixing a couple of issues with ospf6_route_remove () routine.
When a route_node has multiple ospf6_routes under it (common subnet case), then the current implementation has an issue in adjusting the route_node->info on a ospf6_route_remove() call. The main reason is that it ends up using exact match to determine if the next ospf6_route belongs to the same route_node or not. Fixing that part to use rnode (the existing back-pointer to the route_node) from the ospf6_route to determine that. Also fixing some of the walks to turn them safe so that the route deletion is fine. Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Diffstat (limited to 'ospf6d/ospf6_route.c')
-rw-r--r--ospf6d/ospf6_route.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/ospf6d/ospf6_route.c b/ospf6d/ospf6_route.c
index 0493e77760..4ef5b7c2fc 100644
--- a/ospf6d/ospf6_route.c
+++ b/ospf6d/ospf6_route.c
@@ -838,7 +838,7 @@ ospf6_route_remove (struct ospf6_route *route,
if (node->info == route)
{
- if (route->next && ospf6_route_is_same (route->next, route))
+ if (route->next && route->next->rnode == node)
{
node->info = route->next;
SET_FLAG (route->next->flag, OSPF6_ROUTE_BEST);