diff --git a/src/machine/machine.c b/src/machine/machine.c index 036a5b4edb..4da206cd5e 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 157ac0bb6d..debcb7d4b9 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 47dbbe226e..7108ba945c 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),