diff options
author | Marcel Telka <marcel.telka@nexenta.com> | 2016-03-12 09:16:41 +0100 |
---|---|---|
committer | Dan McDonald <danmcd@omniti.com> | 2016-03-21 13:20:11 -0400 |
commit | 5dde82e7956bd330e7bee953344937998249feb2 (patch) | |
tree | db5962eb25ff2e754c9ef902da28103a2bdeab0c /usr/src/uts/common/rpc | |
parent | f4525cdb366a3fb21a12f42bedd55ecca098e7c4 (diff) | |
download | illumos-joyent-5dde82e7956bd330e7bee953344937998249feb2.tar.gz |
6747 xdr_READDIR4res() bypass the XDR mblk API
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src/uts/common/rpc')
-rw-r--r-- | usr/src/uts/common/rpc/xdr.h | 11 | ||||
-rw-r--r-- | usr/src/uts/common/rpc/xdr_mblk.c | 19 |
2 files changed, 23 insertions, 7 deletions
diff --git a/usr/src/uts/common/rpc/xdr.h b/usr/src/uts/common/rpc/xdr.h index ebdd448d48..e895cbeb56 100644 --- a/usr/src/uts/common/rpc/xdr.h +++ b/usr/src/uts/common/rpc/xdr.h @@ -17,11 +17,15 @@ * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END - * + */ + +/* + * Copyright 2016 Nexenta Systems, Inc. All rights reserved. + */ + +/* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. - * - * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ @@ -592,6 +596,7 @@ extern void xdrmem_create(XDR *, caddr_t, uint_t, enum xdr_op); extern void xdrmblk_init(XDR *, mblk_t *, enum xdr_op, int); extern bool_t xdrmblk_getmblk(XDR *, mblk_t **, uint_t *); extern bool_t xdrmblk_putmblk(XDR *, mblk_t *, uint_t); +extern bool_t xdrmblk_putmblk_raw(XDR *, mblk_t *); extern struct xdr_ops xdrmblk_ops; extern struct xdr_ops xdrrdmablk_ops; extern struct xdr_ops xdrrdma_ops; diff --git a/usr/src/uts/common/rpc/xdr_mblk.c b/usr/src/uts/common/rpc/xdr_mblk.c index ac9b1f15ee..8934778d94 100644 --- a/usr/src/uts/common/rpc/xdr_mblk.c +++ b/usr/src/uts/common/rpc/xdr_mblk.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2015 Nexenta Systems, Inc. All rights reserved. + * Copyright 2016 Nexenta Systems, Inc. All rights reserved. */ /* @@ -441,14 +441,25 @@ xdrmblk_putbytes(XDR *xdrs, caddr_t addr, int len) bool_t xdrmblk_putmblk(XDR *xdrs, mblk_t *m, uint_t len) { - struct xdrmblk_params *p; int32_t llen = (int32_t)len; - if ((DLEN(m) % BYTES_PER_XDR_UNIT) != 0) - return (FALSE); if (!xdrmblk_putint32(xdrs, &llen)) return (FALSE); + return (xdrmblk_putmblk_raw(xdrs, m)); +} + +/* + * The raw version of putmblk does not prepend the added data with the length. + */ +bool_t +xdrmblk_putmblk_raw(XDR *xdrs, mblk_t *m) +{ + struct xdrmblk_params *p; + + if ((DLEN(m) % BYTES_PER_XDR_UNIT) != 0) + return (FALSE); + p = (struct xdrmblk_params *)xdrs->x_private; /* LINTED pointer alignment */ |