]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
machine: VARLINK_ERROR_MACHINE_* defines
authorIvan Kruglov <mail@ikruglov.com>
Thu, 9 Jan 2025 14:13:22 +0000 (15:13 +0100)
committerIvan Kruglov <mail@ikruglov.com>
Fri, 10 Jan 2025 10:49:49 +0000 (11:49 +0100)
src/machine/machine-varlink.c
src/machine/machine-varlink.h
src/machine/machined-varlink.c

index f680b5c3da6230ff92c61e876450a9c528e33240..a5240ddccf0be47d3b60918b479067505dee7928 100644 (file)
@@ -166,7 +166,7 @@ int vl_method_register(sd_varlink *link, sd_json_variant *parameters, sd_varlink
 
         r = machine_link(manager, machine);
         if (r == -EEXIST)
-                return sd_varlink_error(link, "io.systemd.Machine.MachineExists", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_EXISTS, NULL);
         if (r < 0)
                 return r;
 
@@ -352,7 +352,7 @@ int vl_method_kill(sd_varlink *link, sd_json_variant *parameters, sd_varlink_met
         Machine *machine;
         r = lookup_machine_by_name_or_pidref(link, manager, p.name, &p.pidref, &machine);
         if (r == -ESRCH)
-                return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE, NULL);
         if (r < 0)
                 return r;
 
@@ -501,7 +501,7 @@ int vl_method_open(sd_varlink *link, sd_json_variant *parameters, sd_varlink_met
 
         r = lookup_machine_by_name_or_pidref(link, manager, p.name, &p.pidref, &machine);
         if (r == -ESRCH)
-                return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE, NULL);
         if (r < 0)
                 return r;
 
@@ -517,7 +517,7 @@ int vl_method_open(sd_varlink *link, sd_json_variant *parameters, sd_varlink_met
 
         ptmx_fd = machine_openpt(machine, O_RDWR|O_NOCTTY|O_CLOEXEC, &ptmx_name);
         if (ERRNO_IS_NEG_NOT_SUPPORTED(ptmx_fd))
-                return sd_varlink_error(link, "io.systemd.Machine.NotSupported", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NOT_SUPPORTED, NULL);
         if (ptmx_fd < 0)
                 return log_debug_errno(ptmx_fd, "Failed to open pseudo terminal: %m");
 
@@ -529,9 +529,9 @@ int vl_method_open(sd_varlink *link, sd_json_variant *parameters, sd_varlink_met
                 case MACHINE_OPEN_MODE_LOGIN:
                         r = machine_start_getty(machine, ptmx_name, /* error = */ NULL);
                         if (r == -ENOENT)
-                                return sd_varlink_error(link, "io.systemd.Machine.NoIPC", NULL);
+                                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_IPC, NULL);
                         if (ERRNO_IS_NEG_NOT_SUPPORTED(r))
-                                return sd_varlink_error(link, "io.systemd.Machine.NotSupported", NULL);
+                                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NOT_SUPPORTED, NULL);
                         if (r < 0)
                                 return log_debug_errno(r, "Failed to start getty for machine '%s': %m", machine->name);
 
@@ -541,9 +541,9 @@ int vl_method_open(sd_varlink *link, sd_json_variant *parameters, sd_varlink_met
                         assert(user && path && args); /* to avoid gcc complaining about possible uninitialized variables */
                         r = machine_start_shell(machine, ptmx_fd, ptmx_name, user, path, args, p.env, /* error = */ NULL);
                         if (r == -ENOENT)
-                                return sd_varlink_error(link, "io.systemd.Machine.NoIPC", NULL);
+                                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_IPC, NULL);
                         if (ERRNO_IS_NEG_NOT_SUPPORTED(r))
-                                return sd_varlink_error(link, "io.systemd.Machine.NotSupported", NULL);
+                                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NOT_SUPPORTED, NULL);
                         if (r < 0)
                                 return log_debug_errno(r, "Failed to start shell for machine '%s': %m", machine->name);
 
@@ -619,17 +619,17 @@ int vl_method_map_from(sd_varlink *link, sd_json_variant *parameters, sd_varlink
 
         r = lookup_machine_by_name_or_pidref(link, manager, p.name, &p.pidref, &machine);
         if (r == -ESRCH)
-                return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE, NULL);
         if (r < 0)
                 return r;
 
         if (machine->class != MACHINE_CONTAINER)
-                return sd_varlink_error(link, "io.systemd.Machine.NotSupported", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NOT_SUPPORTED, NULL);
 
         if (p.uid != UID_INVALID) {
                 r = machine_translate_uid(machine, p.uid, &converted_uid);
                 if (r == -ESRCH)
-                        return sd_varlink_error(link, "io.systemd.Machine.NoSuchUser", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_USER, NULL);
                 if (r < 0)
                         return log_debug_errno(r, "Failed to map uid=%u for machine '%s': %m", p.uid, machine->name);
         }
@@ -637,7 +637,7 @@ int vl_method_map_from(sd_varlink *link, sd_json_variant *parameters, sd_varlink
         if (p.gid != UID_INVALID) {
                 r = machine_translate_gid(machine, p.gid, &converted_gid);
                 if (r == -ESRCH)
-                        return sd_varlink_error(link, "io.systemd.Machine.NoSuchGroup", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_GROUP, NULL);
                 if (r < 0)
                         return log_debug_errno(r, "Failed to map gid=%u for machine '%s': %m", p.gid, machine->name);
         }
@@ -682,14 +682,14 @@ int vl_method_map_to(sd_varlink *link, sd_json_variant *parameters, sd_varlink_m
                 if (!uid_is_valid(p.uid))
                         return sd_varlink_error_invalid_parameter_name(link, "uid");
                 if (p.uid < 0x10000)
-                        return sd_varlink_error(link, "io.systemd.Machine.UserInHostRange", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_USER_IN_HOST_RANGE, NULL);
         }
 
         if (p.gid != GID_INVALID) {
                 if (!gid_is_valid(p.gid))
                         return sd_varlink_error_invalid_parameter_name(link, "gid");
                 if (p.gid < 0x10000)
-                        return sd_varlink_error(link, "io.systemd.Machine.GroupInHostRange", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_GROUP_IN_HOST_RANGE, NULL);
         }
 
         if (p.uid != UID_INVALID) {
@@ -697,7 +697,7 @@ int vl_method_map_to(sd_varlink *link, sd_json_variant *parameters, sd_varlink_m
                 if (r < 0)
                         return log_debug_errno(r, "Failed to find machine for uid=%u: %m", p.uid);
                 if (!r)
-                        return sd_varlink_error(link, "io.systemd.Machine.NoSuchUser", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_USER, NULL);
         }
 
         if (p.gid != GID_INVALID) {
@@ -705,12 +705,12 @@ int vl_method_map_to(sd_varlink *link, sd_json_variant *parameters, sd_varlink_m
                 if (r < 0)
                         return log_debug_errno(r, "Failed to find machine for gid=%u: %m", p.gid);
                 if (!r)
-                        return sd_varlink_error(link, "io.systemd.Machine.NoSuchGroup", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_GROUP, NULL);
         }
 
         if (machine_by_uid && machine_by_gid && machine_by_uid != machine_by_gid) {
                 log_debug_errno(SYNTHETIC_ERRNO(ESRCH), "Mapping of UID %u and GID %u resulted in two different machines", p.uid, p.gid);
-                return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE, NULL);
         }
 
         if (machine_by_uid)
@@ -718,7 +718,7 @@ int vl_method_map_to(sd_varlink *link, sd_json_variant *parameters, sd_varlink_m
         else if (machine_by_gid)
                 machine_name = machine_by_gid->name;
         else
-                return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE, NULL);
 
         r = sd_json_buildo(&v,
                            JSON_BUILD_PAIR_UNSIGNED_NOT_EQUAL("uid", converted_uid, UID_INVALID),
@@ -777,12 +777,12 @@ int vl_method_bind_mount(sd_varlink *link, sd_json_variant *parameters, sd_varli
         Machine *machine;
         r = lookup_machine_by_name_or_pidref(link, manager, p.name, &p.pidref, &machine);
         if (r == -ESRCH)
-                return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE, NULL);
         if (r != 0)
                 return r;
 
         if (machine->class != MACHINE_CONTAINER)
-                return sd_varlink_error(link, "io.systemd.Machine.NotSupported", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NOT_SUPPORTED, NULL);
 
         r = varlink_verify_polkit_async(
                         link,
@@ -801,7 +801,7 @@ int vl_method_bind_mount(sd_varlink *link, sd_json_variant *parameters, sd_varli
                 return log_debug_errno(r, "Failed to get machine UID shift: %m");
         if (uid_shift != 0) {
                 log_debug("Can't bind mount on container '%s' with user namespacing applied", machine->name);
-                return sd_varlink_error(link, "io.systemd.Machine.NotSupported", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NOT_SUPPORTED, NULL);
         }
 
         if (p.read_only)
@@ -845,7 +845,7 @@ static int copy_done(Operation *operation, int ret, sd_bus_error *error) {
         if (ERRNO_IS_PRIVILEGE(ret))
                 return sd_varlink_error(operation->link, SD_VARLINK_ERROR_PERMISSION_DENIED, NULL);
         if (ERRNO_IS_NEG_NOT_SUPPORTED(ret))
-                return sd_varlink_error(operation->link, "io.systemd.Machine.NotSupported", NULL);
+                return sd_varlink_error(operation->link, VARLINK_ERROR_MACHINE_NOT_SUPPORTED, NULL);
         if (ret < 0)
                 return sd_varlink_error_errno(operation->link, ret);
 
@@ -872,7 +872,7 @@ int vl_method_copy_internal(sd_varlink *link, sd_json_variant *parameters, sd_va
         assert(parameters);
 
         if (manager->n_operations >= OPERATIONS_MAX)
-                return sd_varlink_error(link, "io.systemd.MachineImage.TooManyOperations", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_TOO_MANY_OPERATIONS, NULL);
 
         r = sd_varlink_dispatch(link, parameters, dispatch_table, &p);
         if (r != 0)
@@ -888,12 +888,12 @@ int vl_method_copy_internal(sd_varlink *link, sd_json_variant *parameters, sd_va
         Machine *machine;
         r = lookup_machine_by_name_or_pidref(link, manager, p.name, &p.pidref, &machine);
         if (r == -ESRCH)
-                return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE, NULL);
         if (r != 0)
                 return r;
 
         if (machine->class != MACHINE_CONTAINER)
-                return sd_varlink_error(link, "io.systemd.Machine.NotSupported", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NOT_SUPPORTED, NULL);
 
         r = varlink_verify_polkit_async(
                         link,
@@ -936,7 +936,7 @@ int vl_method_open_root_directory_internal(sd_varlink *link, sd_json_variant *pa
 
         fd = machine_open_root_directory(machine);
         if (ERRNO_IS_NEG_NOT_SUPPORTED(fd))
-                return sd_varlink_error(link, "io.systemd.Machine.NotSupported", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NOT_SUPPORTED, NULL);
         if (fd < 0)
                 return log_debug_errno(fd, "Failed to open root directory of machine '%s': %m", machine->name);
 
index 3d56e2150e97198dac84949eb832934611fcd290..1c089bc7bc3ee47bc249537ea3da42d2e9f9e487 100644 (file)
@@ -5,6 +5,20 @@
 
 #include "machine.h"
 
+#define VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE           "io.systemd.Machine.NoSuchMachine"
+#define VARLINK_ERROR_MACHINE_EXISTS                    "io.systemd.Machine.MachineExists"
+#define VARLINK_ERROR_MACHINE_NO_PRIVATE_NETWORKING     "io.systemd.Machine.NoPrivateNetworking"
+#define VARLINK_ERROR_MACHINE_NO_OS_RELEASE_INFORMATION "io.systemd.Machine.NoOSReleaseInformation"
+#define VARLINK_ERROR_MACHINE_NO_UID_SHIFT              "io.systemd.Machine.NoUIDShift"
+#define VARLINK_ERROR_MACHINE_NOT_AVAILABLE             "io.systemd.Machine.NotAvailable"
+#define VARLINK_ERROR_MACHINE_NOT_SUPPORTED             "io.systemd.Machine.NotSupported"
+#define VARLINK_ERROR_MACHINE_TOO_MANY_OPERATIONS       "io.systemd.Machine.TooManyOperations"
+#define VARLINK_ERROR_MACHINE_NO_IPC                    "io.systemd.Machine.NoIPC"
+#define VARLINK_ERROR_MACHINE_NO_SUCH_USER              "io.systemd.Machine.NoSuchUser"
+#define VARLINK_ERROR_MACHINE_NO_SUCH_GROUP             "io.systemd.Machine.NoSuchGroup"
+#define VARLINK_ERROR_MACHINE_USER_IN_HOST_RANGE        "io.systemd.Machine.UserInHostRange"
+#define VARLINK_ERROR_MACHINE_GROUP_IN_HOST_RANGE       "io.systemd.Machine.GroupInHostRange"
+
 #define VARLINK_DISPATCH_MACHINE_LOOKUP_FIELDS(t) {                     \
                 .name = "name",                                         \
                 .type = SD_JSON_VARIANT_STRING,                         \
index da8d5615385c958f2f57fa87e2c3136606266b46..f8faab6eafae4bbcd1f54a0baed3cfbcc7185986 100644 (file)
@@ -429,9 +429,9 @@ static int list_machine_one_and_maybe_read_metadata(sd_varlink *link, Machine *m
                 if (r < 0 && am == ACQUIRE_METADATA_GRACEFUL)
                         log_debug_errno(r, "Failed to get address (graceful mode), ignoring: %m");
                 else if (r == -ENONET)
-                        return sd_varlink_error(link, "io.systemd.Machine.NoPrivateNetworking", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_PRIVATE_NETWORKING, NULL);
                 else if (ERRNO_IS_NEG_NOT_SUPPORTED(r))
-                        return sd_varlink_error(link, "io.systemd.Machine.NotAvailable", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NOT_AVAILABLE, NULL);
                 else if (r < 0)
                         return log_debug_errno(r, "Failed to get addresses: %m");
                 else {
@@ -444,9 +444,9 @@ static int list_machine_one_and_maybe_read_metadata(sd_varlink *link, Machine *m
                 if (r < 0 && am == ACQUIRE_METADATA_GRACEFUL)
                         log_debug_errno(r, "Failed to get OS release (graceful mode), ignoring: %m");
                 else if (r == -ENONET)
-                        return sd_varlink_error(link, "io.systemd.Machine.NoOSReleaseInformation", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_OS_RELEASE_INFORMATION, NULL);
                 else if (ERRNO_IS_NEG_NOT_SUPPORTED(r))
-                        return sd_varlink_error(link, "io.systemd.Machine.NotAvailable", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NOT_AVAILABLE, NULL);
                 else if (r < 0)
                         return log_debug_errno(r, "Failed to get OS release: %m");
 
@@ -454,9 +454,9 @@ static int list_machine_one_and_maybe_read_metadata(sd_varlink *link, Machine *m
                 if (r < 0 && am == ACQUIRE_METADATA_GRACEFUL)
                         log_debug_errno(r, "Failed to get UID shift (graceful mode), ignoring: %m");
                 else if (r == -ENXIO)
-                        return sd_varlink_error(link, "io.systemd.Machine.NoUIDShift", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_UID_SHIFT, NULL);
                 else if (ERRNO_IS_NEG_NOT_SUPPORTED(r))
-                        return sd_varlink_error(link, "io.systemd.Machine.NotAvailable", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NOT_AVAILABLE, NULL);
                 else if (r < 0)
                         return log_debug_errno(r, "Failed to get UID shift: %m");
         }
@@ -526,7 +526,7 @@ static int vl_method_list(sd_varlink *link, sd_json_variant *parameters, sd_varl
         if (p.name || pidref_is_set(&p.pidref) || pidref_is_automatic(&p.pidref)) {
                 r = lookup_machine_by_name_or_pidref(link, m, p.name, &p.pidref, &machine);
                 if (r == -ESRCH)
-                        return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
+                        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE, NULL);
                 if (r < 0)
                         return r;
 
@@ -550,7 +550,7 @@ static int vl_method_list(sd_varlink *link, sd_json_variant *parameters, sd_varl
         if (previous)
                 return list_machine_one_and_maybe_read_metadata(link, previous, /* more = */ false, p.acquire_metadata);
 
-        return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
+        return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE, NULL);
 }
 
 static int lookup_machine_and_call_method(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata, sd_varlink_method_t method) {
@@ -576,7 +576,7 @@ static int lookup_machine_and_call_method(sd_varlink *link, sd_json_variant *par
 
         r = lookup_machine_by_name_or_pidref(link, manager, p.name, &p.pidref, &machine);
         if (r == -ESRCH)
-                return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
+                return sd_varlink_error(link, VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE, NULL);
         if (r < 0)
                 return r;