xref: /freebsd/lib/libc/rpc/rpcb_st_xdr.c (revision 102c7c92999b70a04b58b4506aba62701f195b1a)
18360efbdSAlfred Perlstein /*	$NetBSD: rpcb_st_xdr.c,v 1.3 2000/07/14 08:40:42 fvdl Exp $	*/
28360efbdSAlfred Perlstein 
38360efbdSAlfred Perlstein /*
48360efbdSAlfred Perlstein  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
58360efbdSAlfred Perlstein  * unrestricted use provided that this legend is included on all tape
68360efbdSAlfred Perlstein  * media and as a part of the software program in whole or part.  Users
78360efbdSAlfred Perlstein  * may copy or modify Sun RPC without charge, but are not authorized
88360efbdSAlfred Perlstein  * to license or distribute it to anyone else except as part of a product or
98360efbdSAlfred Perlstein  * program developed by the user.
108360efbdSAlfred Perlstein  *
118360efbdSAlfred Perlstein  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
128360efbdSAlfred Perlstein  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
138360efbdSAlfred Perlstein  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
148360efbdSAlfred Perlstein  *
158360efbdSAlfred Perlstein  * Sun RPC is provided with no support and without any obligation on the
168360efbdSAlfred Perlstein  * part of Sun Microsystems, Inc. to assist in its use, correction,
178360efbdSAlfred Perlstein  * modification or enhancement.
188360efbdSAlfred Perlstein  *
198360efbdSAlfred Perlstein  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
208360efbdSAlfred Perlstein  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
218360efbdSAlfred Perlstein  * OR ANY PART THEREOF.
228360efbdSAlfred Perlstein  *
238360efbdSAlfred Perlstein  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
248360efbdSAlfred Perlstein  * or profits or other special, indirect and consequential damages, even if
258360efbdSAlfred Perlstein  * Sun has been advised of the possibility of such damages.
268360efbdSAlfred Perlstein  *
278360efbdSAlfred Perlstein  * Sun Microsystems, Inc.
288360efbdSAlfred Perlstein  * 2550 Garcia Avenue
298360efbdSAlfred Perlstein  * Mountain View, California  94043
308360efbdSAlfred Perlstein  */
318360efbdSAlfred Perlstein /*
328360efbdSAlfred Perlstein  * Copyright 1991 Sun Microsystems, Inc.
338360efbdSAlfred Perlstein  * rpcb_stat_xdr.c
348360efbdSAlfred Perlstein  */
358360efbdSAlfred Perlstein 
368360efbdSAlfred Perlstein /*
378360efbdSAlfred Perlstein  * This file was generated from rpcb_prot.x, but includes only those
388360efbdSAlfred Perlstein  * routines used with the rpcbind stats facility.
398360efbdSAlfred Perlstein  */
408360efbdSAlfred Perlstein 
41d3d20c82SDavid E. O'Brien #include <sys/cdefs.h>
42d3d20c82SDavid E. O'Brien __FBSDID("$FreeBSD$");
43d3d20c82SDavid E. O'Brien 
448360efbdSAlfred Perlstein #include "namespace.h"
458360efbdSAlfred Perlstein #include <rpc/rpc.h>
468360efbdSAlfred Perlstein #include "un-namespace.h"
478360efbdSAlfred Perlstein 
488360efbdSAlfred Perlstein /* Link list of all the stats about getport and getaddr */
498360efbdSAlfred Perlstein 
508360efbdSAlfred Perlstein bool_t
518360efbdSAlfred Perlstein xdr_rpcbs_addrlist(xdrs, objp)
528360efbdSAlfred Perlstein 	XDR *xdrs;
538360efbdSAlfred Perlstein 	rpcbs_addrlist *objp;
548360efbdSAlfred Perlstein {
55102c7c92SJohn Birrell 	struct rpcbs_addrlist **pnext;
568360efbdSAlfred Perlstein 
578360efbdSAlfred Perlstein 	    if (!xdr_u_int32_t(xdrs, &objp->prog)) {
588360efbdSAlfred Perlstein 		return (FALSE);
598360efbdSAlfred Perlstein 	    }
608360efbdSAlfred Perlstein 	    if (!xdr_u_int32_t(xdrs, &objp->vers)) {
618360efbdSAlfred Perlstein 		return (FALSE);
628360efbdSAlfred Perlstein 	    }
638360efbdSAlfred Perlstein 	    if (!xdr_int(xdrs, &objp->success)) {
648360efbdSAlfred Perlstein 		return (FALSE);
658360efbdSAlfred Perlstein 	    }
668360efbdSAlfred Perlstein 	    if (!xdr_int(xdrs, &objp->failure)) {
678360efbdSAlfred Perlstein 		return (FALSE);
688360efbdSAlfred Perlstein 	    }
698360efbdSAlfred Perlstein 	    if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
708360efbdSAlfred Perlstein 		return (FALSE);
718360efbdSAlfred Perlstein 	    }
728360efbdSAlfred Perlstein 
73102c7c92SJohn Birrell 	    pnext = &objp->next;
74102c7c92SJohn Birrell 
75102c7c92SJohn Birrell 	    if (!xdr_pointer(xdrs, (char **) pnext,
768360efbdSAlfred Perlstein 			sizeof (rpcbs_addrlist),
778360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_addrlist)) {
788360efbdSAlfred Perlstein 		return (FALSE);
798360efbdSAlfred Perlstein 	    }
808360efbdSAlfred Perlstein 
818360efbdSAlfred Perlstein 	return (TRUE);
828360efbdSAlfred Perlstein }
838360efbdSAlfred Perlstein 
848360efbdSAlfred Perlstein /* Link list of all the stats about rmtcall */
858360efbdSAlfred Perlstein 
868360efbdSAlfred Perlstein bool_t
878360efbdSAlfred Perlstein xdr_rpcbs_rmtcalllist(xdrs, objp)
888360efbdSAlfred Perlstein 	XDR *xdrs;
898360efbdSAlfred Perlstein 	rpcbs_rmtcalllist *objp;
908360efbdSAlfred Perlstein {
918360efbdSAlfred Perlstein 	int32_t *buf;
92102c7c92SJohn Birrell 	struct rpcbs_rmtcalllist **pnext;
938360efbdSAlfred Perlstein 
948360efbdSAlfred Perlstein 	if (xdrs->x_op == XDR_ENCODE) {
958360efbdSAlfred Perlstein 	buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
968360efbdSAlfred Perlstein 	if (buf == NULL) {
978360efbdSAlfred Perlstein 		if (!xdr_u_int32_t(xdrs, &objp->prog)) {
988360efbdSAlfred Perlstein 			return (FALSE);
998360efbdSAlfred Perlstein 		}
1008360efbdSAlfred Perlstein 		if (!xdr_u_int32_t(xdrs, &objp->vers)) {
1018360efbdSAlfred Perlstein 			return (FALSE);
1028360efbdSAlfred Perlstein 		}
1038360efbdSAlfred Perlstein 		if (!xdr_u_int32_t(xdrs, &objp->proc)) {
1048360efbdSAlfred Perlstein 			return (FALSE);
1058360efbdSAlfred Perlstein 		}
1068360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->success)) {
1078360efbdSAlfred Perlstein 			return (FALSE);
1088360efbdSAlfred Perlstein 		}
1098360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->failure)) {
1108360efbdSAlfred Perlstein 			return (FALSE);
1118360efbdSAlfred Perlstein 		}
1128360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->indirect)) {
1138360efbdSAlfred Perlstein 			return (FALSE);
1148360efbdSAlfred Perlstein 		}
1158360efbdSAlfred Perlstein 	} else {
1168360efbdSAlfred Perlstein 		IXDR_PUT_U_INT32(buf, objp->prog);
1178360efbdSAlfred Perlstein 		IXDR_PUT_U_INT32(buf, objp->vers);
1188360efbdSAlfred Perlstein 		IXDR_PUT_U_INT32(buf, objp->proc);
1198360efbdSAlfred Perlstein 		IXDR_PUT_INT32(buf, objp->success);
1208360efbdSAlfred Perlstein 		IXDR_PUT_INT32(buf, objp->failure);
1218360efbdSAlfred Perlstein 		IXDR_PUT_INT32(buf, objp->indirect);
1228360efbdSAlfred Perlstein 	}
1238360efbdSAlfred Perlstein 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
1248360efbdSAlfred Perlstein 		return (FALSE);
1258360efbdSAlfred Perlstein 	}
126102c7c92SJohn Birrell 	pnext = &objp->next;
127102c7c92SJohn Birrell 	if (!xdr_pointer(xdrs, (char **) pnext,
1288360efbdSAlfred Perlstein 			sizeof (rpcbs_rmtcalllist),
1298360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
1308360efbdSAlfred Perlstein 		return (FALSE);
1318360efbdSAlfred Perlstein 	}
1328360efbdSAlfred Perlstein 	return (TRUE);
1338360efbdSAlfred Perlstein 	} else if (xdrs->x_op == XDR_DECODE) {
1348360efbdSAlfred Perlstein 	buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
1358360efbdSAlfred Perlstein 	if (buf == NULL) {
1368360efbdSAlfred Perlstein 		if (!xdr_u_int32_t(xdrs, &objp->prog)) {
1378360efbdSAlfred Perlstein 			return (FALSE);
1388360efbdSAlfred Perlstein 		}
1398360efbdSAlfred Perlstein 		if (!xdr_u_int32_t(xdrs, &objp->vers)) {
1408360efbdSAlfred Perlstein 			return (FALSE);
1418360efbdSAlfred Perlstein 		}
1428360efbdSAlfred Perlstein 		if (!xdr_u_int32_t(xdrs, &objp->proc)) {
1438360efbdSAlfred Perlstein 			return (FALSE);
1448360efbdSAlfred Perlstein 		}
1458360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->success)) {
1468360efbdSAlfred Perlstein 			return (FALSE);
1478360efbdSAlfred Perlstein 		}
1488360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->failure)) {
1498360efbdSAlfred Perlstein 			return (FALSE);
1508360efbdSAlfred Perlstein 		}
1518360efbdSAlfred Perlstein 		if (!xdr_int(xdrs, &objp->indirect)) {
1528360efbdSAlfred Perlstein 			return (FALSE);
1538360efbdSAlfred Perlstein 		}
1548360efbdSAlfred Perlstein 	} else {
1558360efbdSAlfred Perlstein 		objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf);
1568360efbdSAlfred Perlstein 		objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf);
1578360efbdSAlfred Perlstein 		objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf);
1588360efbdSAlfred Perlstein 		objp->success = (int)IXDR_GET_INT32(buf);
1598360efbdSAlfred Perlstein 		objp->failure = (int)IXDR_GET_INT32(buf);
1608360efbdSAlfred Perlstein 		objp->indirect = (int)IXDR_GET_INT32(buf);
1618360efbdSAlfred Perlstein 	}
1628360efbdSAlfred Perlstein 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
1638360efbdSAlfred Perlstein 		return (FALSE);
1648360efbdSAlfred Perlstein 	}
165102c7c92SJohn Birrell 	if (!xdr_pointer(xdrs, (char **) pnext,
1668360efbdSAlfred Perlstein 			sizeof (rpcbs_rmtcalllist),
1678360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
1688360efbdSAlfred Perlstein 		return (FALSE);
1698360efbdSAlfred Perlstein 	}
1708360efbdSAlfred Perlstein 	return (TRUE);
1718360efbdSAlfred Perlstein 	}
1728360efbdSAlfred Perlstein 	if (!xdr_u_int32_t(xdrs, &objp->prog)) {
1738360efbdSAlfred Perlstein 		return (FALSE);
1748360efbdSAlfred Perlstein 	}
1758360efbdSAlfred Perlstein 	if (!xdr_u_int32_t(xdrs, &objp->vers)) {
1768360efbdSAlfred Perlstein 		return (FALSE);
1778360efbdSAlfred Perlstein 	}
1788360efbdSAlfred Perlstein 	if (!xdr_u_int32_t(xdrs, &objp->proc)) {
1798360efbdSAlfred Perlstein 		return (FALSE);
1808360efbdSAlfred Perlstein 	}
1818360efbdSAlfred Perlstein 	if (!xdr_int(xdrs, &objp->success)) {
1828360efbdSAlfred Perlstein 		return (FALSE);
1838360efbdSAlfred Perlstein 	}
1848360efbdSAlfred Perlstein 	if (!xdr_int(xdrs, &objp->failure)) {
1858360efbdSAlfred Perlstein 		return (FALSE);
1868360efbdSAlfred Perlstein 	}
1878360efbdSAlfred Perlstein 	if (!xdr_int(xdrs, &objp->indirect)) {
1888360efbdSAlfred Perlstein 		return (FALSE);
1898360efbdSAlfred Perlstein 	}
1908360efbdSAlfred Perlstein 	if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) {
1918360efbdSAlfred Perlstein 		return (FALSE);
1928360efbdSAlfred Perlstein 	}
193102c7c92SJohn Birrell 	if (!xdr_pointer(xdrs, (char **) pnext,
1948360efbdSAlfred Perlstein 			sizeof (rpcbs_rmtcalllist),
1958360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
1968360efbdSAlfred Perlstein 		return (FALSE);
1978360efbdSAlfred Perlstein 	}
1988360efbdSAlfred Perlstein 	return (TRUE);
1998360efbdSAlfred Perlstein }
2008360efbdSAlfred Perlstein 
2018360efbdSAlfred Perlstein bool_t
2028360efbdSAlfred Perlstein xdr_rpcbs_proc(xdrs, objp)
2038360efbdSAlfred Perlstein 	XDR *xdrs;
2048360efbdSAlfred Perlstein 	rpcbs_proc objp;
2058360efbdSAlfred Perlstein {
2068360efbdSAlfred Perlstein 	if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBSTAT_HIGHPROC,
2078360efbdSAlfred Perlstein 	    sizeof (int), (xdrproc_t)xdr_int)) {
2088360efbdSAlfred Perlstein 		return (FALSE);
2098360efbdSAlfred Perlstein 	}
2108360efbdSAlfred Perlstein 	return (TRUE);
2118360efbdSAlfred Perlstein }
2128360efbdSAlfred Perlstein 
2138360efbdSAlfred Perlstein bool_t
2148360efbdSAlfred Perlstein xdr_rpcbs_addrlist_ptr(xdrs, objp)
2158360efbdSAlfred Perlstein 	XDR *xdrs;
2168360efbdSAlfred Perlstein 	rpcbs_addrlist_ptr *objp;
2178360efbdSAlfred Perlstein {
2188360efbdSAlfred Perlstein 	if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_addrlist),
2198360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_addrlist)) {
2208360efbdSAlfred Perlstein 		return (FALSE);
2218360efbdSAlfred Perlstein 	}
2228360efbdSAlfred Perlstein 	return (TRUE);
2238360efbdSAlfred Perlstein }
2248360efbdSAlfred Perlstein 
2258360efbdSAlfred Perlstein bool_t
2268360efbdSAlfred Perlstein xdr_rpcbs_rmtcalllist_ptr(xdrs, objp)
2278360efbdSAlfred Perlstein 	XDR *xdrs;
2288360efbdSAlfred Perlstein 	rpcbs_rmtcalllist_ptr *objp;
2298360efbdSAlfred Perlstein {
2308360efbdSAlfred Perlstein 	if (!xdr_pointer(xdrs, (char **)objp, sizeof (rpcbs_rmtcalllist),
2318360efbdSAlfred Perlstein 			(xdrproc_t)xdr_rpcbs_rmtcalllist)) {
2328360efbdSAlfred Perlstein 		return (FALSE);
2338360efbdSAlfred Perlstein 	}
2348360efbdSAlfred Perlstein 	return (TRUE);
2358360efbdSAlfred Perlstein }
2368360efbdSAlfred Perlstein 
2378360efbdSAlfred Perlstein bool_t
2388360efbdSAlfred Perlstein xdr_rpcb_stat(xdrs, objp)
2398360efbdSAlfred Perlstein 	XDR *xdrs;
2408360efbdSAlfred Perlstein 	rpcb_stat *objp;
2418360efbdSAlfred Perlstein {
2428360efbdSAlfred Perlstein 
2438360efbdSAlfred Perlstein 	if (!xdr_rpcbs_proc(xdrs, objp->info)) {
2448360efbdSAlfred Perlstein 		return (FALSE);
2458360efbdSAlfred Perlstein 	}
2468360efbdSAlfred Perlstein 	if (!xdr_int(xdrs, &objp->setinfo)) {
2478360efbdSAlfred Perlstein 		return (FALSE);
2488360efbdSAlfred Perlstein 	}
2498360efbdSAlfred Perlstein 	if (!xdr_int(xdrs, &objp->unsetinfo)) {
2508360efbdSAlfred Perlstein 		return (FALSE);
2518360efbdSAlfred Perlstein 	}
2528360efbdSAlfred Perlstein 	if (!xdr_rpcbs_addrlist_ptr(xdrs, &objp->addrinfo)) {
2538360efbdSAlfred Perlstein 		return (FALSE);
2548360efbdSAlfred Perlstein 	}
255988553e9SAlfred Perlstein 	if (!xdr_rpcbs_rmtcalllist_ptr(xdrs, &objp->rmtinfo)) {
256988553e9SAlfred Perlstein 		return (FALSE);
257988553e9SAlfred Perlstein 	}
2588360efbdSAlfred Perlstein 	return (TRUE);
2598360efbdSAlfred Perlstein }
2608360efbdSAlfred Perlstein 
2618360efbdSAlfred Perlstein /*
2628360efbdSAlfred Perlstein  * One rpcb_stat structure is returned for each version of rpcbind
2638360efbdSAlfred Perlstein  * being monitored.
2648360efbdSAlfred Perlstein  */
2658360efbdSAlfred Perlstein bool_t
2668360efbdSAlfred Perlstein xdr_rpcb_stat_byvers(xdrs, objp)
2678360efbdSAlfred Perlstein     XDR *xdrs;
2688360efbdSAlfred Perlstein     rpcb_stat_byvers objp;
2698360efbdSAlfred Perlstein {
2708360efbdSAlfred Perlstein 	if (!xdr_vector(xdrs, (char *)(void *)objp, RPCBVERS_STAT,
2718360efbdSAlfred Perlstein 	    sizeof (rpcb_stat), (xdrproc_t)xdr_rpcb_stat)) {
2728360efbdSAlfred Perlstein 		return (FALSE);
2738360efbdSAlfred Perlstein 	}
2748360efbdSAlfred Perlstein 	return (TRUE);
2758360efbdSAlfred Perlstein }
276