Print this page
NEX-19057 All zfs/nfs/smb threads in door calls to idle idmap
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
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-16159 Time spent sharing SMB filesystems could be reduced by optimizing smb_getdataset for default mount points (build fix)
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
NEX-16159 Time spent sharing SMB filesystems could be reduced by optimizing smb_getdataset for default mount points
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Reviewed by: Matt Barden <matt.barden@nexenta.com>
NEX-15558 SMB logon fails during 1st second after service start
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15558 SMB logon fails during 1st second after service start
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15052 Need a way to add appliance local user/group ACE from Windows
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15041 method to delete local SMB users
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15052 Need a way to add appliance local user/group ACE from Windows
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15041 method to delete local SMB users
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-9497 SMB should bypass ACL traverse checking
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
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-4083 Upstream changes from illumos 5917 and 5995
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
NEX-3611 CLONE NEX-3550 Replace smb2_enable with max_protocol
Reviewed by: Yuri Pankov <Yuri.Pankov@nexenta.com>
NEX-2667 Wrong error when join domain with wrong password
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Bayard Bell <bayard.bell@nexenta.com>
NEX-2225 Unable to join NexentaStor to 2008 AD
NEX-2346 SMB server debug logging cleanup after NEX-2314
NEX-2314 SMB server debug logging needs improvement
NEX-2286 smbadm join error messages are uninformative
NEX-1404 fixed malformed entries in zone_sun.tab
NEX-1799 Failure to authenticate domain account from Win2003 with NTLM(v1)
NEX-1638 Updated DC Locator
 Includes work by: matt.barden@nexenta.com, kevin.crowe@nexenta.com
SMB-126 Unable to map share from win2003/win2003R2 client ...
SMB-107 Unable to map network drive in workgroup mode using Windows XP...
SMB-68 NTLM(v1) inbound with Extended Session Security
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-70 Hang during boot after SMB-50
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>
SFR-56 Identity Management for UNIX (IDMU) authentication support
re #12435 rb3958 r10 is added 2 times to panic info
re #12393 rb3935 Kerberos and smbd disagree about who is our AD server
re #6813 rb1757 port 2976 Child folder visibility through shares

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/smbsrv/libsmb/common/libsmb.h
          +++ new/usr/src/lib/smbsrv/libsmb/common/libsmb.h
↓ open down ↓ 13 lines elided ↑ open up ↑
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  24      - * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
       24 + * Copyright 2019 Nexenta Systems, Inc.  All rights reserved.
  25   25   */
  26   26  
  27   27  #ifndef _LIBSMB_H
  28   28  #define _LIBSMB_H
  29   29  
  30   30  #ifdef  __cplusplus
  31   31  extern "C" {
  32   32  #endif
  33   33  
  34   34  #include <sys/types.h>
       35 +#include <sys/inttypes.h>
  35   36  #include <sys/list.h>
  36   37  #include <sys/avl.h>
  37   38  #include <arpa/inet.h>
  38   39  #include <net/if.h>     /* LIFNAMSIZ */
  39   40  #include <netdb.h>
  40   41  #include <stdlib.h>
  41   42  #include <libscf.h>
  42   43  #include <libshare.h>
  43   44  #include <uuid/uuid.h>
  44   45  #include <synch.h>
  45   46  #include <stdarg.h>
  46   47  
       48 +#include <smb/nterror.h>
       49 +#include <smb/ntstatus.h>
       50 +#include <smb/wintypes.h>
       51 +
  47   52  #include <smbsrv/string.h>
  48   53  #include <smbsrv/smb_idmap.h>
  49   54  #include <smbsrv/netbios.h>
  50   55  #include <smbsrv/smb_share.h>
  51      -#include <smb/nterror.h>
  52      -#include <smb/ntstatus.h>
  53   56  #include <smbsrv/smb_door.h>
  54   57  #include <smbsrv/alloc.h>
  55   58  #include <smbsrv/hash_table.h>
  56   59  #include <smbsrv/msgbuf.h>
  57      -#include <smbsrv/wintypes.h>
  58   60  #include <smbsrv/smb_xdr.h>
  59   61  #include <smbsrv/smbinfo.h>
  60   62  #include <smbsrv/ntifs.h>
  61   63  
  62   64  #define SMB_VARSMB_DIR "/var/smb"
  63   65  #define SMB_VARRUN_DIR "/var/run/smb"
  64   66  #define SMB_CCACHE_FILE "ccache"
  65   67  #define SMB_CCACHE_PATH SMB_VARRUN_DIR "/" SMB_CCACHE_FILE
  66   68  
  67   69  
↓ open down ↓ 80 lines elided ↑ open up ↑
 148  150          SMB_CI_PRINT_ENABLE,
 149  151          SMB_CI_MAP,
 150  152          SMB_CI_UNMAP,
 151  153          SMB_CI_DISPOSITION,
 152  154          SMB_CI_DFS_STDROOT_NUM,
 153  155          SMB_CI_TRAVERSE_MOUNTS,
 154  156          SMB_CI_SMB2_ENABLE_OLD, /* obsolete */
 155  157          SMB_CI_INITIAL_CREDITS,
 156  158          SMB_CI_MAXIMUM_CREDITS,
 157  159          SMB_CI_MAX_PROTOCOL,
      160 +        SMB_CI_ENCRYPT,
      161 +        SMB_CI_MIN_PROTOCOL,
      162 +        SMB_CI_BYPASS_TRAVERSE_CHECKING,
 158  163  
 159  164          SMB_CI_MAX
 160  165  } smb_cfg_id_t;
 161  166  
 162  167  /* SMF helper functions */
 163  168  extern smb_scfhandle_t *smb_smf_scf_init(char *);
 164  169  extern void smb_smf_scf_fini(smb_scfhandle_t *);
 165  170  extern int smb_smf_start_transaction(smb_scfhandle_t *);
 166  171  extern int smb_smf_end_transaction(smb_scfhandle_t *);
 167  172  extern int smb_smf_set_string_property(smb_scfhandle_t *, char *, char *);
↓ open down ↓ 6 lines elided ↑ open up ↑
 174  179  extern int smb_smf_set_opaque_property(smb_scfhandle_t *, char *,
 175  180      void *, size_t);
 176  181  extern int smb_smf_get_opaque_property(smb_scfhandle_t *, char *,
 177  182      void *, size_t);
 178  183  extern int smb_smf_create_service_pgroup(smb_scfhandle_t *, char *);
 179  184  extern int smb_smf_delete_property(smb_scfhandle_t *, char *);
 180  185  extern int smb_smf_restart_service(void);
 181  186  extern int smb_smf_maintenance_mode(void);
 182  187  
 183  188  /* ZFS interface */
 184      -int smb_getdataset(const char *, char *, size_t);
      189 +struct libzfs_handle;
      190 +int smb_getdataset(struct libzfs_handle *, const char *, char *, size_t);
 185  191  
 186  192  /* Configuration management functions  */
 187  193  extern int smb_config_get(smb_cfg_id_t, char *, int);
 188  194  extern char *smb_config_getname(smb_cfg_id_t);
 189  195  extern int smb_config_getstr(smb_cfg_id_t, char *, int);
 190  196  extern int smb_config_getnum(smb_cfg_id_t, int64_t *);
 191  197  extern boolean_t smb_config_getbool(smb_cfg_id_t);
 192  198  
 193  199  extern int smb_config_set(smb_cfg_id_t, char *);
 194  200  extern int smb_config_setstr(smb_cfg_id_t, char *);
↓ open down ↓ 11 lines elided ↑ open up ↑
 206  212  extern int smb_config_set_secmode(int);
 207  213  extern int smb_config_set_idmap_domain(char *);
 208  214  extern int smb_config_refresh_idmap(void);
 209  215  extern int smb_config_getip(smb_cfg_id_t, smb_inaddr_t *);
 210  216  extern void smb_config_get_version(smb_version_t *);
 211  217  uint32_t smb_config_get_execinfo(char *, char *, size_t);
 212  218  extern void smb_config_get_negtok(uchar_t *, uint32_t *);
 213  219  
 214  220  extern int smb_config_check_protocol(char *);
 215  221  extern uint32_t smb_config_get_max_protocol(void);
      222 +extern uint32_t smb_config_get_min_protocol(void);
 216  223  extern void smb_config_upgrade(void);
 217  224  
      225 +extern smb_cfg_val_t smb_config_get_require(smb_cfg_id_t);
      226 +
 218  227  extern void smb_load_kconfig(smb_kmod_cfg_t *kcfg);
 219  228  extern uint32_t smb_crc_gen(uint8_t *, size_t);
 220  229  
 221  230  extern boolean_t smb_match_netlogon_seqnum(void);
 222  231  extern int smb_setdomainprops(char *, char *, char *);
 223  232  extern void smb_update_netlogon_seqnum(void);
 224  233  
 225  234  /* maximum password length on Windows 2000 and above */
 226  235  #define SMB_PASSWD_MAXLEN       127
 227  236  #define SMB_USERNAME_MAXLEN     40
↓ open down ↓ 214 lines elided ↑ open up ↑
 442  451          uint8_t         pw_lmhash[SMBAUTH_HASH_SZ];
 443  452          uint8_t         pw_nthash[SMBAUTH_HASH_SZ];
 444  453  } smb_passwd_t;
 445  454  
 446  455  /*
 447  456   * Control flags passed to smb_pwd_setcntl
 448  457   */
 449  458  #define SMB_PWC_DISABLE 0x01
 450  459  #define SMB_PWC_ENABLE  0x02
 451  460  #define SMB_PWC_NOLM    0x04
      461 +#define SMB_PWC_DELETE  0x08
 452  462  
 453  463  #define SMB_PWE_SUCCESS         0
 454  464  #define SMB_PWE_USER_UNKNOWN    1
 455  465  #define SMB_PWE_USER_DISABLE    2
 456  466  #define SMB_PWE_CLOSE_FAILED    3
 457  467  #define SMB_PWE_OPEN_FAILED     4
 458  468  #define SMB_PWE_WRITE_FAILED    6
 459  469  #define SMB_PWE_UPDATE_FAILED   7
 460  470  #define SMB_PWE_STAT_FAILED     8
 461  471  #define SMB_PWE_BUSY            9
↓ open down ↓ 192 lines elided ↑ open up ↑
 654  664  boolean_t smb_domain_getinfo(smb_domainex_t *);
 655  665  void smb_domain_update(smb_domainex_t *);
 656  666  uint32_t smb_domain_start_update(void);
 657  667  void smb_domain_end_update(void);
 658  668  void smb_domain_set_basic_info(char *, char *, char *, smb_domain_t *);
 659  669  void smb_domain_set_dns_info(char *, char *, char *, char *, char *,
 660  670      smb_domain_t *);
 661  671  void smb_domain_set_trust_info(char *, char *, char *,
 662  672      uint32_t, uint32_t, uint32_t, smb_domain_t *);
 663  673  void smb_domain_current_dc(smb_dcinfo_t *);
      674 +void smb_domain_bad_dc(void);
 664  675  
 665  676  typedef struct smb_gsid {
 666  677          smb_sid_t *gs_sid;
 667  678          uint16_t gs_type;
 668  679  } smb_gsid_t;
 669  680  
 670  681  struct sqlite_vm;
 671  682  struct sqlite;
 672  683  
 673  684  typedef struct smb_giter {
↓ open down ↓ 30 lines elided ↑ open up ↑
 704  715  void smb_lgrp_free(smb_group_t *);
 705  716  uint32_t smb_lgrp_err_to_ntstatus(uint32_t);
 706  717  boolean_t smb_lgrp_is_member(smb_group_t *, smb_sid_t *);
 707  718  char *smb_lgrp_strerror(int);
 708  719  int smb_lgrp_iteropen(smb_giter_t *);
 709  720  void smb_lgrp_iterclose(smb_giter_t *);
 710  721  boolean_t smb_lgrp_itererror(smb_giter_t *);
 711  722  int smb_lgrp_iterate(smb_giter_t *, smb_group_t *);
 712  723  
 713  724  int smb_lookup_sid(const char *, lsa_account_t *);
      725 +int smb_lookup_lsid(const char *, lsa_account_t *);
 714  726  int smb_lookup_name(const char *, sid_type_t, lsa_account_t *);
      727 +int smb_lookup_lname(const char *, sid_type_t, lsa_account_t *);
 715  728  
 716  729  #define SMB_LGRP_SUCCESS                0
 717  730  #define SMB_LGRP_INVALID_ARG            1
 718  731  #define SMB_LGRP_INVALID_MEMBER         2
 719  732  #define SMB_LGRP_INVALID_NAME           3
 720  733  #define SMB_LGRP_NOT_FOUND              4
 721  734  #define SMB_LGRP_EXISTS                 5
 722  735  #define SMB_LGRP_NO_SID                 6
 723  736  #define SMB_LGRP_NO_LOCAL_SID           7
 724  737  #define SMB_LGRP_SID_NOTLOCAL           8
↓ open down ↓ 126 lines elided ↑ open up ↑
 851  864  /*
 852  865   * In memory account representation
 853  866   */
 854  867  typedef struct smb_account {
 855  868          char            *a_name;
 856  869          char            *a_domain;
 857  870          uint16_t        a_type;
 858  871          smb_sid_t       *a_sid;
 859  872          smb_sid_t       *a_domsid;
 860  873          uint32_t        a_rid;
      874 +        uint32_t        a_flags;
 861  875  } smb_account_t;
 862  876  
 863  877  uint32_t smb_sam_lookup_name(char *, char *, uint16_t, smb_account_t *);
 864  878  uint32_t smb_sam_lookup_sid(smb_sid_t *, smb_account_t *);
 865  879  int smb_sam_usr_cnt(void);
 866  880  uint32_t smb_sam_usr_groups(smb_sid_t *, smb_ids_t *);
 867  881  int smb_sam_grp_cnt(smb_domain_type_t);
 868  882  void smb_account_free(smb_account_t *);
 869  883  boolean_t smb_account_validate(smb_account_t *);
 870  884  
↓ open down ↓ 123 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX