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)

@@ -33,43 +33,51 @@
  */
 
 /*
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  */
 
 #ifndef _NETSMB_SMB_TRAN_H_
 #define _NETSMB_SMB_TRAN_H_
 
 #include <sys/socket.h>
 #include <sys/stream.h>
+#ifndef _KERNEL
+struct file;
+#endif
 
 /*
  * Known transports
  */
 #define SMBT_NBTCP      1
 
 /*
- * Transport parameters
+ * Transport parameters, for tr_getparam/tr_setparam
  */
-#define SMBTP_SNDSZ     1               /* R  - int */
-#define SMBTP_RCVSZ     2               /* R  - int */
-#define SMBTP_TIMEOUT   3               /* RW - struct timespec */
+#define SMBTP_TCP_NODELAY       0x01            /* RW - int */
+#define SMBTP_TCP_CON_TMO       0x13            /* RW - int */
+#define SMBTP_KEEPALIVE         SO_KEEPALIVE    /* RW - int */
+#define SMBTP_SNDBUF            SO_SNDBUF       /* RW - int */
+#define SMBTP_RCVBUF            SO_RCVBUF       /* RW - int */
+#define SMBTP_RCVTIMEO          SO_RCVTIMEO     /* RW - int? */
 
 struct smb_tran_ops;
 
 struct smb_tran_desc {
         sa_family_t     tr_type;
         int     (*tr_create)(struct smb_vc *vcp, cred_t *cr);
         int     (*tr_done)(struct smb_vc *vcp);
         int     (*tr_bind)(struct smb_vc *vcp, struct sockaddr *sap);
+        int     (*tr_unbind)(struct smb_vc *vcp);
         int     (*tr_connect)(struct smb_vc *vcp, struct sockaddr *sap);
         int     (*tr_disconnect)(struct smb_vc *vcp);
         int     (*tr_send)(struct smb_vc *vcp, mblk_t *m);
         int     (*tr_recv)(struct smb_vc *vcp, mblk_t **mpp);
         int     (*tr_poll)(struct smb_vc *vcp, int ticks);
-        int     (*tr_loan_fp)(struct smb_vc *, struct file *, cred_t *cr);
         int     (*tr_getparam)(struct smb_vc *vcp, int param, void *data);
         int     (*tr_setparam)(struct smb_vc *vcp, int param, void *data);
         int     (*tr_fatal)(struct smb_vc *vcp, int error);
         LIST_ENTRY(smb_tran_desc)       tr_link;
 };

@@ -76,16 +84,16 @@
 typedef struct smb_tran_desc smb_tran_desc_t;
 
 #define SMB_TRAN_CREATE(vcp, cr)        (vcp)->vc_tdesc->tr_create(vcp, cr)
 #define SMB_TRAN_DONE(vcp)              (vcp)->vc_tdesc->tr_done(vcp)
 #define SMB_TRAN_BIND(vcp, sap)         (vcp)->vc_tdesc->tr_bind(vcp, sap)
+#define SMB_TRAN_UNBIND(vcp)            (vcp)->vc_tdesc->tr_unbind(vcp)
 #define SMB_TRAN_CONNECT(vcp, sap)      (vcp)->vc_tdesc->tr_connect(vcp, sap)
 #define SMB_TRAN_DISCONNECT(vcp)        (vcp)->vc_tdesc->tr_disconnect(vcp)
 #define SMB_TRAN_SEND(vcp, m)           (vcp)->vc_tdesc->tr_send(vcp, m)
 #define SMB_TRAN_RECV(vcp, m)           (vcp)->vc_tdesc->tr_recv(vcp, m)
 #define SMB_TRAN_POLL(vcp, t)           (vcp)->vc_tdesc->tr_poll(vcp, t)
-#define SMB_TRAN_LOAN_FP(vcp, f, cr)    (vcp)->vc_tdesc->tr_loan_fp(vcp, f, cr)
 #define SMB_TRAN_GETPARAM(vcp, par, data)       \
         (vcp)->vc_tdesc->tr_getparam(vcp, par, data)
 #define SMB_TRAN_SETPARAM(vcp, par, data)       \
         (vcp)->vc_tdesc->tr_setparam(vcp, par, data)
 #define SMB_TRAN_FATAL(vcp, error)      (vcp)->vc_tdesc->tr_fatal(vcp, error)