Print this page
NEX-16824 SMB client connection setup rework
NEX-17232 SMB client reconnect failures
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
and: (improve debug)
NEX-16818 Add fksmbcl development tool
NEX-17264 SMB client test tp_smbutil_013 fails after NEX-14666
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
and: (fix ref leaks)
NEX-16805 Add smbutil discon command
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>

@@ -20,10 +20,12 @@
  */
 
 /*
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  */
 
 /*
  * Find existing an VC given a list of addresses.
  */

@@ -74,11 +76,11 @@
         if (ai->ai_addrlen > sizeof (ssn->ssn_srvaddr))
                 return (EINVAL);
         bzero(&ssn->ssn_srvaddr, sizeof (ssn->ssn_srvaddr));
         bcopy(ai->ai_addr, &ssn->ssn_srvaddr, ai->ai_addrlen);
 
-        if (ioctl(ctx->ct_dev_fd, SMBIOC_SSN_FIND, ssn) == -1)
+        if (nsmb_ioctl(ctx->ct_dev_fd, SMBIOC_SSN_FIND, ssn) == -1)
                 return (errno);
 
         return (0);
 }
 

@@ -94,10 +96,15 @@
 
         /* Should already have the address list. */
         if ((ctx->ct_flags & SMBCF_RESOLVED) == 0)
                 return (EINVAL);
 
+        if (ctx->ct_dev_fd < 0) {
+                if ((err = smb_ctx_gethandle(ctx)))
+                        return (err);
+        }
+
         for (ai = ctx->ct_addrinfo; ai; ai = ai->ai_next) {
 
                 switch (ai->ai_family) {
 
                 case AF_INET:

@@ -112,11 +119,10 @@
                         break;
                 }
 
                 if (err == 0) {
                         /* re-use an existing VC */
-                        ctx->ct_flags |= SMBCF_SSNACTIVE;
                         return (0);
                 }
         }
 
         return (ENOENT);

@@ -130,10 +136,10 @@
  */
 int
 smb_ctx_kill(struct smb_ctx *ctx)
 {
 
-        if (ioctl(ctx->ct_dev_fd, SMBIOC_SSN_KILL, NULL) == -1)
+        if (nsmb_ioctl(ctx->ct_dev_fd, SMBIOC_SSN_KILL, NULL) == -1)
                 return (errno);
 
         return (0);
 }