summaryrefslogtreecommitdiff
path: root/sys/nfsserver/nfs.h
diff options
context:
space:
mode:
authorDoug Rabson <dfr@FreeBSD.org>2008-11-03 10:38:00 +0000
committerDoug Rabson <dfr@FreeBSD.org>2008-11-03 10:38:00 +0000
commita9148abd9da5db2f1c682fb17bed791845fc41c9 (patch)
treec59f88924c0b3ead68523ce14806894836f8d9a7 /sys/nfsserver/nfs.h
parent4a723bd20c5f9bd0deff279308fc49660312d4c7 (diff)
downloadsrc-test2-a9148abd9da5db2f1c682fb17bed791845fc41c9.tar.gz
src-test2-a9148abd9da5db2f1c682fb17bed791845fc41c9.zip
Notes
Diffstat (limited to 'sys/nfsserver/nfs.h')
-rw-r--r--sys/nfsserver/nfs.h90
1 files changed, 68 insertions, 22 deletions
diff --git a/sys/nfsserver/nfs.h b/sys/nfsserver/nfs.h
index beb93592161a..27093777aea4 100644
--- a/sys/nfsserver/nfs.h
+++ b/sys/nfsserver/nfs.h
@@ -89,13 +89,26 @@
* Structures for the nfssvc(2) syscall. Not that anyone but nfsd and mount_nfs
* should ever try and use it.
*/
-struct nfsd_args {
+
+/*
+ * Add a socket to monitor for NFS requests.
+ */
+struct nfsd_addsock_args {
int sock; /* Socket to serve */
caddr_t name; /* Client addr for connection based sockets */
int namelen; /* Length of name */
};
/*
+ * Start processing requests.
+ */
+struct nfsd_nfsd_args {
+ const char *principal; /* GSS-API service principal name */
+ int minthreads; /* minimum service thread count */
+ int maxthreads; /* maximum service thread count */
+};
+
+/*
* XXX to allow amd to include nfs.h without nfsproto.h
*/
#ifdef NFS_NPROCS
@@ -105,8 +118,9 @@ struct nfsd_args {
/*
* Flags for nfssvc() system call.
*/
-#define NFSSVC_NFSD 0x004
+#define NFSSVC_OLDNFSD 0x004
#define NFSSVC_ADDSOCK 0x008
+#define NFSSVC_NFSD 0x010
/*
* vfs.nfsrv sysctl(3) identifiers
@@ -167,6 +181,7 @@ extern int32_t (*nfsrv3_procs[NFS_NPROCS])(struct nfsrv_descript *nd,
#define NWDELAYHASH(sock, f) \
(&(sock)->ns_wdelayhashtbl[(*((u_int32_t *)(f))) % NFS_WDELAYHASHSIZ])
+#ifdef NFS_LEGACYRPC
/*
* Network address hash list element
*/
@@ -257,11 +272,37 @@ struct nfsrv_descript {
struct timeval nd_starttime; /* Time RPC initiated */
fhandle_t nd_fh; /* File handle */
struct ucred *nd_cr; /* Credentials */
+ int nd_credflavor; /* Security flavor */
};
+#else
+
+/*
+ * This structure is used by the server for describing each request.
+ */
+struct nfsrv_descript {
+ struct mbuf *nd_mrep; /* Request mbuf list */
+ struct mbuf *nd_md; /* Current dissect mbuf */
+ struct mbuf *nd_mreq; /* Reply mbuf list */
+ struct sockaddr *nd_nam; /* and socket addr */
+ struct sockaddr *nd_nam2; /* return socket addr */
+ caddr_t nd_dpos; /* Current dissect pos */
+ u_int32_t nd_procnum; /* RPC # */
+ int nd_stable; /* storage type */
+ int nd_flag; /* nd_flag */
+ int nd_repstat; /* Reply status */
+ fhandle_t nd_fh; /* File handle */
+ struct ucred *nd_cr; /* Credentials */
+ int nd_credflavor; /* Security flavor */
+};
+
+#endif
+
/* Bits for "nd_flag" */
#define ND_NFSV3 0x08
+#ifdef NFS_LEGACYRPC
+
extern TAILQ_HEAD(nfsd_head, nfsd) nfsd_head;
extern int nfsd_head_flag;
#define NFSD_CHECKSLP 0x01
@@ -273,6 +314,8 @@ extern int nfsd_head_flag;
((o)->nd_eoff >= (n)->nd_off && \
!bcmp((caddr_t)&(o)->nd_fh, (caddr_t)&(n)->nd_fh, NFSX_V3FH))
+#endif
+
/*
* Defines for WebNFS
*/
@@ -315,38 +358,42 @@ extern int nfs_debug;
#endif
+#ifdef NFS_LEGACYRPC
+int netaddr_match(int, union nethostaddr *, struct sockaddr *);
int nfs_getreq(struct nfsrv_descript *, struct nfsd *, int);
int nfsrv_send(struct socket *, struct sockaddr *, struct mbuf *);
-struct mbuf *nfs_rephead(int, struct nfsrv_descript *, int, struct mbuf **,
- caddr_t *);
+int nfsrv_dorec(struct nfssvc_sock *, struct nfsd *,
+ struct nfsrv_descript **);
int nfs_slplock(struct nfssvc_sock *, int);
void nfs_slpunlock(struct nfssvc_sock *);
+void nfsrv_initcache(void);
+void nfsrv_destroycache(void);
+void nfsrv_timer(void *);
+int nfsrv_getcache(struct nfsrv_descript *, struct mbuf **);
+void nfsrv_updatecache(struct nfsrv_descript *, int, struct mbuf *);
+void nfsrv_cleancache(void);
+void nfsrv_rcv(struct socket *so, void *arg, int waitflag);
+void nfsrv_slpderef(struct nfssvc_sock *slp);
+void nfsrv_wakenfsd(struct nfssvc_sock *slp);
+int nfsrv_writegather(struct nfsrv_descript **, struct nfssvc_sock *,
+ struct mbuf **);
+#endif
+struct mbuf *nfs_rephead(int, struct nfsrv_descript *, int, struct mbuf **,
+ caddr_t *);
void nfsm_srvfattr(struct nfsrv_descript *, struct vattr *,
struct nfs_fattr *);
void nfsm_srvwcc(struct nfsrv_descript *, int, struct vattr *, int,
struct vattr *, struct mbuf **, char **);
void nfsm_srvpostopattr(struct nfsrv_descript *, int, struct vattr *,
struct mbuf **, char **);
-int netaddr_match(int, union nethostaddr *, struct sockaddr *);
-int nfs_namei(struct nameidata *, fhandle_t *, int,
- struct nfssvc_sock *, struct sockaddr *, struct mbuf **,
+int nfs_namei(struct nameidata *, struct nfsrv_descript *, fhandle_t *,
+ int, struct nfssvc_sock *, struct sockaddr *, struct mbuf **,
caddr_t *, struct vnode **, int, struct vattr *, int *, int);
void nfsm_adj(struct mbuf *, int, int);
int nfsm_mbuftouio(struct mbuf **, struct uio *, int, caddr_t *);
-void nfsrv_initcache(void);
-void nfsrv_destroycache(void);
-void nfsrv_timer(void *);
-int nfsrv_dorec(struct nfssvc_sock *, struct nfsd *,
- struct nfsrv_descript **);
-int nfsrv_getcache(struct nfsrv_descript *, struct mbuf **);
-void nfsrv_updatecache(struct nfsrv_descript *, int, struct mbuf *);
-void nfsrv_cleancache(void);
void nfsrv_init(int);
int nfsrv_errmap(struct nfsrv_descript *, int);
void nfsrvw_sort(gid_t *, int);
-void nfsrv_wakenfsd(struct nfssvc_sock *slp);
-int nfsrv_writegather(struct nfsrv_descript **, struct nfssvc_sock *,
- struct mbuf **);
int nfsrv3_access(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf **mrq);
@@ -354,8 +401,9 @@ int nfsrv_commit(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf **mrq);
int nfsrv_create(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf **mrq);
-int nfsrv_fhtovp(fhandle_t *, int, struct vnode **, int *, struct ucred *,
- struct nfssvc_sock *, struct sockaddr *, int *, int);
+int nfsrv_fhtovp(fhandle_t *, int, struct vnode **, int *,
+ struct nfsrv_descript *, struct nfssvc_sock *, struct sockaddr *,
+ int *, int);
int nfsrv_setpublicfs(struct mount *, struct netexport *,
struct export_args *);
int nfs_ispublicfh(fhandle_t *);
@@ -399,8 +447,6 @@ int nfsrv_symlink(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf **mrq);
int nfsrv_write(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf **mrq);
-void nfsrv_rcv(struct socket *so, void *arg, int waitflag);
-void nfsrv_slpderef(struct nfssvc_sock *slp);
#endif /* _KERNEL */
#endif