rpcb_st_xdr.c revision 1.4 1 /* $NetBSD: rpcb_st_xdr.c,v 1.4 2001/01/04 14:42:21 lukem 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 "namespace.h"
42 #include <rpc/rpc.h>
43
44 #include <assert.h>
45
46 /* Link list of all the stats about getport and getaddr */
47
48 #ifdef __weak_alias
49 __weak_alias(xdr_rpcbs_addrlist,_xdr_rpcbs_addrlist)
50 __weak_alias(xdr_rpcbs_rmtcalllist,_xdr_rpcbs_rmtcalllist)
51 __weak_alias(xdr_rpcbs_proc,_xdr_rpcbs_proc)
52 __weak_alias(xdr_rpcbs_addrlist_ptr,_xdr_rpcbs_addrlist_ptr)
53 __weak_alias(xdr_rpcbs_rmtcalllist_ptr,_xdr_rpcbs_rmtcalllist_ptr)
54 __weak_alias(xdr_rpcb_stat,_xdr_rpcb_stat)
55 __weak_alias(xdr_rpcb_stat_byvers,_xdr_rpcb_stat_byvers)
56 #endif
57
58 bool_t
59 xdr_rpcbs_addrlist(xdrs, objp)
60 XDR *xdrs;
61 rpcbs_addrlist *objp;
62 {
63
64 _DIAGASSERT(objp != NULL);
65
66 if (!xdr_u_int32_t(xdrs, &objp->prog)) {
67 return (FALSE);
68 }
69 if (!xdr_u_int32_t(xdrs, &objp->vers)) {
70 return (FALSE);
71 }
72 if (!xdr_int(xdrs, &objp->success)) {
73 return (FALSE);
74 }
75 if (!xdr_int(xdrs, &objp->failure)) {
76 return (FALSE);
77 }
78 if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
79 return (FALSE);
80 }
81
82 if (!xdr_pointer(xdrs, (char **)&objp->next,
83 sizeof (rpcbs_addrlist),
84 (xdrproc_t)xdr_rpcbs_addrlist)) {
85 return (FALSE);
86 }
87
88 return (TRUE);
89 }
90
91 /* Link list of all the stats about rmtcall */
92
93 bool_t
94 xdr_rpcbs_rmtcalllist(xdrs, objp)
95 XDR *xdrs;
96 rpcbs_rmtcalllist *objp;
97 {
98 int32_t *buf;
99
100 _DIAGASSERT(xdrs != NULL);
101 _DIAGASSERT(objp != NULL);
102
103 if (xdrs->x_op == XDR_ENCODE) {
104 buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
105 if (buf == NULL) {
106 if (!xdr_u_int32_t(xdrs, &objp->prog)) {
107 return (FALSE);
108 }
109 if (!xdr_u_int32_t(xdrs, &objp->vers)) {
110 return (FALSE);
111 }
112 if (!xdr_u_int32_t(xdrs, &objp->proc)) {
113 return (FALSE);
114 }
115 if (!xdr_int(xdrs, &objp->success)) {
116 return (FALSE);
117 }
118 if (!xdr_int(xdrs, &objp->failure)) {
119 return (FALSE);
120 }
121 if (!xdr_int(xdrs, &objp->indirect)) {
122 return (FALSE);
123 }
124 } else {
125 IXDR_PUT_U_INT32(buf, objp->prog);
126 IXDR_PUT_U_INT32(buf, objp->vers);
127 IXDR_PUT_U_INT32(buf, objp->proc);
128 IXDR_PUT_INT32(buf, objp->success);
129 IXDR_PUT_INT32(buf, objp->failure);
130 IXDR_PUT_INT32(buf, objp->indirect);
131 }
132 if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
133 return (FALSE);
134 }
135 if (!xdr_pointer(xdrs, (char **)&objp->next,
136 sizeof (rpcbs_rmtcalllist),
137 (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
138 return (FALSE);
139 }
140 return (TRUE);
141 } else if (xdrs->x_op == XDR_DECODE) {
142 buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
143 if (buf == NULL) {
144 if (!xdr_u_int32_t(xdrs, &objp->prog)) {
145 return (FALSE);
146 }
147 if (!xdr_u_int32_t(xdrs, &objp->vers)) {
148 return (FALSE);
149 }
150 if (!xdr_u_int32_t(xdrs, &objp->proc)) {
151 return (FALSE);
152 }
153 if (!xdr_int(xdrs, &objp->success)) {
154 return (FALSE);
155 }
156 if (!xdr_int(xdrs, &objp->failure)) {
157 return (FALSE);
158 }
159 if (!xdr_int(xdrs, &objp->indirect)) {
160 return (FALSE);
161 }
162 } else {
163 objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf);
164 objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf);
165 objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf);
166 objp->success = (int)IXDR_GET_INT32(buf);
167 objp->failure = (int)IXDR_GET_INT32(buf);
168 objp->indirect = (int)IXDR_GET_INT32(buf);
169 }
170 if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
171 return (FALSE);
172 }
173 if (!xdr_pointer(xdrs, (char **)&objp->next,
174 sizeof (rpcbs_rmtcalllist),
175 (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
176 return (FALSE);
177 }
178 return (TRUE);
179 }
180 if (!xdr_u_int32_t(xdrs, &objp->prog)) {
181 return (FALSE);
182 }
183 if (!xdr_u_int32_t(xdrs, &objp->vers)) {
184 return (FALSE);
185 }
186 if (!xdr_u_int32_t(xdrs, &objp->proc)) {
187 return (FALSE);
188 }
189 if (!xdr_int(xdrs, &objp->success)) {
190 return (FALSE);
191 }
192 if (!xdr_int(xdrs, &objp->failure)) {
193 return (FALSE);
194 }
195 if (!xdr_int(xdrs, &objp->indirect)) {
196 return (FALSE);
197 }
198 if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
199 return (FALSE);
200 }
201 if (!xdr_pointer(xdrs, (char **)&objp->next,
202 sizeof (rpcbs_rmtcalllist),
203 (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
204 return (FALSE);
205 }
206 return (TRUE);
207 }
208
209 bool_t
210 xdr_rpcbs_proc(xdrs, objp)
211 XDR *xdrs;
212 rpcbs_proc objp;
213 {
214 if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC,
215 sizeof (int), (xdrproc_t)xdr_int)) {
216 return (FALSE);
217 }
218 return (TRUE);
219 }
220
221 bool_t
222 xdr_rpcbs_addrlist_ptr(xdrs, objp)
223 XDR *xdrs;
224 rpcbs_addrlist_ptr *objp;
225 {
226 if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_addrlist),
227 (xdrproc_t)xdr_rpcbs_addrlist)) {
228 return (FALSE);
229 }
230 return (TRUE);
231 }
232
233 bool_t
234 xdr_rpcbs_rmtcalllist_ptr(xdrs, objp)
235 XDR *xdrs;
236 rpcbs_rmtcalllist_ptr *objp;
237 {
238 if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_rmtcalllist),
239 (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
240 return (FALSE);
241 }
242 return (TRUE);
243 }
244
245 bool_t
246 xdr_rpcb_stat(xdrs, objp)
247 XDR *xdrs;
248 rpcb_stat *objp;
249 {
250
251 _DIAGASSERT(objp != NULL);
252
253 if (!xdr_rpcbs_proc(xdrs, objp->info)) {
254 return (FALSE);
255 }
256 if (!xdr_int(xdrs, &objp->setinfo)) {
257 return (FALSE);
258 }
259 if (!xdr_int(xdrs, &objp->unsetinfo)) {
260 return (FALSE);
261 }
262 if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) {
263 return (FALSE);
264 }
265 return (TRUE);
266 }
267
268 /*
269 * One rpcb_stat structure is returned for each version of rpcbind
270 * being monitored.
271 */
272 bool_t
273 xdr_rpcb_stat_byvers(xdrs, objp)
274 XDR *xdrs;
275 rpcb_stat_byvers objp;
276 {
277 if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT,
278 sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) {
279 return (FALSE);
280 }
281 return (TRUE);
282 }
283