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)
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)

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/netsmb/mchain.h
          +++ new/usr/src/uts/common/netsmb/mchain.h
↓ open down ↓ 27 lines elided ↑ open up ↑
  28   28   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  29   29   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  30   30   * SUCH DAMAGE.
  31   31   *
  32   32   * $FreeBSD: src/sys/sys/mchain.h,v 1.1 2001/02/24 15:44:30 bp Exp $
  33   33   */
  34   34  
  35   35  /*
  36   36   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  37   37   * Use is subject to license terms.
       38 + *
       39 + * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  38   40   */
  39   41  
  40   42  #ifndef _MCHAIN_H_
  41   43  #define _MCHAIN_H_
  42   44  
  43   45  #include <sys/types.h>
  44   46  #include <sys/isa_defs.h>
  45   47  #include <sys/byteorder.h>
  46   48  
  47   49  #ifdef _LITTLE_ENDIAN
↓ open down ↓ 38 lines elided ↑ open up ↑
  86   88  #define betohq(x)       ((uint64_t)(x))
  87   89  #endif  /* (BYTE_ORDER == LITTLE_ENDIAN) */
  88   90  
  89   91  
  90   92  /*
  91   93   * Additions for Solaris to replace things that came from
  92   94   * <sys/mbuf.h> in the Darwin code.  These are mostly just
  93   95   * wrappers for streams functions.  See: subr_mchain.c
  94   96   */
  95   97  
  96      -#ifdef _KERNEL
       98 +#if defined(_KERNEL) || defined(_FAKE_KERNEL)
  97   99  
  98  100  /*
  99  101   * BSD-style mbuf "shim" for kernel code.  Note, this
 100  102   * does NOT implement BSD mbufs in the kernel.  Rather,
 101  103   * macros and wrapper functions are used so that code
 102  104   * fomerly using mbuf_t now use STREAMS mblk_t instead.
 103  105   */
 104  106  
 105  107  #include <sys/stream.h> /* mblk_t */
      108 +#include <sys/strsun.h> /* MBLKL */
 106  109  typedef mblk_t mbuf_t;
 107  110  
 108  111  /* BEGIN CSTYLED */
 109  112  /*
 110  113   * BSD-style mbufs, vs SysV-style mblks:
 111  114   * One big difference: the mbuf payload is:
 112  115   *   m_data ... (m_data + m_len)
 113  116   * In Unix STREAMS, the mblk payload is:
 114  117   *   b_rptr ... b_wptr
 115  118   * 
↓ open down ↓ 54 lines elided ↑ open up ↑
 170  173  
 171  174  /*
 172  175   * Type of copy for mb_{put|get}_mem()
 173  176   */
 174  177  #define MB_MSYSTEM      0               /* use bcopy() */
 175  178  #define MB_MUSER        1               /* use copyin()/copyout() */
 176  179  #define MB_MINLINE      2               /* use an inline copy loop */
 177  180  #define MB_MZERO        3               /* bzero(), mb_put_mem only */
 178  181  #define MB_MCUSTOM      4               /* use an user defined function */
 179  182  
 180      -#ifdef _KERNEL
      183 +#if defined(_KERNEL) || defined(_FAKE_KERNEL)
 181  184  
 182  185  struct mbchain {
 183  186          mblk_t *mb_top;
 184  187          mblk_t *mb_cur;
 185  188          uint_t mb_count;
 186  189  };
 187  190  typedef struct mbchain mbchain_t;
 188  191  
 189  192  struct mdchain {
 190  193          mblk_t *md_top;         /* head of mblk chain */
↓ open down ↓ 26 lines elided ↑ open up ↑
 217  220  typedef struct mbdata mbchain_t;
 218  221  typedef struct mbdata mdchain_t;
 219  222  
 220  223  #endif  /* _KERNEL */
 221  224  
 222  225  int  mb_init(mbchain_t *);
 223  226  void mb_initm(mbchain_t *, mbuf_t *);
 224  227  void mb_done(mbchain_t *);
 225  228  void *mb_reserve(mbchain_t *, int size);
 226  229  
      230 +int  mb_put_align8(mbchain_t *mbp);
 227  231  int  mb_put_padbyte(mbchain_t *mbp);
 228  232  int  mb_put_uint8(mbchain_t *, uint8_t);
 229  233  int  mb_put_uint16be(mbchain_t *, uint16_t);
 230  234  int  mb_put_uint16le(mbchain_t *, uint16_t);
 231  235  int  mb_put_uint32be(mbchain_t *, uint32_t);
 232  236  int  mb_put_uint32le(mbchain_t *, uint32_t);
 233  237  int  mb_put_uint64be(mbchain_t *, uint64_t);
 234  238  int  mb_put_uint64le(mbchain_t *, uint64_t);
 235  239  int  mb_put_mem(mbchain_t *, const void *, int, int);
 236  240  int  mb_put_mbuf(mbchain_t *, mbuf_t *);
      241 +int  mb_put_mbchain(mbchain_t *, mbchain_t *);
 237  242  
 238  243  int  md_init(mdchain_t *mdp);
 239  244  void md_initm(mdchain_t *mbp, mbuf_t *m);
 240  245  void md_done(mdchain_t *mdp);
 241  246  
 242  247  int  md_get_uint8(mdchain_t *, uint8_t *);
 243  248  int  md_get_uint16be(mdchain_t *, uint16_t *);
 244  249  int  md_get_uint16le(mdchain_t *, uint16_t *);
 245  250  int  md_get_uint32be(mdchain_t *, uint32_t *);
 246  251  int  md_get_uint32le(mdchain_t *, uint32_t *);
 247  252  int  md_get_uint64be(mdchain_t *, uint64_t *);
 248  253  int  md_get_uint64le(mdchain_t *, uint64_t *);
 249  254  int  md_get_mem(mdchain_t *, void *, int, int);
 250  255  int  md_get_mbuf(mdchain_t *, int, mbuf_t **);
      256 +int  md_seek(mdchain_t *, uint32_t);
      257 +uint32_t md_tell(mdchain_t *);
 251  258  
 252  259  #endif  /* !_MCHAIN_H_ */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX