1/*	$NetBSD: amq_xdr.c,v 1.2 2022/08/23 07:42:28 christos Exp $	*/
2
3/*
4 * Copyright (c) 1997-2014 Erez Zadok
5 * Copyright (c) 1990 Jan-Simon Pendry
6 * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
7 * Copyright (c) 1990 The Regents of the University of California.
8 * All rights reserved.
9 *
10 * This code is derived from software contributed to Berkeley by
11 * Jan-Simon Pendry at Imperial College, London.
12 *
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
16 * 1. Redistributions of source code must retain the above copyright
17 *    notice, this list of conditions and the following disclaimer.
18 * 2. Redistributions in binary form must reproduce the above copyright
19 *    notice, this list of conditions and the following disclaimer in the
20 *    documentation and/or other materials provided with the distribution.
21 * 3. Neither the name of the University nor the names of its contributors
22 *    may be used to endorse or promote products derived from this software
23 *    without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 * SUCH DAMAGE.
36 *
37 *
38 * File: am-utils/amq/amq_xdr.c
39 *
40 */
41
42#ifdef HAVE_CONFIG_H
43# include <config.h>
44#endif /* HAVE_CONFIG_H */
45#include <am_defs.h>
46#include <amq.h>
47
48
49bool_t
50xdr_time_type(XDR *xdrs, time_type *objp)
51{
52  if (!xdr_longlong_t(xdrs, (longlong_t *) objp)) {
53    return (FALSE);
54  }
55  return (TRUE);
56}
57
58
59bool_t
60xdr_amq_mount_tree(XDR *xdrs, amq_mount_tree *objp)
61{
62
63  if (!xdr_amq_string(xdrs, &objp->mt_mountinfo)) {
64    return (FALSE);
65  }
66
67  if (!xdr_amq_string(xdrs, &objp->mt_directory)) {
68    return (FALSE);
69  }
70
71  if (!xdr_amq_string(xdrs, &objp->mt_mountpoint)) {
72    return (FALSE);
73  }
74
75  if (!xdr_amq_string(xdrs, &objp->mt_type)) {
76    return (FALSE);
77  }
78
79  if (!xdr_time_type(xdrs, &objp->mt_mounttime)) {
80    return (FALSE);
81  }
82
83  if (!xdr_u_short(xdrs, &objp->mt_mountuid)) {
84    return (FALSE);
85  }
86
87  if (!xdr_int(xdrs, &objp->mt_getattr)) {
88    return (FALSE);
89  }
90
91  if (!xdr_int(xdrs, &objp->mt_lookup)) {
92    return (FALSE);
93  }
94
95  if (!xdr_int(xdrs, &objp->mt_readdir)) {
96    return (FALSE);
97  }
98
99  if (!xdr_int(xdrs, &objp->mt_readlink)) {
100    return (FALSE);
101  }
102
103  if (!xdr_int(xdrs, &objp->mt_statfs)) {
104    return (FALSE);
105  }
106
107  if (!xdr_pointer(xdrs,
108		   (char **) ((voidp) &objp->mt_next),
109		   sizeof(amq_mount_tree),
110		   (XDRPROC_T_TYPE) xdr_amq_mount_tree)) {
111    return (FALSE);
112  }
113
114  if (!xdr_pointer(xdrs,
115		   (char **) ((voidp) &objp->mt_child),
116		   sizeof(amq_mount_tree),
117		   (XDRPROC_T_TYPE) xdr_amq_mount_tree)) {
118    return (FALSE);
119  }
120
121  return (TRUE);
122}
123
124
125bool_t
126xdr_amq_mount_tree_p(XDR *xdrs, amq_mount_tree_p *objp)
127{
128  if (!xdr_pointer(xdrs,
129		   (char **) objp,
130		   sizeof(amq_mount_tree),
131		   (XDRPROC_T_TYPE) xdr_amq_mount_tree)) {
132    return (FALSE);
133  }
134  return (TRUE);
135}
136
137
138bool_t
139xdr_amq_mount_info(XDR *xdrs, amq_mount_info *objp)
140{
141
142  if (!xdr_amq_string(xdrs, &objp->mi_type)) {
143    return (FALSE);
144  }
145
146  if (!xdr_amq_string(xdrs, &objp->mi_mountpt)) {
147    return (FALSE);
148  }
149
150  if (!xdr_amq_string(xdrs, &objp->mi_mountinfo)) {
151    return (FALSE);
152  }
153
154  if (!xdr_amq_string(xdrs, &objp->mi_fserver)) {
155    return (FALSE);
156  }
157
158  if (!xdr_int(xdrs, &objp->mi_error)) {
159    return (FALSE);
160  }
161
162  if (!xdr_int(xdrs, &objp->mi_refc)) {
163    return (FALSE);
164  }
165
166  if (!xdr_int(xdrs, &objp->mi_up)) {
167    return (FALSE);
168  }
169
170  return (TRUE);
171}
172
173
174bool_t
175xdr_amq_mount_info_list(XDR *xdrs, amq_mount_info_list *objp)
176{
177  if (!xdr_array(xdrs,
178		 (char **) ((voidp) &objp->amq_mount_info_list_val),
179		 (u_int *) &objp->amq_mount_info_list_len,
180		 ~0,
181		 sizeof(amq_mount_info),
182		 (XDRPROC_T_TYPE) xdr_amq_mount_info)) {
183    return (FALSE);
184  }
185  return (TRUE);
186}
187
188bool_t
189xdr_amq_map_info(XDR *xdrs, amq_map_info *objp)
190{
191  if (!xdr_amq_string(xdrs, &objp->mi_name)) {
192    return (FALSE);
193  }
194
195  if (!xdr_amq_string(xdrs, &objp->mi_wildcard)) {
196    return (FALSE);
197  }
198
199  if (!xdr_time_type(xdrs, &objp->mi_modify)) {
200    return (FALSE);
201  }
202
203  if (!xdr_int(xdrs, &objp->mi_flags)) {
204    return (FALSE);
205  }
206
207  if (!xdr_int(xdrs, &objp->mi_nentries)) {
208    return (FALSE);
209  }
210
211  if (!xdr_int(xdrs, &objp->mi_reloads)) {
212    return (FALSE);
213  }
214
215  if (!xdr_int(xdrs, &objp->mi_refc)) {
216    return (FALSE);
217  }
218
219  if (!xdr_int(xdrs, &objp->mi_up)) {
220    return (FALSE);
221  }
222
223  return (TRUE);
224}
225
226
227bool_t
228xdr_amq_map_info_list(XDR *xdrs, amq_map_info_list *objp)
229{
230  if (!xdr_array(xdrs,
231		 (char **) ((voidp) &objp->amq_map_info_list_val),
232		 (u_int *) &objp->amq_map_info_list_len,
233		 ~0,
234		 sizeof(amq_map_info),
235		 (XDRPROC_T_TYPE) xdr_amq_map_info)) {
236    return (FALSE);
237  }
238  return (TRUE);
239}
240
241
242bool_t
243xdr_amq_mount_tree_list(XDR *xdrs, amq_mount_tree_list *objp)
244{
245  if (!xdr_array(xdrs,
246		 (char **) ((voidp) &objp->amq_mount_tree_list_val),
247		 (u_int *) &objp->amq_mount_tree_list_len,
248		 ~0,
249		 sizeof(amq_mount_tree_p),
250		 (XDRPROC_T_TYPE) xdr_amq_mount_tree_p)) {
251    return (FALSE);
252  }
253  return (TRUE);
254}
255
256
257bool_t
258xdr_amq_mount_stats(XDR *xdrs, amq_mount_stats *objp)
259{
260
261  if (!xdr_int(xdrs, &objp->as_drops)) {
262    return (FALSE);
263  }
264
265  if (!xdr_int(xdrs, &objp->as_stale)) {
266    return (FALSE);
267  }
268
269  if (!xdr_int(xdrs, &objp->as_mok)) {
270    return (FALSE);
271  }
272
273  if (!xdr_int(xdrs, &objp->as_merr)) {
274    return (FALSE);
275  }
276
277  if (!xdr_int(xdrs, &objp->as_uerr)) {
278    return (FALSE);
279  }
280
281  return (TRUE);
282}
283
284
285bool_t
286xdr_amq_opt(XDR *xdrs, amq_opt *objp)
287{
288  if (!xdr_enum(xdrs, (enum_t *) objp)) {
289    return (FALSE);
290  }
291  return (TRUE);
292}
293
294
295bool_t
296xdr_amq_setopt(XDR *xdrs, amq_setopt *objp)
297{
298
299  if (!xdr_amq_opt(xdrs, &objp->as_opt)) {
300    return (FALSE);
301  }
302
303  if (!xdr_amq_string(xdrs, &objp->as_str)) {
304    return (FALSE);
305  }
306
307  return (TRUE);
308}
309
310
311bool_t
312xdr_pri_free(XDRPROC_T_TYPE xdr_args, caddr_t args_ptr)
313{
314  XDR xdr;
315
316  xdr.x_op = XDR_FREE;
317  return ((*xdr_args) (&xdr, (caddr_t *) args_ptr));
318}
319