xref: /dflybsd-src/lib/libc/rpc/rpcb_st_xdr.c (revision 65ebff40bad065cba7ef5daf1c3c241e91d349af)
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