network: route: shorten code a bit

This commit is contained in:
Yu Watanabe
2021-02-23 02:21:31 +09:00
parent 30f1083709
commit 484555f3f2
+17 -39
View File
@@ -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 ? link->routes : manager->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(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;
r = set_ensure_put(link ? &link->routes : &manager->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;
set_remove(manager->routes_foreign, route);
}
set_remove(link ? link->routes_foreign : manager->routes_foreign, route);
} else if (r == 1) {
/* Route exists, do nothing */
;