]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: rename dispatch_interface() and make it take flags
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 24 Feb 2026 12:06:43 +0000 (21:06 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 24 Feb 2026 14:57:15 +0000 (23:57 +0900)
No functional change. Just refactoring and preparation for later change.

src/network/networkd-link-varlink.c
src/network/networkd-link-varlink.h
src/network/networkd-manager-varlink.c

index 6a514266e141d86a680fbade1d72859ac870884e..ad7386dabff05760d445d74d97d1f16a61bfd9c4 100644 (file)
@@ -9,7 +9,7 @@
 #include "networkd-manager.h"
 #include "networkd-setlink.h"
 
-int dispatch_interface(sd_varlink *vlink, sd_json_variant *parameters, Manager *manager, bool polkit, Link **ret) {
+int dispatch_link(sd_varlink *vlink, sd_json_variant *parameters, Manager *manager, DispatchLinkFlag flags, Link **ret) {
         struct {
                 int ifindex;
                 const char *ifname;
@@ -32,7 +32,11 @@ int dispatch_interface(sd_varlink *vlink, sd_json_variant *parameters, Manager *
         assert(manager);
         assert(ret);
 
-        r = sd_varlink_dispatch(vlink, parameters, polkit ? dispatch_polkit_table : dispatch_table, &info);
+        r = sd_varlink_dispatch(
+                        vlink,
+                        parameters,
+                        FLAGS_SET(flags, DISPATCH_LINK_POLKIT) ? dispatch_polkit_table : dispatch_table,
+                        &info);
         if (r != 0)
                 return r;
 
@@ -53,7 +57,10 @@ int dispatch_interface(sd_varlink *vlink, sd_json_variant *parameters, Manager *
                 link = link_by_name;
         }
 
-        /* If neither InterfaceIndex nor InterfaceName specified, this function returns NULL. */
+        if (!link && FLAGS_SET(flags, DISPATCH_LINK_MANDATORY))
+                return sd_varlink_error_invalid_parameter(vlink, JSON_VARIANT_STRING_CONST("InterfaceIndex"));
+
+        /* If the DISPATCH_LINK_MANDATORY flag is not set, this function may return NULL. */
         *ret = link;
         return 0;
 }
@@ -65,14 +72,10 @@ static int vl_method_link_up_or_down(sd_varlink *vlink, sd_json_variant *paramet
         assert(vlink);
         assert(manager);
 
-        r = dispatch_interface(vlink, parameters, manager, /* polkit= */ true, &link);
+        r = dispatch_link(vlink, parameters, manager, DISPATCH_LINK_POLKIT | DISPATCH_LINK_MANDATORY, &link);
         if (r != 0)
                 return r;
 
-        /* Require a specific link to be specified. */
-        if (!link)
-                return sd_varlink_error_invalid_parameter(vlink, JSON_VARIANT_STRING_CONST("InterfaceIndex"));
-
         r = varlink_verify_polkit_async(
                         vlink,
                         manager->bus,
index b3f1ea63474ce401544244e3b168287fb3349e9c..60468519ca1ca976e20a8e7b81fab0b84272822b 100644 (file)
@@ -3,7 +3,12 @@
 
 #include "networkd-forward.h"
 
-int dispatch_interface(sd_varlink *vlink, sd_json_variant *parameters, Manager *manager, bool polkit, Link **ret);
+typedef enum DispatchLinkFlag {
+        DISPATCH_LINK_POLKIT    = 1 << 0,
+        DISPATCH_LINK_MANDATORY = 1 << 1,
+} DispatchLinkFlag;
+
+int dispatch_link(sd_varlink *vlink, sd_json_variant *parameters, Manager *manager, DispatchLinkFlag flags, Link **ret);
 
 int vl_method_link_up(sd_varlink *vlink, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata);
 int vl_method_link_down(sd_varlink *vlink, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata);
index 84febf0630bba0728635fce93f6abb7fc9dcc243..49bc82678d090168f68f6e28f352453ea43b9807 100644 (file)
@@ -115,7 +115,7 @@ static int vl_method_get_lldp_neighbors(sd_varlink *vlink, sd_json_variant *para
         assert(vlink);
         assert(manager);
 
-        r = dispatch_interface(vlink, parameters, manager, /* polkit= */ false, &link);
+        r = dispatch_link(vlink, parameters, manager, /* flags= */ 0, &link);
         if (r != 0)
                 return r;