xref: /dflybsd-src/lib/libc/rpc/rpcb_st_xdr.c (revision ce0e08e21d42c06c0014fae6b9d27144aa5109b0)
1*ce0e08e2SPeter Avalos /*
2*ce0e08e2SPeter Avalos  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
3*ce0e08e2SPeter Avalos  * unrestricted use provided that this legend is included on all tape
4*ce0e08e2SPeter Avalos  * media and as a part of the software program in whole or part.  Users
5*ce0e08e2SPeter Avalos  * may copy or modify Sun RPC without charge, but are not authorized
6*ce0e08e2SPeter Avalos  * to license or distribute it to anyone else except as part of a product or
7*ce0e08e2SPeter Avalos  * program developed by the user.
8*ce0e08e2SPeter Avalos  *
9*ce0e08e2SPeter Avalos  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
10*ce0e08e2SPeter Avalos  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
11*ce0e08e2SPeter Avalos  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
12*ce0e08e2SPeter Avalos  *
13*ce0e08e2SPeter Avalos  * Sun RPC is provided with no support and without any obligation on the
14*ce0e08e2SPeter Avalos  * part of Sun Microsystems, Inc. to assist in its use, correction,
15*ce0e08e2SPeter Avalos  * modification or enhancement.
16*ce0e08e2SPeter Avalos  *
17*ce0e08e2SPeter Avalos  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
18*ce0e08e2SPeter Avalos  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
19*ce0e08e2SPeter Avalos  * OR ANY PART THEREOF.
20*ce0e08e2SPeter Avalos  *
21*ce0e08e2SPeter Avalos  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
22*ce0e08e2SPeter Avalos  * or profits or other special, indirect and consequential damages, even if
23*ce0e08e2SPeter Avalos  * Sun has been advised of the possibility of such damages.
24*ce0e08e2SPeter Avalos  *
25*ce0e08e2SPeter Avalos  * Sun Microsystems, Inc.
26*ce0e08e2SPeter Avalos  * 2550 Garcia Avenue
27*ce0e08e2SPeter Avalos  * Mountain View, California  94043
28*ce0e08e2SPeter Avalos  *
29*ce0e08e2SPeter Avalos  * $NetBSD: rpcb_st_xdr.c,v 1.3 2000/07/14 08:40:42 fvdl Exp $
30*ce0e08e2SPeter Avalos  * $FreeBSD: src/lib/libc/rpc/rpcb_st_xdr.c,v 1.4 2007/11/20 01:51:20 jb Exp $
31*ce0e08e2SPeter Avalos  * $DragonFly$
32*ce0e08e2SPeter Avalos  */
33*ce0e08e2SPeter Avalos /*
34*ce0e08e2SPeter Avalos  * Copyright 1991 Sun Microsystems, Inc.
35*ce0e08e2SPeter Avalos  * rpcb_stat_xdr.c
36*ce0e08e2SPeter Avalos  */
37*ce0e08e2SPeter Avalos 
38*ce0e08e2SPeter Avalos /*
39*ce0e08e2SPeter Avalos  * This file was generated from rpcb_prot.x, but includes only those
40*ce0e08e2SPeter Avalos  * routines used with the rpcbind stats facility.
41*ce0e08e2SPeter Avalos  */
42*ce0e08e2SPeter Avalos 
43*ce0e08e2SPeter Avalos #include "namespace.h"
44*ce0e08e2SPeter Avalos #include <rpc/rpc.h>
45*ce0e08e2SPeter Avalos #include "un-namespace.h"
46*ce0e08e2SPeter Avalos 
47*ce0e08e2SPeter Avalos /* Link list of all the stats about getport and getaddr */
48*ce0e08e2SPeter Avalos 
49*ce0e08e2SPeter Avalos bool_t
50*ce0e08e2SPeter Avalos xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp)
51*ce0e08e2SPeter Avalos {
52*ce0e08e2SPeter Avalos 	struct rpcbs_addrlist **pnext;
53*ce0e08e2SPeter Avalos 
54*ce0e08e2SPeter Avalos 	    if (!xdr_u_int32_t(xdrs, &objp->prog)) {
55*ce0e08e2SPeter Avalos 		return (FALSE);
56*ce0e08e2SPeter Avalos 	    }
57*ce0e08e2SPeter Avalos 	    if (!xdr_u_int32_t(xdrs, &objp->vers)) {
58*ce0e08e2SPeter Avalos 		return (FALSE);
59*ce0e08e2SPeter Avalos 	    }
60*ce0e08e2SPeter Avalos 	    if (!xdr_int(xdrs, &objp->success)) {
61*ce0e08e2SPeter Avalos 		return (FALSE);
62*ce0e08e2SPeter Avalos 	    }
63*ce0e08e2SPeter Avalos 	    if (!xdr_int(xdrs, &objp->failure)) {
64*ce0e08e2SPeter Avalos 		return (FALSE);
65*ce0e08e2SPeter Avalos 	    }
66*ce0e08e2SPeter Avalos 	    if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
67*ce0e08e2SPeter Avalos 		return (FALSE);
68*ce0e08e2SPeter Avalos 	    }
69*ce0e08e2SPeter Avalos 
70*ce0e08e2SPeter Avalos 	    pnext = &objp->next;
71*ce0e08e2SPeter Avalos 
72*ce0e08e2SPeter Avalos 	    if (!xdr_pointer(xdrs, (char **) pnext,
73*ce0e08e2SPeter Avalos 			sizeof (rpcbs_addrlist),
74*ce0e08e2SPeter Avalos 			(xdrproc_t)xdr_rpcbs_addrlist)) {
75*ce0e08e2SPeter Avalos 		return (FALSE);
76*ce0e08e2SPeter Avalos 	    }
77*ce0e08e2SPeter Avalos 
78*ce0e08e2SPeter Avalos 	return (TRUE);
79*ce0e08e2SPeter Avalos }
80*ce0e08e2SPeter Avalos 
81*ce0e08e2SPeter Avalos /* Link list of all the stats about rmtcall */
82*ce0e08e2SPeter Avalos 
83*ce0e08e2SPeter Avalos bool_t
84*ce0e08e2SPeter Avalos xdr_rpcbs_rmtcalllist(XDR *xdrs, rpcbs_rmtcalllist *objp)
85*ce0e08e2SPeter Avalos {
86*ce0e08e2SPeter Avalos 	int32_t *buf;
87*ce0e08e2SPeter Avalos 	struct rpcbs_rmtcalllist **pnext;
88*ce0e08e2SPeter Avalos 
89*ce0e08e2SPeter Avalos 	if (xdrs->x_op == XDR_ENCODE) {
90*ce0e08e2SPeter Avalos 	buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
91*ce0e08e2SPeter Avalos 	if (buf == NULL) {
92*ce0e08e2SPeter Avalos 		if (!xdr_u_int32_t(xdrs, &objp->prog)) {
93*ce0e08e2SPeter Avalos 			return (FALSE);
94*ce0e08e2SPeter Avalos 		}
95*ce0e08e2SPeter Avalos 		if (!xdr_u_int32_t(xdrs, &objp->vers)) {
96*ce0e08e2SPeter Avalos 			return (FALSE);
97*ce0e08e2SPeter Avalos 		}
98*ce0e08e2SPeter Avalos 		if (!xdr_u_int32_t(xdrs, &objp->proc)) {
99*ce0e08e2SPeter Avalos 			return (FALSE);
100*ce0e08e2SPeter Avalos 		}
101*ce0e08e2SPeter Avalos 		if (!xdr_int(xdrs, &objp->success)) {
102*ce0e08e2SPeter Avalos 			return (FALSE);
103*ce0e08e2SPeter Avalos 		}
104*ce0e08e2SPeter Avalos 		if (!xdr_int(xdrs, &objp->failure)) {
105*ce0e08e2SPeter Avalos 			return (FALSE);
106*ce0e08e2SPeter Avalos 		}
107*ce0e08e2SPeter Avalos 		if (!xdr_int(xdrs, &objp->indirect)) {
108*ce0e08e2SPeter Avalos 			return (FALSE);
109*ce0e08e2SPeter Avalos 		}
110*ce0e08e2SPeter Avalos 	} else {
111*ce0e08e2SPeter Avalos 		IXDR_PUT_U_INT32(buf, objp->prog);
112*ce0e08e2SPeter Avalos 		IXDR_PUT_U_INT32(buf, objp->vers);
113*ce0e08e2SPeter Avalos 		IXDR_PUT_U_INT32(buf, objp->proc);
114*ce0e08e2SPeter Avalos 		IXDR_PUT_INT32(buf, objp->success);
115*ce0e08e2SPeter Avalos 		IXDR_PUT_INT32(buf, objp->failure);
116*ce0e08e2SPeter Avalos 		IXDR_PUT_INT32(buf, objp->indirect);
117*ce0e08e2SPeter Avalos 	}
118*ce0e08e2SPeter Avalos 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
119*ce0e08e2SPeter Avalos 		return (FALSE);
120*ce0e08e2SPeter Avalos 	}
121*ce0e08e2SPeter Avalos 	pnext = &objp->next;
122*ce0e08e2SPeter Avalos 	if (!xdr_pointer(xdrs, (char **) pnext,
123*ce0e08e2SPeter Avalos 			sizeof (rpcbs_rmtcalllist),
124*ce0e08e2SPeter Avalos 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
125*ce0e08e2SPeter Avalos 		return (FALSE);
126*ce0e08e2SPeter Avalos 	}
127*ce0e08e2SPeter Avalos 	return (TRUE);
128*ce0e08e2SPeter Avalos 	} else if (xdrs->x_op == XDR_DECODE) {
129*ce0e08e2SPeter Avalos 	buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
130*ce0e08e2SPeter Avalos 	if (buf == NULL) {
131*ce0e08e2SPeter Avalos 		if (!xdr_u_int32_t(xdrs, &objp->prog)) {
132*ce0e08e2SPeter Avalos 			return (FALSE);
133*ce0e08e2SPeter Avalos 		}
134*ce0e08e2SPeter Avalos 		if (!xdr_u_int32_t(xdrs, &objp->vers)) {
135*ce0e08e2SPeter Avalos 			return (FALSE);
136*ce0e08e2SPeter Avalos 		}
137*ce0e08e2SPeter Avalos 		if (!xdr_u_int32_t(xdrs, &objp->proc)) {
138*ce0e08e2SPeter Avalos 			return (FALSE);
139*ce0e08e2SPeter Avalos 		}
140*ce0e08e2SPeter Avalos 		if (!xdr_int(xdrs, &objp->success)) {
141*ce0e08e2SPeter Avalos 			return (FALSE);
142*ce0e08e2SPeter Avalos 		}
143*ce0e08e2SPeter Avalos 		if (!xdr_int(xdrs, &objp->failure)) {
144*ce0e08e2SPeter Avalos 			return (FALSE);
145*ce0e08e2SPeter Avalos 		}
146*ce0e08e2SPeter Avalos 		if (!xdr_int(xdrs, &objp->indirect)) {
147*ce0e08e2SPeter Avalos 			return (FALSE);
148*ce0e08e2SPeter Avalos 		}
149*ce0e08e2SPeter Avalos 	} else {
150*ce0e08e2SPeter Avalos 		objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf);
151*ce0e08e2SPeter Avalos 		objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf);
152*ce0e08e2SPeter Avalos 		objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf);
153*ce0e08e2SPeter Avalos 		objp->success = (int)IXDR_GET_INT32(buf);
154*ce0e08e2SPeter Avalos 		objp->failure = (int)IXDR_GET_INT32(buf);
155*ce0e08e2SPeter Avalos 		objp->indirect = (int)IXDR_GET_INT32(buf);
156*ce0e08e2SPeter Avalos 	}
157*ce0e08e2SPeter Avalos 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
158*ce0e08e2SPeter Avalos 		return (FALSE);
159*ce0e08e2SPeter Avalos 	}
160*ce0e08e2SPeter Avalos 	if (!xdr_pointer(xdrs, (char **) pnext,
161*ce0e08e2SPeter Avalos 			sizeof (rpcbs_rmtcalllist),
162*ce0e08e2SPeter Avalos 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
163*ce0e08e2SPeter Avalos 		return (FALSE);
164*ce0e08e2SPeter Avalos 	}
165*ce0e08e2SPeter Avalos 	return (TRUE);
166*ce0e08e2SPeter Avalos 	}
167*ce0e08e2SPeter Avalos 	if (!xdr_u_int32_t(xdrs, &objp->prog)) {
168*ce0e08e2SPeter Avalos 		return (FALSE);
169*ce0e08e2SPeter Avalos 	}
170*ce0e08e2SPeter Avalos 	if (!xdr_u_int32_t(xdrs, &objp->vers)) {
171*ce0e08e2SPeter Avalos 		return (FALSE);
172*ce0e08e2SPeter Avalos 	}
173*ce0e08e2SPeter Avalos 	if (!xdr_u_int32_t(xdrs, &objp->proc)) {
174*ce0e08e2SPeter Avalos 		return (FALSE);
175*ce0e08e2SPeter Avalos 	}
176*ce0e08e2SPeter Avalos 	if (!xdr_int(xdrs, &objp->success)) {
177*ce0e08e2SPeter Avalos 		return (FALSE);
178*ce0e08e2SPeter Avalos 	}
179*ce0e08e2SPeter Avalos 	if (!xdr_int(xdrs, &objp->failure)) {
180*ce0e08e2SPeter Avalos 		return (FALSE);
181*ce0e08e2SPeter Avalos 	}
182*ce0e08e2SPeter Avalos 	if (!xdr_int(xdrs, &objp->indirect)) {
183*ce0e08e2SPeter Avalos 		return (FALSE);
184*ce0e08e2SPeter Avalos 	}
185*ce0e08e2SPeter Avalos 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
186*ce0e08e2SPeter Avalos 		return (FALSE);
187*ce0e08e2SPeter Avalos 	}
188*ce0e08e2SPeter Avalos 	if (!xdr_pointer(xdrs, (char **) pnext,
189*ce0e08e2SPeter Avalos 			sizeof (rpcbs_rmtcalllist),
190*ce0e08e2SPeter Avalos 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
191*ce0e08e2SPeter Avalos 		return (FALSE);
192*ce0e08e2SPeter Avalos 	}
193*ce0e08e2SPeter Avalos 	return (TRUE);
194*ce0e08e2SPeter Avalos }
195*ce0e08e2SPeter Avalos 
196*ce0e08e2SPeter Avalos bool_t
197*ce0e08e2SPeter Avalos xdr_rpcbs_proc(XDR *xdrs, rpcbs_proc objp)
198*ce0e08e2SPeter Avalos {
199*ce0e08e2SPeter Avalos 	if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC,
200*ce0e08e2SPeter Avalos 	    sizeof (int), (xdrproc_t)xdr_int)) {
201*ce0e08e2SPeter Avalos 		return (FALSE);
202*ce0e08e2SPeter Avalos 	}
203*ce0e08e2SPeter Avalos 	return (TRUE);
204*ce0e08e2SPeter Avalos }
205*ce0e08e2SPeter Avalos 
206*ce0e08e2SPeter Avalos bool_t
207*ce0e08e2SPeter Avalos xdr_rpcbs_addrlist_ptr(XDR *xdrs, rpcbs_addrlist_ptr *objp)
208*ce0e08e2SPeter Avalos {
209*ce0e08e2SPeter Avalos 	if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_addrlist),
210*ce0e08e2SPeter Avalos 			(xdrproc_t)xdr_rpcbs_addrlist)) {
211*ce0e08e2SPeter Avalos 		return (FALSE);
212*ce0e08e2SPeter Avalos 	}
213*ce0e08e2SPeter Avalos 	return (TRUE);
214*ce0e08e2SPeter Avalos }
215*ce0e08e2SPeter Avalos 
216*ce0e08e2SPeter Avalos bool_t
217*ce0e08e2SPeter Avalos xdr_rpcbs_rmtcalllist_ptr(XDR *xdrs, rpcbs_rmtcalllist_ptr *objp)
218*ce0e08e2SPeter Avalos {
219*ce0e08e2SPeter Avalos 	if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_rmtcalllist),
220*ce0e08e2SPeter Avalos 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
221*ce0e08e2SPeter Avalos 		return (FALSE);
222*ce0e08e2SPeter Avalos 	}
223*ce0e08e2SPeter Avalos 	return (TRUE);
224*ce0e08e2SPeter Avalos }
225*ce0e08e2SPeter Avalos 
226*ce0e08e2SPeter Avalos bool_t
227*ce0e08e2SPeter Avalos xdr_rpcb_stat(XDR *xdrs, rpcb_stat *objp)
228*ce0e08e2SPeter Avalos {
229*ce0e08e2SPeter Avalos 
230*ce0e08e2SPeter Avalos 	if (!xdr_rpcbs_proc(xdrs, objp->info)) {
231*ce0e08e2SPeter Avalos 		return (FALSE);
232*ce0e08e2SPeter Avalos 	}
233*ce0e08e2SPeter Avalos 	if (!xdr_int(xdrs, &objp->setinfo)) {
234*ce0e08e2SPeter Avalos 		return (FALSE);
235*ce0e08e2SPeter Avalos 	}
236*ce0e08e2SPeter Avalos 	if (!xdr_int(xdrs, &objp->unsetinfo)) {
237*ce0e08e2SPeter Avalos 		return (FALSE);
238*ce0e08e2SPeter Avalos 	}
239*ce0e08e2SPeter Avalos 	if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) {
240*ce0e08e2SPeter Avalos 		return (FALSE);
241*ce0e08e2SPeter Avalos 	}
242*ce0e08e2SPeter Avalos 	if (!xdr_rpcbs_rmtcalllist_ptr(xdrs, &objp->rmtinfo)) {
243*ce0e08e2SPeter Avalos 		return (FALSE);
244*ce0e08e2SPeter Avalos 	}
245*ce0e08e2SPeter Avalos 	return (TRUE);
246*ce0e08e2SPeter Avalos }
247*ce0e08e2SPeter Avalos 
248*ce0e08e2SPeter Avalos /*
249*ce0e08e2SPeter Avalos  * One rpcb_stat structure is returned for each version of rpcbind
250*ce0e08e2SPeter Avalos  * being monitored.
251*ce0e08e2SPeter Avalos  */
252*ce0e08e2SPeter Avalos bool_t
253*ce0e08e2SPeter Avalos xdr_rpcb_stat_byvers(XDR *xdrs, rpcb_stat_byvers objp)
254*ce0e08e2SPeter Avalos {
255*ce0e08e2SPeter Avalos 	if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT,
256*ce0e08e2SPeter Avalos 	    sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) {
257*ce0e08e2SPeter Avalos 		return (FALSE);
258*ce0e08e2SPeter Avalos 	}
259*ce0e08e2SPeter Avalos 	return (TRUE);
260*ce0e08e2SPeter Avalos }
261