rpcb_st_xdr.c revision 1.7.46.1 1 /* $NetBSD: rpcb_st_xdr.c,v 1.7.46.1 2013/03/14 22:03:09 riz Exp $ */
2
3 /*
4 * Copyright (c) 2010, Oracle America, Inc.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials
15 * provided with the distribution.
16 * * Neither the name of the "Oracle America, Inc." nor the names of its
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
25 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
27 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33 /*
34 * Copyright 1991 Sun Microsystems, Inc.
35 * rpcb_stat_xdr.c
36 */
37
38 /*
39 * This file was generated from rpcb_prot.x, but includes only those
40 * routines used with the rpcbind stats facility.
41 */
42
43 #include <sys/cdefs.h>
44 #if defined(LIBC_SCCS) && !defined(lint)
45 __RCSID("$NetBSD: rpcb_st_xdr.c,v 1.7.46.1 2013/03/14 22:03:09 riz Exp $");
46 #endif
47
48 #include "namespace.h"
49 #include <rpc/rpc.h>
50
51 #include <assert.h>
52
53 /* Link list of all the stats about getport and getaddr */
54
55 #ifdef __weak_alias
56 __weak_alias(xdr_rpcbs_addrlist,_xdr_rpcbs_addrlist)
57 __weak_alias(xdr_rpcbs_rmtcalllist,_xdr_rpcbs_rmtcalllist)
58 __weak_alias(xdr_rpcbs_proc,_xdr_rpcbs_proc)
59 __weak_alias(xdr_rpcbs_addrlist_ptr,_xdr_rpcbs_addrlist_ptr)
60 __weak_alias(xdr_rpcbs_rmtcalllist_ptr,_xdr_rpcbs_rmtcalllist_ptr)
61 __weak_alias(xdr_rpcb_stat,_xdr_rpcb_stat)
62 __weak_alias(xdr_rpcb_stat_byvers,_xdr_rpcb_stat_byvers)
63 #endif
64
65 bool_t
66 xdr_rpcbs_addrlist(xdrs, objp)
67 XDR *xdrs;
68 rpcbs_addrlist *objp;
69 {
70
71 _DIAGASSERT(objp != NULL);
72
73 if (!xdr_u_int32_t(xdrs, &objp->prog)) {
74 return (FALSE);
75 }
76 if (!xdr_u_int32_t(xdrs, &objp->vers)) {
77 return (FALSE);
78 }
79 if (!xdr_int(xdrs, &objp->success)) {
80 return (FALSE);
81 }
82 if (!xdr_int(xdrs, &objp->failure)) {
83 return (FALSE);
84 }
85 if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
86 return (FALSE);
87 }
88
89 if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
90 sizeof (rpcbs_addrlist),
91 (xdrproc_t)xdr_rpcbs_addrlist)) {
92 return (FALSE);
93 }
94
95 return (TRUE);
96 }
97
98 /* Link list of all the stats about rmtcall */
99
100 bool_t
101 xdr_rpcbs_rmtcalllist(xdrs, objp)
102 XDR *xdrs;
103 rpcbs_rmtcalllist *objp;
104 {
105 int32_t *buf;
106
107 _DIAGASSERT(xdrs != NULL);
108 _DIAGASSERT(objp != NULL);
109
110 if (xdrs->x_op == XDR_ENCODE) {
111 buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
112 if (buf == NULL) {
113 if (!xdr_u_int32_t(xdrs, &objp->prog)) {
114 return (FALSE);
115 }
116 if (!xdr_u_int32_t(xdrs, &objp->vers)) {
117 return (FALSE);
118 }
119 if (!xdr_u_int32_t(xdrs, &objp->proc)) {
120 return (FALSE);
121 }
122 if (!xdr_int(xdrs, &objp->success)) {
123 return (FALSE);
124 }
125 if (!xdr_int(xdrs, &objp->failure)) {
126 return (FALSE);
127 }
128 if (!xdr_int(xdrs, &objp->indirect)) {
129 return (FALSE);
130 }
131 } else {
132 IXDR_PUT_U_INT32(buf, objp->prog);
133 IXDR_PUT_U_INT32(buf, objp->vers);
134 IXDR_PUT_U_INT32(buf, objp->proc);
135 IXDR_PUT_INT32(buf, objp->success);
136 IXDR_PUT_INT32(buf, objp->failure);
137 IXDR_PUT_INT32(buf, objp->indirect);
138 }
139 if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
140 return (FALSE);
141 }
142 if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
143 sizeof (rpcbs_rmtcalllist),
144 (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
145 return (FALSE);
146 }
147 return (TRUE);
148 } else if (xdrs->x_op == XDR_DECODE) {
149 buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
150 if (buf == NULL) {
151 if (!xdr_u_int32_t(xdrs, &objp->prog)) {
152 return (FALSE);
153 }
154 if (!xdr_u_int32_t(xdrs, &objp->vers)) {
155 return (FALSE);
156 }
157 if (!xdr_u_int32_t(xdrs, &objp->proc)) {
158 return (FALSE);
159 }
160 if (!xdr_int(xdrs, &objp->success)) {
161 return (FALSE);
162 }
163 if (!xdr_int(xdrs, &objp->failure)) {
164 return (FALSE);
165 }
166 if (!xdr_int(xdrs, &objp->indirect)) {
167 return (FALSE);
168 }
169 } else {
170 objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf);
171 objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf);
172 objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf);
173 objp->success = (int)IXDR_GET_INT32(buf);
174 objp->failure = (int)IXDR_GET_INT32(buf);
175 objp->indirect = (int)IXDR_GET_INT32(buf);
176 }
177 if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
178 return (FALSE);
179 }
180 if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
181 sizeof (rpcbs_rmtcalllist),
182 (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
183 return (FALSE);
184 }
185 return (TRUE);
186 }
187 if (!xdr_u_int32_t(xdrs, &objp->prog)) {
188 return (FALSE);
189 }
190 if (!xdr_u_int32_t(xdrs, &objp->vers)) {
191 return (FALSE);
192 }
193 if (!xdr_u_int32_t(xdrs, &objp->proc)) {
194 return (FALSE);
195 }
196 if (!xdr_int(xdrs, &objp->success)) {
197 return (FALSE);
198 }
199 if (!xdr_int(xdrs, &objp->failure)) {
200 return (FALSE);
201 }
202 if (!xdr_int(xdrs, &objp->indirect)) {
203 return (FALSE);
204 }
205 if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
206 return (FALSE);
207 }
208 if (!xdr_pointer(xdrs, (char **)(void *)&objp->next,
209 sizeof (rpcbs_rmtcalllist),
210 (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
211 return (FALSE);
212 }
213 return (TRUE);
214 }
215
216 bool_t
217 xdr_rpcbs_proc(xdrs, objp)
218 XDR *xdrs;
219 rpcbs_proc objp;
220 {
221 if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC,
222 sizeof (int), (xdrproc_t)xdr_int)) {
223 return (FALSE);
224 }
225 return (TRUE);
226 }
227
228 bool_t
229 xdr_rpcbs_addrlist_ptr(xdrs, objp)
230 XDR *xdrs;
231 rpcbs_addrlist_ptr *objp;
232 {
233 if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_addrlist),
234 (xdrproc_t)xdr_rpcbs_addrlist)) {
235 return (FALSE);
236 }
237 return (TRUE);
238 }
239
240 bool_t
241 xdr_rpcbs_rmtcalllist_ptr(xdrs, objp)
242 XDR *xdrs;
243 rpcbs_rmtcalllist_ptr *objp;
244 {
245 if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_rmtcalllist),
246 (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
247 return (FALSE);
248 }
249 return (TRUE);
250 }
251
252 bool_t
253 xdr_rpcb_stat(xdrs, objp)
254 XDR *xdrs;
255 rpcb_stat *objp;
256 {
257
258 _DIAGASSERT(objp != NULL);
259
260 if (!xdr_rpcbs_proc(xdrs, objp->info)) {
261 return (FALSE);
262 }
263 if (!xdr_int(xdrs, &objp->setinfo)) {
264 return (FALSE);
265 }
266 if (!xdr_int(xdrs, &objp->unsetinfo)) {
267 return (FALSE);
268 }
269 if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) {
270 return (FALSE);
271 }
272 return (TRUE);
273 }
274
275 /*
276 * One rpcb_stat structure is returned for each version of rpcbind
277 * being monitored.
278 */
279 bool_t
280 xdr_rpcb_stat_byvers(xdrs, objp)
281 XDR *xdrs;
282 rpcb_stat_byvers objp;
283 {
284 if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT,
285 sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) {
286 return (FALSE);
287 }
288 return (TRUE);
289 }
290