18360efbdSAlfred Perlstein /* $NetBSD: rpcb_st_xdr.c,v 1.3 2000/07/14 08:40:42 fvdl Exp $ */
28360efbdSAlfred Perlstein
32e322d37SHiroki Sato /*-
48a16b7a1SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause
58a16b7a1SPedro 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
428360efbdSAlfred Perlstein #include "namespace.h"
438360efbdSAlfred Perlstein #include <rpc/rpc.h>
446448ec89SXin LI #include <rpc/rpc_com.h>
458360efbdSAlfred Perlstein #include "un-namespace.h"
468360efbdSAlfred Perlstein
478360efbdSAlfred Perlstein /* Link list of all the stats about getport and getaddr */
488360efbdSAlfred Perlstein
498360efbdSAlfred Perlstein bool_t
xdr_rpcbs_addrlist(XDR * xdrs,rpcbs_addrlist * objp)50587cf682SCraig Rodrigues xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp)
518360efbdSAlfred Perlstein {
52102c7c92SJohn Birrell struct rpcbs_addrlist **pnext;
538360efbdSAlfred Perlstein
54478eb9e9SPedro F. Giffuni if (!xdr_rpcprog(xdrs, &objp->prog)) {
558360efbdSAlfred Perlstein return (FALSE);
568360efbdSAlfred Perlstein }
57478eb9e9SPedro F. Giffuni if (!xdr_rpcvers(xdrs, &objp->vers)) {
588360efbdSAlfred Perlstein return (FALSE);
598360efbdSAlfred Perlstein }
608360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->success)) {
618360efbdSAlfred Perlstein return (FALSE);
628360efbdSAlfred Perlstein }
638360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->failure)) {
648360efbdSAlfred Perlstein return (FALSE);
658360efbdSAlfred Perlstein }
666448ec89SXin LI if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
678360efbdSAlfred Perlstein return (FALSE);
688360efbdSAlfred Perlstein }
698360efbdSAlfred Perlstein
70102c7c92SJohn Birrell pnext = &objp->next;
71102c7c92SJohn Birrell if (!xdr_pointer(xdrs, (char **) pnext,
728360efbdSAlfred Perlstein sizeof (rpcbs_addrlist),
738360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_addrlist)) {
748360efbdSAlfred Perlstein return (FALSE);
758360efbdSAlfred Perlstein }
768360efbdSAlfred Perlstein
778360efbdSAlfred Perlstein return (TRUE);
788360efbdSAlfred Perlstein }
798360efbdSAlfred Perlstein
808360efbdSAlfred Perlstein /* Link list of all the stats about rmtcall */
818360efbdSAlfred Perlstein
828360efbdSAlfred Perlstein bool_t
xdr_rpcbs_rmtcalllist(XDR * xdrs,rpcbs_rmtcalllist * objp)83587cf682SCraig Rodrigues xdr_rpcbs_rmtcalllist(XDR *xdrs, rpcbs_rmtcalllist *objp)
848360efbdSAlfred Perlstein {
85102c7c92SJohn Birrell struct rpcbs_rmtcalllist **pnext;
86*a3a70638SMark Johnston int32_t *buf;
878360efbdSAlfred Perlstein
88*a3a70638SMark Johnston pnext = &objp->next;
898360efbdSAlfred Perlstein if (xdrs->x_op == XDR_ENCODE) {
908360efbdSAlfred Perlstein buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
918360efbdSAlfred Perlstein if (buf == NULL) {
92478eb9e9SPedro F. Giffuni if (!xdr_rpcprog(xdrs, &objp->prog)) {
938360efbdSAlfred Perlstein return (FALSE);
948360efbdSAlfred Perlstein }
95478eb9e9SPedro F. Giffuni if (!xdr_rpcvers(xdrs, &objp->vers)) {
968360efbdSAlfred Perlstein return (FALSE);
978360efbdSAlfred Perlstein }
98478eb9e9SPedro F. Giffuni if (!xdr_rpcproc(xdrs, &objp->proc)) {
998360efbdSAlfred Perlstein return (FALSE);
1008360efbdSAlfred Perlstein }
1018360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->success)) {
1028360efbdSAlfred Perlstein return (FALSE);
1038360efbdSAlfred Perlstein }
1048360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->failure)) {
1058360efbdSAlfred Perlstein return (FALSE);
1068360efbdSAlfred Perlstein }
1078360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->indirect)) {
1088360efbdSAlfred Perlstein return (FALSE);
1098360efbdSAlfred Perlstein }
1108360efbdSAlfred Perlstein } else {
1118360efbdSAlfred Perlstein IXDR_PUT_U_INT32(buf, objp->prog);
1128360efbdSAlfred Perlstein IXDR_PUT_U_INT32(buf, objp->vers);
1138360efbdSAlfred Perlstein IXDR_PUT_U_INT32(buf, objp->proc);
1148360efbdSAlfred Perlstein IXDR_PUT_INT32(buf, objp->success);
1158360efbdSAlfred Perlstein IXDR_PUT_INT32(buf, objp->failure);
1168360efbdSAlfred Perlstein IXDR_PUT_INT32(buf, objp->indirect);
1178360efbdSAlfred Perlstein }
1186448ec89SXin LI if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
1198360efbdSAlfred Perlstein return (FALSE);
1208360efbdSAlfred Perlstein }
121102c7c92SJohn Birrell if (!xdr_pointer(xdrs, (char **) pnext,
1228360efbdSAlfred Perlstein sizeof (rpcbs_rmtcalllist),
1238360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
1248360efbdSAlfred Perlstein return (FALSE);
1258360efbdSAlfred Perlstein }
1268360efbdSAlfred Perlstein return (TRUE);
1278360efbdSAlfred Perlstein } else if (xdrs->x_op == XDR_DECODE) {
1288360efbdSAlfred Perlstein buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
1298360efbdSAlfred Perlstein if (buf == NULL) {
130478eb9e9SPedro F. Giffuni if (!xdr_rpcprog(xdrs, &objp->prog)) {
1318360efbdSAlfred Perlstein return (FALSE);
1328360efbdSAlfred Perlstein }
133478eb9e9SPedro F. Giffuni if (!xdr_rpcvers(xdrs, &objp->vers)) {
1348360efbdSAlfred Perlstein return (FALSE);
1358360efbdSAlfred Perlstein }
136478eb9e9SPedro F. Giffuni if (!xdr_rpcproc(xdrs, &objp->proc)) {
1378360efbdSAlfred Perlstein return (FALSE);
1388360efbdSAlfred Perlstein }
1398360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->success)) {
1408360efbdSAlfred Perlstein return (FALSE);
1418360efbdSAlfred Perlstein }
1428360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->failure)) {
1438360efbdSAlfred Perlstein return (FALSE);
1448360efbdSAlfred Perlstein }
1458360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->indirect)) {
1468360efbdSAlfred Perlstein return (FALSE);
1478360efbdSAlfred Perlstein }
1488360efbdSAlfred Perlstein } else {
1498360efbdSAlfred Perlstein objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf);
1508360efbdSAlfred Perlstein objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf);
1518360efbdSAlfred Perlstein objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf);
1528360efbdSAlfred Perlstein objp->success = (int)IXDR_GET_INT32(buf);
1538360efbdSAlfred Perlstein objp->failure = (int)IXDR_GET_INT32(buf);
1548360efbdSAlfred Perlstein objp->indirect = (int)IXDR_GET_INT32(buf);
1558360efbdSAlfred Perlstein }
1566448ec89SXin LI if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
1578360efbdSAlfred Perlstein return (FALSE);
1588360efbdSAlfred Perlstein }
159102c7c92SJohn Birrell if (!xdr_pointer(xdrs, (char **) pnext,
1608360efbdSAlfred Perlstein sizeof (rpcbs_rmtcalllist),
1618360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
1628360efbdSAlfred Perlstein return (FALSE);
1638360efbdSAlfred Perlstein }
1648360efbdSAlfred Perlstein return (TRUE);
1658360efbdSAlfred Perlstein }
166478eb9e9SPedro F. Giffuni if (!xdr_rpcprog(xdrs, &objp->prog)) {
1678360efbdSAlfred Perlstein return (FALSE);
1688360efbdSAlfred Perlstein }
169478eb9e9SPedro F. Giffuni if (!xdr_rpcvers(xdrs, &objp->vers)) {
1708360efbdSAlfred Perlstein return (FALSE);
1718360efbdSAlfred Perlstein }
172478eb9e9SPedro F. Giffuni if (!xdr_rpcproc(xdrs, &objp->proc)) {
1738360efbdSAlfred Perlstein return (FALSE);
1748360efbdSAlfred Perlstein }
1758360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->success)) {
1768360efbdSAlfred Perlstein return (FALSE);
1778360efbdSAlfred Perlstein }
1788360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->failure)) {
1798360efbdSAlfred Perlstein return (FALSE);
1808360efbdSAlfred Perlstein }
1818360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->indirect)) {
1828360efbdSAlfred Perlstein return (FALSE);
1838360efbdSAlfred Perlstein }
1846448ec89SXin LI if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) {
1858360efbdSAlfred Perlstein return (FALSE);
1868360efbdSAlfred Perlstein }
187102c7c92SJohn Birrell if (!xdr_pointer(xdrs, (char **) pnext,
1888360efbdSAlfred Perlstein sizeof (rpcbs_rmtcalllist),
1898360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
1908360efbdSAlfred Perlstein return (FALSE);
1918360efbdSAlfred Perlstein }
1928360efbdSAlfred Perlstein return (TRUE);
1938360efbdSAlfred Perlstein }
1948360efbdSAlfred Perlstein
1958360efbdSAlfred Perlstein bool_t
xdr_rpcbs_proc(XDR * xdrs,rpcbs_proc objp)196587cf682SCraig Rodrigues xdr_rpcbs_proc(XDR *xdrs, rpcbs_proc objp)
1978360efbdSAlfred Perlstein {
1988360efbdSAlfred Perlstein if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC,
1998360efbdSAlfred Perlstein sizeof (int), (xdrproc_t)xdr_int)) {
2008360efbdSAlfred Perlstein return (FALSE);
2018360efbdSAlfred Perlstein }
2028360efbdSAlfred Perlstein return (TRUE);
2038360efbdSAlfred Perlstein }
2048360efbdSAlfred Perlstein
2058360efbdSAlfred Perlstein bool_t
xdr_rpcbs_addrlist_ptr(XDR * xdrs,rpcbs_addrlist_ptr * objp)206587cf682SCraig Rodrigues xdr_rpcbs_addrlist_ptr(XDR *xdrs, rpcbs_addrlist_ptr *objp)
2078360efbdSAlfred Perlstein {
2088360efbdSAlfred Perlstein if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_addrlist),
2098360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_addrlist)) {
2108360efbdSAlfred Perlstein return (FALSE);
2118360efbdSAlfred Perlstein }
2128360efbdSAlfred Perlstein return (TRUE);
2138360efbdSAlfred Perlstein }
2148360efbdSAlfred Perlstein
2158360efbdSAlfred Perlstein bool_t
xdr_rpcbs_rmtcalllist_ptr(XDR * xdrs,rpcbs_rmtcalllist_ptr * objp)216587cf682SCraig Rodrigues xdr_rpcbs_rmtcalllist_ptr(XDR *xdrs, rpcbs_rmtcalllist_ptr *objp)
2178360efbdSAlfred Perlstein {
2188360efbdSAlfred Perlstein if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_rmtcalllist),
2198360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_rmtcalllist)) {
2208360efbdSAlfred Perlstein return (FALSE);
2218360efbdSAlfred Perlstein }
2228360efbdSAlfred Perlstein return (TRUE);
2238360efbdSAlfred Perlstein }
2248360efbdSAlfred Perlstein
2258360efbdSAlfred Perlstein bool_t
xdr_rpcb_stat(XDR * xdrs,rpcb_stat * objp)226587cf682SCraig Rodrigues xdr_rpcb_stat(XDR *xdrs, rpcb_stat *objp)
2278360efbdSAlfred Perlstein {
2288360efbdSAlfred Perlstein
2298360efbdSAlfred Perlstein if (!xdr_rpcbs_proc(xdrs, objp->info)) {
2308360efbdSAlfred Perlstein return (FALSE);
2318360efbdSAlfred Perlstein }
2328360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->setinfo)) {
2338360efbdSAlfred Perlstein return (FALSE);
2348360efbdSAlfred Perlstein }
2358360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->unsetinfo)) {
2368360efbdSAlfred Perlstein return (FALSE);
2378360efbdSAlfred Perlstein }
2388360efbdSAlfred Perlstein if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) {
2398360efbdSAlfred Perlstein return (FALSE);
2408360efbdSAlfred Perlstein }
241988553e9SAlfred Perlstein if (!xdr_rpcbs_rmtcalllist_ptr(xdrs, &objp->rmtinfo)) {
242988553e9SAlfred Perlstein return (FALSE);
243988553e9SAlfred Perlstein }
2448360efbdSAlfred Perlstein return (TRUE);
2458360efbdSAlfred Perlstein }
2468360efbdSAlfred Perlstein
2478360efbdSAlfred Perlstein /*
2488360efbdSAlfred Perlstein * One rpcb_stat structure is returned for each version of rpcbind
2498360efbdSAlfred Perlstein * being monitored.
2508360efbdSAlfred Perlstein */
2518360efbdSAlfred Perlstein bool_t
xdr_rpcb_stat_byvers(XDR * xdrs,rpcb_stat_byvers objp)252587cf682SCraig Rodrigues xdr_rpcb_stat_byvers(XDR *xdrs, rpcb_stat_byvers objp)
2538360efbdSAlfred Perlstein {
2548360efbdSAlfred Perlstein if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT,
2558360efbdSAlfred Perlstein sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) {
2568360efbdSAlfred Perlstein return (FALSE);
2578360efbdSAlfred Perlstein }
2588360efbdSAlfred Perlstein return (TRUE);
2598360efbdSAlfred Perlstein }
260