18360efbdSAlfred Perlstein /* $NetBSD: rpcb_st_xdr.c,v 1.3 2000/07/14 08:40:42 fvdl Exp $ */ 28360efbdSAlfred Perlstein 32e322d37SHiroki Sato /*- 42e322d37SHiroki Sato * Copyright (c) 2009, Sun Microsystems, Inc. 52e322d37SHiroki Sato * All rights reserved. 68360efbdSAlfred Perlstein * 72e322d37SHiroki Sato * Redistribution and use in source and binary forms, with or without 82e322d37SHiroki Sato * modification, are permitted provided that the following conditions are met: 92e322d37SHiroki Sato * - Redistributions of source code must retain the above copyright notice, 102e322d37SHiroki Sato * this list of conditions and the following disclaimer. 112e322d37SHiroki Sato * - Redistributions in binary form must reproduce the above copyright notice, 122e322d37SHiroki Sato * this list of conditions and the following disclaimer in the documentation 132e322d37SHiroki Sato * and/or other materials provided with the distribution. 142e322d37SHiroki Sato * - Neither the name of Sun Microsystems, Inc. nor the names of its 152e322d37SHiroki Sato * contributors may be used to endorse or promote products derived 162e322d37SHiroki Sato * from this software without specific prior written permission. 178360efbdSAlfred Perlstein * 182e322d37SHiroki Sato * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 192e322d37SHiroki Sato * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 202e322d37SHiroki Sato * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 212e322d37SHiroki Sato * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 222e322d37SHiroki Sato * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 232e322d37SHiroki Sato * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 242e322d37SHiroki Sato * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 252e322d37SHiroki Sato * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 262e322d37SHiroki Sato * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 272e322d37SHiroki Sato * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 282e322d37SHiroki Sato * POSSIBILITY OF SUCH DAMAGE. 298360efbdSAlfred Perlstein */ 308360efbdSAlfred Perlstein /* 318360efbdSAlfred Perlstein * Copyright 1991 Sun Microsystems, Inc. 328360efbdSAlfred Perlstein * rpcb_stat_xdr.c 338360efbdSAlfred Perlstein */ 348360efbdSAlfred Perlstein 358360efbdSAlfred Perlstein /* 368360efbdSAlfred Perlstein * This file was generated from rpcb_prot.x, but includes only those 378360efbdSAlfred Perlstein * routines used with the rpcbind stats facility. 388360efbdSAlfred Perlstein */ 398360efbdSAlfred Perlstein 40d3d20c82SDavid E. O'Brien #include <sys/cdefs.h> 41d3d20c82SDavid E. O'Brien __FBSDID("$FreeBSD$"); 42d3d20c82SDavid E. O'Brien 438360efbdSAlfred Perlstein #include "namespace.h" 448360efbdSAlfred Perlstein #include <rpc/rpc.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 50587cf682SCraig Rodrigues xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp) 518360efbdSAlfred Perlstein { 52102c7c92SJohn Birrell struct rpcbs_addrlist **pnext; 538360efbdSAlfred Perlstein 54*478eb9e9SPedro F. Giffuni if (!xdr_rpcprog(xdrs, &objp->prog)) { 558360efbdSAlfred Perlstein return (FALSE); 568360efbdSAlfred Perlstein } 57*478eb9e9SPedro 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 } 668360efbdSAlfred Perlstein if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 678360efbdSAlfred Perlstein return (FALSE); 688360efbdSAlfred Perlstein } 698360efbdSAlfred Perlstein 70102c7c92SJohn Birrell pnext = &objp->next; 71102c7c92SJohn Birrell 72102c7c92SJohn Birrell if (!xdr_pointer(xdrs, (char **) pnext, 738360efbdSAlfred Perlstein sizeof (rpcbs_addrlist), 748360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_addrlist)) { 758360efbdSAlfred Perlstein return (FALSE); 768360efbdSAlfred Perlstein } 778360efbdSAlfred Perlstein 788360efbdSAlfred Perlstein return (TRUE); 798360efbdSAlfred Perlstein } 808360efbdSAlfred Perlstein 818360efbdSAlfred Perlstein /* Link list of all the stats about rmtcall */ 828360efbdSAlfred Perlstein 838360efbdSAlfred Perlstein bool_t 84587cf682SCraig Rodrigues xdr_rpcbs_rmtcalllist(XDR *xdrs, rpcbs_rmtcalllist *objp) 858360efbdSAlfred Perlstein { 868360efbdSAlfred Perlstein int32_t *buf; 87102c7c92SJohn Birrell struct rpcbs_rmtcalllist **pnext; 888360efbdSAlfred Perlstein 898360efbdSAlfred Perlstein if (xdrs->x_op == XDR_ENCODE) { 908360efbdSAlfred Perlstein buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT); 918360efbdSAlfred Perlstein if (buf == NULL) { 92*478eb9e9SPedro F. Giffuni if (!xdr_rpcprog(xdrs, &objp->prog)) { 938360efbdSAlfred Perlstein return (FALSE); 948360efbdSAlfred Perlstein } 95*478eb9e9SPedro F. Giffuni if (!xdr_rpcvers(xdrs, &objp->vers)) { 968360efbdSAlfred Perlstein return (FALSE); 978360efbdSAlfred Perlstein } 98*478eb9e9SPedro 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 } 1188360efbdSAlfred Perlstein if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 1198360efbdSAlfred Perlstein return (FALSE); 1208360efbdSAlfred Perlstein } 121102c7c92SJohn Birrell pnext = &objp->next; 122102c7c92SJohn Birrell if (!xdr_pointer(xdrs, (char **) pnext, 1238360efbdSAlfred Perlstein sizeof (rpcbs_rmtcalllist), 1248360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 1258360efbdSAlfred Perlstein return (FALSE); 1268360efbdSAlfred Perlstein } 1278360efbdSAlfred Perlstein return (TRUE); 1288360efbdSAlfred Perlstein } else if (xdrs->x_op == XDR_DECODE) { 1298360efbdSAlfred Perlstein buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT); 1308360efbdSAlfred Perlstein if (buf == NULL) { 131*478eb9e9SPedro F. Giffuni if (!xdr_rpcprog(xdrs, &objp->prog)) { 1328360efbdSAlfred Perlstein return (FALSE); 1338360efbdSAlfred Perlstein } 134*478eb9e9SPedro F. Giffuni if (!xdr_rpcvers(xdrs, &objp->vers)) { 1358360efbdSAlfred Perlstein return (FALSE); 1368360efbdSAlfred Perlstein } 137*478eb9e9SPedro F. Giffuni if (!xdr_rpcproc(xdrs, &objp->proc)) { 1388360efbdSAlfred Perlstein return (FALSE); 1398360efbdSAlfred Perlstein } 1408360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->success)) { 1418360efbdSAlfred Perlstein return (FALSE); 1428360efbdSAlfred Perlstein } 1438360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->failure)) { 1448360efbdSAlfred Perlstein return (FALSE); 1458360efbdSAlfred Perlstein } 1468360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->indirect)) { 1478360efbdSAlfred Perlstein return (FALSE); 1488360efbdSAlfred Perlstein } 1498360efbdSAlfred Perlstein } else { 1508360efbdSAlfred Perlstein objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf); 1518360efbdSAlfred Perlstein objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf); 1528360efbdSAlfred Perlstein objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf); 1538360efbdSAlfred Perlstein objp->success = (int)IXDR_GET_INT32(buf); 1548360efbdSAlfred Perlstein objp->failure = (int)IXDR_GET_INT32(buf); 1558360efbdSAlfred Perlstein objp->indirect = (int)IXDR_GET_INT32(buf); 1568360efbdSAlfred Perlstein } 1578360efbdSAlfred Perlstein if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 1588360efbdSAlfred Perlstein return (FALSE); 1598360efbdSAlfred Perlstein } 160102c7c92SJohn Birrell if (!xdr_pointer(xdrs, (char **) pnext, 1618360efbdSAlfred Perlstein sizeof (rpcbs_rmtcalllist), 1628360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 1638360efbdSAlfred Perlstein return (FALSE); 1648360efbdSAlfred Perlstein } 1658360efbdSAlfred Perlstein return (TRUE); 1668360efbdSAlfred Perlstein } 167*478eb9e9SPedro F. Giffuni if (!xdr_rpcprog(xdrs, &objp->prog)) { 1688360efbdSAlfred Perlstein return (FALSE); 1698360efbdSAlfred Perlstein } 170*478eb9e9SPedro F. Giffuni if (!xdr_rpcvers(xdrs, &objp->vers)) { 1718360efbdSAlfred Perlstein return (FALSE); 1728360efbdSAlfred Perlstein } 173*478eb9e9SPedro F. Giffuni if (!xdr_rpcproc(xdrs, &objp->proc)) { 1748360efbdSAlfred Perlstein return (FALSE); 1758360efbdSAlfred Perlstein } 1768360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->success)) { 1778360efbdSAlfred Perlstein return (FALSE); 1788360efbdSAlfred Perlstein } 1798360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->failure)) { 1808360efbdSAlfred Perlstein return (FALSE); 1818360efbdSAlfred Perlstein } 1828360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->indirect)) { 1838360efbdSAlfred Perlstein return (FALSE); 1848360efbdSAlfred Perlstein } 1858360efbdSAlfred Perlstein if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 1868360efbdSAlfred Perlstein return (FALSE); 1878360efbdSAlfred Perlstein } 188102c7c92SJohn Birrell if (!xdr_pointer(xdrs, (char **) pnext, 1898360efbdSAlfred Perlstein sizeof (rpcbs_rmtcalllist), 1908360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 1918360efbdSAlfred Perlstein return (FALSE); 1928360efbdSAlfred Perlstein } 1938360efbdSAlfred Perlstein return (TRUE); 1948360efbdSAlfred Perlstein } 1958360efbdSAlfred Perlstein 1968360efbdSAlfred Perlstein bool_t 197587cf682SCraig Rodrigues xdr_rpcbs_proc(XDR *xdrs, rpcbs_proc objp) 1988360efbdSAlfred Perlstein { 1998360efbdSAlfred Perlstein if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC, 2008360efbdSAlfred Perlstein sizeof (int), (xdrproc_t)xdr_int)) { 2018360efbdSAlfred Perlstein return (FALSE); 2028360efbdSAlfred Perlstein } 2038360efbdSAlfred Perlstein return (TRUE); 2048360efbdSAlfred Perlstein } 2058360efbdSAlfred Perlstein 2068360efbdSAlfred Perlstein bool_t 207587cf682SCraig Rodrigues xdr_rpcbs_addrlist_ptr(XDR *xdrs, rpcbs_addrlist_ptr *objp) 2088360efbdSAlfred Perlstein { 2098360efbdSAlfred Perlstein if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_addrlist), 2108360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_addrlist)) { 2118360efbdSAlfred Perlstein return (FALSE); 2128360efbdSAlfred Perlstein } 2138360efbdSAlfred Perlstein return (TRUE); 2148360efbdSAlfred Perlstein } 2158360efbdSAlfred Perlstein 2168360efbdSAlfred Perlstein bool_t 217587cf682SCraig Rodrigues xdr_rpcbs_rmtcalllist_ptr(XDR *xdrs, rpcbs_rmtcalllist_ptr *objp) 2188360efbdSAlfred Perlstein { 2198360efbdSAlfred Perlstein if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_rmtcalllist), 2208360efbdSAlfred Perlstein (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 2218360efbdSAlfred Perlstein return (FALSE); 2228360efbdSAlfred Perlstein } 2238360efbdSAlfred Perlstein return (TRUE); 2248360efbdSAlfred Perlstein } 2258360efbdSAlfred Perlstein 2268360efbdSAlfred Perlstein bool_t 227587cf682SCraig Rodrigues xdr_rpcb_stat(XDR *xdrs, rpcb_stat *objp) 2288360efbdSAlfred Perlstein { 2298360efbdSAlfred Perlstein 2308360efbdSAlfred Perlstein if (!xdr_rpcbs_proc(xdrs, objp->info)) { 2318360efbdSAlfred Perlstein return (FALSE); 2328360efbdSAlfred Perlstein } 2338360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->setinfo)) { 2348360efbdSAlfred Perlstein return (FALSE); 2358360efbdSAlfred Perlstein } 2368360efbdSAlfred Perlstein if (!xdr_int(xdrs, &objp->unsetinfo)) { 2378360efbdSAlfred Perlstein return (FALSE); 2388360efbdSAlfred Perlstein } 2398360efbdSAlfred Perlstein if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) { 2408360efbdSAlfred Perlstein return (FALSE); 2418360efbdSAlfred Perlstein } 242988553e9SAlfred Perlstein if (!xdr_rpcbs_rmtcalllist_ptr(xdrs, &objp->rmtinfo)) { 243988553e9SAlfred Perlstein return (FALSE); 244988553e9SAlfred Perlstein } 2458360efbdSAlfred Perlstein return (TRUE); 2468360efbdSAlfred Perlstein } 2478360efbdSAlfred Perlstein 2488360efbdSAlfred Perlstein /* 2498360efbdSAlfred Perlstein * One rpcb_stat structure is returned for each version of rpcbind 2508360efbdSAlfred Perlstein * being monitored. 2518360efbdSAlfred Perlstein */ 2528360efbdSAlfred Perlstein bool_t 253587cf682SCraig Rodrigues xdr_rpcb_stat_byvers(XDR *xdrs, rpcb_stat_byvers objp) 2548360efbdSAlfred Perlstein { 2558360efbdSAlfred Perlstein if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT, 2568360efbdSAlfred Perlstein sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) { 2578360efbdSAlfred Perlstein return (FALSE); 2588360efbdSAlfred Perlstein } 2598360efbdSAlfred Perlstein return (TRUE); 2608360efbdSAlfred Perlstein } 261