| /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
| #pragma once |
| |
| #include "user-record.h" |
| #include "group-record.h" |
| #include "nspawn-mount.h" |
| |
| typedef struct BindUserData { |
| /* The host's user/group records */ |
| UserRecord *host_user; |
| GroupRecord *host_group; |
| |
| /* The mapped records to place into the container */ |
| UserRecord *payload_user; |
| GroupRecord *payload_group; |
| } BindUserData; |
| |
| typedef struct BindUserContext { |
| BindUserData *data; |
| size_t n_data; |
| } BindUserContext; |
| |
| BindUserContext* bind_user_context_free(BindUserContext *c); |
| |
| DEFINE_TRIVIAL_CLEANUP_FUNC(BindUserContext*, bind_user_context_free); |
| |
| int bind_user_prepare(const char *directory, char **bind_user, uid_t uid_shift, uid_t uid_range, CustomMount **custom_mounts, size_t *n_custom_mounts, BindUserContext **ret); |
| |
| int bind_user_setup(const BindUserContext *c, const char *root); |