machine: use sd_json_dispatch_pid() in varlink code
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user