From 3babbdf632f967329d56cbe5e782a9582e45cafe Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 16 Jan 2024 14:19:01 +0900 Subject: [PATCH] network/route: introduce route_get_request() No functional change, just refactoring and preparation for later commits. --- src/network/networkd-route.c | 43 ++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index 0fbe99f06a2..f877702efc7 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -336,6 +336,29 @@ static int route_get_link(Manager *manager, const Route *route, Link **ret) { return route_nexthop_get_link(manager, NULL, &route->nexthop, ret); } +static int route_get_request(Link *link, const Route *route, Request **ret) { + Request *req; + + assert(link); + assert(link->manager); + assert(route); + + req = ordered_set_get(link->manager->request_queue, + &(const Request) { + .link = link, + .type = REQUEST_TYPE_ROUTE, + .userdata = (void*) route, + .hash_func = (hash_func_t) route_hash_func, + .compare_func = (compare_func_t) route_compare_func, + }); + if (!req) + return -ENOENT; + + if (ret) + *ret = req; + return 0; +} + int route_dup(const Route *src, const RouteNextHop *nh, Route **ret) { _cleanup_(route_freep) Route *dest = NULL; int r; @@ -1348,29 +1371,17 @@ int link_request_static_routes(Link *link, bool only_ipv4) { } void route_cancel_request(Route *route, Link *link) { - Request *req; - assert(route); - link = route->link ?: link; - - assert(link); - assert(link->manager); + link = ASSERT_PTR(route->link ?: link); if (!route_is_requesting(route)) return; - req = ordered_set_get(link->manager->request_queue, - &(Request) { - .link = link, - .type = REQUEST_TYPE_ROUTE, - .userdata = route, - .hash_func = (hash_func_t) route_hash_func, - .compare_func = (compare_func_t) route_compare_func, - }); - - if (req) + Request *req; + if (route_get_request(link, route, &req) >= 0) request_detach(req); + route_cancel_requesting(route); } -- 2.47.3