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