Merge pull request #2100 from chiragshah6/ospfv3_dev

ospf6d: fix ospf6 asbr crash
This commit is contained in:
Lou Berger 2018-04-24 11:53:20 -04:00 committed by GitHub
commit 8a87a46d7f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -685,8 +685,9 @@ void ospf6_asbr_lsa_remove(struct ospf6_lsa *lsa,
if (IS_OSPF6_DEBUG_EXAMIN(AS_EXTERNAL)) { if (IS_OSPF6_DEBUG_EXAMIN(AS_EXTERNAL)) {
prefix2str(&prefix, buf, sizeof(buf)); prefix2str(&prefix, buf, sizeof(buf));
zlog_debug( zlog_debug(
"%s: route %s path found with nh %u to remove.", "%s: route %s path found with cost %u nh %u to remove.",
__PRETTY_FUNCTION__, buf, __PRETTY_FUNCTION__, buf,
route->path.cost,
listcount(o_path->nh_list)); listcount(o_path->nh_list));
} }
@ -738,17 +739,22 @@ void ospf6_asbr_lsa_remove(struct ospf6_lsa *lsa,
listcount(route->nh_list)); listcount(route->nh_list));
} }
/* Update RIB/FIB with effective nh_list */ if (listcount(route->paths)) {
if (ospf6->route_table->hook_add) /* Update RIB/FIB with effective
(*ospf6->route_table->hook_add)(route); * nh_list
/* route's primary path is similar to LSA,
* replace route's primary path with
* route's paths list head.
*/ */
if (route->path.origin.id == lsa->header->id if (ospf6->route_table->hook_add)
&& route->path.origin.adv_router (*ospf6->route_table->hook_add)
== lsa->header->adv_router) { (route);
/* route's primary path is similar
* to LSA, replace route's primary
* path with route's paths list head.
*/
if ((route->path.origin.id ==
lsa->header->id) &&
(route->path.origin.adv_router
== lsa->header->adv_router)) {
struct ospf6_path *h_path; struct ospf6_path *h_path;
h_path = (struct ospf6_path *) h_path = (struct ospf6_path *)
@ -761,6 +767,10 @@ void ospf6_asbr_lsa_remove(struct ospf6_lsa *lsa,
route->path.origin.adv_router = route->path.origin.adv_router =
h_path->origin.adv_router; h_path->origin.adv_router;
} }
} else {
ospf6_route_remove(route,
ospf6->route_table);
}
} }
continue; continue;