#ifndef _NFS_NFSSYS_H
#define _NFS_NFSSYS_H
#ifdef __cplusplus
extern "C" {
#endif
enum nfssys_op { OLD_NFS_SVC, OLD_ASYNC_DAEMON, EXPORTFS, OLD_NFS_GETFH,
OLD_NFS_CNVT, NFS_REVAUTH, OLD_NFS_FH_TO_FID, OLD_LM_SVC, KILL_LOCKMGR,
LOG_FLUSH, SVCPOOL_CREATE, NFS_SVC, LM_SVC, SVCPOOL_WAIT, SVCPOOL_RUN,
NFS4_SVC, RDMA_SVC_INIT, NFS4_CLR_STATE, NFS_IDMAP,
NFS4_SVC_REQUEST_QUIESCE, NFS_GETFH, NFS4_DSS_SETPATHS,
NFS4_DSS_SETPATHS_SIZE, NFS4_EPHEMERAL_MOUNT_TO, MOUNTD_ARGS,
NFSCMD_ARGS };
struct nfs_svc_args {
int fd;
char *netid;
struct netbuf addrmask;
uint32_t nfs_versmin;
uint32_t nfs_versmax;
int delegation;
};
#ifdef _SYSCALL32
struct nfs_svc_args32 {
int32_t fd;
caddr32_t netid;
struct netbuf32 addrmask;
uint32_t nfs_versmin;
uint32_t nfs_versmax;
int32_t delegation;
};
#endif
struct exportfs_args {
char *dname;
struct exportdata *uex;
};
#ifdef _SYSCALL32
struct exportfs_args32 {
caddr32_t dname;
caddr32_t uex;
};
#endif
struct nfs_getfh_args {
char *fname;
int vers;
int *lenp;
char *fhp;
};
#ifdef _SYSCALL32
struct nfs_getfh_args32 {
caddr32_t fname;
int32_t vers;
caddr32_t lenp;
caddr32_t fhp;
};
#endif
struct nfs_revauth_args {
int authtype;
uid_t uid;
};
#ifdef _SYSCALL32
struct nfs_revauth_args32 {
int32_t authtype;
uid32_t uid;
};
#endif
enum lm_fmly { LM_INET, LM_INET6, LM_LOOPBACK };
enum lm_proto { LM_TCP, LM_UDP };
struct lm_svc_args {
int version;
int fd;
enum lm_fmly n_fmly;
enum lm_proto n_proto;
dev_t n_rdev;
int debug;
time_t timout;
int grace;
time_t retransmittimeout;
};
#ifdef _SYSCALL32
struct lm_svc_args32 {
int32_t version;
int32_t fd;
enum lm_fmly n_fmly;
enum lm_proto n_proto;
dev32_t n_rdev;
int32_t debug;
time32_t timout;
int32_t grace;
time32_t retransmittimeout;
};
#endif
#define LM_SVC_CUR_VERS 30
struct nfsl_flush_args {
int version;
int directive;
char *buff;
int buff_len;
};
#define NFSL_FLUSH_ARGS_VERS 1
#ifdef _SYSCALL32
struct nfsl_flush_args32 {
int32_t version;
int32_t directive;
caddr32_t buff;
int32_t buff_len;
};
#endif
struct rdma_svc_args {
uint32_t poolid;
char *netid;
uint32_t nfs_versmin;
uint32_t nfs_versmax;
int delegation;
};
#ifdef _SYSCALL32
struct rdma_svc_args32 {
uint32_t poolid;
caddr32_t netid;
uint32_t nfs_versmin;
uint32_t nfs_versmax;
int32_t delegation;
};
#endif
#define NFS4_CLRST_VERSION 1
struct nfs4clrst_args {
int vers;
int addr_type;
void *ap;
};
#ifdef _SYSCALL32
struct nfs4clrst_args32 {
int32_t vers;
int32_t addr_type;
caddr32_t ap;
};
#endif
struct nfsidmap_args {
uint_t state;
uint_t did;
};
#define NFSL_ALL 0x01
#define NFSL_RENAME 0x02
#define NFSL_SYNC 0x04
#ifdef _KERNEL
union nfssysargs {
struct exportfs_args *exportfs_args_u;
struct nfs_getfh_args *nfs_getfh_args_u;
struct nfs_svc_args *nfs_svc_args_u;
struct rdma_svc_args *rdma_svc_args_u;
struct nfs_revauth_args *nfs_revauth_args_u;
struct lm_svc_args *lm_svc_args_u;
struct nfsl_flush_args *nfsl_flush_args_u;
struct svcpool_args *svcpool_args_u;
struct nfs4clrst_args *nfs4clrst_u;
struct nfsidmap_args *nfsidmap_u;
};
struct nfssysa {
enum nfssys_op opcode;
union nfssysargs arg;
};
#define nfssysarg_exportfs arg.exportfs_args_u
#define nfssysarg_getfh arg.nfs_getfh_args_u
#define nfssysarg_svc arg.nfs_svc_args_u
#define nfssysarg_rdmastart arg.rdma_svc_args_u
#define nfssysarg_revauth arg.nfs_revauth_args_u
#define nfssysarg_lmsvc arg.lm_svc_args_u
#define nfssysarg_nfslflush arg.nfsl_flush_args_u
#define nfssysarg_svcpool arg.svcpool_args_u
#define nfssysarg_nfs4clrst arg.nfs4clrst_u
#define nfssysarg_nfsidmap arg.nfsidmap_u
#ifdef _SYSCALL32
union nfssysargs32 {
caddr32_t exportfs_args_u;
caddr32_t nfs_getfh_args_u;
caddr32_t nfs_svc_args_u;
caddr32_t rdma_svc_args_u;
caddr32_t nfs_revauth_args_u;
caddr32_t lm_svc_args_u;
caddr32_t nfsl_flush_args_u;
caddr32_t svcpool_args_u;
caddr32_t nfs4clrst_u;
};
struct nfssysa32 {
enum nfssys_op opcode;
union nfssysargs32 arg;
};
#endif
#endif
struct nfs4_svc_args {
int fd;
int cmd;
char *netid;
char *addr;
char *protofmly;
char *proto;
struct netbuf addrmask;
};
#ifdef _SYSCALL32
struct nfs4_svc_args32 {
int32_t fd;
int32_t cmd;
caddr32_t netid;
caddr32_t addr;
caddr32_t protofmly;
caddr32_t proto;
struct netbuf32 addrmask;
};
#endif
#define NFS4_KRPC_START 1
#define NFS4_SETPORT 2
#define NFS4_DQUERY 4
#define NFS4_DSS_STATE_LEAF "v4_state"
#define NFS4_DSS_OLDSTATE_LEAF "v4_oldstate"
#define NFS4_DSS_DIR_MODE 0755
#define NFS4_DSS_NVPAIR_NAME "dss_pathname_array"
#define NFS4_DSS_VAR_DIR "/var/nfs"
#ifdef _KERNEL
#include <sys/systm.h>
extern int nfssys(enum nfssys_op opcode, void *arg);
extern int exportfs(struct exportfs_args *, model_t, cred_t *);
extern int nfs_getfh(struct nfs_getfh_args *, model_t, cred_t *);
extern int nfs_svc(struct nfs_svc_args *, model_t);
extern int lm_svc(struct lm_svc_args *uap);
extern int lm_shutdown(void);
extern int nfsl_flush(struct nfsl_flush_args *, model_t);
extern int nfs4_svc(struct nfs4_svc_args *, model_t);
extern int rdma_start(struct rdma_svc_args *);
extern int rfs4_clear_client_state(struct nfs4clrst_args *);
extern void nfs_idmap_args(struct nfsidmap_args *);
extern void nfs4_ephemeral_set_mount_to(uint_t);
extern void mountd_args(uint_t);
#endif
#ifdef __cplusplus
}
#endif
#endif