Print this page
11083 support NFS server in zone
Portions contributed by: Dan Kruchinin <dan.kruchinin@nexenta.com>
Portions contributed by: Stepan Zastupov <stepan.zastupov@gmail.com>
Portions contributed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
Portions contributed by: Mike Zeller <mike@mikezeller.net>
Portions contributed by: Dan McDonald <danmcd@joyent.com>
Portions contributed by: Gordon Ross <gordon.w.ross@gmail.com>
Portions contributed by: Vitaliy Gusev <gusev.vitaliy@gmail.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Jason King <jbk@joyent.com>
Reviewed by: C Fraire <cfraire@me.com>
Change-Id: I22f289d357503f9b48a0bc2482cc4328a6d43d16

@@ -16,18 +16,25 @@
  * fields enclosed by brackets "[]" replaced with your own identifying
  * information: Portions Copyright [yyyy] [name of copyright owner]
  *
  * CDDL HEADER END
  */
+
 /*
  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
- *
+ */
+
+/*
  * Copyright (c) 1983,1984,1985,1986,1987,1988,1989  AT&T.
  * All rights reserved.
  */
 
+/*
+ * Copyright 2018 Nexenta Systems, Inc.
+ */
+
 #include <sys/types.h>
 #include <rpc/types.h>
 #include <sys/systm.h>
 #include <sys/vfs.h>
 #include <sys/errno.h>

@@ -78,12 +85,10 @@
 int
 nfs_export(void *arg)
 {
         STRUCT_DECL(exportfs_args, ea);
 
-        if (!INGLOBALZONE(curproc))
-                return (set_errno(EPERM));
         STRUCT_INIT(ea, get_udatamodel());
         if (copyin(arg, STRUCT_BUF(ea), STRUCT_SIZE(ea)))
                 return (set_errno(EFAULT));
 
         return (exportfs(STRUCT_BUF(ea), get_udatamodel(), CRED()));

@@ -109,13 +114,10 @@
                  */
                 if (rfs4_client_clrst == NULL) {
                         break;
                 }
 
-                if (!INGLOBALZONE(curproc))
-                        return (set_errno(EPERM));
-
                 STRUCT_INIT(u_clr, get_udatamodel());
 
                 if (copyin(arg, STRUCT_BUF(u_clr), STRUCT_SIZE(u_clr)))
                         return (set_errno(EFAULT));
 

@@ -162,12 +164,10 @@
 
         case RDMA_SVC_INIT: {
                 struct rdma_svc_args rsa;
                 char netstore[20] = "tcp";
 
-                if (!INGLOBALZONE(curproc))
-                        return (set_errno(EPERM));
                 if (get_udatamodel() != DATAMODEL_NATIVE) {
                         STRUCT_DECL(rdma_svc_args, ursa);
 
                         STRUCT_INIT(ursa, get_udatamodel());
                         if (copyin(arg, STRUCT_BUF(ursa), STRUCT_SIZE(ursa)))

@@ -187,13 +187,10 @@
                 break;
         }
 
         case NFS_SVC: { /* NFS server daemon */
                 STRUCT_DECL(nfs_svc_args, nsa);
-
-                if (!INGLOBALZONE(curproc))
-                        return (set_errno(EPERM));
                 STRUCT_INIT(nsa, get_udatamodel());
 
                 if (copyin(arg, STRUCT_BUF(nsa), STRUCT_SIZE(nsa)))
                         return (set_errno(EFAULT));
 

@@ -207,12 +204,10 @@
         }
 
         case NFS_GETFH: { /* get a file handle */
                 STRUCT_DECL(nfs_getfh_args, nga);
 
-                if (!INGLOBALZONE(curproc))
-                        return (set_errno(EPERM));
                 STRUCT_INIT(nga, get_udatamodel());
                 if (copyin(arg, STRUCT_BUF(nga), STRUCT_SIZE(nga)))
                         return (set_errno(EFAULT));
 
                 error = nfs_getfh(STRUCT_BUF(nga), get_udatamodel(), CRED());