From: Yu Watanabe Date: Tue, 24 Feb 2026 12:06:43 +0000 (+0900) Subject: network: rename dispatch_interface() and make it take flags X-Git-Tag: v260-rc1~19^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=27f1bf5cdecb0330d15abec4a0c9db5dcb0be0ba;p=thirdparty%2Fsystemd.git network: rename dispatch_interface() and make it take flags No functional change. Just refactoring and preparation for later change. --- diff --git a/src/network/networkd-link-varlink.c b/src/network/networkd-link-varlink.c index 6a514266e14..ad7386dabff 100644 --- a/src/network/networkd-link-varlink.c +++ b/src/network/networkd-link-varlink.c @@ -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, diff --git a/src/network/networkd-link-varlink.h b/src/network/networkd-link-varlink.h index b3f1ea63474..60468519ca1 100644 --- a/src/network/networkd-link-varlink.h +++ b/src/network/networkd-link-varlink.h @@ -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); diff --git a/src/network/networkd-manager-varlink.c b/src/network/networkd-manager-varlink.c index 84febf0630b..49bc82678d0 100644 --- a/src/network/networkd-manager-varlink.c +++ b/src/network/networkd-manager-varlink.c @@ -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;