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)
        
@@ -33,10 +33,12 @@
  */
 
 /*
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  */
 
 #ifndef _MCHAIN_H_
 #define _MCHAIN_H_
 
@@ -91,20 +93,21 @@
  * Additions for Solaris to replace things that came from
  * <sys/mbuf.h> in the Darwin code.  These are mostly just
  * wrappers for streams functions.  See: subr_mchain.c
  */
 
-#ifdef _KERNEL
+#if defined(_KERNEL) || defined(_FAKE_KERNEL)
 
 /*
  * BSD-style mbuf "shim" for kernel code.  Note, this
  * does NOT implement BSD mbufs in the kernel.  Rather,
  * macros and wrapper functions are used so that code
  * fomerly using mbuf_t now use STREAMS mblk_t instead.
  */
 
 #include <sys/stream.h> /* mblk_t */
+#include <sys/strsun.h> /* MBLKL */
 typedef mblk_t mbuf_t;
 
 /* BEGIN CSTYLED */
 /*
  * BSD-style mbufs, vs SysV-style mblks:
@@ -175,11 +178,11 @@
 #define MB_MUSER        1               /* use copyin()/copyout() */
 #define MB_MINLINE      2               /* use an inline copy loop */
 #define MB_MZERO        3               /* bzero(), mb_put_mem only */
 #define MB_MCUSTOM      4               /* use an user defined function */
 
-#ifdef _KERNEL
+#if defined(_KERNEL) || defined(_FAKE_KERNEL)
 
 struct mbchain {
         mblk_t *mb_top;
         mblk_t *mb_cur;
         uint_t mb_count;
@@ -222,10 +225,11 @@
 int  mb_init(mbchain_t *);
 void mb_initm(mbchain_t *, mbuf_t *);
 void mb_done(mbchain_t *);
 void *mb_reserve(mbchain_t *, int size);
 
+int  mb_put_align8(mbchain_t *mbp);
 int  mb_put_padbyte(mbchain_t *mbp);
 int  mb_put_uint8(mbchain_t *, uint8_t);
 int  mb_put_uint16be(mbchain_t *, uint16_t);
 int  mb_put_uint16le(mbchain_t *, uint16_t);
 int  mb_put_uint32be(mbchain_t *, uint32_t);
@@ -232,10 +236,11 @@
 int  mb_put_uint32le(mbchain_t *, uint32_t);
 int  mb_put_uint64be(mbchain_t *, uint64_t);
 int  mb_put_uint64le(mbchain_t *, uint64_t);
 int  mb_put_mem(mbchain_t *, const void *, int, int);
 int  mb_put_mbuf(mbchain_t *, mbuf_t *);
+int  mb_put_mbchain(mbchain_t *, mbchain_t *);
 
 int  md_init(mdchain_t *mdp);
 void md_initm(mdchain_t *mbp, mbuf_t *m);
 void md_done(mdchain_t *mdp);
 
@@ -246,7 +251,9 @@
 int  md_get_uint32le(mdchain_t *, uint32_t *);
 int  md_get_uint64be(mdchain_t *, uint64_t *);
 int  md_get_uint64le(mdchain_t *, uint64_t *);
 int  md_get_mem(mdchain_t *, void *, int, int);
 int  md_get_mbuf(mdchain_t *, int, mbuf_t **);
+int  md_seek(mdchain_t *, uint32_t);
+uint32_t md_tell(mdchain_t *);
 
 #endif  /* !_MCHAIN_H_ */