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.
/* 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);
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) {