Home | History | Annotate | Download | only in nfs
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License, Version 1.0 only
      6  * (the "License").  You may not use this file except in compliance
      7  * with the License.
      8  *
      9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
     10  * or http://www.opensolaris.org/os/licensing.
     11  * See the License for the specific language governing permissions
     12  * and limitations under the License.
     13  *
     14  * When distributing Covered Code, include this CDDL HEADER in each
     15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     16  * If applicable, add the following below this CDDL HEADER, with the
     17  * fields enclosed by brackets "[]" replaced with your own identifying
     18  * information: Portions Copyright [yyyy] [name of copyright owner]
     19  *
     20  * CDDL HEADER END
     21  */
     22 /*
     23  * Copyright (c) 1986,1997 by Sun Microsystems, Inc.
     24  * All rights reserved.
     25  */
     26 
     27 #pragma ident	"%Z%%M%	%I%	%E% SMI"
     28 
     29 #include <rpc/rpc.h>
     30 #include <rpc/bootparam.h>
     31 
     32 bool_t
     33 xdr_bp_machine_name_t(XDR *xdrs, bp_machine_name_t *objp)
     34 {
     35 	return (xdr_string(xdrs, objp, MAX_MACHINE_NAME));
     36 }
     37 
     38 bool_t
     39 xdr_bp_path_t(XDR *xdrs, bp_path_t *objp)
     40 {
     41 	return (xdr_string(xdrs, objp, MAX_PATH_LEN));
     42 }
     43 
     44 bool_t
     45 xdr_bp_fileid_t(XDR *xdrs, bp_fileid_t *objp)
     46 {
     47 	return (xdr_string(xdrs, objp, MAX_FILEID));
     48 }
     49 
     50 bool_t
     51 xdr_ip_addr_t(XDR *xdrs, ip_addr_t *objp)
     52 {
     53 	if (!xdr_char(xdrs, &objp->net))
     54 		return (FALSE);
     55 	if (!xdr_char(xdrs, &objp->host))
     56 		return (FALSE);
     57 	if (!xdr_char(xdrs, &objp->lh))
     58 		return (FALSE);
     59 	if (!xdr_char(xdrs, &objp->impno))
     60 		return (FALSE);
     61 	return (TRUE);
     62 }
     63 
     64 static struct xdr_discrim choices[] = {
     65 	{ IP_ADDR_TYPE, xdr_ip_addr_t },
     66 	{ __dontcare__, NULL }
     67 };
     68 
     69 bool_t
     70 xdr_bp_address(XDR *xdrs, bp_address *objp)
     71 {
     72 	return (xdr_union(xdrs, (enum_t *)&objp->address_type,
     73 	    (char *)&objp->bp_address, choices, (xdrproc_t)NULL));
     74 }
     75 
     76 bool_t
     77 xdr_bp_whoami_arg(XDR *xdrs, bp_whoami_arg *objp)
     78 {
     79 	return (xdr_bp_address(xdrs, &objp->client_address));
     80 }
     81 
     82 bool_t
     83 xdr_bp_whoami_res(XDR *xdrs, bp_whoami_res *objp)
     84 {
     85 	if (!xdr_bp_machine_name_t(xdrs, &objp->client_name))
     86 		return (FALSE);
     87 	if (!xdr_bp_machine_name_t(xdrs, &objp->domain_name))
     88 		return (FALSE);
     89 	if (!xdr_bp_address(xdrs, &objp->router_address))
     90 		return (FALSE);
     91 	return (TRUE);
     92 }
     93 
     94 bool_t
     95 xdr_bp_getfile_arg(XDR *xdrs, bp_getfile_arg *objp)
     96 {
     97 	if (!xdr_bp_machine_name_t(xdrs, &objp->client_name))
     98 		return (FALSE);
     99 	if (!xdr_bp_fileid_t(xdrs, &objp->file_id))
    100 		return (FALSE);
    101 	return (TRUE);
    102 }
    103 
    104 bool_t
    105 xdr_bp_getfile_res(XDR *xdrs, bp_getfile_res *objp)
    106 {
    107 	if (!xdr_bp_machine_name_t(xdrs, &objp->server_name))
    108 		return (FALSE);
    109 	if (!xdr_bp_address(xdrs, &objp->server_address))
    110 		return (FALSE);
    111 	if (!xdr_bp_path_t(xdrs, &objp->server_path))
    112 		return (FALSE);
    113 	return (TRUE);
    114 }
    115