]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: tc: assign netlink handlers into Request object
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 11 Mar 2022 01:38:59 +0000 (10:38 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 11 Mar 2022 01:39:05 +0000 (10:39 +0900)
This should not change any behavior, as req->netlink_handler is always
qdisc_handler or tclass_handler.

This is just a preparation for a later commit which introduces
request_call_netlink_async().

src/network/networkd-queue.c
src/network/tc/qdisc.c
src/network/tc/tclass.c

index 5f420c08c37e3af3d4113cb4ce50e46e7d4e4615..b30d0532d128c82cccd8acf8bc50e22aab497789 100644 (file)
@@ -313,9 +313,7 @@ int link_queue_request(
                       REQUEST_TYPE_DHCP4_CLIENT,
                       REQUEST_TYPE_DHCP6_CLIENT,
                       REQUEST_TYPE_NDISC,
-                      REQUEST_TYPE_RADV,
-                      REQUEST_TYPE_TC_QDISC,
-                      REQUEST_TYPE_TC_CLASS) ||
+                      REQUEST_TYPE_RADV) ||
                netlink_handler);
 
         req = new(Request, 1);
index 7b2dacbd5ca20500fff5001283066d8e2f79ba1d..9220299c9536e2e860f2e302b86948575fc294af 100644 (file)
@@ -319,7 +319,7 @@ static int qdisc_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
         return 1;
 }
 
-static int qdisc_configure(QDisc *qdisc, Link *link) {
+static int qdisc_configure(QDisc *qdisc, Link *link, Request *req) {
         _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
         int r;
 
@@ -328,6 +328,7 @@ static int qdisc_configure(QDisc *qdisc, Link *link) {
         assert(link->manager);
         assert(link->manager->rtnl);
         assert(link->ifindex > 0);
+        assert(req);
 
         log_qdisc_debug(qdisc, link, "Configuring");
 
@@ -346,7 +347,7 @@ static int qdisc_configure(QDisc *qdisc, Link *link) {
                         return r;
         }
 
-        r = netlink_call_async(link->manager->rtnl, NULL, m, qdisc_handler, link_netlink_destroy_callback, link);
+        r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler, link_netlink_destroy_callback, link);
         if (r < 0)
                 return r;
 
@@ -379,7 +380,7 @@ int request_process_qdisc(Request *req) {
         if (!qdisc_is_ready_to_configure(qdisc, link))
                 return 0;
 
-        r = qdisc_configure(qdisc, link);
+        r = qdisc_configure(qdisc, link, req);
         if (r < 0)
                 return log_link_warning_errno(link, r, "Failed to configure QDisc: %m");
 
@@ -411,7 +412,7 @@ int link_request_qdisc(Link *link, QDisc *qdisc) {
 
         log_qdisc_debug(existing, link, "Requesting");
         r = link_queue_request(link, REQUEST_TYPE_TC_QDISC, existing, false,
-                               &link->tc_messages, NULL, NULL);
+                               &link->tc_messages, qdisc_handler, NULL);
         if (r < 0)
                 return log_link_warning_errno(link, r, "Failed to request QDisc: %m");
         if (r == 0)
index e01e151d8f2609f3092ec7c139811745b45e325f..937727796eac1aa8e224d683c311454c18db02e8 100644 (file)
@@ -281,7 +281,7 @@ static int tclass_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
         return 1;
 }
 
-static int tclass_configure(TClass *tclass, Link *link) {
+static int tclass_configure(TClass *tclass, Link *link, Request *req) {
         _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
         int r;
 
@@ -290,6 +290,7 @@ static int tclass_configure(TClass *tclass, Link *link) {
         assert(link->manager);
         assert(link->manager->rtnl);
         assert(link->ifindex > 0);
+        assert(req);
 
         log_tclass_debug(tclass, link, "Configuring");
 
@@ -308,7 +309,7 @@ static int tclass_configure(TClass *tclass, Link *link) {
                         return r;
         }
 
-        r = netlink_call_async(link->manager->rtnl, NULL, m, tclass_handler, link_netlink_destroy_callback, link);
+        r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler, link_netlink_destroy_callback, link);
         if (r < 0)
                 return r;
 
@@ -338,7 +339,7 @@ int request_process_tclass(Request *req) {
         if (!tclass_is_ready_to_configure(tclass, link))
                 return 0;
 
-        r = tclass_configure(tclass, link);
+        r = tclass_configure(tclass, link, req);
         if (r < 0)
                 return log_link_warning_errno(link, r, "Failed to configure TClass: %m");
 
@@ -370,7 +371,7 @@ int link_request_tclass(Link *link, TClass *tclass) {
 
         log_tclass_debug(existing, link, "Requesting");
         r = link_queue_request(link, REQUEST_TYPE_TC_CLASS, existing, false,
-                               &link->tc_messages, NULL, NULL);
+                               &link->tc_messages, tclass_handler, NULL);
         if (r < 0)
                 return log_link_warning_errno(link, r, "Failed to request TClass: %m");
         if (r == 0)