Print this page
NEX-14666 Need to provide SMB 2.1 Client
NEX-17187 panic in smbfs_acl_store
NEX-17231 smbfs create xattr files finds wrong file
NEX-17224 smbfs lookup EINVAL should be ENOENT
NEX-17260 SMB1 client fails to list directory after NEX-14666
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Saso Kiselkov <saso.kiselkov@nexenta.com>
Reviewed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
and: (cleanup)
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-2225 Unable to join NexentaStor to 2008 AD
re #12435 rb3958 r10 is added 2 times to panic info
re #12393 rb3935 Kerberos and smbd disagree about who is our AD server


   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 /*
  23  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  24  * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
  25  */
  26 
  27 /*
  28  * Security Accounts Manager RPC (SAMR) client-side interface.
  29  *
  30  * The SAM is a hierarchical database:
  31  * - If you want to talk to the SAM you need a SAM handle.
  32  * - If you want to work with a domain, use the SAM handle.
  33  *   to obtain a domain handle.
  34  * - Use domain handles to obtain user handles etc.
  35  *
  36  * Be careful about returning null handles to the application.  Use of a
  37  * null handle may crash the domain controller if you attempt to use it.
  38  */
  39 
  40 #include <stdio.h>
  41 #include <strings.h>
  42 #include <stdlib.h>
  43 #include <unistd.h>
  44 #include <netdb.h>
  45 #include <sys/param.h>
  46 

  47 #include <smbsrv/libsmb.h>
  48 #include <smbsrv/libmlrpc.h>
  49 #include <smbsrv/libmlsvc.h>
  50 #include <smbsrv/smbinfo.h>
  51 #include <smbsrv/ntaccess.h>
  52 #include <smbsrv/smb_sid.h>
  53 #include <samlib.h>
  54 
  55 static DWORD samr_connect2(char *, char *, char *, DWORD, mlsvc_handle_t *);
  56 static DWORD samr_connect4(char *, char *, char *, DWORD, mlsvc_handle_t *);
  57 static DWORD samr_connect5(char *, char *, char *, DWORD, mlsvc_handle_t *);
  58 
  59 typedef DWORD (*samr_connop_t)(char *, char *, char *, DWORD,
  60     mlsvc_handle_t *);
  61 
  62 static int samr_setup_user_info(WORD, struct samr_QueryUserInfo *,
  63     union samr_user_info *);
  64 
  65 /*
  66  * samr_open
  67  *
  68  * Wrapper round samr_connect to ensure that we connect using the server
  69  * and domain.  We default to the resource domain if the caller doesn't
  70  * supply a server name and a domain name.
  71  *




   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 /*
  23  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  24  * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  25  */
  26 
  27 /*
  28  * Security Accounts Manager RPC (SAMR) client-side interface.
  29  *
  30  * The SAM is a hierarchical database:
  31  * - If you want to talk to the SAM you need a SAM handle.
  32  * - If you want to work with a domain, use the SAM handle.
  33  *   to obtain a domain handle.
  34  * - Use domain handles to obtain user handles etc.
  35  *
  36  * Be careful about returning null handles to the application.  Use of a
  37  * null handle may crash the domain controller if you attempt to use it.
  38  */
  39 
  40 #include <stdio.h>
  41 #include <strings.h>
  42 #include <stdlib.h>
  43 #include <unistd.h>
  44 #include <netdb.h>
  45 #include <sys/param.h>
  46 
  47 #include <libmlrpc/libmlrpc.h>
  48 #include <smbsrv/libsmb.h>

  49 #include <smbsrv/libmlsvc.h>
  50 #include <smbsrv/smbinfo.h>
  51 #include <smb/ntaccess.h>
  52 #include <smbsrv/smb_sid.h>
  53 #include <samlib.h>
  54 
  55 static DWORD samr_connect2(char *, char *, char *, DWORD, mlsvc_handle_t *);
  56 static DWORD samr_connect4(char *, char *, char *, DWORD, mlsvc_handle_t *);
  57 static DWORD samr_connect5(char *, char *, char *, DWORD, mlsvc_handle_t *);
  58 
  59 typedef DWORD (*samr_connop_t)(char *, char *, char *, DWORD,
  60     mlsvc_handle_t *);
  61 
  62 static int samr_setup_user_info(WORD, struct samr_QueryUserInfo *,
  63     union samr_user_info *);
  64 
  65 /*
  66  * samr_open
  67  *
  68  * Wrapper round samr_connect to ensure that we connect using the server
  69  * and domain.  We default to the resource domain if the caller doesn't
  70  * supply a server name and a domain name.
  71  *