From: Ivan Kruglov Date: Thu, 17 Oct 2024 11:46:40 +0000 (+0200) Subject: machine: enum AcquireMetadata X-Git-Tag: v257-rc1~170^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=16b1b304bae52f420a359b8f84940e6e72efda6f;p=thirdparty%2Fsystemd.git machine: enum AcquireMetadata --- diff --git a/src/machine/machine.c b/src/machine/machine.c index 036a5b4edbd..4da206cd5e8 100644 --- a/src/machine/machine.c +++ b/src/machine/machine.c @@ -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); diff --git a/src/machine/machine.h b/src/machine/machine.h index 157ac0bb6d9..debcb7d4b97 100644 --- a/src/machine/machine.h +++ b/src/machine/machine.h @@ -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; +} diff --git a/src/machine/machined-varlink.c b/src/machine/machined-varlink.c index 47dbbe226e3..7108ba945c3 100644 --- a/src/machine/machined-varlink.c +++ b/src/machine/machined-varlink.c @@ -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),