xref: /dflybsd-src/lib/libc/rpc/rpcb_st_xdr.c (revision 5f873412dec021a3cdff0f7ac7390cde47fdae53)
1ce0e08e2SPeter Avalos /*
2ce0e08e2SPeter Avalos  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
3ce0e08e2SPeter Avalos  * unrestricted use provided that this legend is included on all tape
4ce0e08e2SPeter Avalos  * media and as a part of the software program in whole or part.  Users
5ce0e08e2SPeter Avalos  * may copy or modify Sun RPC without charge, but are not authorized
6ce0e08e2SPeter Avalos  * to license or distribute it to anyone else except as part of a product or
7ce0e08e2SPeter Avalos  * program developed by the user.
8ce0e08e2SPeter Avalos  *
9ce0e08e2SPeter Avalos  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
10ce0e08e2SPeter Avalos  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
11ce0e08e2SPeter Avalos  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
12ce0e08e2SPeter Avalos  *
13ce0e08e2SPeter Avalos  * Sun RPC is provided with no support and without any obligation on the
14ce0e08e2SPeter Avalos  * part of Sun Microsystems, Inc. to assist in its use, correction,
15ce0e08e2SPeter Avalos  * modification or enhancement.
16ce0e08e2SPeter Avalos  *
17ce0e08e2SPeter Avalos  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
18ce0e08e2SPeter Avalos  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
19ce0e08e2SPeter Avalos  * OR ANY PART THEREOF.
20ce0e08e2SPeter Avalos  *
21ce0e08e2SPeter Avalos  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
22ce0e08e2SPeter Avalos  * or profits or other special, indirect and consequential damages, even if
23ce0e08e2SPeter Avalos  * Sun has been advised of the possibility of such damages.
24ce0e08e2SPeter Avalos  *
25ce0e08e2SPeter Avalos  * Sun Microsystems, Inc.
26ce0e08e2SPeter Avalos  * 2550 Garcia Avenue
27ce0e08e2SPeter Avalos  * Mountain View, California  94043
28ce0e08e2SPeter Avalos  *
29ce0e08e2SPeter Avalos  * $NetBSD: rpcb_st_xdr.c,v 1.3 2000/07/14 08:40:42 fvdl Exp $
30ce0e08e2SPeter Avalos  * $FreeBSD: src/lib/libc/rpc/rpcb_st_xdr.c,v 1.4 2007/11/20 01:51:20 jb Exp $
31ce0e08e2SPeter Avalos  */
32ce0e08e2SPeter Avalos /*
33ce0e08e2SPeter Avalos  * Copyright 1991 Sun Microsystems, Inc.
34ce0e08e2SPeter Avalos  * rpcb_stat_xdr.c
35ce0e08e2SPeter Avalos  */
36ce0e08e2SPeter Avalos 
37ce0e08e2SPeter Avalos /*
38ce0e08e2SPeter Avalos  * This file was generated from rpcb_prot.x, but includes only those
39ce0e08e2SPeter Avalos  * routines used with the rpcbind stats facility.
40ce0e08e2SPeter Avalos  */
41ce0e08e2SPeter Avalos 
42ce0e08e2SPeter Avalos #include "namespace.h"
43ce0e08e2SPeter Avalos #include <rpc/rpc.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
49ce0e08e2SPeter Avalos xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp)
50ce0e08e2SPeter Avalos {
51ce0e08e2SPeter Avalos 	struct rpcbs_addrlist **pnext;
52ce0e08e2SPeter Avalos 
53ce0e08e2SPeter Avalos 	if (!xdr_u_int32_t(xdrs, &objp->prog)) {
54ce0e08e2SPeter Avalos 		return (FALSE);
55ce0e08e2SPeter Avalos 	}
56ce0e08e2SPeter Avalos 	if (!xdr_u_int32_t(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 	}
65ce0e08e2SPeter Avalos 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
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
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) {
90ce0e08e2SPeter Avalos 			if (!xdr_u_int32_t(xdrs, &objp->prog)) {
91ce0e08e2SPeter Avalos 				return (FALSE);
92ce0e08e2SPeter Avalos 			}
93ce0e08e2SPeter Avalos 			if (!xdr_u_int32_t(xdrs, &objp->vers)) {
94ce0e08e2SPeter Avalos 				return (FALSE);
95ce0e08e2SPeter Avalos 			}
96ce0e08e2SPeter Avalos 			if (!xdr_u_int32_t(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 		}
116ce0e08e2SPeter Avalos 		if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
117ce0e08e2SPeter Avalos 			return (FALSE);
118ce0e08e2SPeter Avalos 		}
119*5f873412SSascha 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) {
128ce0e08e2SPeter Avalos 			if (!xdr_u_int32_t(xdrs, &objp->prog)) {
129ce0e08e2SPeter Avalos 				return (FALSE);
130ce0e08e2SPeter Avalos 			}
131ce0e08e2SPeter Avalos 			if (!xdr_u_int32_t(xdrs, &objp->vers)) {
132ce0e08e2SPeter Avalos 				return (FALSE);
133ce0e08e2SPeter Avalos 			}
134ce0e08e2SPeter Avalos 			if (!xdr_u_int32_t(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 		}
154ce0e08e2SPeter Avalos 		if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
155ce0e08e2SPeter Avalos 			return (FALSE);
156ce0e08e2SPeter Avalos 		}
157*5f873412SSascha 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 	}
164ce0e08e2SPeter Avalos 	if (!xdr_u_int32_t(xdrs, &objp->prog)) {
165ce0e08e2SPeter Avalos 		return (FALSE);
166ce0e08e2SPeter Avalos 	}
167ce0e08e2SPeter Avalos 	if (!xdr_u_int32_t(xdrs, &objp->vers)) {
168ce0e08e2SPeter Avalos 		return (FALSE);
169ce0e08e2SPeter Avalos 	}
170ce0e08e2SPeter Avalos 	if (!xdr_u_int32_t(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 	}
182ce0e08e2SPeter Avalos 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
183ce0e08e2SPeter Avalos 		return (FALSE);
184ce0e08e2SPeter Avalos 	}
185*5f873412SSascha 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
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
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
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
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
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