]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
varlink: add ManagedOOMMode enum type to io.systemd.oom 41615/head
authorIvan Kruglov <mail@ikruglov.com>
Mon, 13 Apr 2026 10:56:48 +0000 (03:56 -0700)
committerIvan Kruglov <mail@ikruglov.com>
Tue, 14 Apr 2026 09:10:52 +0000 (02:10 -0700)
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>
src/core/varlink.c
src/shared/varlink-io.systemd.ManagedOOM.c
src/shared/varlink-io.systemd.oom.c

index 533d1061b8eb7d583b1635c55576d48275e4b581..7bfc3789a39ba44968b9efd61ff3d4a6d3538bbd 100644 (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)),
index 763b0abfbd886024e9e7ab8334e6140d6c300ba5..3e6a66559c0af043c2edb672944eba85685eb0ab 100644 (file)
@@ -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);
index 350b933d03d7937e898297ce87f18ac7af007ed6..80fa50a73a92c5052ed01db0593cd62b9ee5b201 100644 (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);