network: rename dispatch_interface() and make it take flags

No functional change. Just refactoring and preparation for later change.
This commit is contained in:
Yu Watanabe
2026-02-24 21:06:43 +09:00
parent b6919c737a
commit 27f1bf5cde
3 changed files with 18 additions and 10 deletions

View 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,

View 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);

View 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;