nfsauth_xdr.c revision a05fd0c9b9aa46cf66ddea7617e56facdf1f4aaf
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright/*
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * CDDL HEADER START
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright *
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * The contents of this file are subject to the terms of the
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * Common Development and Distribution License (the "License").
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * You may not use this file except in compliance with the License.
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright *
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * or http://www.opensolaris.org/os/licensing.
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * See the License for the specific language governing permissions
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * and limitations under the License.
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright *
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * When distributing Covered Code, include this CDDL HEADER in each
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * If applicable, add the following below this CDDL HEADER, with the
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * fields enclosed by brackets "[]" replaced with your own identifying
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * information: Portions Copyright [yyyy] [name of copyright owner]
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright *
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * CDDL HEADER END
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright */
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright/*
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross */
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright/*
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * Use is subject to license terms.
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright */
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright#include <stdlib.h>
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright#include <nfs/auth.h>
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright#include <rpc/auth_sys.h>
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wrightbool_t
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wrightxdr_varg(XDR *xdrs, varg_t *vap)
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright{
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_u_int(xdrs, &vap->vers))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright switch (vap->vers) {
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright case V_PROTO:
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_nfsauth_arg(xdrs, &vap->arg_u.arg))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright break;
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright /* Additional versions of the args go here */
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright default:
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright vap->vers = V_ERROR;
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright /* NOTREACHED */
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright }
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (TRUE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright}
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wrightbool_t
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wrightxdr_nfsauth_arg(XDR *xdrs, nfsauth_arg_t *argp)
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright{
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_u_int(xdrs, &argp->cmd))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_netobj(xdrs, &argp->areq.req_client))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_string(xdrs, &argp->areq.req_netid, ~0))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_string(xdrs, &argp->areq.req_path, A_MAXPATH))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_int(xdrs, &argp->areq.req_flavor))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_uid_t(xdrs, &argp->areq.req_clnt_uid))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_gid_t(xdrs, &argp->areq.req_clnt_gid))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (TRUE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright}
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wrightbool_t
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wrightxdr_nfsauth_res(XDR *xdrs, nfsauth_res_t *argp)
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright{
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_u_int(xdrs, &argp->stat))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_int(xdrs, &argp->ares.auth_perm))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_uid_t(xdrs, &argp->ares.auth_srv_uid))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if (!xdr_gid_t(xdrs, &argp->ares.auth_srv_gid))
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (FALSE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (TRUE);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright}
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright