62 lines
2.0 KiB
C
62 lines
2.0 KiB
C
#ifndef NSS_INTERNAL_NSS_USERSPACE_PROVIDER_H
|
|
#define NSS_INTERNAL_NSS_USERSPACE_PROVIDER_H
|
|
|
|
#if defined(NSS_USERSPACE)
|
|
|
|
#include <stddef.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define NSS_USERSPACE_PROVIDER_PATH_MAX 4096
|
|
|
|
typedef enum NssUserspaceProviderKind_e {
|
|
NSS_USERSPACE_PROVIDER_UNSET = 0,
|
|
NSS_USERSPACE_PROVIDER_NSS_VOLUME,
|
|
NSS_USERSPACE_PROVIDER_OTHERFS_XATTR,
|
|
NSS_USERSPACE_PROVIDER_OTHERFS_SIDECAR,
|
|
NSS_USERSPACE_PROVIDER_UNSUPPORTED
|
|
} NssUserspaceProviderKind_e;
|
|
|
|
typedef enum NssUserspaceProviderFeature_e {
|
|
NSS_USERSPACE_PROVIDER_FEATURE_XATTR = 1u << 0,
|
|
NSS_USERSPACE_PROVIDER_FEATURE_TRUSTEES = 1u << 1,
|
|
NSS_USERSPACE_PROVIDER_FEATURE_QUOTA = 1u << 2,
|
|
NSS_USERSPACE_PROVIDER_FEATURE_SALVAGE = 1u << 3,
|
|
NSS_USERSPACE_PROVIDER_FEATURE_NAMESPACE = 1u << 4,
|
|
NSS_USERSPACE_PROVIDER_FEATURE_IO = 1u << 5
|
|
} NssUserspaceProviderFeature_e;
|
|
|
|
typedef struct NssUserspaceProvider_s {
|
|
NssUserspaceProviderKind_e kind;
|
|
unsigned int features;
|
|
long hostFsType;
|
|
char path[NSS_USERSPACE_PROVIDER_PATH_MAX];
|
|
} NssUserspaceProvider_s;
|
|
|
|
void NssUserspaceProviderInit(NssUserspaceProvider_s *provider);
|
|
void NssUserspaceProviderSetKind(NssUserspaceProvider_s *provider,
|
|
NssUserspaceProviderKind_e kind);
|
|
NssUserspaceProviderKind_e
|
|
NssUserspaceProviderGetKind(const NssUserspaceProvider_s *provider);
|
|
void NssUserspaceProviderEnableFeature(NssUserspaceProvider_s *provider,
|
|
NssUserspaceProviderFeature_e feature);
|
|
int NssUserspaceProviderSupports(const NssUserspaceProvider_s *provider,
|
|
NssUserspaceProviderFeature_e feature);
|
|
int NssUserspaceProviderInitOtherfsPath(NssUserspaceProvider_s *provider,
|
|
const char *path);
|
|
const char *NssUserspaceProviderPath(const NssUserspaceProvider_s *provider);
|
|
long NssUserspaceProviderHostFsType(const NssUserspaceProvider_s *provider);
|
|
int NssUserspaceProviderHostXattrName(const char *nssName,
|
|
char *buffer,
|
|
size_t bufferSize);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* NSS_USERSPACE */
|
|
|
|
#endif /* NSS_INTERNAL_NSS_USERSPACE_PROVIDER_H */
|