X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=sunrpc%2Fclnt_raw.c;h=4004c6b6a8e7665af12a73ae23af532e849521ad;hb=7f00375e07b12dac02aa350327a3336a8b840460;hp=019f1bbae05f31365dda3b4a5e3bc3f3d686d59b;hpb=a5abbd3316cbfd222a87802a29a6a70e5eda5e59;p=platform%2Fupstream%2Fglibc.git diff --git a/sunrpc/clnt_raw.c b/sunrpc/clnt_raw.c index 019f1bb..4004c6b 100644 --- a/sunrpc/clnt_raw.c +++ b/sunrpc/clnt_raw.c @@ -1,40 +1,34 @@ -/* @(#)clnt_raw.c 2.2 88/08/01 4.0 RPCSRC */ /* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. + * clnt_raw.c * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * Copyright (c) 2010, Oracle America, Inc. * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * * Neither the name of the "Oracle America, Inc." nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)clnt_raw.c 1.22 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * clnt_raw.c - * - * Copyright (C) 1984, Sun Microsystems, Inc. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Memory based rpc for simple testing and timing. * Interface to create an rpc client and server in the same process. @@ -57,7 +51,11 @@ struct clntraw_private_s CLIENT client_object; XDR xdr_stream; char _raw_buf[UDPMSGSIZE]; - char mashl_callmsg[MCALL_MSG_SIZE]; + union + { + char msg[MCALL_MSG_SIZE]; + u_long rm_xid; + } mashl_callmsg; u_int mcnt; }; #ifdef _RPC_THREAD_SAFE_ @@ -111,10 +109,10 @@ clntraw_create (u_long prog, u_long vers) call_msg.rm_call.cb_rpcvers = RPC_MSG_VERSION; call_msg.rm_call.cb_prog = prog; call_msg.rm_call.cb_vers = vers; - INTUSE(xdrmem_create) (xdrs, clp->mashl_callmsg, MCALL_MSG_SIZE, XDR_ENCODE); - if (!INTUSE(xdr_callhdr) (xdrs, &call_msg)) + xdrmem_create (xdrs, clp->mashl_callmsg.msg, MCALL_MSG_SIZE, XDR_ENCODE); + if (!xdr_callhdr (xdrs, &call_msg)) { - perror (_ ("clnt_raw.c - Fatal header serialization error.")); + perror (_ ("clnt_raw.c: fatal header serialization error")); } clp->mcnt = XDR_GETPOS (xdrs); XDR_DESTROY (xdrs); @@ -122,15 +120,16 @@ clntraw_create (u_long prog, u_long vers) /* * Set xdrmem for client/server shared buffer */ - INTUSE(xdrmem_create) (xdrs, clp->_raw_buf, UDPMSGSIZE, XDR_FREE); + xdrmem_create (xdrs, clp->_raw_buf, UDPMSGSIZE, XDR_FREE); /* * create client handle */ client->cl_ops = (struct clnt_ops *) &client_ops; - client->cl_auth = INTUSE(authnone_create) (); + client->cl_auth = authnone_create (); return client; } +libc_hidden_nolink_sunrpc (clntraw_create, GLIBC_2_0) static enum clnt_stat clntraw_call (h, proc, xargs, argsp, xresults, resultsp, timeout) @@ -156,8 +155,11 @@ call_again: */ xdrs->x_op = XDR_ENCODE; XDR_SETPOS (xdrs, 0); - ((struct rpc_msg *) clp->mashl_callmsg)->rm_xid++; - if ((!XDR_PUTBYTES (xdrs, clp->mashl_callmsg, clp->mcnt)) || + /* Just checking the union definition to access rm_xid is correct. */ + if (offsetof (struct rpc_msg, rm_xid) != 0) + abort (); + clp->mashl_callmsg.rm_xid++; + if ((!XDR_PUTBYTES (xdrs, clp->mashl_callmsg.msg, clp->mcnt)) || (!XDR_PUTLONG (xdrs, (long *) &proc)) || (!AUTH_MARSHALL (h->cl_auth, xdrs)) || (!(*xargs) (xdrs, argsp))) @@ -170,7 +172,7 @@ call_again: * We have to call server input routine here because this is * all going on in one process. Yuk. */ - INTUSE(svc_getreq) (1); + svc_getreq (1); /* * get results @@ -180,7 +182,7 @@ call_again: msg.acpted_rply.ar_verf = _null_auth; msg.acpted_rply.ar_results.where = resultsp; msg.acpted_rply.ar_results.proc = xresults; - if (!INTUSE(xdr_replymsg) (xdrs, &msg)) + if (!xdr_replymsg (xdrs, &msg)) return RPC_CANTDECODERES; _seterr_reply (&msg, &error); status = error.re_status; @@ -207,7 +209,7 @@ call_again: if (msg.acpted_rply.ar_verf.oa_base != NULL) { xdrs->x_op = XDR_FREE; - (void) INTUSE(xdr_opaque_auth) (xdrs, &(msg.acpted_rply.ar_verf)); + (void) xdr_opaque_auth (xdrs, &(msg.acpted_rply.ar_verf)); } }