summaryrefslogtreecommitdiff
path: root/usr/src/lib/libnsl/rpc/rpc_callmsg.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libnsl/rpc/rpc_callmsg.c')
-rw-r--r--usr/src/lib/libnsl/rpc/rpc_callmsg.c111
1 files changed, 33 insertions, 78 deletions
diff --git a/usr/src/lib/libnsl/rpc/rpc_callmsg.c b/usr/src/lib/libnsl/rpc/rpc_callmsg.c
index f5cf825ba4..6f6ef3c758 100644
--- a/usr/src/lib/libnsl/rpc/rpc_callmsg.c
+++ b/usr/src/lib/libnsl/rpc/rpc_callmsg.c
@@ -18,8 +18,10 @@
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
- *
- * Copyright 1999 Sun Microsystems, Inc. All rights reserved.
+ */
+
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
@@ -37,46 +39,28 @@
*
*/
+#include <stdlib.h>
#include <sys/param.h>
-#include <rpc/trace.h>
-
-#ifdef KERNEL
-#include <rpc/types.h> /* spell 'em out for make depend */
-#include <rpc/xdr.h>
-#include <rpc/auth.h>
-#include <rpc/clnt.h>
-#include <rpc/rpc_msg.h>
-#else
#include <rpc/rpc.h>
-#endif
#include <syslog.h>
#include <sys/byteorder.h>
-extern bool_t xdr_opaque_auth();
-extern char *malloc();
+extern bool_t xdr_opaque_auth(XDR *, struct opaque_auth *);
/*
* XDR a call message
*/
bool_t
-xdr_callmsg(xdrs, cmsg)
- register XDR *xdrs;
- register struct rpc_msg *cmsg;
+xdr_callmsg(XDR *xdrs, struct rpc_msg *cmsg)
{
- register rpc_inline_t *buf;
- register struct opaque_auth *oa;
- bool_t dummy;
+ rpc_inline_t *buf;
+ struct opaque_auth *oa;
- trace1(TR_xdr_callmsg, 0);
if (xdrs->x_op == XDR_ENCODE) {
- if (cmsg->rm_call.cb_cred.oa_length > MAX_AUTH_BYTES) {
- trace1(TR_xdr_callmsg, 1);
+ if (cmsg->rm_call.cb_cred.oa_length > MAX_AUTH_BYTES)
return (FALSE);
- }
- if (cmsg->rm_call.cb_verf.oa_length > MAX_AUTH_BYTES) {
- trace1(TR_xdr_callmsg, 1);
+ if (cmsg->rm_call.cb_verf.oa_length > MAX_AUTH_BYTES)
return (FALSE);
- }
buf = XDR_INLINE(xdrs, 8 * BYTES_PER_XDR_UNIT
+ RNDUP(cmsg->rm_call.cb_cred.oa_length)
+ 2 * BYTES_PER_XDR_UNIT
@@ -84,15 +68,11 @@ xdr_callmsg(xdrs, cmsg)
if (buf != NULL) {
IXDR_PUT_INT32(buf, cmsg->rm_xid);
IXDR_PUT_ENUM(buf, cmsg->rm_direction);
- if (cmsg->rm_direction != CALL) {
- trace1(TR_xdr_callmsg, 1);
+ if (cmsg->rm_direction != CALL)
return (FALSE);
- }
IXDR_PUT_INT32(buf, cmsg->rm_call.cb_rpcvers);
- if (cmsg->rm_call.cb_rpcvers != RPC_MSG_VERSION) {
- trace1(TR_xdr_callmsg, 1);
+ if (cmsg->rm_call.cb_rpcvers != RPC_MSG_VERSION)
return (FALSE);
- }
IXDR_PUT_INT32(buf, cmsg->rm_call.cb_prog);
IXDR_PUT_INT32(buf, cmsg->rm_call.cb_vers);
IXDR_PUT_INT32(buf, cmsg->rm_call.cb_proc);
@@ -100,23 +80,20 @@ xdr_callmsg(xdrs, cmsg)
IXDR_PUT_ENUM(buf, oa->oa_flavor);
IXDR_PUT_INT32(buf, oa->oa_length);
if (oa->oa_length) {
- (void) memcpy((caddr_t)buf, oa->oa_base,
- oa->oa_length);
+ (void) memcpy(buf, oa->oa_base, oa->oa_length);
buf += RNDUP(oa->oa_length) / sizeof (int32_t);
}
oa = &cmsg->rm_call.cb_verf;
IXDR_PUT_ENUM(buf, oa->oa_flavor);
IXDR_PUT_INT32(buf, oa->oa_length);
if (oa->oa_length) {
- (void) memcpy((caddr_t)buf, oa->oa_base,
- oa->oa_length);
+ (void) memcpy(buf, oa->oa_base, oa->oa_length);
/*
* no real need....
* buf += RNDUP(oa->oa_length) / sizeof
* (int32_t);
*/
}
- trace1(TR_xdr_callmsg, 1);
return (TRUE);
}
}
@@ -125,15 +102,11 @@ xdr_callmsg(xdrs, cmsg)
if (buf != NULL) {
cmsg->rm_xid = IXDR_GET_INT32(buf);
cmsg->rm_direction = IXDR_GET_ENUM(buf, enum msg_type);
- if (cmsg->rm_direction != CALL) {
- trace1(TR_xdr_callmsg, 1);
+ if (cmsg->rm_direction != CALL)
return (FALSE);
- }
cmsg->rm_call.cb_rpcvers = IXDR_GET_INT32(buf);
- if (cmsg->rm_call.cb_rpcvers != RPC_MSG_VERSION) {
- trace1(TR_xdr_callmsg, 1);
+ if (cmsg->rm_call.cb_rpcvers != RPC_MSG_VERSION)
return (FALSE);
- }
cmsg->rm_call.cb_prog = IXDR_GET_INT32(buf);
cmsg->rm_call.cb_vers = IXDR_GET_INT32(buf);
cmsg->rm_call.cb_proc = IXDR_GET_INT32(buf);
@@ -141,35 +114,29 @@ xdr_callmsg(xdrs, cmsg)
oa->oa_flavor = IXDR_GET_ENUM(buf, enum_t);
oa->oa_length = IXDR_GET_INT32(buf);
if (oa->oa_length) {
- if (oa->oa_length > MAX_AUTH_BYTES) {
- trace1(TR_xdr_callmsg, 1);
+ if (oa->oa_length > MAX_AUTH_BYTES)
return (FALSE);
- }
if (oa->oa_base == NULL) {
- oa->oa_base = (caddr_t)
- mem_alloc(oa->oa_length);
+ oa->oa_base = malloc(oa->oa_length);
if (oa->oa_base == NULL) {
syslog(LOG_ERR,
"xdr_callmsg : "
"out of memory.");
- trace1(TR_xdr_callmsg, 1);
return (FALSE);
}
}
buf = XDR_INLINE(xdrs, RNDUP(oa->oa_length));
if (buf == NULL) {
if (xdr_opaque(xdrs, oa->oa_base,
- oa->oa_length) == FALSE) {
- trace1(TR_xdr_callmsg, 1);
+ oa->oa_length) == FALSE)
return (FALSE);
- }
} else {
(void) memcpy(oa->oa_base,
- (caddr_t)buf, (int)oa->oa_length);
+ buf, (size_t)oa->oa_length);
/*
* no real need....
* buf += RNDUP(oa->oa_length) /
- * (int) sizeof (int32_t);
+ * (int)sizeof (int32_t);
*/
}
}
@@ -177,64 +144,52 @@ xdr_callmsg(xdrs, cmsg)
buf = XDR_INLINE(xdrs, 2 * BYTES_PER_XDR_UNIT);
if (buf == NULL) {
if (xdr_enum(xdrs, &oa->oa_flavor) == FALSE ||
- xdr_u_int(xdrs, &oa->oa_length) == FALSE) {
- trace1(TR_xdr_callmsg, 1);
+ xdr_u_int(xdrs, &oa->oa_length) == FALSE)
return (FALSE);
- }
} else {
oa->oa_flavor = IXDR_GET_ENUM(buf, enum_t);
oa->oa_length = IXDR_GET_INT32(buf);
}
if (oa->oa_length) {
- if (oa->oa_length > MAX_AUTH_BYTES) {
- trace1(TR_xdr_callmsg, 1);
+ if (oa->oa_length > MAX_AUTH_BYTES)
return (FALSE);
- }
if (oa->oa_base == NULL) {
- oa->oa_base = (caddr_t)
- mem_alloc(oa->oa_length);
+ oa->oa_base = malloc(oa->oa_length);
if (oa->oa_base == NULL) {
syslog(LOG_ERR,
"xdr_callmsg : "
"out of memory.");
- trace1(TR_xdr_callmsg, 1);
return (FALSE);
}
}
buf = XDR_INLINE(xdrs, RNDUP(oa->oa_length));
if (buf == NULL) {
if (xdr_opaque(xdrs, oa->oa_base,
- oa->oa_length) == FALSE) {
- trace1(TR_xdr_callmsg, 1);
+ oa->oa_length) == FALSE)
return (FALSE);
- }
} else {
(void) memcpy(oa->oa_base,
- (caddr_t)buf, (int)oa->oa_length);
+ buf, (size_t)oa->oa_length);
/*
* no real need...
* buf += RNDUP(oa->oa_length) /
- * (int) sizeof (int32_t);
+ * (int)sizeof (int32_t);
*/
}
}
- trace1(TR_xdr_callmsg, 1);
return (TRUE);
}
}
if (xdr_u_int(xdrs, &(cmsg->rm_xid)) &&
xdr_enum(xdrs, (enum_t *)&(cmsg->rm_direction)) &&
(cmsg->rm_direction == CALL) &&
- xdr_u_int(xdrs, (u_int *)&(cmsg->rm_call.cb_rpcvers)) &&
+ xdr_u_int(xdrs, (uint_t *)&(cmsg->rm_call.cb_rpcvers)) &&
(cmsg->rm_call.cb_rpcvers == RPC_MSG_VERSION) &&
- xdr_u_int(xdrs, (u_int *)&(cmsg->rm_call.cb_prog)) &&
- xdr_u_int(xdrs, (u_int *)&(cmsg->rm_call.cb_vers)) &&
- xdr_u_int(xdrs, (u_int *)&(cmsg->rm_call.cb_proc)) &&
+ xdr_u_int(xdrs, (uint_t *)&(cmsg->rm_call.cb_prog)) &&
+ xdr_u_int(xdrs, (uint_t *)&(cmsg->rm_call.cb_vers)) &&
+ xdr_u_int(xdrs, (uint_t *)&(cmsg->rm_call.cb_proc)) &&
xdr_opaque_auth(xdrs, &(cmsg->rm_call.cb_cred))) {
- dummy = xdr_opaque_auth(xdrs, &(cmsg->rm_call.cb_verf));
- trace1(TR_xdr_callmsg, 1);
- return (dummy);
+ return (xdr_opaque_auth(xdrs, &(cmsg->rm_call.cb_verf)));
}
- trace1(TR_xdr_callmsg, 1);
return (FALSE);
}