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