svid_funcs.c revision 1219:f89f56c2d9ac
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22
23/*
24 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
25 * Use is subject to license terms.
26 */
27
28#pragma ident	"%Z%%M%	%I%	%E% SMI"
29
30/*
31 *	These functions are documented in the SVID as being part of libnsl.
32 *	They are also defined as macros in various RPC header files.  To
33 *	ensure that these interfaces exist as functions, we've created this
34 *	(we hope unused) file.
35 */
36
37#include "mt.h"
38#include <rpc/rpc.h>
39#include <sys/types.h>
40#include <synch.h>
41
42#undef	auth_destroy
43#undef	clnt_call
44#undef  clnt_send
45#undef	clnt_control
46#undef	clnt_destroy
47#undef	clnt_freeres
48#undef	clnt_geterr
49#undef	svc_destroy
50#undef	svc_freeargs
51#undef	svc_getargs
52#undef	svc_getrpccaller
53#undef	xdr_destroy
54#undef	xdr_getpos
55#undef	xdr_inline
56#undef	xdr_setpos
57
58extern int __svc_versquiet_get();
59extern void __svc_versquiet_off();
60extern void __svc_versquiet_on();
61
62void
63auth_destroy(AUTH *auth)
64{
65	((*((auth)->ah_ops->ah_destroy))(auth));
66}
67
68enum clnt_stat
69clnt_call(CLIENT *cl, uint32_t proc, xdrproc_t xargs, caddr_t argsp,
70			xdrproc_t xres, caddr_t resp, struct timeval timeout)
71{
72	return ((*(cl)->cl_ops->cl_call)(cl, proc, xargs, argsp, xres, resp,
73		timeout));
74}
75
76enum clnt_stat
77clnt_send(CLIENT *cl, uint32_t proc, xdrproc_t xargs, caddr_t argsp)
78{
79	return ((*(cl)->cl_ops->cl_send)(cl, proc, xargs, argsp));
80}
81
82bool_t
83clnt_control(CLIENT *cl, uint_t rq, char *in)
84{
85	return ((*(cl)->cl_ops->cl_control)(cl, rq, in));
86}
87
88void
89clnt_destroy(CLIENT *cl)
90{
91	((*(cl)->cl_ops->cl_destroy)(cl));
92}
93
94bool_t
95clnt_freeres(CLIENT *cl, xdrproc_t xres, caddr_t resp)
96{
97	return ((*(cl)->cl_ops->cl_freeres)(cl, xres, resp));
98}
99
100void
101clnt_geterr(CLIENT *cl, struct rpc_err *errp)
102{
103	(*(cl)->cl_ops->cl_geterr)(cl, errp);
104}
105
106bool_t
107svc_control(SVCXPRT *xprt, const uint_t rq, void *in)
108{
109	switch (rq) {
110	case SVCGET_VERSQUIET:
111		*((int *)in) = __svc_versquiet_get(xprt);
112		return (TRUE);
113	case SVCSET_VERSQUIET:
114		if (*((int *)in) == 0)
115			__svc_versquiet_off(xprt);
116		else
117			__svc_versquiet_on(xprt);
118		return (TRUE);
119	default:
120		return ((*(xprt)->xp_ops->xp_control)(xprt, rq, in));
121	}
122}
123
124void
125svc_destroy(SVCXPRT *xprt)
126{
127	(*(xprt)->xp_ops->xp_destroy)(xprt);
128}
129
130bool_t
131svc_freeargs(SVCXPRT *xprt, xdrproc_t xargs, char *argsp)
132{
133	return ((*(xprt)->xp_ops->xp_freeargs)(xprt, xargs, argsp));
134}
135
136bool_t
137svc_getargs(SVCXPRT *xprt, xdrproc_t xargs, char *argsp)
138{
139	return ((*(xprt)->xp_ops->xp_getargs)(xprt, xargs, argsp));
140}
141
142struct netbuf *
143svc_getrpccaller(SVCXPRT *xprt)
144{
145	return (&(xprt)->xp_rtaddr);
146}
147
148void
149xdr_destroy(XDR *xdrs)
150{
151	(*(xdrs)->x_ops->x_destroy)(xdrs);
152}
153
154uint_t
155xdr_getpos(XDR *xdrs)
156{
157	return ((*(xdrs)->x_ops->x_getpostn)(xdrs));
158}
159
160rpc_inline_t *
161xdr_inline(XDR *xdrs, int len)
162{
163	return ((*(xdrs)->x_ops->x_inline)(xdrs, len));
164}
165
166bool_t
167xdr_setpos(XDR *xdrs, uint_t pos)
168{
169	return ((*(xdrs)->x_ops->x_setpostn)(xdrs, pos));
170}
171