Files
mars-nwe/include/nwnss/internal/nssUserspaceProvider.h

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 */