]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
machine: introduce MACHINE_CLASS_CAN_REGISTER
authorMike Yuan <me@yhndnzj.com>
Thu, 26 Mar 2026 10:59:45 +0000 (11:59 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 27 Mar 2026 10:47:42 +0000 (11:47 +0100)
Follow-up for 6df5f80bd374be1b45c52d740e88f0236da922c7

Similar to SESSION_CAN_* macros in logind-session.h

src/machine/machine-varlink.c
src/machine/machine.h
src/machine/machined-dbus.c

index 73edd781b58b56a0ebb14660b2aca302b55a806f..40e9136b2705f6945dcdfeaedd6c9c3e924cbac9 100644 (file)
@@ -155,7 +155,7 @@ int vl_method_register(sd_varlink *link, sd_json_variant *parameters, sd_varlink
         if (r != 0)
                 return r;
 
-        if (!IN_SET(machine->class, MACHINE_CONTAINER, MACHINE_VM))
+        if (!MACHINE_CLASS_CAN_REGISTER(machine->class))
                 return sd_varlink_error_invalid_parameter_name(link, "class");
 
         if (manager->runtime_scope != RUNTIME_SCOPE_USER) {
index 7941eb365c15ce9020b79ad45f847d7d2d4bb2c8..899218f48d567445645979e73c5ed2c30b9c020c 100644 (file)
@@ -25,6 +25,8 @@ typedef enum MachineClass {
         _MACHINE_CLASS_INVALID = -EINVAL,
 } MachineClass;
 
+#define MACHINE_CLASS_CAN_REGISTER(class) IN_SET((class), MACHINE_CONTAINER, MACHINE_VM)
+
 typedef enum KillWhom {
         KILL_LEADER,
         KILL_SUPERVISOR,
index 87f0c15ee13d0e86d09fa1183e81ad7ce7ba1e1c..4e39594a44dfe7fafc929e5b4a7779e21f224642 100644 (file)
@@ -256,6 +256,7 @@ static int machine_add_from_params(
         assert(manager);
         assert(message);
         assert(name);
+        assert(c == _MACHINE_CLASS_INVALID || MACHINE_CLASS_CAN_REGISTER(c));
         assert(ret);
 
         if (leader_pidref->pid == 1)
@@ -433,7 +434,7 @@ static int method_create_or_register_machine(
                 c = _MACHINE_CLASS_INVALID;
         else {
                 c = machine_class_from_string(class);
-                if (c < 0 || !IN_SET(c, MACHINE_CONTAINER, MACHINE_VM))
+                if (c < 0 || !MACHINE_CLASS_CAN_REGISTER(c))
                         return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid machine class parameter");
         }
 
@@ -608,7 +609,7 @@ static int method_create_or_register_machine_ex(
                 c = _MACHINE_CLASS_INVALID;
         else {
                 c = machine_class_from_string(class);
-                if (c < 0 || !IN_SET(c, MACHINE_CONTAINER, MACHINE_VM))
+                if (c < 0 || !MACHINE_CLASS_CAN_REGISTER(c))
                         return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid machine class parameter");
         }