174462Salfred/* $NetBSD: rpcb_st_xdr.c,v 1.3 2000/07/14 08:40:42 fvdl Exp $ */ 274462Salfred 3261046Smav/*- 4261046Smav * Copyright (c) 2009, Sun Microsystems, Inc. 5261046Smav * All rights reserved. 6261046Smav * 7261046Smav * Redistribution and use in source and binary forms, with or without 8261046Smav * modification, are permitted provided that the following conditions are met: 9261046Smav * - Redistributions of source code must retain the above copyright notice, 10261046Smav * this list of conditions and the following disclaimer. 11261046Smav * - Redistributions in binary form must reproduce the above copyright notice, 12261046Smav * this list of conditions and the following disclaimer in the documentation 13261046Smav * and/or other materials provided with the distribution. 14261046Smav * - Neither the name of Sun Microsystems, Inc. nor the names of its 15261046Smav * contributors may be used to endorse or promote products derived 16261046Smav * from this software without specific prior written permission. 1774462Salfred * 18261046Smav * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19261046Smav * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20261046Smav * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21261046Smav * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 22261046Smav * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23261046Smav * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24261046Smav * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25261046Smav * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26261046Smav * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27261046Smav * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28261046Smav * POSSIBILITY OF SUCH DAMAGE. 2974462Salfred */ 3074462Salfred/* 3174462Salfred * Copyright 1991 Sun Microsystems, Inc. 3274462Salfred * rpcb_stat_xdr.c 3374462Salfred */ 3474462Salfred 3574462Salfred/* 3674462Salfred * This file was generated from rpcb_prot.x, but includes only those 3774462Salfred * routines used with the rpcbind stats facility. 3874462Salfred */ 3974462Salfred 4092990Sobrien#include <sys/cdefs.h> 4192990Sobrien__FBSDID("$FreeBSD$"); 4292990Sobrien 4374462Salfred#include "namespace.h" 4474462Salfred#include <rpc/rpc.h> 4574462Salfred#include "un-namespace.h" 4674462Salfred 4774462Salfred/* Link list of all the stats about getport and getaddr */ 4874462Salfred 4974462Salfredbool_t 5074462Salfredxdr_rpcbs_addrlist(xdrs, objp) 5174462Salfred XDR *xdrs; 5274462Salfred rpcbs_addrlist *objp; 5374462Salfred{ 54173763Sjb struct rpcbs_addrlist **pnext; 5574462Salfred 5674462Salfred if (!xdr_u_int32_t(xdrs, &objp->prog)) { 5774462Salfred return (FALSE); 5874462Salfred } 5974462Salfred if (!xdr_u_int32_t(xdrs, &objp->vers)) { 6074462Salfred return (FALSE); 6174462Salfred } 6274462Salfred if (!xdr_int(xdrs, &objp->success)) { 6374462Salfred return (FALSE); 6474462Salfred } 6574462Salfred if (!xdr_int(xdrs, &objp->failure)) { 6674462Salfred return (FALSE); 6774462Salfred } 6874462Salfred if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 6974462Salfred return (FALSE); 7074462Salfred } 7174462Salfred 72173763Sjb pnext = &objp->next; 73173763Sjb 74173763Sjb if (!xdr_pointer(xdrs, (char **) pnext, 7574462Salfred sizeof (rpcbs_addrlist), 7674462Salfred (xdrproc_t)xdr_rpcbs_addrlist)) { 7774462Salfred return (FALSE); 7874462Salfred } 7974462Salfred 8074462Salfred return (TRUE); 8174462Salfred} 8274462Salfred 8374462Salfred/* Link list of all the stats about rmtcall */ 8474462Salfred 8574462Salfredbool_t 8674462Salfredxdr_rpcbs_rmtcalllist(xdrs, objp) 8774462Salfred XDR *xdrs; 8874462Salfred rpcbs_rmtcalllist *objp; 8974462Salfred{ 9074462Salfred int32_t *buf; 91173763Sjb struct rpcbs_rmtcalllist **pnext; 9274462Salfred 9374462Salfred if (xdrs->x_op == XDR_ENCODE) { 9474462Salfred buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT); 9574462Salfred if (buf == NULL) { 9674462Salfred if (!xdr_u_int32_t(xdrs, &objp->prog)) { 9774462Salfred return (FALSE); 9874462Salfred } 9974462Salfred if (!xdr_u_int32_t(xdrs, &objp->vers)) { 10074462Salfred return (FALSE); 10174462Salfred } 10274462Salfred if (!xdr_u_int32_t(xdrs, &objp->proc)) { 10374462Salfred return (FALSE); 10474462Salfred } 10574462Salfred if (!xdr_int(xdrs, &objp->success)) { 10674462Salfred return (FALSE); 10774462Salfred } 10874462Salfred if (!xdr_int(xdrs, &objp->failure)) { 10974462Salfred return (FALSE); 11074462Salfred } 11174462Salfred if (!xdr_int(xdrs, &objp->indirect)) { 11274462Salfred return (FALSE); 11374462Salfred } 11474462Salfred } else { 11574462Salfred IXDR_PUT_U_INT32(buf, objp->prog); 11674462Salfred IXDR_PUT_U_INT32(buf, objp->vers); 11774462Salfred IXDR_PUT_U_INT32(buf, objp->proc); 11874462Salfred IXDR_PUT_INT32(buf, objp->success); 11974462Salfred IXDR_PUT_INT32(buf, objp->failure); 12074462Salfred IXDR_PUT_INT32(buf, objp->indirect); 12174462Salfred } 12274462Salfred if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 12374462Salfred return (FALSE); 12474462Salfred } 125173763Sjb pnext = &objp->next; 126173763Sjb if (!xdr_pointer(xdrs, (char **) pnext, 12774462Salfred sizeof (rpcbs_rmtcalllist), 12874462Salfred (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 12974462Salfred return (FALSE); 13074462Salfred } 13174462Salfred return (TRUE); 13274462Salfred } else if (xdrs->x_op == XDR_DECODE) { 13374462Salfred buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT); 13474462Salfred if (buf == NULL) { 13574462Salfred if (!xdr_u_int32_t(xdrs, &objp->prog)) { 13674462Salfred return (FALSE); 13774462Salfred } 13874462Salfred if (!xdr_u_int32_t(xdrs, &objp->vers)) { 13974462Salfred return (FALSE); 14074462Salfred } 14174462Salfred if (!xdr_u_int32_t(xdrs, &objp->proc)) { 14274462Salfred return (FALSE); 14374462Salfred } 14474462Salfred if (!xdr_int(xdrs, &objp->success)) { 14574462Salfred return (FALSE); 14674462Salfred } 14774462Salfred if (!xdr_int(xdrs, &objp->failure)) { 14874462Salfred return (FALSE); 14974462Salfred } 15074462Salfred if (!xdr_int(xdrs, &objp->indirect)) { 15174462Salfred return (FALSE); 15274462Salfred } 15374462Salfred } else { 15474462Salfred objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf); 15574462Salfred objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf); 15674462Salfred objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf); 15774462Salfred objp->success = (int)IXDR_GET_INT32(buf); 15874462Salfred objp->failure = (int)IXDR_GET_INT32(buf); 15974462Salfred objp->indirect = (int)IXDR_GET_INT32(buf); 16074462Salfred } 16174462Salfred if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 16274462Salfred return (FALSE); 16374462Salfred } 164173763Sjb if (!xdr_pointer(xdrs, (char **) pnext, 16574462Salfred sizeof (rpcbs_rmtcalllist), 16674462Salfred (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 16774462Salfred return (FALSE); 16874462Salfred } 16974462Salfred return (TRUE); 17074462Salfred } 17174462Salfred if (!xdr_u_int32_t(xdrs, &objp->prog)) { 17274462Salfred return (FALSE); 17374462Salfred } 17474462Salfred if (!xdr_u_int32_t(xdrs, &objp->vers)) { 17574462Salfred return (FALSE); 17674462Salfred } 17774462Salfred if (!xdr_u_int32_t(xdrs, &objp->proc)) { 17874462Salfred return (FALSE); 17974462Salfred } 18074462Salfred if (!xdr_int(xdrs, &objp->success)) { 18174462Salfred return (FALSE); 18274462Salfred } 18374462Salfred if (!xdr_int(xdrs, &objp->failure)) { 18474462Salfred return (FALSE); 18574462Salfred } 18674462Salfred if (!xdr_int(xdrs, &objp->indirect)) { 18774462Salfred return (FALSE); 18874462Salfred } 18974462Salfred if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 19074462Salfred return (FALSE); 19174462Salfred } 192173763Sjb if (!xdr_pointer(xdrs, (char **) pnext, 19374462Salfred sizeof (rpcbs_rmtcalllist), 19474462Salfred (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 19574462Salfred return (FALSE); 19674462Salfred } 19774462Salfred return (TRUE); 19874462Salfred} 19974462Salfred 20074462Salfredbool_t 20174462Salfredxdr_rpcbs_proc(xdrs, objp) 20274462Salfred XDR *xdrs; 20374462Salfred rpcbs_proc objp; 20474462Salfred{ 20574462Salfred if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC, 20674462Salfred sizeof (int), (xdrproc_t)xdr_int)) { 20774462Salfred return (FALSE); 20874462Salfred } 20974462Salfred return (TRUE); 21074462Salfred} 21174462Salfred 21274462Salfredbool_t 21374462Salfredxdr_rpcbs_addrlist_ptr(xdrs, objp) 21474462Salfred XDR *xdrs; 21574462Salfred rpcbs_addrlist_ptr *objp; 21674462Salfred{ 21774462Salfred if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_addrlist), 21874462Salfred (xdrproc_t)xdr_rpcbs_addrlist)) { 21974462Salfred return (FALSE); 22074462Salfred } 22174462Salfred return (TRUE); 22274462Salfred} 22374462Salfred 22474462Salfredbool_t 22574462Salfredxdr_rpcbs_rmtcalllist_ptr(xdrs, objp) 22674462Salfred XDR *xdrs; 22774462Salfred rpcbs_rmtcalllist_ptr *objp; 22874462Salfred{ 22974462Salfred if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_rmtcalllist), 23074462Salfred (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 23174462Salfred return (FALSE); 23274462Salfred } 23374462Salfred return (TRUE); 23474462Salfred} 23574462Salfred 23674462Salfredbool_t 23774462Salfredxdr_rpcb_stat(xdrs, objp) 23874462Salfred XDR *xdrs; 23974462Salfred rpcb_stat *objp; 24074462Salfred{ 24174462Salfred 24274462Salfred if (!xdr_rpcbs_proc(xdrs, objp->info)) { 24374462Salfred return (FALSE); 24474462Salfred } 24574462Salfred if (!xdr_int(xdrs, &objp->setinfo)) { 24674462Salfred return (FALSE); 24774462Salfred } 24874462Salfred if (!xdr_int(xdrs, &objp->unsetinfo)) { 24974462Salfred return (FALSE); 25074462Salfred } 25174462Salfred if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) { 25274462Salfred return (FALSE); 25374462Salfred } 254100002Salfred if (!xdr_rpcbs_rmtcalllist_ptr(xdrs, &objp->rmtinfo)) { 255100002Salfred return (FALSE); 256100002Salfred } 25774462Salfred return (TRUE); 25874462Salfred} 25974462Salfred 26074462Salfred/* 26174462Salfred * One rpcb_stat structure is returned for each version of rpcbind 26274462Salfred * being monitored. 26374462Salfred */ 26474462Salfredbool_t 26574462Salfredxdr_rpcb_stat_byvers(xdrs, objp) 26674462Salfred XDR *xdrs; 26774462Salfred rpcb_stat_byvers objp; 26874462Salfred{ 26974462Salfred if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT, 27074462Salfred sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) { 27174462Salfred return (FALSE); 27274462Salfred } 27374462Salfred return (TRUE); 27474462Salfred} 275