xref: /freebsd/lib/libc/rpc/rpcb_st_xdr.c (revision 8a16b7a18f5d0b031f09832fd7752fba717e2a97)
18360efbdSAlfred Perlstein /*	$NetBSD: rpcb_st_xdr.c,v 1.3 2000/07/14 08:40:42 fvdl Exp $	*/
28360efbdSAlfred Perlstein 
32e322d37SHiroki Sato /*-
4*8a16b7a1SPedro F. Giffuni  * SPDX-License-Identifier: BSD-3-Clause
5*8a16b7a1SPedro F. Giffuni  *
62e322d37SHiroki Sato  * Copyright (c) 2009, Sun Microsystems, Inc.
72e322d37SHiroki Sato  * All rights reserved.
88360efbdSAlfred Perlstein  *
92e322d37SHiroki Sato  * Redistribution and use in source and binary forms, with or without
102e322d37SHiroki Sato  * modification, are permitted provided that the following conditions are met:
112e322d37SHiroki Sato  * - Redistributions of source code must retain the above copyright notice,
122e322d37SHiroki Sato  *   this list of conditions and the following disclaimer.
132e322d37SHiroki Sato  * - Redistributions in binary form must reproduce the above copyright notice,
142e322d37SHiroki Sato  *   this list of conditions and the following disclaimer in the documentation
152e322d37SHiroki Sato  *   and/or other materials provided with the distribution.
162e322d37SHiroki Sato  * - Neither the name of Sun Microsystems, Inc. nor the names of its
172e322d37SHiroki Sato  *   contributors may be used to endorse or promote products derived
182e322d37SHiroki Sato  *   from this software without specific prior written permission.
198360efbdSAlfred Perlstein  *
202e322d37SHiroki Sato  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
212e322d37SHiroki Sato  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
222e322d37SHiroki Sato  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
232e322d37SHiroki Sato  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
242e322d37SHiroki Sato  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
252e322d37SHiroki Sato  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
262e322d37SHiroki Sato  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
272e322d37SHiroki Sato  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
282e322d37SHiroki Sato  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
292e322d37SHiroki Sato  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
302e322d37SHiroki Sato  * POSSIBILITY OF SUCH DAMAGE.
318360efbdSAlfred Perlstein  */
328360efbdSAlfred Perlstein /*
338360efbdSAlfred Perlstein  * Copyright 1991 Sun Microsystems, Inc.
348360efbdSAlfred Perlstein  * rpcb_stat_xdr.c
358360efbdSAlfred Perlstein  */
368360efbdSAlfred Perlstein 
378360efbdSAlfred Perlstein /*
388360efbdSAlfred Perlstein  * This file was generated from rpcb_prot.x, but includes only those
398360efbdSAlfred Perlstein  * routines used with the rpcbind stats facility.
408360efbdSAlfred Perlstein  */
418360efbdSAlfred Perlstein 
42d3d20c82SDavid E. O'Brien #include <sys/cdefs.h>
43d3d20c82SDavid E. O'Brien __FBSDID("$FreeBSD$");
44d3d20c82SDavid E. O'Brien 
458360efbdSAlfred Perlstein #include "namespace.h"
468360efbdSAlfred Perlstein #include <rpc/rpc.h>
476448ec89SXin LI #include <rpc/rpc_com.h>
488360efbdSAlfred Perlstein #include "un-namespace.h"
498360efbdSAlfred Perlstein 
508360efbdSAlfred Perlstein /* Link list of all the stats about getport and getaddr */
518360efbdSAlfred Perlstein 
528360efbdSAlfred Perlstein bool_t
53587cf682SCraig Rodrigues xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp)
548360efbdSAlfred Perlstein {
55102c7c92SJohn Birrell 	struct rpcbs_addrlist **pnext;
568360efbdSAlfred Perlstein 
57478eb9e9SPedro F. Giffuni 	    if (!xdr_rpcprog(xdrs, &objp->prog)) {
588360efbdSAlfred Perlstein 		return (FALSE);
598360efbdSAlfred Perlstein 	    }
60478eb9e9SPedro F. Giffuni 	    if (!xdr_rpcvers(xdrs, &objp->vers)) {
618360efbdSAlfred Perlstein 		return (FALSE);
628360efbdSAlfred Perlstein 	    }
638360efbdSAlfred Perlstein 	    if (!xdr_int(xdrs, &objp->success)) {
648360efbdSAlfred Perlstein 		return (FALSE);
658360efbdSAlfred Perlstein 	    }
668360efbdSAlfred Perlstein 	    if (!xdr_int(xdrs, &objp->failure)) {
678360efbdSAlfred Perlstein 		return (FALSE);
688360efbdSAlfred Perlstein 	    }
696448ec89SXin LI 	    if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
708360efbdSAlfred Perlstein 		return (FALSE);
718360efbdSAlfred Perlstein 	    }
728360efbdSAlfred Perlstein 
73102c7c92SJohn Birrell 	    pnext = &objp->next;
74102c7c92SJohn Birrell 
75102c7c92SJohn Birrell 	    if (!xdr_pointer(xdrs, (char **) pnext,
768360efbdSAlfred Perlstein 			sizeof (rpcbs_addrlist),
778360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_addrlist)) {
788360efbdSAlfred Perlstein 		return (FALSE);
798360efbdSAlfred Perlstein 	    }
808360efbdSAlfred Perlstein 
818360efbdSAlfred Perlstein 	return (TRUE);
828360efbdSAlfred Perlstein }
838360efbdSAlfred Perlstein 
848360efbdSAlfred Perlstein /* Link list of all the stats about rmtcall */
858360efbdSAlfred Perlstein 
868360efbdSAlfred Perlstein bool_t
87587cf682SCraig Rodrigues xdr_rpcbs_rmtcalllist(XDR *xdrs, rpcbs_rmtcalllist *objp)
888360efbdSAlfred Perlstein {
898360efbdSAlfred Perlstein 	int32_t *buf;
90102c7c92SJohn Birrell 	struct rpcbs_rmtcalllist **pnext;
918360efbdSAlfred Perlstein 
928360efbdSAlfred Perlstein 	if (xdrs->x_op == XDR_ENCODE) {
938360efbdSAlfred Perlstein 	buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
948360efbdSAlfred Perlstein 	if (buf == NULL) {
95478eb9e9SPedro F. Giffuni 		if (!xdr_rpcprog(xdrs, &objp->prog)) {
968360efbdSAlfred Perlstein 			return (FALSE);
978360efbdSAlfred Perlstein 		}
98478eb9e9SPedro F. Giffuni 		if (!xdr_rpcvers(xdrs, &objp->vers)) {
998360efbdSAlfred Perlstein 			return (FALSE);
1008360efbdSAlfred Perlstein 		}
101478eb9e9SPedro F. Giffuni 		if (!xdr_rpcproc(xdrs, &objp->proc)) {
1028360efbdSAlfred Perlstein 			return (FALSE);
1038360efbdSAlfred Perlstein 		}
1048360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->success)) {
1058360efbdSAlfred Perlstein 			return (FALSE);
1068360efbdSAlfred Perlstein 		}
1078360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->failure)) {
1088360efbdSAlfred Perlstein 			return (FALSE);
1098360efbdSAlfred Perlstein 		}
1108360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->indirect)) {
1118360efbdSAlfred Perlstein 			return (FALSE);
1128360efbdSAlfred Perlstein 		}
1138360efbdSAlfred Perlstein 	} else {
1148360efbdSAlfred Perlstein 		IXDR_PUT_U_INT32(buf, objp->prog);
1158360efbdSAlfred Perlstein 		IXDR_PUT_U_INT32(buf, objp->vers);
1168360efbdSAlfred Perlstein 		IXDR_PUT_U_INT32(buf, objp->proc);
1178360efbdSAlfred Perlstein 		IXDR_PUT_INT32(buf, objp->success);
1188360efbdSAlfred Perlstein 		IXDR_PUT_INT32(buf, objp->failure);
1198360efbdSAlfred Perlstein 		IXDR_PUT_INT32(buf, objp->indirect);
1208360efbdSAlfred Perlstein 	}
1216448ec89SXin LI 	if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
1228360efbdSAlfred Perlstein 		return (FALSE);
1238360efbdSAlfred Perlstein 	}
124102c7c92SJohn Birrell 	pnext = &objp->next;
125102c7c92SJohn Birrell 	if (!xdr_pointer(xdrs, (char **) pnext,
1268360efbdSAlfred Perlstein 			sizeof (rpcbs_rmtcalllist),
1278360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
1288360efbdSAlfred Perlstein 		return (FALSE);
1298360efbdSAlfred Perlstein 	}
1308360efbdSAlfred Perlstein 	return (TRUE);
1318360efbdSAlfred Perlstein 	} else if (xdrs->x_op == XDR_DECODE) {
1328360efbdSAlfred Perlstein 	buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
1338360efbdSAlfred Perlstein 	if (buf == NULL) {
134478eb9e9SPedro F. Giffuni 		if (!xdr_rpcprog(xdrs, &objp->prog)) {
1358360efbdSAlfred Perlstein 			return (FALSE);
1368360efbdSAlfred Perlstein 		}
137478eb9e9SPedro F. Giffuni 		if (!xdr_rpcvers(xdrs, &objp->vers)) {
1388360efbdSAlfred Perlstein 			return (FALSE);
1398360efbdSAlfred Perlstein 		}
140478eb9e9SPedro F. Giffuni 		if (!xdr_rpcproc(xdrs, &objp->proc)) {
1418360efbdSAlfred Perlstein 			return (FALSE);
1428360efbdSAlfred Perlstein 		}
1438360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->success)) {
1448360efbdSAlfred Perlstein 			return (FALSE);
1458360efbdSAlfred Perlstein 		}
1468360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->failure)) {
1478360efbdSAlfred Perlstein 			return (FALSE);
1488360efbdSAlfred Perlstein 		}
1498360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->indirect)) {
1508360efbdSAlfred Perlstein 			return (FALSE);
1518360efbdSAlfred Perlstein 		}
1528360efbdSAlfred Perlstein 	} else {
1538360efbdSAlfred Perlstein 		objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf);
1548360efbdSAlfred Perlstein 		objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf);
1558360efbdSAlfred Perlstein 		objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf);
1568360efbdSAlfred Perlstein 		objp->success = (int)IXDR_GET_INT32(buf);
1578360efbdSAlfred Perlstein 		objp->failure = (int)IXDR_GET_INT32(buf);
1588360efbdSAlfred Perlstein 		objp->indirect = (int)IXDR_GET_INT32(buf);
1598360efbdSAlfred Perlstein 	}
1606448ec89SXin LI 	if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
1618360efbdSAlfred Perlstein 		return (FALSE);
1628360efbdSAlfred Perlstein 	}
163102c7c92SJohn Birrell 	if (!xdr_pointer(xdrs, (char **) pnext,
1648360efbdSAlfred Perlstein 			sizeof (rpcbs_rmtcalllist),
1658360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
1668360efbdSAlfred Perlstein 		return (FALSE);
1678360efbdSAlfred Perlstein 	}
1688360efbdSAlfred Perlstein 	return (TRUE);
1698360efbdSAlfred Perlstein 	}
170478eb9e9SPedro F. Giffuni 	if (!xdr_rpcprog(xdrs, &objp->prog)) {
1718360efbdSAlfred Perlstein 		return (FALSE);
1728360efbdSAlfred Perlstein 	}
173478eb9e9SPedro F. Giffuni 	if (!xdr_rpcvers(xdrs, &objp->vers)) {
1748360efbdSAlfred Perlstein 		return (FALSE);
1758360efbdSAlfred Perlstein 	}
176478eb9e9SPedro F. Giffuni 	if (!xdr_rpcproc(xdrs, &objp->proc)) {
1778360efbdSAlfred Perlstein 		return (FALSE);
1788360efbdSAlfred Perlstein 	}
1798360efbdSAlfred Perlstein 	if (!xdr_int(xdrs, &objp->success)) {
1808360efbdSAlfred Perlstein 		return (FALSE);
1818360efbdSAlfred Perlstein 	}
1828360efbdSAlfred Perlstein 	if (!xdr_int(xdrs, &objp->failure)) {
1838360efbdSAlfred Perlstein 		return (FALSE);
1848360efbdSAlfred Perlstein 	}
1858360efbdSAlfred Perlstein 	if (!xdr_int(xdrs, &objp->indirect)) {
1868360efbdSAlfred Perlstein 		return (FALSE);
1878360efbdSAlfred Perlstein 	}
1886448ec89SXin LI 	if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
1898360efbdSAlfred Perlstein 		return (FALSE);
1908360efbdSAlfred Perlstein 	}
191102c7c92SJohn Birrell 	if (!xdr_pointer(xdrs, (char **) pnext,
1928360efbdSAlfred Perlstein 			sizeof (rpcbs_rmtcalllist),
1938360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
1948360efbdSAlfred Perlstein 		return (FALSE);
1958360efbdSAlfred Perlstein 	}
1968360efbdSAlfred Perlstein 	return (TRUE);
1978360efbdSAlfred Perlstein }
1988360efbdSAlfred Perlstein 
1998360efbdSAlfred Perlstein bool_t
200587cf682SCraig Rodrigues xdr_rpcbs_proc(XDR *xdrs, rpcbs_proc objp)
2018360efbdSAlfred Perlstein {
2028360efbdSAlfred Perlstein 	if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC,
2038360efbdSAlfred Perlstein 	    sizeof (int), (xdrproc_t)xdr_int)) {
2048360efbdSAlfred Perlstein 		return (FALSE);
2058360efbdSAlfred Perlstein 	}
2068360efbdSAlfred Perlstein 	return (TRUE);
2078360efbdSAlfred Perlstein }
2088360efbdSAlfred Perlstein 
2098360efbdSAlfred Perlstein bool_t
210587cf682SCraig Rodrigues xdr_rpcbs_addrlist_ptr(XDR *xdrs, rpcbs_addrlist_ptr *objp)
2118360efbdSAlfred Perlstein {
2128360efbdSAlfred Perlstein 	if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_addrlist),
2138360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_addrlist)) {
2148360efbdSAlfred Perlstein 		return (FALSE);
2158360efbdSAlfred Perlstein 	}
2168360efbdSAlfred Perlstein 	return (TRUE);
2178360efbdSAlfred Perlstein }
2188360efbdSAlfred Perlstein 
2198360efbdSAlfred Perlstein bool_t
220587cf682SCraig Rodrigues xdr_rpcbs_rmtcalllist_ptr(XDR *xdrs, rpcbs_rmtcalllist_ptr *objp)
2218360efbdSAlfred Perlstein {
2228360efbdSAlfred Perlstein 	if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_rmtcalllist),
2238360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
2248360efbdSAlfred Perlstein 		return (FALSE);
2258360efbdSAlfred Perlstein 	}
2268360efbdSAlfred Perlstein 	return (TRUE);
2278360efbdSAlfred Perlstein }
2288360efbdSAlfred Perlstein 
2298360efbdSAlfred Perlstein bool_t
230587cf682SCraig Rodrigues xdr_rpcb_stat(XDR *xdrs, rpcb_stat *objp)
2318360efbdSAlfred Perlstein {
2328360efbdSAlfred Perlstein 
2338360efbdSAlfred Perlstein 	if (!xdr_rpcbs_proc(xdrs, objp->info)) {
2348360efbdSAlfred Perlstein 		return (FALSE);
2358360efbdSAlfred Perlstein 	}
2368360efbdSAlfred Perlstein 	if (!xdr_int(xdrs, &objp->setinfo)) {
2378360efbdSAlfred Perlstein 		return (FALSE);
2388360efbdSAlfred Perlstein 	}
2398360efbdSAlfred Perlstein 	if (!xdr_int(xdrs, &objp->unsetinfo)) {
2408360efbdSAlfred Perlstein 		return (FALSE);
2418360efbdSAlfred Perlstein 	}
2428360efbdSAlfred Perlstein 	if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) {
2438360efbdSAlfred Perlstein 		return (FALSE);
2448360efbdSAlfred Perlstein 	}
245988553e9SAlfred Perlstein 	if (!xdr_rpcbs_rmtcalllist_ptr(xdrs, &objp->rmtinfo)) {
246988553e9SAlfred Perlstein 		return (FALSE);
247988553e9SAlfred Perlstein 	}
2488360efbdSAlfred Perlstein 	return (TRUE);
2498360efbdSAlfred Perlstein }
2508360efbdSAlfred Perlstein 
2518360efbdSAlfred Perlstein /*
2528360efbdSAlfred Perlstein  * One rpcb_stat structure is returned for each version of rpcbind
2538360efbdSAlfred Perlstein  * being monitored.
2548360efbdSAlfred Perlstein  */
2558360efbdSAlfred Perlstein bool_t
256587cf682SCraig Rodrigues xdr_rpcb_stat_byvers(XDR *xdrs, rpcb_stat_byvers objp)
2578360efbdSAlfred Perlstein {
2588360efbdSAlfred Perlstein 	if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT,
2598360efbdSAlfred Perlstein 	    sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) {
2608360efbdSAlfred Perlstein 		return (FALSE);
2618360efbdSAlfred Perlstein 	}
2628360efbdSAlfred Perlstein 	return (TRUE);
2638360efbdSAlfred Perlstein }
264