varlink: add ManagedOOMMode enum type to io.systemd.oom

Convert the mode field in ControlGroup from plain string to the
ManagedOOMMode enum type from varlink-idl-common. Register
ManagedOOMMode in both io.systemd.oom and io.systemd.ManagedOOM
interfaces since both use the ControlGroup struct.

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ivan Kruglov
2026-04-14 02:10:52 -07:00
parent 5d0ac2c23c
commit 6518bcf872
3 changed files with 7 additions and 2 deletions
+2 -1
View File
@@ -4,6 +4,7 @@
#include "constants.h"
#include "errno-util.h"
#include "json-util.h"
#include "manager.h"
#include "metrics.h"
#include "path-util.h"
@@ -62,7 +63,7 @@ static int build_managed_oom_json_array_element(Unit *u, const char *property, s
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)),
@@ -1,5 +1,6 @@
/* 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 */
@@ -19,6 +20,7 @@ static SD_VARLINK_DEFINE_ERROR(SubscriptionTaken);
SD_VARLINK_DEFINE_INTERFACE(
io_systemd_ManagedOOM,
"io.systemd.ManagedOOM",
&vl_type_ManagedOOMMode,
&vl_method_SubscribeManagedOOMCGroups,
&vl_type_ControlGroup,
&vl_error_SubscriptionTaken);
+3 -1
View File
@@ -1,5 +1,6 @@
/* 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.
@@ -9,7 +10,7 @@
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),
@@ -22,5 +23,6 @@ static SD_VARLINK_DEFINE_METHOD(
SD_VARLINK_DEFINE_INTERFACE(
io_systemd_oom,
"io.systemd.oom",
&vl_type_ManagedOOMMode,
&vl_method_ReportManagedOOMCGroups,
&vl_type_ControlGroup);