1*ce0e08e2SPeter Avalos /* 2*ce0e08e2SPeter Avalos * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 3*ce0e08e2SPeter Avalos * unrestricted use provided that this legend is included on all tape 4*ce0e08e2SPeter Avalos * media and as a part of the software program in whole or part. Users 5*ce0e08e2SPeter Avalos * may copy or modify Sun RPC without charge, but are not authorized 6*ce0e08e2SPeter Avalos * to license or distribute it to anyone else except as part of a product or 7*ce0e08e2SPeter Avalos * program developed by the user. 8*ce0e08e2SPeter Avalos * 9*ce0e08e2SPeter Avalos * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 10*ce0e08e2SPeter Avalos * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 11*ce0e08e2SPeter Avalos * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 12*ce0e08e2SPeter Avalos * 13*ce0e08e2SPeter Avalos * Sun RPC is provided with no support and without any obligation on the 14*ce0e08e2SPeter Avalos * part of Sun Microsystems, Inc. to assist in its use, correction, 15*ce0e08e2SPeter Avalos * modification or enhancement. 16*ce0e08e2SPeter Avalos * 17*ce0e08e2SPeter Avalos * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 18*ce0e08e2SPeter Avalos * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 19*ce0e08e2SPeter Avalos * OR ANY PART THEREOF. 20*ce0e08e2SPeter Avalos * 21*ce0e08e2SPeter Avalos * In no event will Sun Microsystems, Inc. be liable for any lost revenue 22*ce0e08e2SPeter Avalos * or profits or other special, indirect and consequential damages, even if 23*ce0e08e2SPeter Avalos * Sun has been advised of the possibility of such damages. 24*ce0e08e2SPeter Avalos * 25*ce0e08e2SPeter Avalos * Sun Microsystems, Inc. 26*ce0e08e2SPeter Avalos * 2550 Garcia Avenue 27*ce0e08e2SPeter Avalos * Mountain View, California 94043 28*ce0e08e2SPeter Avalos * 29*ce0e08e2SPeter Avalos * $NetBSD: rpcb_st_xdr.c,v 1.3 2000/07/14 08:40:42 fvdl Exp $ 30*ce0e08e2SPeter Avalos * $FreeBSD: src/lib/libc/rpc/rpcb_st_xdr.c,v 1.4 2007/11/20 01:51:20 jb Exp $ 31*ce0e08e2SPeter Avalos * $DragonFly$ 32*ce0e08e2SPeter Avalos */ 33*ce0e08e2SPeter Avalos /* 34*ce0e08e2SPeter Avalos * Copyright 1991 Sun Microsystems, Inc. 35*ce0e08e2SPeter Avalos * rpcb_stat_xdr.c 36*ce0e08e2SPeter Avalos */ 37*ce0e08e2SPeter Avalos 38*ce0e08e2SPeter Avalos /* 39*ce0e08e2SPeter Avalos * This file was generated from rpcb_prot.x, but includes only those 40*ce0e08e2SPeter Avalos * routines used with the rpcbind stats facility. 41*ce0e08e2SPeter Avalos */ 42*ce0e08e2SPeter Avalos 43*ce0e08e2SPeter Avalos #include "namespace.h" 44*ce0e08e2SPeter Avalos #include <rpc/rpc.h> 45*ce0e08e2SPeter Avalos #include "un-namespace.h" 46*ce0e08e2SPeter Avalos 47*ce0e08e2SPeter Avalos /* Link list of all the stats about getport and getaddr */ 48*ce0e08e2SPeter Avalos 49*ce0e08e2SPeter Avalos bool_t 50*ce0e08e2SPeter Avalos xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp) 51*ce0e08e2SPeter Avalos { 52*ce0e08e2SPeter Avalos struct rpcbs_addrlist **pnext; 53*ce0e08e2SPeter Avalos 54*ce0e08e2SPeter Avalos if (!xdr_u_int32_t(xdrs, &objp->prog)) { 55*ce0e08e2SPeter Avalos return (FALSE); 56*ce0e08e2SPeter Avalos } 57*ce0e08e2SPeter Avalos if (!xdr_u_int32_t(xdrs, &objp->vers)) { 58*ce0e08e2SPeter Avalos return (FALSE); 59*ce0e08e2SPeter Avalos } 60*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->success)) { 61*ce0e08e2SPeter Avalos return (FALSE); 62*ce0e08e2SPeter Avalos } 63*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->failure)) { 64*ce0e08e2SPeter Avalos return (FALSE); 65*ce0e08e2SPeter Avalos } 66*ce0e08e2SPeter Avalos if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 67*ce0e08e2SPeter Avalos return (FALSE); 68*ce0e08e2SPeter Avalos } 69*ce0e08e2SPeter Avalos 70*ce0e08e2SPeter Avalos pnext = &objp->next; 71*ce0e08e2SPeter Avalos 72*ce0e08e2SPeter Avalos if (!xdr_pointer(xdrs, (char **) pnext, 73*ce0e08e2SPeter Avalos sizeof (rpcbs_addrlist), 74*ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_addrlist)) { 75*ce0e08e2SPeter Avalos return (FALSE); 76*ce0e08e2SPeter Avalos } 77*ce0e08e2SPeter Avalos 78*ce0e08e2SPeter Avalos return (TRUE); 79*ce0e08e2SPeter Avalos } 80*ce0e08e2SPeter Avalos 81*ce0e08e2SPeter Avalos /* Link list of all the stats about rmtcall */ 82*ce0e08e2SPeter Avalos 83*ce0e08e2SPeter Avalos bool_t 84*ce0e08e2SPeter Avalos xdr_rpcbs_rmtcalllist(XDR *xdrs, rpcbs_rmtcalllist *objp) 85*ce0e08e2SPeter Avalos { 86*ce0e08e2SPeter Avalos int32_t *buf; 87*ce0e08e2SPeter Avalos struct rpcbs_rmtcalllist **pnext; 88*ce0e08e2SPeter Avalos 89*ce0e08e2SPeter Avalos if (xdrs->x_op == XDR_ENCODE) { 90*ce0e08e2SPeter Avalos buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT); 91*ce0e08e2SPeter Avalos if (buf == NULL) { 92*ce0e08e2SPeter Avalos if (!xdr_u_int32_t(xdrs, &objp->prog)) { 93*ce0e08e2SPeter Avalos return (FALSE); 94*ce0e08e2SPeter Avalos } 95*ce0e08e2SPeter Avalos if (!xdr_u_int32_t(xdrs, &objp->vers)) { 96*ce0e08e2SPeter Avalos return (FALSE); 97*ce0e08e2SPeter Avalos } 98*ce0e08e2SPeter Avalos if (!xdr_u_int32_t(xdrs, &objp->proc)) { 99*ce0e08e2SPeter Avalos return (FALSE); 100*ce0e08e2SPeter Avalos } 101*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->success)) { 102*ce0e08e2SPeter Avalos return (FALSE); 103*ce0e08e2SPeter Avalos } 104*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->failure)) { 105*ce0e08e2SPeter Avalos return (FALSE); 106*ce0e08e2SPeter Avalos } 107*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->indirect)) { 108*ce0e08e2SPeter Avalos return (FALSE); 109*ce0e08e2SPeter Avalos } 110*ce0e08e2SPeter Avalos } else { 111*ce0e08e2SPeter Avalos IXDR_PUT_U_INT32(buf, objp->prog); 112*ce0e08e2SPeter Avalos IXDR_PUT_U_INT32(buf, objp->vers); 113*ce0e08e2SPeter Avalos IXDR_PUT_U_INT32(buf, objp->proc); 114*ce0e08e2SPeter Avalos IXDR_PUT_INT32(buf, objp->success); 115*ce0e08e2SPeter Avalos IXDR_PUT_INT32(buf, objp->failure); 116*ce0e08e2SPeter Avalos IXDR_PUT_INT32(buf, objp->indirect); 117*ce0e08e2SPeter Avalos } 118*ce0e08e2SPeter Avalos if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 119*ce0e08e2SPeter Avalos return (FALSE); 120*ce0e08e2SPeter Avalos } 121*ce0e08e2SPeter Avalos pnext = &objp->next; 122*ce0e08e2SPeter Avalos if (!xdr_pointer(xdrs, (char **) pnext, 123*ce0e08e2SPeter Avalos sizeof (rpcbs_rmtcalllist), 124*ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 125*ce0e08e2SPeter Avalos return (FALSE); 126*ce0e08e2SPeter Avalos } 127*ce0e08e2SPeter Avalos return (TRUE); 128*ce0e08e2SPeter Avalos } else if (xdrs->x_op == XDR_DECODE) { 129*ce0e08e2SPeter Avalos buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT); 130*ce0e08e2SPeter Avalos if (buf == NULL) { 131*ce0e08e2SPeter Avalos if (!xdr_u_int32_t(xdrs, &objp->prog)) { 132*ce0e08e2SPeter Avalos return (FALSE); 133*ce0e08e2SPeter Avalos } 134*ce0e08e2SPeter Avalos if (!xdr_u_int32_t(xdrs, &objp->vers)) { 135*ce0e08e2SPeter Avalos return (FALSE); 136*ce0e08e2SPeter Avalos } 137*ce0e08e2SPeter Avalos if (!xdr_u_int32_t(xdrs, &objp->proc)) { 138*ce0e08e2SPeter Avalos return (FALSE); 139*ce0e08e2SPeter Avalos } 140*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->success)) { 141*ce0e08e2SPeter Avalos return (FALSE); 142*ce0e08e2SPeter Avalos } 143*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->failure)) { 144*ce0e08e2SPeter Avalos return (FALSE); 145*ce0e08e2SPeter Avalos } 146*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->indirect)) { 147*ce0e08e2SPeter Avalos return (FALSE); 148*ce0e08e2SPeter Avalos } 149*ce0e08e2SPeter Avalos } else { 150*ce0e08e2SPeter Avalos objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf); 151*ce0e08e2SPeter Avalos objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf); 152*ce0e08e2SPeter Avalos objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf); 153*ce0e08e2SPeter Avalos objp->success = (int)IXDR_GET_INT32(buf); 154*ce0e08e2SPeter Avalos objp->failure = (int)IXDR_GET_INT32(buf); 155*ce0e08e2SPeter Avalos objp->indirect = (int)IXDR_GET_INT32(buf); 156*ce0e08e2SPeter Avalos } 157*ce0e08e2SPeter Avalos if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 158*ce0e08e2SPeter Avalos return (FALSE); 159*ce0e08e2SPeter Avalos } 160*ce0e08e2SPeter Avalos if (!xdr_pointer(xdrs, (char **) pnext, 161*ce0e08e2SPeter Avalos sizeof (rpcbs_rmtcalllist), 162*ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 163*ce0e08e2SPeter Avalos return (FALSE); 164*ce0e08e2SPeter Avalos } 165*ce0e08e2SPeter Avalos return (TRUE); 166*ce0e08e2SPeter Avalos } 167*ce0e08e2SPeter Avalos if (!xdr_u_int32_t(xdrs, &objp->prog)) { 168*ce0e08e2SPeter Avalos return (FALSE); 169*ce0e08e2SPeter Avalos } 170*ce0e08e2SPeter Avalos if (!xdr_u_int32_t(xdrs, &objp->vers)) { 171*ce0e08e2SPeter Avalos return (FALSE); 172*ce0e08e2SPeter Avalos } 173*ce0e08e2SPeter Avalos if (!xdr_u_int32_t(xdrs, &objp->proc)) { 174*ce0e08e2SPeter Avalos return (FALSE); 175*ce0e08e2SPeter Avalos } 176*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->success)) { 177*ce0e08e2SPeter Avalos return (FALSE); 178*ce0e08e2SPeter Avalos } 179*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->failure)) { 180*ce0e08e2SPeter Avalos return (FALSE); 181*ce0e08e2SPeter Avalos } 182*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->indirect)) { 183*ce0e08e2SPeter Avalos return (FALSE); 184*ce0e08e2SPeter Avalos } 185*ce0e08e2SPeter Avalos if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { 186*ce0e08e2SPeter Avalos return (FALSE); 187*ce0e08e2SPeter Avalos } 188*ce0e08e2SPeter Avalos if (!xdr_pointer(xdrs, (char **) pnext, 189*ce0e08e2SPeter Avalos sizeof (rpcbs_rmtcalllist), 190*ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 191*ce0e08e2SPeter Avalos return (FALSE); 192*ce0e08e2SPeter Avalos } 193*ce0e08e2SPeter Avalos return (TRUE); 194*ce0e08e2SPeter Avalos } 195*ce0e08e2SPeter Avalos 196*ce0e08e2SPeter Avalos bool_t 197*ce0e08e2SPeter Avalos xdr_rpcbs_proc(XDR *xdrs, rpcbs_proc objp) 198*ce0e08e2SPeter Avalos { 199*ce0e08e2SPeter Avalos if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC, 200*ce0e08e2SPeter Avalos sizeof (int), (xdrproc_t)xdr_int)) { 201*ce0e08e2SPeter Avalos return (FALSE); 202*ce0e08e2SPeter Avalos } 203*ce0e08e2SPeter Avalos return (TRUE); 204*ce0e08e2SPeter Avalos } 205*ce0e08e2SPeter Avalos 206*ce0e08e2SPeter Avalos bool_t 207*ce0e08e2SPeter Avalos xdr_rpcbs_addrlist_ptr(XDR *xdrs, rpcbs_addrlist_ptr *objp) 208*ce0e08e2SPeter Avalos { 209*ce0e08e2SPeter Avalos if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_addrlist), 210*ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_addrlist)) { 211*ce0e08e2SPeter Avalos return (FALSE); 212*ce0e08e2SPeter Avalos } 213*ce0e08e2SPeter Avalos return (TRUE); 214*ce0e08e2SPeter Avalos } 215*ce0e08e2SPeter Avalos 216*ce0e08e2SPeter Avalos bool_t 217*ce0e08e2SPeter Avalos xdr_rpcbs_rmtcalllist_ptr(XDR *xdrs, rpcbs_rmtcalllist_ptr *objp) 218*ce0e08e2SPeter Avalos { 219*ce0e08e2SPeter Avalos if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_rmtcalllist), 220*ce0e08e2SPeter Avalos (xdrproc_t)xdr_rpcbs_rmtcalllist)) { 221*ce0e08e2SPeter Avalos return (FALSE); 222*ce0e08e2SPeter Avalos } 223*ce0e08e2SPeter Avalos return (TRUE); 224*ce0e08e2SPeter Avalos } 225*ce0e08e2SPeter Avalos 226*ce0e08e2SPeter Avalos bool_t 227*ce0e08e2SPeter Avalos xdr_rpcb_stat(XDR *xdrs, rpcb_stat *objp) 228*ce0e08e2SPeter Avalos { 229*ce0e08e2SPeter Avalos 230*ce0e08e2SPeter Avalos if (!xdr_rpcbs_proc(xdrs, objp->info)) { 231*ce0e08e2SPeter Avalos return (FALSE); 232*ce0e08e2SPeter Avalos } 233*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->setinfo)) { 234*ce0e08e2SPeter Avalos return (FALSE); 235*ce0e08e2SPeter Avalos } 236*ce0e08e2SPeter Avalos if (!xdr_int(xdrs, &objp->unsetinfo)) { 237*ce0e08e2SPeter Avalos return (FALSE); 238*ce0e08e2SPeter Avalos } 239*ce0e08e2SPeter Avalos if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) { 240*ce0e08e2SPeter Avalos return (FALSE); 241*ce0e08e2SPeter Avalos } 242*ce0e08e2SPeter Avalos if (!xdr_rpcbs_rmtcalllist_ptr(xdrs, &objp->rmtinfo)) { 243*ce0e08e2SPeter Avalos return (FALSE); 244*ce0e08e2SPeter Avalos } 245*ce0e08e2SPeter Avalos return (TRUE); 246*ce0e08e2SPeter Avalos } 247*ce0e08e2SPeter Avalos 248*ce0e08e2SPeter Avalos /* 249*ce0e08e2SPeter Avalos * One rpcb_stat structure is returned for each version of rpcbind 250*ce0e08e2SPeter Avalos * being monitored. 251*ce0e08e2SPeter Avalos */ 252*ce0e08e2SPeter Avalos bool_t 253*ce0e08e2SPeter Avalos xdr_rpcb_stat_byvers(XDR *xdrs, rpcb_stat_byvers objp) 254*ce0e08e2SPeter Avalos { 255*ce0e08e2SPeter Avalos if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT, 256*ce0e08e2SPeter Avalos sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) { 257*ce0e08e2SPeter Avalos return (FALSE); 258*ce0e08e2SPeter Avalos } 259*ce0e08e2SPeter Avalos return (TRUE); 260*ce0e08e2SPeter Avalos } 261