Print this page
NEX-10019 SMB server min_protocol setting
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Evan Layton <evan.layton@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-3611 CLONE NEX-3550 Replace smb2_enable with max_protocol
Reviewed by: Yuri Pankov <Yuri.Pankov@nexenta.com>
NEX-1050 enable_smb2 should be smb2_enable
SMB-11 SMB2 message parse & dispatch
SMB-12 SMB2 Negotiate Protocol
SMB-13 SMB2 Session Setup
SMB-14 SMB2 Logoff
SMB-15 SMB2 Tree Connect
SMB-16 SMB2 Tree Disconnect
SMB-17 SMB2 Create
SMB-18 SMB2 Close
SMB-19 SMB2 Flush
SMB-20 SMB2 Read
SMB-21 SMB2 Write
SMB-22 SMB2 Lock/Unlock
SMB-23 SMB2 Ioctl
SMB-24 SMB2 Cancel
SMB-25 SMB2 Echo
SMB-26 SMB2 Query Dir
SMB-27 SMB2 Change Notify
SMB-28 SMB2 Query Info
SMB-29 SMB2 Set Info
SMB-30 SMB2 Oplocks
SMB-53 SMB2 Create Context options
(SMB2 code review cleanup 1, 2, 3)
SMB-56 extended security NTLMSSP, inbound
SMB-50 User-mode SMB server
 Includes work by these authors:
 Thomas Keiser <thomas.keiser@nexenta.com>
 Albert Lee <trisk@nexenta.com>
re #6813 rb1757 port 2976 Child folder visibility through shares


   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  23  * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  24  * Copyright 2017 Joyent, Inc.
  25  */
  26 
  27 #include <sys/types.h>
  28 #include <sys/stat.h>
  29 #include <sys/ioccom.h>
  30 #include <sys/param.h>
  31 #include <stddef.h>
  32 #include <stdio.h>
  33 #include <string.h>
  34 #include <strings.h>
  35 #include <stdlib.h>
  36 #include <unistd.h>
  37 #include <fcntl.h>
  38 #include <errno.h>
  39 
  40 #include <smbsrv/smb_xdr.h>
  41 #include <smbsrv/smbinfo.h>
  42 #include <smbsrv/smb_ioctl.h>
  43 #include <smbsrv/libsmb.h>


  72 /* See also: smbsrv smb_server_store_cfg */
  73 int
  74 smb_kmod_setcfg(smb_kmod_cfg_t *cfg)
  75 {
  76         smb_ioc_cfg_t ioc;
  77 
  78         ioc.maxworkers = cfg->skc_maxworkers;
  79         ioc.maxconnections = cfg->skc_maxconnections;
  80         ioc.keepalive = cfg->skc_keepalive;
  81         ioc.restrict_anon = cfg->skc_restrict_anon;
  82         ioc.signing_enable = cfg->skc_signing_enable;
  83         ioc.signing_required = cfg->skc_signing_required;
  84         ioc.oplock_enable = cfg->skc_oplock_enable;
  85         ioc.sync_enable = cfg->skc_sync_enable;
  86         ioc.secmode = cfg->skc_secmode;
  87         ioc.netbios_enable = cfg->skc_netbios_enable;
  88         ioc.ipv6_enable = cfg->skc_ipv6_enable;
  89         ioc.print_enable = cfg->skc_print_enable;
  90         ioc.traverse_mounts = cfg->skc_traverse_mounts;
  91         ioc.max_protocol = cfg->skc_max_protocol;

  92         ioc.exec_flags = cfg->skc_execflags;
  93         ioc.negtok_len = cfg->skc_negtok_len;
  94         ioc.version = cfg->skc_version;
  95         ioc.initial_credits = cfg->skc_initial_credits;
  96         ioc.maximum_credits = cfg->skc_maximum_credits;

  97 
  98         (void) memcpy(ioc.machine_uuid, cfg->skc_machine_uuid, sizeof (uuid_t));
  99         (void) memcpy(ioc.negtok, cfg->skc_negtok, sizeof (ioc.negtok));
 100         (void) memcpy(ioc.native_os, cfg->skc_native_os,
 101             sizeof (ioc.native_os));
 102         (void) memcpy(ioc.native_lm, cfg->skc_native_lm,
 103             sizeof (ioc.native_lm));
 104 
 105         (void) strlcpy(ioc.nbdomain, cfg->skc_nbdomain, sizeof (ioc.nbdomain));
 106         (void) strlcpy(ioc.fqdn, cfg->skc_fqdn, sizeof (ioc.fqdn));
 107         (void) strlcpy(ioc.hostname, cfg->skc_hostname, sizeof (ioc.hostname));
 108         (void) strlcpy(ioc.system_comment, cfg->skc_system_comment,
 109             sizeof (ioc.system_comment));
 110 
 111         return (smb_kmod_ioctl(SMB_IOC_CONFIG, &ioc.hdr, sizeof (ioc)));
 112 }
 113 
 114 int
 115 smb_kmod_setgmtoff(int32_t gmtoff)
 116 {




   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  23  * Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
  24  * Copyright 2017 Joyent, Inc.
  25  */
  26 
  27 #include <sys/types.h>
  28 #include <sys/stat.h>
  29 #include <sys/ioccom.h>
  30 #include <sys/param.h>
  31 #include <stddef.h>
  32 #include <stdio.h>
  33 #include <string.h>
  34 #include <strings.h>
  35 #include <stdlib.h>
  36 #include <unistd.h>
  37 #include <fcntl.h>
  38 #include <errno.h>
  39 
  40 #include <smbsrv/smb_xdr.h>
  41 #include <smbsrv/smbinfo.h>
  42 #include <smbsrv/smb_ioctl.h>
  43 #include <smbsrv/libsmb.h>


  72 /* See also: smbsrv smb_server_store_cfg */
  73 int
  74 smb_kmod_setcfg(smb_kmod_cfg_t *cfg)
  75 {
  76         smb_ioc_cfg_t ioc;
  77 
  78         ioc.maxworkers = cfg->skc_maxworkers;
  79         ioc.maxconnections = cfg->skc_maxconnections;
  80         ioc.keepalive = cfg->skc_keepalive;
  81         ioc.restrict_anon = cfg->skc_restrict_anon;
  82         ioc.signing_enable = cfg->skc_signing_enable;
  83         ioc.signing_required = cfg->skc_signing_required;
  84         ioc.oplock_enable = cfg->skc_oplock_enable;
  85         ioc.sync_enable = cfg->skc_sync_enable;
  86         ioc.secmode = cfg->skc_secmode;
  87         ioc.netbios_enable = cfg->skc_netbios_enable;
  88         ioc.ipv6_enable = cfg->skc_ipv6_enable;
  89         ioc.print_enable = cfg->skc_print_enable;
  90         ioc.traverse_mounts = cfg->skc_traverse_mounts;
  91         ioc.max_protocol = cfg->skc_max_protocol;
  92         ioc.min_protocol = cfg->skc_min_protocol;
  93         ioc.exec_flags = cfg->skc_execflags;
  94         ioc.negtok_len = cfg->skc_negtok_len;
  95         ioc.version = cfg->skc_version;
  96         ioc.initial_credits = cfg->skc_initial_credits;
  97         ioc.maximum_credits = cfg->skc_maximum_credits;
  98         ioc.encrypt = cfg->skc_encrypt;
  99 
 100         (void) memcpy(ioc.machine_uuid, cfg->skc_machine_uuid, sizeof (uuid_t));
 101         (void) memcpy(ioc.negtok, cfg->skc_negtok, sizeof (ioc.negtok));
 102         (void) memcpy(ioc.native_os, cfg->skc_native_os,
 103             sizeof (ioc.native_os));
 104         (void) memcpy(ioc.native_lm, cfg->skc_native_lm,
 105             sizeof (ioc.native_lm));
 106 
 107         (void) strlcpy(ioc.nbdomain, cfg->skc_nbdomain, sizeof (ioc.nbdomain));
 108         (void) strlcpy(ioc.fqdn, cfg->skc_fqdn, sizeof (ioc.fqdn));
 109         (void) strlcpy(ioc.hostname, cfg->skc_hostname, sizeof (ioc.hostname));
 110         (void) strlcpy(ioc.system_comment, cfg->skc_system_comment,
 111             sizeof (ioc.system_comment));
 112 
 113         return (smb_kmod_ioctl(SMB_IOC_CONFIG, &ioc.hdr, sizeof (ioc)));
 114 }
 115 
 116 int
 117 smb_kmod_setgmtoff(int32_t gmtoff)
 118 {