#include "constants.h"
#include "errno-util.h"
+#include "json-util.h"
#include "manager.h"
#include "metrics.h"
#include "path-util.h"
return -EINVAL;
return sd_json_buildo(ret_v,
- SD_JSON_BUILD_PAIR_STRING("mode", mode),
+ JSON_BUILD_PAIR_ENUM("mode", mode),
SD_JSON_BUILD_PAIR_STRING("path", crt->cgroup_path),
SD_JSON_BUILD_PAIR_STRING("property", property),
SD_JSON_BUILD_PAIR_CONDITION(use_limit, "limit", SD_JSON_BUILD_UNSIGNED(c->moom_mem_pressure_limit)),
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include "varlink-idl-common.h"
#include "varlink-io.systemd.ManagedOOM.h"
/* Pull in vl_type_ControlGroup, since both interfaces need it */
SD_VARLINK_DEFINE_INTERFACE(
io_systemd_ManagedOOM,
"io.systemd.ManagedOOM",
+ &vl_type_ManagedOOMMode,
&vl_method_SubscribeManagedOOMCGroups,
&vl_type_ControlGroup,
&vl_error_SubscriptionTaken);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include "varlink-idl-common.h"
#include "varlink-io.systemd.oom.h"
/* This is oomd's Varlink service, where oomd is server and systemd --user is the client.
SD_VARLINK_DEFINE_STRUCT_TYPE(
ControlGroup,
- SD_VARLINK_DEFINE_FIELD(mode, SD_VARLINK_STRING, 0),
+ SD_VARLINK_DEFINE_FIELD_BY_TYPE(mode, ManagedOOMMode, 0),
SD_VARLINK_DEFINE_FIELD(path, SD_VARLINK_STRING, 0),
SD_VARLINK_DEFINE_FIELD(property, SD_VARLINK_STRING, 0),
SD_VARLINK_DEFINE_FIELD(limit, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
SD_VARLINK_DEFINE_INTERFACE(
io_systemd_oom,
"io.systemd.oom",
+ &vl_type_ManagedOOMMode,
&vl_method_ReportManagedOOMCGroups,
&vl_type_ControlGroup);