From: Ivan Kruglov Date: Thu, 10 Oct 2024 09:52:34 +0000 (+0200) Subject: machine: use sd_json_dispatch_pid() in varlink code X-Git-Tag: v257-rc1~259^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F34681%2Fhead;p=thirdparty%2Fsystemd.git machine: use sd_json_dispatch_pid() in varlink code --- diff --git a/src/machine/machine-varlink.c b/src/machine/machine-varlink.c index f5acb33eafb..4e42a8d13b5 100644 --- a/src/machine/machine-varlink.c +++ b/src/machine/machine-varlink.c @@ -217,9 +217,8 @@ static int lookup_machine_by_pid(sd_varlink *link, Manager *manager, pid_t pid, assert(link); assert(manager); assert(ret_machine); - assert_cc(sizeof(pid_t) == sizeof(uint32_t)); - if (pid == 0) { + if (pid == PID_AUTOMATIC) { r = varlink_get_peer_pidref(link, &pidref); if (r < 0) return log_debug_errno(r, "Failed to get peer pidref: %m"); @@ -254,7 +253,7 @@ int lookup_machine_by_name_or_pid(sd_varlink *link, Manager *manager, const char return r; } - if (pid >= 0) { + if (pid_is_valid_or_automatic(pid)) { r = lookup_machine_by_pid(link, manager, pid, &pid_machine); if (r == -EINVAL) return sd_varlink_error_invalid_parameter_name(link, "pid"); @@ -335,7 +334,7 @@ int vl_method_kill(sd_varlink *link, sd_json_variant *parameters, sd_varlink_met }; Manager *manager = ASSERT_PTR(userdata); - struct params p = { .pid = -1 }; + struct params p = {}; KillWhom whom; int r; diff --git a/src/machine/machine-varlink.h b/src/machine/machine-varlink.h index 4ee15ce40b5..77db7b14edb 100644 --- a/src/machine/machine-varlink.h +++ b/src/machine/machine-varlink.h @@ -13,8 +13,9 @@ }, { \ .name = "pid", \ .type = _SD_JSON_VARIANT_TYPE_INVALID, \ - .callback = sd_json_dispatch_uint32, \ - .offset = offsetof(t, pid) \ + .callback = sd_json_dispatch_pid, \ + .offset = offsetof(t, pid), \ + .flags = SD_JSON_RELAX /* allows pid=0 */ \ } int lookup_machine_by_name_or_pid(sd_varlink *link, Manager *manager, const char *machine_name, pid_t pid, Machine **ret_machine); diff --git a/src/machine/machined-varlink.c b/src/machine/machined-varlink.c index 61000241741..63d24c67adb 100644 --- a/src/machine/machined-varlink.c +++ b/src/machine/machined-varlink.c @@ -9,6 +9,7 @@ #include "machine-varlink.h" #include "machined-varlink.h" #include "mkdir.h" +#include "process-util.h" #include "socket-util.h" #include "user-util.h" #include "varlink-io.systemd.Machine.h" @@ -430,7 +431,7 @@ static int vl_method_list(sd_varlink *link, sd_json_variant *parameters, sd_varl }; Manager *m = ASSERT_PTR(userdata); - MachineLookupParameters p = { .pid = -1 }; + MachineLookupParameters p = {}; Machine *machine; int r; @@ -441,7 +442,7 @@ static int vl_method_list(sd_varlink *link, sd_json_variant *parameters, sd_varl if (r != 0) return r; - if (p.machine_name || p.pid >= 0) { + if (p.machine_name || pid_is_valid_or_automatic(p.pid)) { r = lookup_machine_by_name_or_pid(link, m, p.machine_name, p.pid, &machine); if (r == -ESRCH) return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL); @@ -479,7 +480,7 @@ static int lookup_machine_and_call_method(sd_varlink *link, sd_json_variant *par }; Manager *manager = ASSERT_PTR(userdata); - MachineLookupParameters p = { .pid = -1 }; + MachineLookupParameters p = {}; Machine *machine; int r;