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_ */