aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorRick Macklem <rmacklem@FreeBSD.org>2009-05-26 01:47:37 +0000
committerRick Macklem <rmacklem@FreeBSD.org>2009-05-26 01:47:37 +0000
commit10a5a16efa9cc51b4a68c30ee2eb14d96f14be0f (patch)
tree34bc34715d50cb4c678ecd2c32fcbc8e6a9bede4 /sys
parent9183a2a33e1a5974ecd0c35681b9f4a09d285386 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/fs/nfsserver/nfs_nfsdkrpc.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/sys/fs/nfsserver/nfs_nfsdkrpc.c b/sys/fs/nfsserver/nfs_nfsdkrpc.c
index dde5f3bd556d..e1179554d7f9 100644
--- a/sys/fs/nfsserver/nfs_nfsdkrpc.c
+++ b/sys/fs/nfsserver/nfs_nfsdkrpc.c
@@ -82,6 +82,14 @@ SYSCTL_INT(_vfs_newnfs, OID_AUTO, nfs_privport, CTLFLAG_RW,
&nfs_privport, 0,
"Only allow clients using a privileged port for NFSv2 and 3");
+static int nfs_minvers = NFS_VER2;
+SYSCTL_INT(_vfs_newnfs, OID_AUTO, server_min_nfsvers, CTLFLAG_RW,
+ &nfs_minvers, 0, "The lowest version of NFS handled by the server");
+
+static int nfs_maxvers = NFS_VER4;
+SYSCTL_INT(_vfs_newnfs, OID_AUTO, server_max_nfsvers, CTLFLAG_RW,
+ &nfs_maxvers, 0, "The highest version of NFS handled by the server");
+
static int nfs_proc(struct nfsrv_descript *, u_int32_t, struct socket *,
u_int64_t, struct nfsrvcache **);
@@ -353,9 +361,15 @@ nfsrvd_addsock(struct file *fp)
fp->f_ops = &badfileops;
fp->f_data = NULL;
xprt->xp_sockref = ++sockref;
- svc_reg(xprt, NFS_PROG, NFS_VER2, nfssvc_program, NULL);
- svc_reg(xprt, NFS_PROG, NFS_VER3, nfssvc_program, NULL);
- svc_reg(xprt, NFS_PROG, NFS_VER4, nfssvc_program, NULL);
+ if (nfs_minvers == NFS_VER2)
+ svc_reg(xprt, NFS_PROG, NFS_VER2, nfssvc_program,
+ NULL);
+ if (nfs_minvers <= NFS_VER3 && nfs_maxvers >= NFS_VER3)
+ svc_reg(xprt, NFS_PROG, NFS_VER3, nfssvc_program,
+ NULL);
+ if (nfs_maxvers >= NFS_VER4)
+ svc_reg(xprt, NFS_PROG, NFS_VER4, nfssvc_program,
+ NULL);
}
return (0);