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,75 ****
   */
  
  /*
   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
   * Use is subject to license terms.
   */
  
  #ifndef _NETSMB_SMB_TRAN_H_
  #define _NETSMB_SMB_TRAN_H_
  
  #include <sys/socket.h>
  #include <sys/stream.h>
  
  /*
   * Known transports
   */
  #define SMBT_NBTCP      1
  
  /*
!  * Transport parameters
   */
! #define SMBTP_SNDSZ     1               /* R  - int */
! #define SMBTP_RCVSZ     2               /* R  - int */
! #define SMBTP_TIMEOUT   3               /* RW - struct timespec */
  
  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_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;
  };
--- 33,83 ----
   */
  
  /*
   * 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, for tr_getparam/tr_setparam
   */
! #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_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,91 ****
  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_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)
--- 84,99 ----
  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_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)