From: Yu Watanabe Date: Mon, 22 Feb 2021 17:21:31 +0000 (+0900) Subject: network: route: shorten code a bit X-Git-Tag: v248-rc1~12^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=484555f3f215ff78844e12209fcf335bc144493a;p=thirdparty%2Fsystemd.git network: route: shorten code a bit --- diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index 882b71f9d95..a74541a6c95 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -451,34 +451,18 @@ static int route_get(const Manager *manager, const Link *link, const Route *in, assert(manager || link); assert(in); - if (link) { - existing = set_get(link->routes, in); - if (existing) { - if (ret) - *ret = existing; - return 1; - } - - existing = set_get(link->routes_foreign, in); - if (existing) { - if (ret) - *ret = existing; - return 0; - } - } else { - existing = set_get(manager->routes, in); - if (existing) { - if (ret) - *ret = existing; - return 1; - } + existing = set_get(link ? link->routes : manager->routes, in); + if (existing) { + if (ret) + *ret = existing; + return 1; + } - existing = set_get(manager->routes_foreign, in); - if (existing) { - if (ret) - *ret = existing; - return 0; - } + existing = set_get(link ? link->routes_foreign : manager->routes_foreign, in); + if (existing) { + if (ret) + *ret = existing; + return 0; } return -ENOENT; @@ -488,6 +472,8 @@ static void route_copy(Route *dest, const Route *src, const MultipathRoute *m, c assert(dest); assert(src); + /* This only copies entries used by the above hash and compare functions. */ + dest->family = src->family; dest->src = src->src; dest->src_prefixlen = src->src_prefixlen; @@ -596,19 +582,11 @@ static int route_add(Manager *manager, Link *link, const Route *in, const Multip is_new = true; } else if (r == 0) { /* Take over a foreign route */ - if (link) { - r = set_ensure_put(&link->routes, &route_hash_ops, route); - if (r < 0) - return r; - - set_remove(link->routes_foreign, route); - } else { - r = set_ensure_put(&manager->routes, &route_hash_ops, route); - if (r < 0) - return r; + r = set_ensure_put(link ? &link->routes : &manager->routes, &route_hash_ops, route); + if (r < 0) + return r; - set_remove(manager->routes_foreign, route); - } + set_remove(link ? link->routes_foreign : manager->routes_foreign, route); } else if (r == 1) { /* Route exists, do nothing */ ;