xdryp.c revision 7597
11558Srgrimes/*
21558Srgrimes * Copyright (c) 1992/3 Theo de Raadt <deraadt@fsa.ca>
31558Srgrimes * All rights reserved.
41558Srgrimes *
51558Srgrimes * Redistribution and use in source and binary forms, with or without
61558Srgrimes * modification, are permitted provided that the following conditions
71558Srgrimes * are met:
81558Srgrimes * 1. Redistributions of source code must retain the above copyright
91558Srgrimes *    notice, this list of conditions and the following disclaimer.
101558Srgrimes * 2. Redistributions in binary form must reproduce the above copyright
111558Srgrimes *    notice, this list of conditions and the following disclaimer in the
121558Srgrimes *    documentation and/or other materials provided with the distribution.
131558Srgrimes * 3. The name of the author may not be used to endorse or promote
141558Srgrimes *    products derived from this software without specific prior written
151558Srgrimes *    permission.
161558Srgrimes *
171558Srgrimes * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
181558Srgrimes * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
191558Srgrimes * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
201558Srgrimes * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
211558Srgrimes * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
221558Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
231558Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
241558Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
251558Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
261558Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
271558Srgrimes * SUCH DAMAGE.
281558Srgrimes */
291558Srgrimes
301558Srgrimes#ifndef LINT
311558Srgrimesstatic char *rcsid = "$Id: xdryp.c,v 1.2 1995/04/02 01:02:17 wpaul Exp $";
321558Srgrimes#endif
331558Srgrimes
341558Srgrimes#include <sys/param.h>
351558Srgrimes#include <sys/types.h>
361558Srgrimes#include <sys/socket.h>
371558Srgrimes#include <stdio.h>
381558Srgrimes#include <string.h>
391558Srgrimes#include <stdlib.h>
401558Srgrimes#include <ctype.h>
411558Srgrimes#include <rpc/rpc.h>
421558Srgrimes#include <rpc/xdr.h>
431558Srgrimes#include <rpcsvc/yp_prot.h>
441558Srgrimes#include <rpcsvc/ypclnt.h>
451558Srgrimes
461558Srgrimesextern int (*ypresp_allfn)();
471558Srgrimesextern void *ypresp_data;
481558Srgrimes
491558Srgrimesstruct ypresp_all {
501558Srgrimes	bool_t more;
511558Srgrimes	union {
521558Srgrimes		struct ypresp_key_val val;
531558Srgrimes	} ypresp_all_u;
541558Srgrimes};
551558Srgrimes
561558Srgrimesenum ypxfrstat {
571558Srgrimes	YPXFR_SUCC = 1,
581558Srgrimes	YPXFR_AGE = 2,
591558Srgrimes	YPXFR_NOMAP = -1,
601558Srgrimes	YPXFR_NODOM = -2,
611558Srgrimes	YPXFR_RSRC = -3,
621558Srgrimes	YPXFR_RPC = -4,
631558Srgrimes	YPXFR_MADDR = -5,
641558Srgrimes	YPXFR_YPERR = -6,
651558Srgrimes	YPXFR_BADARGS = -7,
6621174Sguido	YPXFR_DBM = -8,
671558Srgrimes	YPXFR_FILE = -9,
681558Srgrimes	YPXFR_SKEW = -10,
691558Srgrimes	YPXFR_CLEAR = -11,
701558Srgrimes	YPXFR_FORCE = -12,
711558Srgrimes	YPXFR_XFRERR = -13,
721558Srgrimes	YPXFR_REFUSED = -14,
731558Srgrimes};
741558Srgrimes
751558Srgrimesstruct ypresp_xfr {
761558Srgrimes	u_int transid;
771558Srgrimes	enum ypxfrstat xfrstat;
781558Srgrimes};
791558Srgrimes
801558Srgrimesbool_t
811558Srgrimesxdr_domainname(xdrs, objp)
821558SrgrimesXDR *xdrs;
831558Srgrimeschar *objp;
841558Srgrimes{
851558Srgrimes	if (!xdr_string(xdrs, &objp, YPMAXDOMAIN)) {
861558Srgrimes		return (FALSE);
871558Srgrimes	}
881558Srgrimes	return (TRUE);
891558Srgrimes}
901558Srgrimes
911558Srgrimesbool_t
921558Srgrimesxdr_peername(xdrs, objp)
931558SrgrimesXDR *xdrs;
941558Srgrimeschar *objp;
951558Srgrimes{
961558Srgrimes	if (!xdr_string(xdrs, &objp, YPMAXPEER)) {
971558Srgrimes		return (FALSE);
981558Srgrimes	}
991558Srgrimes	return (TRUE);
1001558Srgrimes}
1011558Srgrimes
1021558Srgrimesbool_t
1031558Srgrimesxdr_datum(xdrs, objp)
1041558SrgrimesXDR *xdrs;
1051558Srgrimesdatum *objp;
1061558Srgrimes{
1071558Srgrimes	if (!xdr_bytes(xdrs, (char **)&objp->dptr, (u_int *)&objp->dsize, YPMAXRECORD)) {
1081558Srgrimes		return (FALSE);
1091558Srgrimes	}
1101558Srgrimes	return (TRUE);
1111558Srgrimes}
1121558Srgrimes
1131558Srgrimesbool_t
1141558Srgrimesxdr_mapname(xdrs, objp)
1151558SrgrimesXDR *xdrs;
1161558Srgrimeschar *objp;
1171558Srgrimes{
1181558Srgrimes	if (!xdr_string(xdrs, &objp, YPMAXMAP)) {
1191558Srgrimes		return (FALSE);
1201558Srgrimes	}
1211558Srgrimes	return (TRUE);
1221558Srgrimes}
1231558Srgrimes
1241558Srgrimesbool_t
1251558Srgrimesxdr_ypreq_key(xdrs, objp)
1261558SrgrimesXDR *xdrs;
1271558Srgrimesstruct ypreq_key *objp;
1281558Srgrimes{
1291558Srgrimes	if (!xdr_domainname(xdrs, objp->domain)) {
1301558Srgrimes		return (FALSE);
1311558Srgrimes	}
1321558Srgrimes	if (!xdr_mapname(xdrs, objp->map)) {
1331558Srgrimes		return (FALSE);
1341558Srgrimes	}
1351558Srgrimes	if (!xdr_datum(xdrs, &objp->keydat)) {
1361558Srgrimes		return (FALSE);
1371558Srgrimes	}
1381558Srgrimes	return (TRUE);
1391558Srgrimes}
1401558Srgrimes
1411558Srgrimesbool_t
1421558Srgrimesxdr_ypreq_nokey(xdrs, objp)
1431558SrgrimesXDR *xdrs;
1441558Srgrimesstruct ypreq_nokey *objp;
1451558Srgrimes{
1461558Srgrimes	if (!xdr_domainname(xdrs, objp->domain)) {
1471558Srgrimes		return (FALSE);
1481558Srgrimes	}
14921174Sguido	if (!xdr_mapname(xdrs, objp->map)) {
15021174Sguido		return (FALSE);
15121174Sguido	}
15221174Sguido	return (TRUE);
15321174Sguido}
1541558Srgrimes
1551558Srgrimesbool_t
1561558Srgrimesxdr_yp_inaddr(xdrs, objp)
1571558SrgrimesXDR *xdrs;
1581558Srgrimesstruct in_addr *objp;
1591558Srgrimes{
1601558Srgrimes	if (!xdr_opaque(xdrs, (caddr_t)&objp->s_addr, sizeof objp->s_addr)) {
1611558Srgrimes		return (FALSE);
1621558Srgrimes	}
1631558Srgrimes	return (TRUE);
1641558Srgrimes}
1651558Srgrimes
1661558Srgrimesbool_t
1671558Srgrimesxdr_ypbind_binding(xdrs, objp)
1681558SrgrimesXDR *xdrs;
1691558Srgrimesstruct ypbind_binding *objp;
1701558Srgrimes{
1711558Srgrimes	if (!xdr_yp_inaddr(xdrs, &objp->ypbind_binding_addr)) {
1721558Srgrimes		return (FALSE);
1731558Srgrimes	}
1741558Srgrimes	if (!xdr_opaque(xdrs, (void *)&objp->ypbind_binding_port,
1751558Srgrimes	    sizeof objp->ypbind_binding_port)) {
1761558Srgrimes		return (FALSE);
1771558Srgrimes	}
1781558Srgrimes	return (TRUE);
1791558Srgrimes}
1801558Srgrimes
1811558Srgrimesbool_t
1821558Srgrimesxdr_ypbind_resptype(xdrs, objp)
1831558SrgrimesXDR *xdrs;
1841558Srgrimesenum ypbind_resptype *objp;
1851558Srgrimes{
1861558Srgrimes	if (!xdr_enum(xdrs, (enum_t *)objp)) {
1871558Srgrimes		return (FALSE);
1881558Srgrimes	}
1891558Srgrimes	return (TRUE);
1901558Srgrimes}
1911558Srgrimes
1921558Srgrimesbool_t
1931558Srgrimesxdr_ypstat(xdrs, objp)
1941558SrgrimesXDR *xdrs;
1951558Srgrimesenum ypbind_resptype *objp;
1961558Srgrimes{
1971558Srgrimes	if (!xdr_enum(xdrs, (enum_t *)objp)) {
1981558Srgrimes		return (FALSE);
1991558Srgrimes	}
2001558Srgrimes	return (TRUE);
2011558Srgrimes}
2021558Srgrimes
2031558Srgrimesbool_t
2041558Srgrimesxdr_ypbind_resp(xdrs, objp)
2051558SrgrimesXDR *xdrs;
2061558Srgrimesstruct ypbind_resp *objp;
2071558Srgrimes{
2081558Srgrimes	if (!xdr_ypbind_resptype(xdrs, &objp->ypbind_status)) {
2091558Srgrimes		return (FALSE);
2101558Srgrimes	}
2111558Srgrimes	switch (objp->ypbind_status) {
2121558Srgrimes	case YPBIND_FAIL_VAL:
2131558Srgrimes		if (!xdr_u_int(xdrs, (u_int *)&objp->ypbind_respbody.ypbind_error)) {
2141558Srgrimes			return (FALSE);
2151558Srgrimes		}
2161558Srgrimes		break;
2171558Srgrimes	case YPBIND_SUCC_VAL:
2181558Srgrimes		if (!xdr_ypbind_binding(xdrs, &objp->ypbind_respbody.ypbind_bindinfo)) {
2191558Srgrimes			return (FALSE);
2201558Srgrimes		}
2211558Srgrimes		break;
2221558Srgrimes	default:
2231558Srgrimes		return (FALSE);
2241558Srgrimes	}
2251558Srgrimes	return (TRUE);
2261558Srgrimes}
2271558Srgrimes
2281558Srgrimesbool_t
2291558Srgrimesxdr_ypresp_val(xdrs, objp)
2301558SrgrimesXDR *xdrs;
2311558Srgrimesstruct ypresp_val *objp;
2321558Srgrimes{
2331558Srgrimes	if (!xdr_ypstat(xdrs, &objp->status)) {
2341558Srgrimes		return (FALSE);
2351558Srgrimes	}
2361558Srgrimes	if (!xdr_datum(xdrs, &objp->valdat)) {
2371558Srgrimes		return (FALSE);
2381558Srgrimes	}
2391558Srgrimes	return (TRUE);
2401558Srgrimes}
2411558Srgrimes
2421558Srgrimesbool_t
2431558Srgrimesxdr_ypbind_setdom(xdrs, objp)
2441558SrgrimesXDR *xdrs;
2451558Srgrimesstruct ypbind_setdom *objp;
2461558Srgrimes{
2471558Srgrimes	if (!xdr_domainname(xdrs, objp->ypsetdom_domain)) {
2481558Srgrimes		return (FALSE);
2491558Srgrimes	}
2501558Srgrimes	if (!xdr_ypbind_binding(xdrs, &objp->ypsetdom_binding)) {
2511558Srgrimes		return (FALSE);
2521558Srgrimes	}
2531558Srgrimes	if (!xdr_u_short(xdrs, &objp->ypsetdom_vers)) {
2541558Srgrimes		return (FALSE);
2551558Srgrimes	}
2561558Srgrimes	return (TRUE);
2571558Srgrimes}
2581558Srgrimes
2591558Srgrimesbool_t
2601558Srgrimesxdr_ypresp_key_val(xdrs, objp)
2611558SrgrimesXDR *xdrs;
2621558Srgrimesstruct ypresp_key_val *objp;
2631558Srgrimes{
2641558Srgrimes	if (!xdr_ypstat(xdrs, &objp->status)) {
2651558Srgrimes		return (FALSE);
2661558Srgrimes	}
2671558Srgrimes	if (!xdr_datum(xdrs, &objp->valdat)) {
2681558Srgrimes		return (FALSE);
2691558Srgrimes	}
2701558Srgrimes	if (!xdr_datum(xdrs, &objp->keydat)) {
2711558Srgrimes		return (FALSE);
2721558Srgrimes	}
2731558Srgrimes	return (TRUE);
2741558Srgrimes}
2751558Srgrimes
2761558Srgrimesbool_t
2771558Srgrimesxdr_ypresp_all(xdrs, objp)
2781558SrgrimesXDR *xdrs;
2791558Srgrimesstruct ypresp_all *objp;
2801558Srgrimes{
2811558Srgrimes	if (!xdr_bool(xdrs, &objp->more)) {
2821558Srgrimes		return (FALSE);
2831558Srgrimes	}
2841558Srgrimes	switch (objp->more) {
2851558Srgrimes	case TRUE:
2861558Srgrimes		if (!xdr_ypresp_key_val(xdrs, &objp->ypresp_all_u.val)) {
2871558Srgrimes			return (FALSE);
2881558Srgrimes		}
2891558Srgrimes		break;
2901558Srgrimes	case FALSE:
2911558Srgrimes		break;
2921558Srgrimes	default:
2931558Srgrimes		return (FALSE);
2941558Srgrimes	}
2951558Srgrimes	return (TRUE);
2961558Srgrimes}
2971558Srgrimes
2981558Srgrimesbool_t
2991558Srgrimesxdr_ypresp_all_seq(xdrs, objp)
3001558SrgrimesXDR *xdrs;
3011558Srgrimesu_long *objp;
3021558Srgrimes{
3031558Srgrimes	struct ypresp_all out;
3041558Srgrimes	u_long status;
3051558Srgrimes	char *key, *val;
3061558Srgrimes	int r;
3078871Srgrimes
3081558Srgrimes	bzero(&out, sizeof out);
3091558Srgrimes	while(1) {
3101558Srgrimes		if( !xdr_ypresp_all(xdrs, &out)) {
3111558Srgrimes			xdr_free(xdr_ypresp_all, (char *)&out);
3121558Srgrimes			*objp = YP_YPERR;
3131558Srgrimes			return FALSE;
3141558Srgrimes		}
3151558Srgrimes		if(out.more == 0) {
3161558Srgrimes			xdr_free(xdr_ypresp_all, (char *)&out);
3171558Srgrimes			return FALSE;
3181558Srgrimes		}
3191558Srgrimes		status = out.ypresp_all_u.val.status;
3201558Srgrimes		switch(status) {
3211558Srgrimes		case YP_TRUE:
3221558Srgrimes			key = (char *)malloc(out.ypresp_all_u.val.keydat.dsize + 1);
3231558Srgrimes			bcopy(out.ypresp_all_u.val.keydat.dptr, key,
3241558Srgrimes				out.ypresp_all_u.val.keydat.dsize);
3251558Srgrimes			key[out.ypresp_all_u.val.keydat.dsize] = '\0';
3261558Srgrimes			val = (char *)malloc(out.ypresp_all_u.val.valdat.dsize + 1);
3271558Srgrimes			bcopy(out.ypresp_all_u.val.valdat.dptr, val,
3281558Srgrimes				out.ypresp_all_u.val.valdat.dsize);
3291558Srgrimes			val[out.ypresp_all_u.val.valdat.dsize] = '\0';
3301558Srgrimes			xdr_free(xdr_ypresp_all, (char *)&out);
3311558Srgrimes
3321558Srgrimes			r = (*ypresp_allfn)(status,
3331558Srgrimes				key, out.ypresp_all_u.val.keydat.dsize,
3341558Srgrimes				val, out.ypresp_all_u.val.valdat.dsize,
3351558Srgrimes				ypresp_data);
3361558Srgrimes			*objp = status;
3371558Srgrimes			free(key);
3381558Srgrimes			free(val);
3391558Srgrimes			if(r)
3401558Srgrimes				return TRUE;
3411558Srgrimes			break;
3421558Srgrimes		case YP_NOMORE:
3431558Srgrimes			xdr_free(xdr_ypresp_all, (char *)&out);
3441558Srgrimes			return TRUE;
3451558Srgrimes		default:
3461558Srgrimes			xdr_free(xdr_ypresp_all, (char *)&out);
3471558Srgrimes			*objp = status;
3481558Srgrimes			return TRUE;
3491558Srgrimes		}
3501558Srgrimes	}
3511558Srgrimes}
3521558Srgrimes
3531558Srgrimesbool_t
3541558Srgrimesxdr_ypresp_master(xdrs, objp)
3551558SrgrimesXDR *xdrs;
3561558Srgrimesstruct ypresp_master *objp;
3571558Srgrimes{
3581558Srgrimes	if (!xdr_ypstat(xdrs, &objp->status)) {
3591558Srgrimes		return (FALSE);
3601558Srgrimes	}
3611558Srgrimes	if (!xdr_string(xdrs, &objp->master, YPMAXPEER)) {
3621558Srgrimes		return (FALSE);
3631558Srgrimes	}
3641558Srgrimes	return (TRUE);
3651558Srgrimes}
3661558Srgrimes
3671558Srgrimesbool_t
3681558Srgrimesxdr_ypmaplist_str(xdrs, objp)
3691558SrgrimesXDR *xdrs;
3701558Srgrimeschar *objp;
3711558Srgrimes{
3721558Srgrimes	if (!xdr_string(xdrs, &objp, YPMAXMAP+1)) {
3731558Srgrimes		return (FALSE);
3741558Srgrimes	}
3751558Srgrimes	return (TRUE);
3761558Srgrimes}
3771558Srgrimes
3781558Srgrimesbool_t
3791558Srgrimesxdr_ypmaplist(xdrs, objp)
3801558SrgrimesXDR *xdrs;
3811558Srgrimesstruct ypmaplist *objp;
3821558Srgrimes{
3831558Srgrimes	if (!xdr_ypmaplist_str(xdrs, objp->ypml_name)) {
3841558Srgrimes		return (FALSE);
3851558Srgrimes	}
3861558Srgrimes	if (!xdr_pointer(xdrs, (caddr_t *)&objp->ypml_next,
3871558Srgrimes	    sizeof(struct ypmaplist), xdr_ypmaplist)) {
3881558Srgrimes		return (FALSE);
3891558Srgrimes	}
3901558Srgrimes	return (TRUE);
3911558Srgrimes}
3921558Srgrimes
3931558Srgrimesbool_t
3941558Srgrimesxdr_ypresp_maplist(xdrs, objp)
3951558SrgrimesXDR *xdrs;
3961558Srgrimesstruct ypresp_maplist *objp;
3971558Srgrimes{
3981558Srgrimes	if (!xdr_ypstat(xdrs, &objp->status)) {
3991558Srgrimes		return (FALSE);
4001558Srgrimes	}
4011558Srgrimes	if (!xdr_pointer(xdrs, (caddr_t *)&objp->list,
4021558Srgrimes	    sizeof(struct ypmaplist), xdr_ypmaplist)) {
4031558Srgrimes		return (FALSE);
4041558Srgrimes	}
4058871Srgrimes	return (TRUE);
4061558Srgrimes}
4071558Srgrimes
4081558Srgrimesbool_t
4091558Srgrimesxdr_ypresp_order(xdrs, objp)
4101558SrgrimesXDR *xdrs;
4111558Srgrimesstruct ypresp_order *objp;
4121558Srgrimes{
4131558Srgrimes	if (!xdr_ypstat(xdrs, &objp->status)) {
4141558Srgrimes		return (FALSE);
4151558Srgrimes	}
4161558Srgrimes	if (!xdr_u_long(xdrs, &objp->ordernum)) {
4171558Srgrimes		return (FALSE);
4181558Srgrimes	}
4191558Srgrimes	return (TRUE);
4201558Srgrimes}
4211558Srgrimes
4221558Srgrimesbool_t
4231558Srgrimesxdr_ypxfrstat(xdrs, objp)
4241558SrgrimesXDR *xdrs;
4251558Srgrimesenum ypxfrstat *objp;
4261558Srgrimes{
4271558Srgrimes	if (!xdr_enum(xdrs, (enum_t *)objp)) {
4281558Srgrimes		return (FALSE);
4291558Srgrimes	}
4301558Srgrimes	return (TRUE);
4311558Srgrimes}
4321558Srgrimes
4331558Srgrimesbool_t
4341558Srgrimesxdr_ypresp_xfr(xdrs, objp)
4351558SrgrimesXDR *xdrs;
4361558Srgrimesstruct ypresp_xfr *objp;
4371558Srgrimes{
4381558Srgrimes	if (!xdr_u_int(xdrs, &objp->transid)) {
4391558Srgrimes		return (FALSE);
4401558Srgrimes	}
4411558Srgrimes	if (!xdr_ypxfrstat(xdrs, &objp->xfrstat)) {
4421558Srgrimes		return (FALSE);
4431558Srgrimes	}
4441558Srgrimes	return (TRUE);
4451558Srgrimes}
4461558Srgrimes
4471558Srgrimesbool_t
4481558Srgrimesxdr_ypmap_parms(xdrs, objp)
4491558SrgrimesXDR *xdrs;
4501558Srgrimesstruct ypmap_parms *objp;
4511558Srgrimes{
4521558Srgrimes	if (!xdr_domainname(xdrs, objp->domain)) {
4531558Srgrimes		return (FALSE);
4541558Srgrimes	}
4551558Srgrimes	if (!xdr_mapname(xdrs, objp->map)) {
4561558Srgrimes		return (FALSE);
4571558Srgrimes	}
4581558Srgrimes	if (!xdr_u_long(xdrs, &objp->ordernum)) {
4591558Srgrimes		return (FALSE);
4601558Srgrimes	}
4611558Srgrimes	if (!xdr_peername(xdrs, objp->owner)) {
4621558Srgrimes		return (FALSE);
4631558Srgrimes	}
4641558Srgrimes}
4651558Srgrimes
4661558Srgrimesbool_t
4671558Srgrimesxdr_ypreq_xfr(xdrs, objp)
4681558SrgrimesXDR *xdrs;
4691558Srgrimesstruct ypreq_xfr *objp;
4701558Srgrimes{
4711558Srgrimes	if (!xdr_ypmap_parms(xdrs, &objp->map_parms)) {
4721558Srgrimes		return (FALSE);
4731558Srgrimes	}
4741558Srgrimes	if (!xdr_u_long(xdrs, &objp->transid)) {
4751558Srgrimes		return (FALSE);
4761558Srgrimes	}
4771558Srgrimes	if (!xdr_u_long(xdrs, &objp->proto)) {
4781558Srgrimes		return (FALSE);
4791558Srgrimes	}
4801558Srgrimes	if (!xdr_u_short(xdrs, &objp->port)) {
4811558Srgrimes		return (FALSE);
4821558Srgrimes	}
4831558Srgrimes	return (TRUE);
4848871Srgrimes}
4851558Srgrimes
4861558Srgrimesbool_t
4871558Srgrimesxdr_yppush_status(xdrs, objp)
4881558SrgrimesXDR *xdrs;
4891558Srgrimesenum yppush_status *objp;
4901558Srgrimes{
4911558Srgrimes	if (!xdr_enum(xdrs, (enum_t *)objp)) {
4921558Srgrimes		return (FALSE);
4931558Srgrimes	}
4941558Srgrimes	return (TRUE);
4951558Srgrimes}
4961558Srgrimes
4971558Srgrimesbool_t
4981558Srgrimesxdr_yppushresp_xfr(xdrs, objp)
4991558SrgrimesXDR *xdrs;
5001558Srgrimesstruct yppushresp_xfr *objp;
5011558Srgrimes{
5021558Srgrimes	if (!xdr_u_long(xdrs, &objp->transid)) {
5031558Srgrimes		return (FALSE);
5041558Srgrimes	}
5051558Srgrimes	if (!xdr_yppush_status(xdrs, &objp->status)) {
5061558Srgrimes		return (FALSE);
5071558Srgrimes	}
5081558Srgrimes	return (TRUE);
5091558Srgrimes}
5101558Srgrimes