summaryrefslogtreecommitdiff
path: root/src/network/networkd-queue.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-06-06 16:59:41 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-06-09 04:59:23 +0900
commit68f5206349b90f4c33537751d0fc341ab64bb3d9 (patch)
treea5d8d9fb90eca6ab4d226072940a79a70b0c459d /src/network/networkd-queue.c
parentaa9117c0c4e2e9c25395d1aca1232870f7dca034 (diff)
downloadsystemd-68f5206349b90f4c33537751d0fc341ab64bb3d9.tar.gz
network: use request queue to handle bound_to list
Diffstat (limited to 'src/network/networkd-queue.c')
-rw-r--r--src/network/networkd-queue.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/network/networkd-queue.c b/src/network/networkd-queue.c
index acda4994f0..dfb4a2bf12 100644
--- a/src/network/networkd-queue.c
+++ b/src/network/networkd-queue.c
@@ -49,6 +49,7 @@ static void request_free_object(RequestType type, void *object) {
routing_policy_rule_free(object);
break;
case REQUEST_TYPE_SET_LINK:
+ case REQUEST_TYPE_UP_DOWN:
break;
default:
assert_not_reached("invalid request type.");
@@ -125,6 +126,8 @@ static void request_hash_func(const Request *req, struct siphash *state) {
case REQUEST_TYPE_SET_LINK:
siphash24_compress(&req->set_link_operation, sizeof(req->set_link_operation), state);
break;
+ case REQUEST_TYPE_UP_DOWN:
+ break;
default:
assert_not_reached("invalid request type.");
}
@@ -170,6 +173,8 @@ static int request_compare_func(const struct Request *a, const struct Request *b
return routing_policy_rule_compare_func(a->rule, b->rule);
case REQUEST_TYPE_SET_LINK:
return CMP(a->set_link_operation, b->set_link_operation);
+ case REQUEST_TYPE_UP_DOWN:
+ return 0;
default:
assert_not_reached("invalid request type.");
}
@@ -201,7 +206,8 @@ int link_queue_request(
assert(IN_SET(type,
REQUEST_TYPE_ACTIVATE_LINK,
REQUEST_TYPE_DHCP_SERVER,
- REQUEST_TYPE_SET_LINK) ||
+ REQUEST_TYPE_SET_LINK,
+ REQUEST_TYPE_UP_DOWN) ||
object);
assert(type == REQUEST_TYPE_DHCP_SERVER || netlink_handler);
@@ -296,6 +302,9 @@ int manager_process_requests(sd_event_source *s, void *userdata) {
case REQUEST_TYPE_SET_LINK:
r = request_process_set_link(req);
break;
+ case REQUEST_TYPE_UP_DOWN:
+ r = request_process_link_up_or_down(req);
+ break;
default:
return -EINVAL;
}