Print this page
NEX-17457 kernel share list fails to be updated after fs import
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Yuri Pankov <yuripv@yuripv.net>
1575 untangle libmlrpc from SMB server
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
NEX-15958 panic importing CA share after failover
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Include in backports of:
  NEX-9808 SMB3 persistent handles
NEX-15958 panic importing CA share after failover
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Include in backports of:
  NEX-9808 SMB3 persistent handles
NEX-9808 SMB3 persistent handles
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-5665 SMB2 oplock leases
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
NEX-9808 SMB3 persistent handles
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-5665 SMB2 oplock leases
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
NEX-10098 Disabling SMB server service does not change the sharestate of a smb share to “offline”.
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
NEX-5273 SMB 3 Encryption
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
NEX-3863 Would like an SMB share property to enable/disable quotas
Reviewed by: Bayard Bell <bayard.bell@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
SMB-39 Use AF_UNIX pipes for RPC
SMB-50 User-mode SMB server
 Includes work by these authors:
 Thomas Keiser <thomas.keiser@nexenta.com>
 Albert Lee <trisk@nexenta.com>

@@ -19,23 +19,24 @@
  * CDDL HEADER END
  */
 
 /*
  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
+ * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  * Copyright (c) 2016 by Delphix. All rights reserved.
  */
 
 #ifndef _SMB_SHARE_H
 #define _SMB_SHARE_H
 
 #include <sys/param.h>
+#include <smb/lmerr.h>
+#include <smb/wintypes.h>
 #include <smbsrv/string.h>
 #include <smbsrv/smb_inet.h>
 #include <smbsrv/hash_table.h>
-#include <smbsrv/wintypes.h>
-#include <smb/lmerr.h>
+#include <smbsrv/smbinfo.h>
 
 #if !defined(_KERNEL) && !defined(_FAKE_KERNEL)
 #include <libshare.h>
 #endif
 

@@ -72,27 +73,40 @@
  *
  * catia                CATIA character substitution
  *
  * guestok              Determines whether guest access is allowed
  *
- * next three properties use access-list a al NFS
+ * quotas               SMB quotas presented & supported (T/F)
  *
+ * encrypt              Controls SMB3 encryption per-share.
+ *      disabled        Server does not tell the client to encrypt requests.
+ *      enabled         Server asks, but does not require, that the client
+ *                      encrypt its requests.
+ *      required        Server denies unencrypted share access.
+ *
+ * next three properties use access-list a la NFS
+ *
  * ro                   list of hosts that will have read-only access
  * rw                   list of hosts that will have read/write access
  * none                 list of hosts that won't be allowed access
  */
 #define SHOPT_AD_CONTAINER      "ad-container"
 #define SHOPT_ABE               "abe"
 #define SHOPT_NAME              "name"
+#define SHOPT_CA                "ca"
 #define SHOPT_CSC               "csc"
 #define SHOPT_CATIA             "catia"
 #define SHOPT_GUEST             "guestok"
 #define SHOPT_RO                "ro"
 #define SHOPT_RW                "rw"
 #define SHOPT_NONE              "none"
 #define SHOPT_DFSROOT           "dfsroot"
 #define SHOPT_DESCRIPTION       "description"
+#define SHOPT_QUOTAS            "quotas"
+#define SHOPT_FSO               "fso"   /* Force Shared Oplocks */
+#define SHOPT_ENCRYPT           "encrypt"
+#define SHOPT_AUTOHOME          "Autohome"
 
 #define SMB_DEFAULT_SHARE_GROUP "smb"
 #define SMB_PROTOCOL_NAME       "smb"
 
 /*

@@ -168,17 +182,22 @@
 #define SMB_SHRF_ACC_NONE       0x0100
 #define SMB_SHRF_ACC_RO         0x0200
 #define SMB_SHRF_ACC_RW         0x0400
 #define SMB_SHRF_ACC_ALL        0x0F00
 
+#define SMB_SHRF_QUOTAS         0x1000  /* Enable SMB Quotas */
+#define SMB_SHRF_FSO            0x2000  /* Force Shared Oplocks */
+#define SMB_SHRF_CA             0x4000  /* Continuous Availability */
+
 /*
  * Runtime flags
  */
 #define SMB_SHRF_ADMIN          0x01000000
 #define SMB_SHRF_TRANS          0x10000000
 #define SMB_SHRF_PERM           0x20000000
 #define SMB_SHRF_AUTOHOME       0x40000000
+#define SMB_SHRF_REMOVED        0x80000000      /* unshared */
 
 #define SMB_SHARE_PRINT         "print$"
 #define SMB_SHARE_PRINT_LEN     6
 /*
  * refcnt is currently only used for autohome.  autohome needs a refcnt

@@ -198,10 +217,11 @@
         uid_t           shr_uid;                /* autohome only */
         gid_t           shr_gid;                /* autohome only */
         char            shr_access_none[MAXPATHLEN];
         char            shr_access_ro[MAXPATHLEN];
         char            shr_access_rw[MAXPATHLEN];
+        smb_cfg_val_t   shr_encrypt;
 } smb_share_t;
 
 typedef struct smb_shriter {
         smb_share_t     si_share;
         HT_ITERATOR     si_hashiter;

@@ -239,10 +259,12 @@
  * CIFS share management functions exported by libmlsvc
  */
 int smb_shr_start(void);
 void smb_shr_stop(void);
 void *smb_shr_load(void *);
+void smb_shr_load_execinfo(void);
+void smb_shr_unload(void);
 void smb_shr_iterinit(smb_shriter_t *);
 smb_share_t *smb_shr_iterate(smb_shriter_t *);
 void smb_shr_list(int, smb_shrlist_t *);
 int smb_shr_count(void);
 uint32_t smb_shr_add(smb_share_t *);