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");
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");
};
Manager *manager = ASSERT_PTR(userdata);
- struct params p = { .pid = -1 };
+ struct params p = {};
KillWhom whom;
int r;
}, { \
.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);
#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"
};
Manager *m = ASSERT_PTR(userdata);
- MachineLookupParameters p = { .pid = -1 };
+ MachineLookupParameters p = {};
Machine *machine;
int r;
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);
};
Manager *manager = ASSERT_PTR(userdata);
- MachineLookupParameters p = { .pid = -1 };
+ MachineLookupParameters p = {};
Machine *machine;
int r;