1ba96d07fShrs /*-
2ba96d07fShrs * Copyright (c) 2009, Sun Microsystems, Inc.
3ba96d07fShrs * All rights reserved.
4ce0e08e2SPeter Avalos *
5ba96d07fShrs * Redistribution and use in source and binary forms, with or without
6ba96d07fShrs * modification, are permitted provided that the following conditions are met:
7ba96d07fShrs * - Redistributions of source code must retain the above copyright notice,
8ba96d07fShrs * this list of conditions and the following disclaimer.
9ba96d07fShrs * - Redistributions in binary form must reproduce the above copyright notice,
10ba96d07fShrs * this list of conditions and the following disclaimer in the documentation
11ba96d07fShrs * and/or other materials provided with the distribution.
12ba96d07fShrs * - Neither the name of Sun Microsystems, Inc. nor the names of its
13ba96d07fShrs * contributors may be used to endorse or promote products derived
14ba96d07fShrs * from this software without specific prior written permission.
15ce0e08e2SPeter Avalos *
16ba96d07fShrs * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17ba96d07fShrs * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18ba96d07fShrs * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19ba96d07fShrs * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20ba96d07fShrs * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21ba96d07fShrs * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22ba96d07fShrs * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23ba96d07fShrs * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24ba96d07fShrs * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25ba96d07fShrs * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26ba96d07fShrs * POSSIBILITY OF SUCH DAMAGE.
27ce0e08e2SPeter Avalos *
28ce0e08e2SPeter Avalos * $NetBSD: rpcb_st_xdr.c,v 1.3 2000/07/14 08:40:42 fvdl Exp $
29ce0e08e2SPeter Avalos * $FreeBSD: src/lib/libc/rpc/rpcb_st_xdr.c,v 1.4 2007/11/20 01:51:20 jb Exp $
30ce0e08e2SPeter Avalos */
31ce0e08e2SPeter Avalos /*
32ce0e08e2SPeter Avalos * Copyright 1991 Sun Microsystems, Inc.
33ce0e08e2SPeter Avalos * rpcb_stat_xdr.c
34ce0e08e2SPeter Avalos */
35ce0e08e2SPeter Avalos
36ce0e08e2SPeter Avalos /*
37ce0e08e2SPeter Avalos * This file was generated from rpcb_prot.x, but includes only those
38ce0e08e2SPeter Avalos * routines used with the rpcbind stats facility.
39ce0e08e2SPeter Avalos */
40ce0e08e2SPeter Avalos
41ce0e08e2SPeter Avalos #include "namespace.h"
42ce0e08e2SPeter Avalos #include <rpc/rpc.h>
43*65ebff40Szrj #include <rpc/rpc_com.h>
44ce0e08e2SPeter Avalos #include "un-namespace.h"
45ce0e08e2SPeter Avalos
46ce0e08e2SPeter Avalos /* Link list of all the stats about getport and getaddr */
47ce0e08e2SPeter Avalos
48ce0e08e2SPeter Avalos bool_t
xdr_rpcbs_addrlist(XDR * xdrs,rpcbs_addrlist * objp)49ce0e08e2SPeter Avalos xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp)
50ce0e08e2SPeter Avalos {
51ce0e08e2SPeter Avalos struct rpcbs_addrlist **pnext;
52ce0e08e2SPeter Avalos
53*65ebff40Szrj if (!xdr_rpcprog(xdrs, &objp->prog)) {
54ce0e08e2SPeter Avalos return (FALSE);
55ce0e08e2SPeter Avalos }
56*65ebff40Szrj if (!xdr_rpcvers(xdrs, &objp->vers)) {
57ce0e08e2SPeter Avalos return (FALSE);
58ce0e08e2SPeter Avalos }
59ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->success)) {
60ce0e08e2SPeter Avalos return (FALSE);
61ce0e08e2SPeter Avalos }
62ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->failure)) {
63ce0e08e2SPeter Avalos return (FALSE);
64ce0e08e2SPeter Avalos }
65*65ebff40Szrj if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
66ce0e08e2SPeter Avalos return (FALSE);
67ce0e08e2SPeter Avalos }
68ce0e08e2SPeter Avalos
69ce0e08e2SPeter Avalos pnext = &objp->next;
70ce0e08e2SPeter Avalos
71ce0e08e2SPeter Avalos if (!xdr_pointer(xdrs, (char **) pnext,
72ce0e08e2SPeter Avalos sizeof (rpcbs_addrlist),
73ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_addrlist)) {
74ce0e08e2SPeter Avalos return (FALSE);
75ce0e08e2SPeter Avalos }
76ce0e08e2SPeter Avalos
77ce0e08e2SPeter Avalos return (TRUE);
78ce0e08e2SPeter Avalos }
79ce0e08e2SPeter Avalos
80ce0e08e2SPeter Avalos /* Link list of all the stats about rmtcall */
81ce0e08e2SPeter Avalos
82ce0e08e2SPeter Avalos bool_t
xdr_rpcbs_rmtcalllist(XDR * xdrs,rpcbs_rmtcalllist * objp)83ce0e08e2SPeter Avalos xdr_rpcbs_rmtcalllist(XDR *xdrs, rpcbs_rmtcalllist *objp)
84ce0e08e2SPeter Avalos {
85ce0e08e2SPeter Avalos int32_t *buf;
86ce0e08e2SPeter Avalos
87ce0e08e2SPeter Avalos if (xdrs->x_op == XDR_ENCODE) {
88ce0e08e2SPeter Avalos buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
89ce0e08e2SPeter Avalos if (buf == NULL) {
90*65ebff40Szrj if (!xdr_rpcvers(xdrs, &objp->prog)) {
91ce0e08e2SPeter Avalos return (FALSE);
92ce0e08e2SPeter Avalos }
93*65ebff40Szrj if (!xdr_rpcvers(xdrs, &objp->vers)) {
94ce0e08e2SPeter Avalos return (FALSE);
95ce0e08e2SPeter Avalos }
96*65ebff40Szrj if (!xdr_rpcproc(xdrs, &objp->proc)) {
97ce0e08e2SPeter Avalos return (FALSE);
98ce0e08e2SPeter Avalos }
99ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->success)) {
100ce0e08e2SPeter Avalos return (FALSE);
101ce0e08e2SPeter Avalos }
102ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->failure)) {
103ce0e08e2SPeter Avalos return (FALSE);
104ce0e08e2SPeter Avalos }
105ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->indirect)) {
106ce0e08e2SPeter Avalos return (FALSE);
107ce0e08e2SPeter Avalos }
108ce0e08e2SPeter Avalos } else {
109ce0e08e2SPeter Avalos IXDR_PUT_U_INT32(buf, objp->prog);
110ce0e08e2SPeter Avalos IXDR_PUT_U_INT32(buf, objp->vers);
111ce0e08e2SPeter Avalos IXDR_PUT_U_INT32(buf, objp->proc);
112ce0e08e2SPeter Avalos IXDR_PUT_INT32(buf, objp->success);
113ce0e08e2SPeter Avalos IXDR_PUT_INT32(buf, objp->failure);
114ce0e08e2SPeter Avalos IXDR_PUT_INT32(buf, objp->indirect);
115ce0e08e2SPeter Avalos }
116*65ebff40Szrj if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
117ce0e08e2SPeter Avalos return (FALSE);
118ce0e08e2SPeter Avalos }
1195f873412SSascha Wildner if (!xdr_pointer(xdrs, (char **)&objp->next,
120ce0e08e2SPeter Avalos sizeof (rpcbs_rmtcalllist),
121ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
122ce0e08e2SPeter Avalos return (FALSE);
123ce0e08e2SPeter Avalos }
124ce0e08e2SPeter Avalos return (TRUE);
125ce0e08e2SPeter Avalos } else if (xdrs->x_op == XDR_DECODE) {
126ce0e08e2SPeter Avalos buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
127ce0e08e2SPeter Avalos if (buf == NULL) {
128*65ebff40Szrj if (!xdr_rpcprog(xdrs, &objp->prog)) {
129ce0e08e2SPeter Avalos return (FALSE);
130ce0e08e2SPeter Avalos }
131*65ebff40Szrj if (!xdr_rpcvers(xdrs, &objp->vers)) {
132ce0e08e2SPeter Avalos return (FALSE);
133ce0e08e2SPeter Avalos }
134*65ebff40Szrj if (!xdr_rpcproc(xdrs, &objp->proc)) {
135ce0e08e2SPeter Avalos return (FALSE);
136ce0e08e2SPeter Avalos }
137ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->success)) {
138ce0e08e2SPeter Avalos return (FALSE);
139ce0e08e2SPeter Avalos }
140ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->failure)) {
141ce0e08e2SPeter Avalos return (FALSE);
142ce0e08e2SPeter Avalos }
143ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->indirect)) {
144ce0e08e2SPeter Avalos return (FALSE);
145ce0e08e2SPeter Avalos }
146ce0e08e2SPeter Avalos } else {
147ce0e08e2SPeter Avalos objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf);
148ce0e08e2SPeter Avalos objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf);
149ce0e08e2SPeter Avalos objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf);
150ce0e08e2SPeter Avalos objp->success = (int)IXDR_GET_INT32(buf);
151ce0e08e2SPeter Avalos objp->failure = (int)IXDR_GET_INT32(buf);
152ce0e08e2SPeter Avalos objp->indirect = (int)IXDR_GET_INT32(buf);
153ce0e08e2SPeter Avalos }
154*65ebff40Szrj if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
155ce0e08e2SPeter Avalos return (FALSE);
156ce0e08e2SPeter Avalos }
1575f873412SSascha Wildner if (!xdr_pointer(xdrs, (char **)&objp->next,
158ce0e08e2SPeter Avalos sizeof (rpcbs_rmtcalllist),
159ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
160ce0e08e2SPeter Avalos return (FALSE);
161ce0e08e2SPeter Avalos }
162ce0e08e2SPeter Avalos return (TRUE);
163ce0e08e2SPeter Avalos }
164*65ebff40Szrj if (!xdr_rpcprog(xdrs, &objp->prog)) {
165ce0e08e2SPeter Avalos return (FALSE);
166ce0e08e2SPeter Avalos }
167*65ebff40Szrj if (!xdr_rpcvers(xdrs, &objp->vers)) {
168ce0e08e2SPeter Avalos return (FALSE);
169ce0e08e2SPeter Avalos }
170*65ebff40Szrj if (!xdr_rpcproc(xdrs, &objp->proc)) {
171ce0e08e2SPeter Avalos return (FALSE);
172ce0e08e2SPeter Avalos }
173ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->success)) {
174ce0e08e2SPeter Avalos return (FALSE);
175ce0e08e2SPeter Avalos }
176ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->failure)) {
177ce0e08e2SPeter Avalos return (FALSE);
178ce0e08e2SPeter Avalos }
179ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->indirect)) {
180ce0e08e2SPeter Avalos return (FALSE);
181ce0e08e2SPeter Avalos }
182*65ebff40Szrj if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
183ce0e08e2SPeter Avalos return (FALSE);
184ce0e08e2SPeter Avalos }
1855f873412SSascha Wildner if (!xdr_pointer(xdrs, (char **)&objp->next,
186ce0e08e2SPeter Avalos sizeof (rpcbs_rmtcalllist),
187ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
188ce0e08e2SPeter Avalos return (FALSE);
189ce0e08e2SPeter Avalos }
190ce0e08e2SPeter Avalos return (TRUE);
191ce0e08e2SPeter Avalos }
192ce0e08e2SPeter Avalos
193ce0e08e2SPeter Avalos bool_t
xdr_rpcbs_proc(XDR * xdrs,rpcbs_proc objp)194ce0e08e2SPeter Avalos xdr_rpcbs_proc(XDR *xdrs, rpcbs_proc objp)
195ce0e08e2SPeter Avalos {
196ce0e08e2SPeter Avalos if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC,
197ce0e08e2SPeter Avalos sizeof (int), (xdrproc_t)xdr_int)) {
198ce0e08e2SPeter Avalos return (FALSE);
199ce0e08e2SPeter Avalos }
200ce0e08e2SPeter Avalos return (TRUE);
201ce0e08e2SPeter Avalos }
202ce0e08e2SPeter Avalos
203ce0e08e2SPeter Avalos bool_t
xdr_rpcbs_addrlist_ptr(XDR * xdrs,rpcbs_addrlist_ptr * objp)204ce0e08e2SPeter Avalos xdr_rpcbs_addrlist_ptr(XDR *xdrs, rpcbs_addrlist_ptr *objp)
205ce0e08e2SPeter Avalos {
206ce0e08e2SPeter Avalos if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_addrlist),
207ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_addrlist)) {
208ce0e08e2SPeter Avalos return (FALSE);
209ce0e08e2SPeter Avalos }
210ce0e08e2SPeter Avalos return (TRUE);
211ce0e08e2SPeter Avalos }
212ce0e08e2SPeter Avalos
213ce0e08e2SPeter Avalos bool_t
xdr_rpcbs_rmtcalllist_ptr(XDR * xdrs,rpcbs_rmtcalllist_ptr * objp)214ce0e08e2SPeter Avalos xdr_rpcbs_rmtcalllist_ptr(XDR *xdrs, rpcbs_rmtcalllist_ptr *objp)
215ce0e08e2SPeter Avalos {
216ce0e08e2SPeter Avalos if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_rmtcalllist),
217ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
218ce0e08e2SPeter Avalos return (FALSE);
219ce0e08e2SPeter Avalos }
220ce0e08e2SPeter Avalos return (TRUE);
221ce0e08e2SPeter Avalos }
222ce0e08e2SPeter Avalos
223ce0e08e2SPeter Avalos bool_t
xdr_rpcb_stat(XDR * xdrs,rpcb_stat * objp)224ce0e08e2SPeter Avalos xdr_rpcb_stat(XDR *xdrs, rpcb_stat *objp)
225ce0e08e2SPeter Avalos {
226ce0e08e2SPeter Avalos
227ce0e08e2SPeter Avalos if (!xdr_rpcbs_proc(xdrs, objp->info)) {
228ce0e08e2SPeter Avalos return (FALSE);
229ce0e08e2SPeter Avalos }
230ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->setinfo)) {
231ce0e08e2SPeter Avalos return (FALSE);
232ce0e08e2SPeter Avalos }
233ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->unsetinfo)) {
234ce0e08e2SPeter Avalos return (FALSE);
235ce0e08e2SPeter Avalos }
236ce0e08e2SPeter Avalos if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) {
237ce0e08e2SPeter Avalos return (FALSE);
238ce0e08e2SPeter Avalos }
239ce0e08e2SPeter Avalos if (!xdr_rpcbs_rmtcalllist_ptr(xdrs, &objp->rmtinfo)) {
240ce0e08e2SPeter Avalos return (FALSE);
241ce0e08e2SPeter Avalos }
242ce0e08e2SPeter Avalos return (TRUE);
243ce0e08e2SPeter Avalos }
244ce0e08e2SPeter Avalos
245ce0e08e2SPeter Avalos /*
246ce0e08e2SPeter Avalos * One rpcb_stat structure is returned for each version of rpcbind
247ce0e08e2SPeter Avalos * being monitored.
248ce0e08e2SPeter Avalos */
249ce0e08e2SPeter Avalos bool_t
xdr_rpcb_stat_byvers(XDR * xdrs,rpcb_stat_byvers objp)250ce0e08e2SPeter Avalos xdr_rpcb_stat_byvers(XDR *xdrs, rpcb_stat_byvers objp)
251ce0e08e2SPeter Avalos {
252ce0e08e2SPeter Avalos if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT,
253ce0e08e2SPeter Avalos sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) {
254ce0e08e2SPeter Avalos return (FALSE);
255ce0e08e2SPeter Avalos }
256ce0e08e2SPeter Avalos return (TRUE);
257ce0e08e2SPeter Avalos }
258