mirror of
https://github.com/systemd/systemd.git
synced 2025-01-09 01:18:19 +03:00
network/ndisc: unref Route objects that depend on the nexthop
No functional change, as when this function is called, the set will be freed and contained Route objects will be unref()ed anyway soon later by nexthop_detach() -> nexthop_free(). Even though, when the routes are forgotten from the Manager, then it is not necessary to keep them by the nexthop. Let's unref earlier.
This commit is contained in:
parent
1168489cd4
commit
96fef18ca6
@ -493,8 +493,11 @@ static void nexthop_forget_dependents(NextHop *nexthop, Manager *manager) {
|
||||
/* If a nexthop is removed, the kernel silently removes routes that depend on the removed nexthop.
|
||||
* Let's forget them. */
|
||||
|
||||
Route *route;
|
||||
SET_FOREACH(route, nexthop->routes) {
|
||||
for (;;) {
|
||||
_cleanup_(route_unrefp) Route *route = set_steal_first(nexthop->routes);
|
||||
if (!route)
|
||||
break;
|
||||
|
||||
Request *req;
|
||||
if (route_get_request(manager, route, &req) >= 0)
|
||||
route_enter_removed(req->userdata);
|
||||
@ -503,6 +506,8 @@ static void nexthop_forget_dependents(NextHop *nexthop, Manager *manager) {
|
||||
log_route_debug(route, "Forgetting silently removed", manager);
|
||||
route_detach(route);
|
||||
}
|
||||
|
||||
nexthop->routes = set_free(nexthop->routes);
|
||||
}
|
||||
|
||||
static int nexthop_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, RemoveRequest *rreq) {
|
||||
|
Loading…
Reference in New Issue
Block a user