]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
machine: enum AcquireMetadata
authorIvan Kruglov <mail@ikruglov.com>
Thu, 17 Oct 2024 11:46:40 +0000 (13:46 +0200)
committerIvan Kruglov <mail@ikruglov.com>
Mon, 21 Oct 2024 15:34:11 +0000 (17:34 +0200)
src/machine/machine.c
src/machine/machine.h
src/machine/machined-varlink.c

index 036a5b4edbd8b1ed3da7b868ca806e94b011b733..4da206cd5e86be1e175e6ffa5ae2800cfe8ffc2b 100644 (file)
@@ -967,3 +967,11 @@ static const char* const kill_whom_table[_KILL_WHOM_MAX] = {
 };
 
 DEFINE_STRING_TABLE_LOOKUP(kill_whom, KillWhom);
+
+static const char* const acquire_metadata_table[_ACQUIRE_METADATA_MAX] = {
+        [ACQUIRE_METADATA_NO]       = "no",
+        [ACQUIRE_METADATA_YES]      = "yes",
+        [ACQUIRE_METADATA_GRACEFUL] = "graceful"
+};
+
+DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(acquire_metadata, AcquireMetadata, ACQUIRE_METADATA_YES);
index 157ac0bb6d91531e4798e82b5b8fed37be7251cc..debcb7d4b9719236f74905f4d97b87bac06a8b3e 100644 (file)
@@ -110,3 +110,17 @@ int machine_owns_gid(Machine *m, gid_t host_gid, gid_t *ret_internal_gid);
 
 int machine_translate_uid(Machine *m, uid_t internal_uid, uid_t *ret_host_uid);
 int machine_translate_gid(Machine *m, gid_t internal_gid, gid_t *ret_host_gid);
+
+typedef enum AcquireMetadata {
+        ACQUIRE_METADATA_NO,
+        ACQUIRE_METADATA_YES,
+        ACQUIRE_METADATA_GRACEFUL,
+        _ACQUIRE_METADATA_MAX,
+        _ACQUIRE_METADATA_INVALID = -EINVAL,
+} AcquireMetadata;
+
+AcquireMetadata acquire_metadata_from_string(const char *s) _pure_;
+const char* acquire_metadata_to_string(AcquireMetadata am) _const_;
+inline static bool should_acquire_metadata(AcquireMetadata am) {
+        return am == ACQUIRE_METADATA_YES || am == ACQUIRE_METADATA_GRACEFUL;
+}
index 47dbbe226e34a4c3c241f18d77dbaff060ed3ed8..7108ba945c3b2611186e98d81dd3fab004f5ceb1 100644 (file)
@@ -432,6 +432,8 @@ static void machine_lookup_parameters_done(MachineLookupParameters *p) {
         pidref_done(&p->pidref);
 }
 
+static JSON_DISPATCH_ENUM_DEFINE(json_dispatch_acquire_metadata, AcquireMetadata, acquire_metadata_from_string);
+
 static int vl_method_list(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
         static const sd_json_dispatch_field dispatch_table[] = {
                 VARLINK_DISPATCH_MACHINE_LOOKUP_FIELDS(MachineLookupParameters),