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