I am using my own protocol and wanted to understand more about handling of route update. When my protocol receives a route, I inform the core using rte_update() and pass on the new route and when I need to delete I set new = NULL and call rte_update().
Problem :
1. This is the initial route that was installed in the table.
Route1 10.0.1.0/24 Metric : 10
2. Received a better route with Metric as 5, so i call rte_update and pass on the new route. So now, I have
Route1 10.0.1.0/24 Metric: 5
3.  Protocol again receives an update to delete the cost 5 route (step 2) . However when I do that, I see that I no longer have any route to 10.0.1.0/24 instead of having a higher cost route (cost 10 ).

When I enable debug, I see that during delete, when we fall through rte_recalculate() in core code, net->routes is being set to null and so we never do recalculation for new optimal route. Is there something I need to do after we call rte_update() to install route so I save the old_best route.

Thanks, 


--
Jigar Mehta