+++ /dev/null
-From 001e3f26dc80b8f21bed7d9b5872fe10e8b4af04 Mon Sep 17 00:00:00 2001
-From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Date: Sat, 10 Nov 2012 17:29:53 +0100
-Subject: [PATCH] Automatically generate XDR header files from .x sources using
- rpcgen
-
-[Gustavo: update after dropping non-IPv6 support]
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-[yann.morin.1998@free.fr: update for 0.3.1]
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-[baruch: use external rpcgen]
-Signed-off-by: Baruch Siach <baruch@tkos.co.il>
----
- Makefile.am | 16 +-
- src/Makefile.am | 2 +-
- tirpc/rpc/rpcb_prot.h | 797 ------------------------------------------
- tirpc/rpcsvc/crypt.h | 109 ------
- 4 files changed, 14 insertions(+), 910 deletions(-)
- delete mode 100644 tirpc/rpc/rpcb_prot.h
- delete mode 100644 tirpc/rpcsvc/crypt.h
-
-diff --git a/Makefile.am b/Makefile.am
-index 3f6063771faf..368fb8a1aed2 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,6 +1,9 @@
- SUBDIRS = src man doc
- ACLOCAL_AMFLAGS = -I m4
-
-+GENFILES = tirpc/rpcsvc/crypt.h \
-+ tirpc/rpc/rpcb_prot.h
-+
- noinst_HEADERS = tirpc/reentrant.h \
- tirpc/getpeereid.h \
- tirpc/libc_private.h \
-@@ -8,7 +11,6 @@ noinst_HEADERS = tirpc/reentrant.h \
-
- nobase_include_HEADERS = tirpc/netconfig.h \
- tirpc/rpcsvc/crypt.x \
-- tirpc/rpcsvc/crypt.h \
- tirpc/rpc/xdr.h \
- tirpc/rpc/types.h \
- tirpc/rpc/svc_soc.h \
-@@ -21,7 +23,6 @@ nobase_include_HEADERS = tirpc/netconfig.h \
- tirpc/rpc/rpcent.h \
- tirpc/rpc/rpc_com.h \
- tirpc/rpc/rpcb_prot.x \
-- tirpc/rpc/rpcb_prot.h \
- tirpc/rpc/rpcb_clnt.h \
- tirpc/rpc/raw.h \
- tirpc/rpc/pmap_rmt.h \
-@@ -48,5 +49,14 @@ endif
- pkgconfigdir=$(libdir)/pkgconfig
- pkgconfig_DATA = libtirpc.pc
-
--CLEANFILES = cscope.* *~
-+nobase_nodist_include_HEADERS = $(GENFILES)
-+BUILT_SOURCES = $(GENFILES)
-+
-+$(GENFILES): %.h: %.x
-+ mkdir -p $(dir $@)
-+ rpcgen -h -o $@ $<
-+
-+force:
-+
-+CLEANFILES = cscope.* *~ $(GENFILES)
- DISTCLEANFILES = Makefile.in libtirpc*.tar.gz
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 2af40f16d03a..0b7e23835c36 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -8,7 +8,7 @@
- noinst_HEADERS = rpc_com.h debug.h
-
- AM_CPPFLAGS = -I$(top_srcdir)/tirpc -include config.h -DPORTMAP -DINET6 \
-- -D_GNU_SOURCE -Wall -pipe
-+ -D_GNU_SOURCE -Wall -pipe -I$(top_builddir)/tirpc
-
- lib_LTLIBRARIES = libtirpc.la
-
-diff --git a/tirpc/rpc/rpcb_prot.h b/tirpc/rpc/rpcb_prot.h
-deleted file mode 100644
-index 7ae48b805370..000000000000
---- a/tirpc/rpc/rpcb_prot.h
-+++ /dev/null
-@@ -1,797 +0,0 @@
--/*
-- * Please do not edit this file.
-- * It was generated using rpcgen.
-- */
--
--#ifndef _RPCB_PROT_H_RPCGEN
--#define _RPCB_PROT_H_RPCGEN
--
--#include <rpc/rpc.h>
--
--#ifndef IXDR_GET_INT32
--#define IXDR_GET_INT32(buf) IXDR_GET_LONG((buf))
--#endif
--#ifndef IXDR_PUT_INT32
--#define IXDR_PUT_INT32(buf, v) IXDR_PUT_LONG((buf), (v))
--#endif
--#ifndef IXDR_GET_U_INT32
--#define IXDR_GET_U_INT32(buf) IXDR_GET_U_LONG((buf))
--#endif
--#ifndef IXDR_PUT_U_INT32
--#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_U_LONG((buf), (v))
--#endif
--/*
-- * $FreeBSD: src/include/rpc/rpcb_prot.x,v 1.3 2002/03/13 10:29:06 obrien Exp $
-- *
-- * Copyright (c) 2009, Sun Microsystems, Inc.
-- * All rights reserved.
-- *
-- * Redistribution and use in source and binary forms, with or without
-- * modification, are permitted provided that the following conditions are met:
-- * - Redistributions of source code must retain the above copyright notice,
-- * this list of conditions and the following disclaimer.
-- * - Redistributions in binary form must reproduce the above copyright notice,
-- * this list of conditions and the following disclaimer in the documentation
-- * and/or other materials provided with the distribution.
-- * - Neither the name of Sun Microsystems, Inc. nor the names of its
-- * contributors may be used to endorse or promote products derived
-- * from this software without specific prior written permission.
-- *
-- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-- * POSSIBILITY OF SUCH DAMAGE.
-- */
--/*
-- * Copyright (c) 1988 by Sun Microsystems, Inc.
-- */
--/* from rpcb_prot.x */
--
--/* #pragma ident "@(#)rpcb_prot.x 1.5 94/04/29 SMI" */
--
--#ifndef _KERNEL
--
--
--/*
-- * The following procedures are supported by the protocol in version 3:
-- *
-- * RPCBPROC_NULL() returns ()
-- * takes nothing, returns nothing
-- *
-- * RPCBPROC_SET(rpcb) returns (bool_t)
-- * TRUE is success, FALSE is failure. Registers the tuple
-- * [prog, vers, address, owner, netid].
-- * Finds out owner and netid information on its own.
-- *
-- * RPCBPROC_UNSET(rpcb) returns (bool_t)
-- * TRUE is success, FALSE is failure. Un-registers tuple
-- * [prog, vers, netid]. addresses is ignored.
-- * If netid is NULL, unregister all.
-- *
-- * RPCBPROC_GETADDR(rpcb) returns (string).
-- * 0 is failure. Otherwise returns the universal address where the
-- * triple [prog, vers, netid] is registered. Ignore address and owner.
-- *
-- * RPCBPROC_DUMP() RETURNS (rpcblist_ptr)
-- * used to dump the entire rpcbind maps
-- *
-- * RPCBPROC_CALLIT(rpcb_rmtcallargs)
-- * RETURNS (rpcb_rmtcallres);
-- * Calls the procedure on the remote machine. If it is not registered,
-- * this procedure is quiet; i.e. it does not return error information!!!
-- * This routine only passes null authentication parameters.
-- * It has no interface to xdr routines for RPCBPROC_CALLIT.
-- *
-- * RPCBPROC_GETTIME() returns (int).
-- * Gets the remote machines time
-- *
-- * RPCBPROC_UADDR2TADDR(strint) RETURNS (struct netbuf)
-- * Returns the netbuf address from universal address.
-- *
-- * RPCBPROC_TADDR2UADDR(struct netbuf) RETURNS (string)
-- * Returns the universal address from netbuf address.
-- *
-- * END OF RPCBIND VERSION 3 PROCEDURES
-- */
--/*
-- * Except for RPCBPROC_CALLIT, the procedures above are carried over to
-- * rpcbind version 4. Those below are added or modified for version 4.
-- * NOTE: RPCBPROC_BCAST HAS THE SAME FUNCTIONALITY AND PROCEDURE NUMBER
-- * AS RPCBPROC_CALLIT.
-- *
-- * RPCBPROC_BCAST(rpcb_rmtcallargs)
-- * RETURNS (rpcb_rmtcallres);
-- * Calls the procedure on the remote machine. If it is not registered,
-- * this procedure IS quiet; i.e. it DOES NOT return error information!!!
-- * This routine should be used for broadcasting and nothing else.
-- *
-- * RPCBPROC_GETVERSADDR(rpcb) returns (string).
-- * 0 is failure. Otherwise returns the universal address where the
-- * triple [prog, vers, netid] is registered. Ignore address and owner.
-- * Same as RPCBPROC_GETADDR except that if the given version number
-- * is not available, the address is not returned.
-- *
-- * RPCBPROC_INDIRECT(rpcb_rmtcallargs)
-- * RETURNS (rpcb_rmtcallres);
-- * Calls the procedure on the remote machine. If it is not registered,
-- * this procedure is NOT quiet; i.e. it DOES return error information!!!
-- * as any normal application would expect.
-- *
-- * RPCBPROC_GETADDRLIST(rpcb) returns (rpcb_entry_list_ptr).
-- * Same as RPCBPROC_GETADDR except that it returns a list of all the
-- * addresses registered for the combination (prog, vers) (for all
-- * transports).
-- *
-- * RPCBPROC_GETSTAT(void) returns (rpcb_stat_byvers)
-- * Returns the statistics about the kind of requests received by rpcbind.
-- */
--
--/*
-- * A mapping of (program, version, network ID) to address
-- */
--
--struct rpcb {
-- rpcprog_t r_prog;
-- rpcvers_t r_vers;
-- char *r_netid;
-- char *r_addr;
-- char *r_owner;
--};
--typedef struct rpcb rpcb;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcb(XDR *, rpcb*);
--#elif __STDC__
--extern bool_t xdr_rpcb(XDR *, rpcb*);
--#else /* Old Style C */
--bool_t xdr_rpcb();
--#endif /* Old Style C */
--
--
--typedef rpcb RPCB;
--
--
--/*
-- * A list of mappings
-- *
-- * Below are two definitions for the rpcblist structure. This is done because
-- * xdr_rpcblist() is specified to take a struct rpcblist **, rather than a
-- * struct rpcblist * that rpcgen would produce. One version of the rpcblist
-- * structure (actually called rp__list) is used with rpcgen, and the other is
-- * defined only in the header file for compatibility with the specified
-- * interface.
-- */
--
--struct rp__list {
-- rpcb rpcb_map;
-- struct rp__list *rpcb_next;
--};
--typedef struct rp__list rp__list;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rp__list(XDR *, rp__list*);
--#elif __STDC__
--extern bool_t xdr_rp__list(XDR *, rp__list*);
--#else /* Old Style C */
--bool_t xdr_rp__list();
--#endif /* Old Style C */
--
--
--typedef rp__list *rpcblist_ptr;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcblist_ptr(XDR *, rpcblist_ptr*);
--#elif __STDC__
--extern bool_t xdr_rpcblist_ptr(XDR *, rpcblist_ptr*);
--#else /* Old Style C */
--bool_t xdr_rpcblist_ptr();
--#endif /* Old Style C */
--
--
--typedef struct rp__list rpcblist;
--typedef struct rp__list RPCBLIST;
--
--#ifndef __cplusplus
--struct rpcblist {
-- RPCB rpcb_map;
-- struct rpcblist *rpcb_next;
--};
--#endif
--
--#ifdef __cplusplus
--extern "C" {
--#endif
--extern bool_t xdr_rpcblist(XDR *, rpcblist**);
--#ifdef __cplusplus
--}
--#endif
--
--
--/*
-- * Arguments of remote calls
-- */
--
--struct rpcb_rmtcallargs {
-- rpcprog_t prog;
-- rpcvers_t vers;
-- rpcproc_t proc;
-- struct {
-- u_int args_len;
-- char *args_val;
-- } args;
--};
--typedef struct rpcb_rmtcallargs rpcb_rmtcallargs;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcb_rmtcallargs(XDR *, rpcb_rmtcallargs*);
--#elif __STDC__
--extern bool_t xdr_rpcb_rmtcallargs(XDR *, rpcb_rmtcallargs*);
--#else /* Old Style C */
--bool_t xdr_rpcb_rmtcallargs();
--#endif /* Old Style C */
--
--
--/*
-- * Client-side only representation of rpcb_rmtcallargs structure.
-- *
-- * The routine that XDRs the rpcb_rmtcallargs structure must deal with the
-- * opaque arguments in the "args" structure. xdr_rpcb_rmtcallargs() needs to
-- * be passed the XDR routine that knows the args' structure. This routine
-- * doesn't need to go over-the-wire (and it wouldn't make sense anyway) since
-- * the application being called already knows the args structure. So we use a
-- * different "XDR" structure on the client side, r_rpcb_rmtcallargs, which
-- * includes the args' XDR routine.
-- */
--struct r_rpcb_rmtcallargs {
-- rpcprog_t prog;
-- rpcvers_t vers;
-- rpcproc_t proc;
-- struct {
-- u_int args_len;
-- char *args_val;
-- } args;
-- xdrproc_t xdr_args; /* encodes args */
--};
--
--
--/*
-- * Results of the remote call
-- */
--
--struct rpcb_rmtcallres {
-- char *addr;
-- struct {
-- u_int results_len;
-- char *results_val;
-- } results;
--};
--typedef struct rpcb_rmtcallres rpcb_rmtcallres;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcb_rmtcallres(XDR *, rpcb_rmtcallres*);
--#elif __STDC__
--extern bool_t xdr_rpcb_rmtcallres(XDR *, rpcb_rmtcallres*);
--#else /* Old Style C */
--bool_t xdr_rpcb_rmtcallres();
--#endif /* Old Style C */
--
--
--/*
-- * Client-side only representation of rpcb_rmtcallres structure.
-- */
--struct r_rpcb_rmtcallres {
-- char *addr;
-- struct {
-- u_int32_t results_len;
-- char *results_val;
-- } results;
-- xdrproc_t xdr_res; /* decodes results */
--};
--
--/*
-- * rpcb_entry contains a merged address of a service on a particular
-- * transport, plus associated netconfig information. A list of rpcb_entrys
-- * is returned by RPCBPROC_GETADDRLIST. See netconfig.h for values used
-- * in r_nc_* fields.
-- */
--
--struct rpcb_entry {
-- char *r_maddr;
-- char *r_nc_netid;
-- u_int r_nc_semantics;
-- char *r_nc_protofmly;
-- char *r_nc_proto;
--};
--typedef struct rpcb_entry rpcb_entry;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcb_entry(XDR *, rpcb_entry*);
--#elif __STDC__
--extern bool_t xdr_rpcb_entry(XDR *, rpcb_entry*);
--#else /* Old Style C */
--bool_t xdr_rpcb_entry();
--#endif /* Old Style C */
--
--
--/*
-- * A list of addresses supported by a service.
-- */
--
--struct rpcb_entry_list {
-- rpcb_entry rpcb_entry_map;
-- struct rpcb_entry_list *rpcb_entry_next;
--};
--typedef struct rpcb_entry_list rpcb_entry_list;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcb_entry_list(XDR *, rpcb_entry_list*);
--#elif __STDC__
--extern bool_t xdr_rpcb_entry_list(XDR *, rpcb_entry_list*);
--#else /* Old Style C */
--bool_t xdr_rpcb_entry_list();
--#endif /* Old Style C */
--
--
--typedef rpcb_entry_list *rpcb_entry_list_ptr;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcb_entry_list_ptr(XDR *, rpcb_entry_list_ptr*);
--#elif __STDC__
--extern bool_t xdr_rpcb_entry_list_ptr(XDR *, rpcb_entry_list_ptr*);
--#else /* Old Style C */
--bool_t xdr_rpcb_entry_list_ptr();
--#endif /* Old Style C */
--
--
--/*
-- * rpcbind statistics
-- */
--
--#define rpcb_highproc_2 RPCBPROC_CALLIT
--#define rpcb_highproc_3 RPCBPROC_TADDR2UADDR
--#define rpcb_highproc_4 RPCBPROC_GETSTAT
--#define RPCBSTAT_HIGHPROC 13
--#define RPCBVERS_STAT 3
--#define RPCBVERS_4_STAT 2
--#define RPCBVERS_3_STAT 1
--#define RPCBVERS_2_STAT 0
--
--/* Link list of all the stats about getport and getaddr */
--
--struct rpcbs_addrlist {
-- rpcprog_t prog;
-- rpcvers_t vers;
-- int success;
-- int failure;
-- char *netid;
-- struct rpcbs_addrlist *next;
--};
--typedef struct rpcbs_addrlist rpcbs_addrlist;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcbs_addrlist(XDR *, rpcbs_addrlist*);
--#elif __STDC__
--extern bool_t xdr_rpcbs_addrlist(XDR *, rpcbs_addrlist*);
--#else /* Old Style C */
--bool_t xdr_rpcbs_addrlist();
--#endif /* Old Style C */
--
--
--/* Link list of all the stats about rmtcall */
--
--struct rpcbs_rmtcalllist {
-- rpcprog_t prog;
-- rpcvers_t vers;
-- rpcproc_t proc;
-- int success;
-- int failure;
-- int indirect;
-- char *netid;
-- struct rpcbs_rmtcalllist *next;
--};
--typedef struct rpcbs_rmtcalllist rpcbs_rmtcalllist;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcbs_rmtcalllist(XDR *, rpcbs_rmtcalllist*);
--#elif __STDC__
--extern bool_t xdr_rpcbs_rmtcalllist(XDR *, rpcbs_rmtcalllist*);
--#else /* Old Style C */
--bool_t xdr_rpcbs_rmtcalllist();
--#endif /* Old Style C */
--
--
--typedef int rpcbs_proc[RPCBSTAT_HIGHPROC];
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcbs_proc(XDR *, rpcbs_proc);
--#elif __STDC__
--extern bool_t xdr_rpcbs_proc(XDR *, rpcbs_proc);
--#else /* Old Style C */
--bool_t xdr_rpcbs_proc();
--#endif /* Old Style C */
--
--
--typedef rpcbs_addrlist *rpcbs_addrlist_ptr;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcbs_addrlist_ptr(XDR *, rpcbs_addrlist_ptr*);
--#elif __STDC__
--extern bool_t xdr_rpcbs_addrlist_ptr(XDR *, rpcbs_addrlist_ptr*);
--#else /* Old Style C */
--bool_t xdr_rpcbs_addrlist_ptr();
--#endif /* Old Style C */
--
--
--typedef rpcbs_rmtcalllist *rpcbs_rmtcalllist_ptr;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcbs_rmtcalllist_ptr(XDR *, rpcbs_rmtcalllist_ptr*);
--#elif __STDC__
--extern bool_t xdr_rpcbs_rmtcalllist_ptr(XDR *, rpcbs_rmtcalllist_ptr*);
--#else /* Old Style C */
--bool_t xdr_rpcbs_rmtcalllist_ptr();
--#endif /* Old Style C */
--
--
--struct rpcb_stat {
-- rpcbs_proc info;
-- int setinfo;
-- int unsetinfo;
-- rpcbs_addrlist_ptr addrinfo;
-- rpcbs_rmtcalllist_ptr rmtinfo;
--};
--typedef struct rpcb_stat rpcb_stat;
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcb_stat(XDR *, rpcb_stat*);
--#elif __STDC__
--extern bool_t xdr_rpcb_stat(XDR *, rpcb_stat*);
--#else /* Old Style C */
--bool_t xdr_rpcb_stat();
--#endif /* Old Style C */
--
--
--/*
-- * One rpcb_stat structure is returned for each version of rpcbind
-- * being monitored.
-- */
--
--typedef rpcb_stat rpcb_stat_byvers[RPCBVERS_STAT];
--#ifdef __cplusplus
--extern "C" bool_t xdr_rpcb_stat_byvers(XDR *, rpcb_stat_byvers);
--#elif __STDC__
--extern bool_t xdr_rpcb_stat_byvers(XDR *, rpcb_stat_byvers);
--#else /* Old Style C */
--bool_t xdr_rpcb_stat_byvers();
--#endif /* Old Style C */
--
--
--/*
-- * We don't define netbuf in RPCL, since it would contain structure member
-- * names that would conflict with the definition of struct netbuf in
-- * <tiuser.h>. Instead we merely declare the XDR routine xdr_netbuf() here,
-- * and implement it ourselves in rpc/rpcb_prot.c.
-- */
--#ifdef __cplusplus
--extern "C" bool_t xdr_netbuf(XDR *, struct netbuf *);
--
--#else /* __STDC__ */
--extern bool_t xdr_netbuf(XDR *, struct netbuf *);
--
--#endif
--
--#define RPCBVERS_3 RPCBVERS
--#define RPCBVERS_4 RPCBVERS4
--
--#define _PATH_RPCBINDSOCK "/var/run/rpcbind.sock"
--
--#else /* ndef _KERNEL */
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--/*
-- * A mapping of (program, version, network ID) to address
-- */
--struct rpcb {
-- rpcprog_t r_prog; /* program number */
-- rpcvers_t r_vers; /* version number */
-- char *r_netid; /* network id */
-- char *r_addr; /* universal address */
-- char *r_owner; /* owner of the mapping */
--};
--typedef struct rpcb RPCB;
--
--/*
-- * A list of mappings
-- */
--struct rpcblist {
-- RPCB rpcb_map;
-- struct rpcblist *rpcb_next;
--};
--typedef struct rpcblist RPCBLIST;
--typedef struct rpcblist *rpcblist_ptr;
--
--/*
-- * Remote calls arguments
-- */
--struct rpcb_rmtcallargs {
-- rpcprog_t prog; /* program number */
-- rpcvers_t vers; /* version number */
-- rpcproc_t proc; /* procedure number */
-- u_int32_t arglen; /* arg len */
-- caddr_t args_ptr; /* argument */
-- xdrproc_t xdr_args; /* XDR routine for argument */
--};
--typedef struct rpcb_rmtcallargs rpcb_rmtcallargs;
--
--/*
-- * Remote calls results
-- */
--struct rpcb_rmtcallres {
-- char *addr_ptr; /* remote universal address */
-- u_int32_t resultslen; /* results length */
-- caddr_t results_ptr; /* results */
-- xdrproc_t xdr_results; /* XDR routine for result */
--};
--typedef struct rpcb_rmtcallres rpcb_rmtcallres;
--
--struct rpcb_entry {
-- char *r_maddr;
-- char *r_nc_netid;
-- unsigned int r_nc_semantics;
-- char *r_nc_protofmly;
-- char *r_nc_proto;
--};
--typedef struct rpcb_entry rpcb_entry;
--
--/*
-- * A list of addresses supported by a service.
-- */
--
--struct rpcb_entry_list {
-- rpcb_entry rpcb_entry_map;
-- struct rpcb_entry_list *rpcb_entry_next;
--};
--typedef struct rpcb_entry_list rpcb_entry_list;
--
--typedef rpcb_entry_list *rpcb_entry_list_ptr;
--
--/*
-- * rpcbind statistics
-- */
--
--#define rpcb_highproc_2 RPCBPROC_CALLIT
--#define rpcb_highproc_3 RPCBPROC_TADDR2UADDR
--#define rpcb_highproc_4 RPCBPROC_GETSTAT
--#define RPCBSTAT_HIGHPROC 13
--#define RPCBVERS_STAT 3
--#define RPCBVERS_4_STAT 2
--#define RPCBVERS_3_STAT 1
--#define RPCBVERS_2_STAT 0
--
--/* Link list of all the stats about getport and getaddr */
--
--struct rpcbs_addrlist {
-- rpcprog_t prog;
-- rpcvers_t vers;
-- int success;
-- int failure;
-- char *netid;
-- struct rpcbs_addrlist *next;
--};
--typedef struct rpcbs_addrlist rpcbs_addrlist;
--
--/* Link list of all the stats about rmtcall */
--
--struct rpcbs_rmtcalllist {
-- rpcprog_t prog;
-- rpcvers_t vers;
-- rpcproc_t proc;
-- int success;
-- int failure;
-- int indirect;
-- char *netid;
-- struct rpcbs_rmtcalllist *next;
--};
--typedef struct rpcbs_rmtcalllist rpcbs_rmtcalllist;
--
--typedef int rpcbs_proc[RPCBSTAT_HIGHPROC];
--
--typedef rpcbs_addrlist *rpcbs_addrlist_ptr;
--
--typedef rpcbs_rmtcalllist *rpcbs_rmtcalllist_ptr;
--
--struct rpcb_stat {
-- rpcbs_proc info;
-- int setinfo;
-- int unsetinfo;
-- rpcbs_addrlist_ptr addrinfo;
-- rpcbs_rmtcalllist_ptr rmtinfo;
--};
--typedef struct rpcb_stat rpcb_stat;
--
--/*
-- * One rpcb_stat structure is returned for each version of rpcbind
-- * being monitored.
-- */
--
--typedef rpcb_stat rpcb_stat_byvers[RPCBVERS_STAT];
--
--#ifdef __cplusplus
--}
--#endif
--
--#endif /* ndef _KERNEL */
--
--#define RPCBPROG ((u_int32_t)100000)
--#define RPCBVERS ((u_int32_t)3)
--
--#ifdef __cplusplus
--#define RPCBPROC_SET ((u_int32_t)1)
--extern "C" bool_t * rpcbproc_set_3(rpcb *, CLIENT *);
--extern "C" bool_t * rpcbproc_set_3_svc(rpcb *, struct svc_req *);
--#define RPCBPROC_UNSET ((u_int32_t)2)
--extern "C" bool_t * rpcbproc_unset_3(rpcb *, CLIENT *);
--extern "C" bool_t * rpcbproc_unset_3_svc(rpcb *, struct svc_req *);
--#define RPCBPROC_GETADDR ((u_int32_t)3)
--extern "C" char ** rpcbproc_getaddr_3(rpcb *, CLIENT *);
--extern "C" char ** rpcbproc_getaddr_3_svc(rpcb *, struct svc_req *);
--#define RPCBPROC_DUMP ((u_int32_t)4)
--extern "C" rpcblist_ptr * rpcbproc_dump_3(void *, CLIENT *);
--extern "C" rpcblist_ptr * rpcbproc_dump_3_svc(void *, struct svc_req *);
--#define RPCBPROC_CALLIT ((u_int32_t)5)
--extern "C" rpcb_rmtcallres * rpcbproc_callit_3(rpcb_rmtcallargs *, CLIENT *);
--extern "C" rpcb_rmtcallres * rpcbproc_callit_3_svc(rpcb_rmtcallargs *, struct svc_req *);
--#define RPCBPROC_GETTIME ((u_int32_t)6)
--extern "C" u_int * rpcbproc_gettime_3(void *, CLIENT *);
--extern "C" u_int * rpcbproc_gettime_3_svc(void *, struct svc_req *);
--#define RPCBPROC_UADDR2TADDR ((u_int32_t)7)
--extern "C" struct netbuf * rpcbproc_uaddr2taddr_3(char **, CLIENT *);
--extern "C" struct netbuf * rpcbproc_uaddr2taddr_3_svc(char **, struct svc_req *);
--#define RPCBPROC_TADDR2UADDR ((u_int32_t)8)
--extern "C" char ** rpcbproc_taddr2uaddr_3(struct netbuf *, CLIENT *);
--extern "C" char ** rpcbproc_taddr2uaddr_3_svc(struct netbuf *, struct svc_req *);
--
--#elif __STDC__
--#define RPCBPROC_SET ((u_int32_t)1)
--extern bool_t * rpcbproc_set_3(rpcb *, CLIENT *);
--extern bool_t * rpcbproc_set_3_svc(rpcb *, struct svc_req *);
--#define RPCBPROC_UNSET ((u_int32_t)2)
--extern bool_t * rpcbproc_unset_3(rpcb *, CLIENT *);
--extern bool_t * rpcbproc_unset_3_svc(rpcb *, struct svc_req *);
--#define RPCBPROC_GETADDR ((u_int32_t)3)
--extern char ** rpcbproc_getaddr_3(rpcb *, CLIENT *);
--extern char ** rpcbproc_getaddr_3_svc(rpcb *, struct svc_req *);
--#define RPCBPROC_DUMP ((u_int32_t)4)
--extern rpcblist_ptr * rpcbproc_dump_3(void *, CLIENT *);
--extern rpcblist_ptr * rpcbproc_dump_3_svc(void *, struct svc_req *);
--#define RPCBPROC_CALLIT ((u_int32_t)5)
--extern rpcb_rmtcallres * rpcbproc_callit_3(rpcb_rmtcallargs *, CLIENT *);
--extern rpcb_rmtcallres * rpcbproc_callit_3_svc(rpcb_rmtcallargs *, struct svc_req *);
--#define RPCBPROC_GETTIME ((u_int32_t)6)
--extern u_int * rpcbproc_gettime_3(void *, CLIENT *);
--extern u_int * rpcbproc_gettime_3_svc(void *, struct svc_req *);
--#define RPCBPROC_UADDR2TADDR ((u_int32_t)7)
--extern struct netbuf * rpcbproc_uaddr2taddr_3(char **, CLIENT *);
--extern struct netbuf * rpcbproc_uaddr2taddr_3_svc(char **, struct svc_req *);
--#define RPCBPROC_TADDR2UADDR ((u_int32_t)8)
--extern char ** rpcbproc_taddr2uaddr_3(struct netbuf *, CLIENT *);
--extern char ** rpcbproc_taddr2uaddr_3_svc(struct netbuf *, struct svc_req *);
--
--#else /* Old Style C */
--#define RPCBPROC_SET ((u_int32_t)1)
--extern bool_t * rpcbproc_set_3();
--extern bool_t * rpcbproc_set_3_svc();
--#define RPCBPROC_UNSET ((u_int32_t)2)
--extern bool_t * rpcbproc_unset_3();
--extern bool_t * rpcbproc_unset_3_svc();
--#define RPCBPROC_GETADDR ((u_int32_t)3)
--extern char ** rpcbproc_getaddr_3();
--extern char ** rpcbproc_getaddr_3_svc();
--#define RPCBPROC_DUMP ((u_int32_t)4)
--extern rpcblist_ptr * rpcbproc_dump_3();
--extern rpcblist_ptr * rpcbproc_dump_3_svc();
--#define RPCBPROC_CALLIT ((u_int32_t)5)
--extern rpcb_rmtcallres * rpcbproc_callit_3();
--extern rpcb_rmtcallres * rpcbproc_callit_3_svc();
--#define RPCBPROC_GETTIME ((u_int32_t)6)
--extern u_int * rpcbproc_gettime_3();
--extern u_int * rpcbproc_gettime_3_svc();
--#define RPCBPROC_UADDR2TADDR ((u_int32_t)7)
--extern struct netbuf * rpcbproc_uaddr2taddr_3();
--extern struct netbuf * rpcbproc_uaddr2taddr_3_svc();
--#define RPCBPROC_TADDR2UADDR ((u_int32_t)8)
--extern char ** rpcbproc_taddr2uaddr_3();
--extern char ** rpcbproc_taddr2uaddr_3_svc();
--#endif /* Old Style C */
--#define RPCBVERS4 ((u_int32_t)4)
--
--#ifdef __cplusplus
--extern "C" bool_t * rpcbproc_set_4(rpcb *, CLIENT *);
--extern "C" bool_t * rpcbproc_set_4_svc(rpcb *, struct svc_req *);
--extern "C" bool_t * rpcbproc_unset_4(rpcb *, CLIENT *);
--extern "C" bool_t * rpcbproc_unset_4_svc(rpcb *, struct svc_req *);
--extern "C" char ** rpcbproc_getaddr_4(rpcb *, CLIENT *);
--extern "C" char ** rpcbproc_getaddr_4_svc(rpcb *, struct svc_req *);
--extern "C" rpcblist_ptr * rpcbproc_dump_4(void *, CLIENT *);
--extern "C" rpcblist_ptr * rpcbproc_dump_4_svc(void *, struct svc_req *);
--#define RPCBPROC_BCAST ((u_int32_t)RPCBPROC_CALLIT)
--extern "C" rpcb_rmtcallres * rpcbproc_bcast_4(rpcb_rmtcallargs *, CLIENT *);
--extern "C" rpcb_rmtcallres * rpcbproc_bcast_4_svc(rpcb_rmtcallargs *, struct svc_req *);
--extern "C" u_int * rpcbproc_gettime_4(void *, CLIENT *);
--extern "C" u_int * rpcbproc_gettime_4_svc(void *, struct svc_req *);
--extern "C" struct netbuf * rpcbproc_uaddr2taddr_4(char **, CLIENT *);
--extern "C" struct netbuf * rpcbproc_uaddr2taddr_4_svc(char **, struct svc_req *);
--extern "C" char ** rpcbproc_taddr2uaddr_4(struct netbuf *, CLIENT *);
--extern "C" char ** rpcbproc_taddr2uaddr_4_svc(struct netbuf *, struct svc_req *);
--#define RPCBPROC_GETVERSADDR ((u_int32_t)9)
--extern "C" char ** rpcbproc_getversaddr_4(rpcb *, CLIENT *);
--extern "C" char ** rpcbproc_getversaddr_4_svc(rpcb *, struct svc_req *);
--#define RPCBPROC_INDIRECT ((u_int32_t)10)
--extern "C" rpcb_rmtcallres * rpcbproc_indirect_4(rpcb_rmtcallargs *, CLIENT *);
--extern "C" rpcb_rmtcallres * rpcbproc_indirect_4_svc(rpcb_rmtcallargs *, struct svc_req *);
--#define RPCBPROC_GETADDRLIST ((u_int32_t)11)
--extern "C" rpcb_entry_list_ptr * rpcbproc_getaddrlist_4(rpcb *, CLIENT *);
--extern "C" rpcb_entry_list_ptr * rpcbproc_getaddrlist_4_svc(rpcb *, struct svc_req *);
--#define RPCBPROC_GETSTAT ((u_int32_t)12)
--extern "C" rpcb_stat * rpcbproc_getstat_4(void *, CLIENT *);
--extern "C" rpcb_stat * rpcbproc_getstat_4_svc(void *, struct svc_req *);
--
--#elif __STDC__
--extern bool_t * rpcbproc_set_4(rpcb *, CLIENT *);
--extern bool_t * rpcbproc_set_4_svc(rpcb *, struct svc_req *);
--extern bool_t * rpcbproc_unset_4(rpcb *, CLIENT *);
--extern bool_t * rpcbproc_unset_4_svc(rpcb *, struct svc_req *);
--extern char ** rpcbproc_getaddr_4(rpcb *, CLIENT *);
--extern char ** rpcbproc_getaddr_4_svc(rpcb *, struct svc_req *);
--extern rpcblist_ptr * rpcbproc_dump_4(void *, CLIENT *);
--extern rpcblist_ptr * rpcbproc_dump_4_svc(void *, struct svc_req *);
--#define RPCBPROC_BCAST ((u_int32_t)RPCBPROC_CALLIT)
--extern rpcb_rmtcallres * rpcbproc_bcast_4(rpcb_rmtcallargs *, CLIENT *);
--extern rpcb_rmtcallres * rpcbproc_bcast_4_svc(rpcb_rmtcallargs *, struct svc_req *);
--extern u_int * rpcbproc_gettime_4(void *, CLIENT *);
--extern u_int * rpcbproc_gettime_4_svc(void *, struct svc_req *);
--extern struct netbuf * rpcbproc_uaddr2taddr_4(char **, CLIENT *);
--extern struct netbuf * rpcbproc_uaddr2taddr_4_svc(char **, struct svc_req *);
--extern char ** rpcbproc_taddr2uaddr_4(struct netbuf *, CLIENT *);
--extern char ** rpcbproc_taddr2uaddr_4_svc(struct netbuf *, struct svc_req *);
--#define RPCBPROC_GETVERSADDR ((u_int32_t)9)
--extern char ** rpcbproc_getversaddr_4(rpcb *, CLIENT *);
--extern char ** rpcbproc_getversaddr_4_svc(rpcb *, struct svc_req *);
--#define RPCBPROC_INDIRECT ((u_int32_t)10)
--extern rpcb_rmtcallres * rpcbproc_indirect_4(rpcb_rmtcallargs *, CLIENT *);
--extern rpcb_rmtcallres * rpcbproc_indirect_4_svc(rpcb_rmtcallargs *, struct svc_req *);
--#define RPCBPROC_GETADDRLIST ((u_int32_t)11)
--extern rpcb_entry_list_ptr * rpcbproc_getaddrlist_4(rpcb *, CLIENT *);
--extern rpcb_entry_list_ptr * rpcbproc_getaddrlist_4_svc(rpcb *, struct svc_req *);
--#define RPCBPROC_GETSTAT ((u_int32_t)12)
--extern rpcb_stat * rpcbproc_getstat_4(void *, CLIENT *);
--extern rpcb_stat * rpcbproc_getstat_4_svc(void *, struct svc_req *);
--
--#else /* Old Style C */
--extern bool_t * rpcbproc_set_4();
--extern bool_t * rpcbproc_set_4_svc();
--extern bool_t * rpcbproc_unset_4();
--extern bool_t * rpcbproc_unset_4_svc();
--extern char ** rpcbproc_getaddr_4();
--extern char ** rpcbproc_getaddr_4_svc();
--extern rpcblist_ptr * rpcbproc_dump_4();
--extern rpcblist_ptr * rpcbproc_dump_4_svc();
--#define RPCBPROC_BCAST ((u_int32_t)RPCBPROC_CALLIT)
--extern rpcb_rmtcallres * rpcbproc_bcast_4();
--extern rpcb_rmtcallres * rpcbproc_bcast_4_svc();
--extern u_int * rpcbproc_gettime_4();
--extern u_int * rpcbproc_gettime_4_svc();
--extern struct netbuf * rpcbproc_uaddr2taddr_4();
--extern struct netbuf * rpcbproc_uaddr2taddr_4_svc();
--extern char ** rpcbproc_taddr2uaddr_4();
--extern char ** rpcbproc_taddr2uaddr_4_svc();
--#define RPCBPROC_GETVERSADDR ((u_int32_t)9)
--extern char ** rpcbproc_getversaddr_4();
--extern char ** rpcbproc_getversaddr_4_svc();
--#define RPCBPROC_INDIRECT ((u_int32_t)10)
--extern rpcb_rmtcallres * rpcbproc_indirect_4();
--extern rpcb_rmtcallres * rpcbproc_indirect_4_svc();
--#define RPCBPROC_GETADDRLIST ((u_int32_t)11)
--extern rpcb_entry_list_ptr * rpcbproc_getaddrlist_4();
--extern rpcb_entry_list_ptr * rpcbproc_getaddrlist_4_svc();
--#define RPCBPROC_GETSTAT ((u_int32_t)12)
--extern rpcb_stat * rpcbproc_getstat_4();
--extern rpcb_stat * rpcbproc_getstat_4_svc();
--#endif /* Old Style C */
--
--#endif /* !_RPCB_PROT_H_RPCGEN */
-diff --git a/tirpc/rpcsvc/crypt.h b/tirpc/rpcsvc/crypt.h
-deleted file mode 100644
-index da1f9ccb56ea..000000000000
---- a/tirpc/rpcsvc/crypt.h
-+++ /dev/null
-@@ -1,109 +0,0 @@
--/*
-- * Please do not edit this file.
-- * It was generated using rpcgen.
-- */
--
--#ifndef _CRYPT_H_RPCGEN
--#define _CRYPT_H_RPCGEN
--
--#include <rpc/rpc.h>
--
--#ifndef IXDR_GET_INT32
--#define IXDR_GET_INT32(buf) IXDR_GET_LONG((buf))
--#endif
--#ifndef IXDR_PUT_INT32
--#define IXDR_PUT_INT32(buf, v) IXDR_PUT_LONG((buf), (v))
--#endif
--#ifndef IXDR_GET_U_INT32
--#define IXDR_GET_U_INT32(buf) IXDR_GET_U_LONG((buf))
--#endif
--#ifndef IXDR_PUT_U_INT32
--#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_U_LONG((buf), (v))
--#endif
--
--enum des_dir {
-- ENCRYPT_DES = 0,
-- DECRYPT_DES = 1,
--};
--typedef enum des_dir des_dir;
--#ifdef __cplusplus
--extern "C" bool_t xdr_des_dir(XDR *, des_dir*);
--#elif __STDC__
--extern bool_t xdr_des_dir(XDR *, des_dir*);
--#else /* Old Style C */
--bool_t xdr_des_dir();
--#endif /* Old Style C */
--
--
--enum des_mode {
-- CBC_DES = 0,
-- ECB_DES = 1,
--};
--typedef enum des_mode des_mode;
--#ifdef __cplusplus
--extern "C" bool_t xdr_des_mode(XDR *, des_mode*);
--#elif __STDC__
--extern bool_t xdr_des_mode(XDR *, des_mode*);
--#else /* Old Style C */
--bool_t xdr_des_mode();
--#endif /* Old Style C */
--
--
--struct desargs {
-- u_char des_key[8];
-- des_dir des_dir;
-- des_mode des_mode;
-- u_char des_ivec[8];
-- struct {
-- u_int desbuf_len;
-- char *desbuf_val;
-- } desbuf;
--};
--typedef struct desargs desargs;
--#ifdef __cplusplus
--extern "C" bool_t xdr_desargs(XDR *, desargs*);
--#elif __STDC__
--extern bool_t xdr_desargs(XDR *, desargs*);
--#else /* Old Style C */
--bool_t xdr_desargs();
--#endif /* Old Style C */
--
--
--struct desresp {
-- struct {
-- u_int desbuf_len;
-- char *desbuf_val;
-- } desbuf;
-- u_char des_ivec[8];
-- int stat;
--};
--typedef struct desresp desresp;
--#ifdef __cplusplus
--extern "C" bool_t xdr_desresp(XDR *, desresp*);
--#elif __STDC__
--extern bool_t xdr_desresp(XDR *, desresp*);
--#else /* Old Style C */
--bool_t xdr_desresp();
--#endif /* Old Style C */
--
--
--#define CRYPT_PROG ((u_int32_t)600100029)
--#define CRYPT_VERS ((u_int32_t)1)
--
--#ifdef __cplusplus
--#define DES_CRYPT ((u_int32_t)1)
--extern "C" desresp * des_crypt_1(desargs *, CLIENT *);
--extern "C" desresp * des_crypt_1_svc(desargs *, struct svc_req *);
--
--#elif __STDC__
--#define DES_CRYPT ((u_int32_t)1)
--extern desresp * des_crypt_1(desargs *, CLIENT *);
--extern desresp * des_crypt_1_svc(desargs *, struct svc_req *);
--
--#else /* Old Style C */
--#define DES_CRYPT ((u_int32_t)1)
--extern desresp * des_crypt_1();
--extern desresp * des_crypt_1_svc();
--#endif /* Old Style C */
--
--#endif /* !_CRYPT_H_RPCGEN */
---
-2.17.0
-
+++ /dev/null
-From baeca7ea594fe9faa1d40d35e76066c6002ca638 Mon Sep 17 00:00:00 2001
-From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Date: Sat, 10 Nov 2012 17:45:03 +0100
-Subject: [PATCH] Add more XDR files needed to build rpcbind on top of libtirpc
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-[yann.morin.1998@free.fr: update for 0.3.1]
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
----
- Makefile.am | 6 +
- tirpc/rpcsvc/mount.x | 257 ++++++++++
- tirpc/rpcsvc/nfs_prot.x | 1266 +++++++++++++++++++++++++++++++++++++++++++++++
- tirpc/rpcsvc/rquota.x | 67 +++
- 4 files changed, 1596 insertions(+)
- create mode 100644 tirpc/rpcsvc/mount.x
- create mode 100644 tirpc/rpcsvc/nfs_prot.x
- create mode 100644 tirpc/rpcsvc/rquota.x
-
-diff --git a/Makefile.am b/Makefile.am
-index aa5908e..4999066 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -2,6 +2,9 @@ SUBDIRS = src man doc rpcgen
- ACLOCAL_AMFLAGS = -I m4
-
- GENFILES = tirpc/rpcsvc/crypt.h \
-+ tirpc/rpcsvc/mount.h \
-+ tirpc/rpcsvc/nfs_prot.h \
-+ tirpc/rpcsvc/rquota.h \
- tirpc/rpc/rpcb_prot.h
-
- noinst_HEADERS = tirpc/reentrant.h \
-@@ -11,6 +14,9 @@ noinst_HEADERS = tirpc/reentrant.h \
-
- nobase_include_HEADERS = tirpc/netconfig.h \
- tirpc/rpcsvc/crypt.x \
-+ tirpc/rpcsvc/mount.x \
-+ tirpc/rpcsvc/nfs_prot.x \
-+ tirpc/rpcsvc/rquota.x \
- tirpc/rpc/xdr.h \
- tirpc/rpc/types.h \
- tirpc/rpc/svc_soc.h \
-diff --git a/tirpc/rpcsvc/mount.x b/tirpc/rpcsvc/mount.x
-new file mode 100644
-index 0000000..f68a06f
---- /dev/null
-+++ b/tirpc/rpcsvc/mount.x
-@@ -0,0 +1,257 @@
-+/*
-+ * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
-+ * unrestricted use provided that this legend is included on all tape
-+ * media and as a part of the software program in whole or part. Users
-+ * may copy or modify Sun RPC without charge, but are not authorized
-+ * to license or distribute it to anyone else except as part of a product or
-+ * program developed by the user.
-+ *
-+ * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
-+ * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
-+ * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
-+ *
-+ * Sun RPC is provided with no support and without any obligation on the
-+ * part of Sun Microsystems, Inc. to assist in its use, correction,
-+ * modification or enhancement.
-+ *
-+ * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
-+ * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
-+ * OR ANY PART THEREOF.
-+ *
-+ * In no event will Sun Microsystems, Inc. be liable for any lost revenue
-+ * or profits or other special, indirect and consequential damages, even if
-+ * Sun has been advised of the possibility of such damages.
-+ *
-+ * Sun Microsystems, Inc.
-+ * 2550 Garcia Avenue
-+ * Mountain View, California 94043
-+ */
-+
-+/*
-+ * Protocol description for the mount program
-+ */
-+
-+#ifndef RPC_HDR
-+%#ifndef lint
-+%/*static char sccsid[] = "from: @(#)mount.x 1.2 87/09/18 Copyr 1987 Sun Micro";*/
-+%/*static char sccsid[] = "from: @(#)mount.x 2.1 88/08/01 4.0 RPCSRC";*/
-+%static const char rcsid[] =
-+% "$FreeBSD: src/include/rpcsvc/mount.x,v 1.6 1999/08/27 23:45:08 peter Exp $";
-+%#endif /* not lint */
-+#endif
-+
-+const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */
-+const MNTNAMLEN = 255; /* maximum bytes in a name argument */
-+const FHSIZE = 32; /* size in bytes of a file handle */
-+#ifdef WANT_NFS3
-+const FHSIZE3 = 64; /* size in bytes of a file handle (v3) */
-+#endif
-+
-+/*
-+ * The fhandle is the file handle that the server passes to the client.
-+ * All file operations are done using the file handles to refer to a file
-+ * or a directory. The file handle can contain whatever information the
-+ * server needs to distinguish an individual file.
-+ */
-+typedef opaque fhandle[FHSIZE];
-+#ifdef WANT_NFS3
-+typedef opaque fhandle3<FHSIZE3>;
-+#endif
-+
-+/*
-+ * If a status of zero is returned, the call completed successfully, and
-+ * a file handle for the directory follows. A non-zero status indicates
-+ * some sort of error. The status corresponds with UNIX error numbers.
-+ */
-+union fhstatus switch (unsigned fhs_status) {
-+case 0:
-+ fhandle fhs_fhandle;
-+default:
-+ void;
-+};
-+
-+#ifdef WANT_NFS3
-+/*
-+ * Status codes returned by the version 3 mount call.
-+ */
-+enum mountstat3 {
-+ MNT3_OK = 0, /* no error */
-+ MNT3ERR_PERM = 1, /* Not owner */
-+ MNT3ERR_NOENT = 2, /* No such file or directory */
-+ MNT3ERR_IO = 5, /* I/O error */
-+ MNT3ERR_ACCES = 13, /* Permission denied */
-+ MNT3ERR_NOTDIR = 20, /* Not a directory */
-+ MNT3ERR_INVAL = 22, /* Invalid argument */
-+ MNT3ERR_NAMETOOLONG = 63, /* Filename too long */
-+ MNT3ERR_NOTSUPP = 10004, /* Operation not supported */
-+ MNT3ERR_SERVERFAULT = 10006 /* A failure on the server */
-+};
-+
-+struct mountres3_ok {
-+ fhandle3 fhandle;
-+ int auth_flavors<>;
-+};
-+
-+union mountres3 switch (mountstat3 fhs_status) {
-+case 0:
-+ mountres3_ok mountinfo;
-+default:
-+ void;
-+};
-+#endif
-+
-+/*
-+ * The type dirpath is the pathname of a directory
-+ */
-+typedef string dirpath<MNTPATHLEN>;
-+
-+/*
-+ * The type name is used for arbitrary names (hostnames, groupnames)
-+ */
-+typedef string name<MNTNAMLEN>;
-+
-+/*
-+ * A list of who has what mounted
-+ */
-+typedef struct mountbody *mountlist;
-+struct mountbody {
-+ name ml_hostname;
-+ dirpath ml_directory;
-+ mountlist ml_next;
-+};
-+
-+/*
-+ * A list of netgroups
-+ */
-+typedef struct groupnode *groups;
-+struct groupnode {
-+ name gr_name;
-+ groups gr_next;
-+};
-+
-+/*
-+ * A list of what is exported and to whom
-+ */
-+typedef struct exportnode *exports;
-+struct exportnode {
-+ dirpath ex_dir;
-+ groups ex_groups;
-+ exports ex_next;
-+};
-+
-+program MOUNTPROG {
-+ /*
-+ * Version one of the mount protocol communicates with version two
-+ * of the NFS protocol. Version three communicates with
-+ * version three of the NFS protocol. The only connecting
-+ * point is the fhandle structure, which is the same for both
-+ * protocols.
-+ */
-+ version MOUNTVERS {
-+ /*
-+ * Does no work. It is made available in all RPC services
-+ * to allow server reponse testing and timing
-+ */
-+ void
-+ MOUNTPROC_NULL(void) = 0;
-+
-+ /*
-+ * If fhs_status is 0, then fhs_fhandle contains the
-+ * file handle for the directory. This file handle may
-+ * be used in the NFS protocol. This procedure also adds
-+ * a new entry to the mount list for this client mounting
-+ * the directory.
-+ * Unix authentication required.
-+ */
-+ fhstatus
-+ MOUNTPROC_MNT(dirpath) = 1;
-+
-+ /*
-+ * Returns the list of remotely mounted filesystems. The
-+ * mountlist contains one entry for each hostname and
-+ * directory pair.
-+ */
-+ mountlist
-+ MOUNTPROC_DUMP(void) = 2;
-+
-+ /*
-+ * Removes the mount list entry for the directory
-+ * Unix authentication required.
-+ */
-+ void
-+ MOUNTPROC_UMNT(dirpath) = 3;
-+
-+ /*
-+ * Removes all of the mount list entries for this client
-+ * Unix authentication required.
-+ */
-+ void
-+ MOUNTPROC_UMNTALL(void) = 4;
-+
-+ /*
-+ * Returns a list of all the exported filesystems, and which
-+ * machines are allowed to import it.
-+ */
-+ exports
-+ MOUNTPROC_EXPORT(void) = 5;
-+
-+ /*
-+ * Identical to MOUNTPROC_EXPORT above
-+ */
-+ exports
-+ MOUNTPROC_EXPORTALL(void) = 6;
-+ } = 1;
-+#ifdef WANT_NFS3
-+ version MOUNTVERS3 {
-+ /*
-+ * Does no work. It is made available in all RPC services
-+ * to allow server reponse testing and timing
-+ */
-+ void
-+ MOUNTPROC_NULL(void) = 0;
-+
-+ /*
-+ * If mountres3.fhs_status is MNT3_OK, then
-+ * mountres3.mountinfo contains the file handle for
-+ * the directory and a list of acceptable
-+ * authentication flavors. This file handle may only
-+ * be used in the NFS version 3 protocol. This
-+ * procedure also results in the server adding a new
-+ * entry to its mount list recording that this client
-+ * has mounted the directory. AUTH_UNIX authentication
-+ * or better is required.
-+ */
-+ mountres3
-+ MOUNTPROC_MNT(dirpath) = 1;
-+
-+ /*
-+ * Returns the list of remotely mounted filesystems. The
-+ * mountlist contains one entry for each hostname and
-+ * directory pair.
-+ */
-+ mountlist
-+ MOUNTPROC_DUMP(void) = 2;
-+
-+ /*
-+ * Removes the mount list entry for the directory
-+ * Unix authentication required.
-+ */
-+ void
-+ MOUNTPROC_UMNT(dirpath) = 3;
-+
-+ /*
-+ * Removes all of the mount list entries for this client
-+ * Unix authentication required.
-+ */
-+ void
-+ MOUNTPROC_UMNTALL(void) = 4;
-+
-+ /*
-+ * Returns a list of all the exported filesystems, and which
-+ * machines are allowed to import it.
-+ */
-+ exports
-+ MOUNTPROC_EXPORT(void) = 5;
-+ } = 3;
-+#endif
-+} = 100005;
-diff --git a/tirpc/rpcsvc/nfs_prot.x b/tirpc/rpcsvc/nfs_prot.x
-new file mode 100644
-index 0000000..01564f8
---- /dev/null
-+++ b/tirpc/rpcsvc/nfs_prot.x
-@@ -0,0 +1,1266 @@
-+/*
-+ * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
-+ * unrestricted use provided that this legend is included on all tape
-+ * media and as a part of the software program in whole or part. Users
-+ * may copy or modify Sun RPC without charge, but are not authorized
-+ * to license or distribute it to anyone else except as part of a product or
-+ * program developed by the user.
-+ *
-+ * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
-+ * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
-+ * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
-+ *
-+ * Sun RPC is provided with no support and without any obligation on the
-+ * part of Sun Microsystems, Inc. to assist in its use, correction,
-+ * modification or enhancement.
-+ *
-+ * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
-+ * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
-+ * OR ANY PART THEREOF.
-+ *
-+ * In no event will Sun Microsystems, Inc. be liable for any lost revenue
-+ * or profits or other special, indirect and consequential damages, even if
-+ * Sun has been advised of the possibility of such damages.
-+ *
-+ * Sun Microsystems, Inc.
-+ * 2550 Garcia Avenue
-+ * Mountain View, California 94043
-+ */
-+
-+#ifndef RPC_HDR
-+%#ifndef lint
-+%/*static char sccsid[] = "from: @(#)nfs_prot.x 1.2 87/10/12 Copyr 1987 Sun Micro";*/
-+%/*static char sccsid[] = "from: @(#)nfs_prot.x 2.1 88/08/01 4.0 RPCSRC";*/
-+%static const char rcsid[] =
-+% "$FreeBSD: src/include/rpcsvc/nfs_prot.x,v 1.7 1999/08/27 23:45:08 peter Exp $";
-+%#endif /* not lint */
-+#endif
-+
-+const NFS_PORT = 2049;
-+const NFS_MAXDATA = 8192;
-+const NFS_MAXPATHLEN = 1024;
-+const NFS_MAXNAMLEN = 255;
-+const NFS_FHSIZE = 32;
-+const NFS_COOKIESIZE = 4;
-+const NFS_FIFO_DEV = -1; /* size kludge for named pipes */
-+
-+/*
-+ * File types
-+ */
-+const NFSMODE_FMT = 0170000; /* type of file */
-+const NFSMODE_DIR = 0040000; /* directory */
-+const NFSMODE_CHR = 0020000; /* character special */
-+const NFSMODE_BLK = 0060000; /* block special */
-+const NFSMODE_REG = 0100000; /* regular */
-+const NFSMODE_LNK = 0120000; /* symbolic link */
-+const NFSMODE_SOCK = 0140000; /* socket */
-+const NFSMODE_FIFO = 0010000; /* fifo */
-+
-+/*
-+ * Error status
-+ */
-+enum nfsstat {
-+ NFS_OK= 0, /* no error */
-+ NFSERR_PERM=1, /* Not owner */
-+ NFSERR_NOENT=2, /* No such file or directory */
-+ NFSERR_IO=5, /* I/O error */
-+ NFSERR_NXIO=6, /* No such device or address */
-+ NFSERR_ACCES=13, /* Permission denied */
-+ NFSERR_EXIST=17, /* File exists */
-+ NFSERR_NODEV=19, /* No such device */
-+ NFSERR_NOTDIR=20, /* Not a directory*/
-+ NFSERR_ISDIR=21, /* Is a directory */
-+ NFSERR_FBIG=27, /* File too large */
-+ NFSERR_NOSPC=28, /* No space left on device */
-+ NFSERR_ROFS=30, /* Read-only file system */
-+ NFSERR_NAMETOOLONG=63, /* File name too long */
-+ NFSERR_NOTEMPTY=66, /* Directory not empty */
-+ NFSERR_DQUOT=69, /* Disc quota exceeded */
-+ NFSERR_STALE=70, /* Stale NFS file handle */
-+ NFSERR_WFLUSH=99 /* write cache flushed */
-+};
-+
-+/*
-+ * File types
-+ */
-+enum ftype {
-+ NFNON = 0, /* non-file */
-+ NFREG = 1, /* regular file */
-+ NFDIR = 2, /* directory */
-+ NFBLK = 3, /* block special */
-+ NFCHR = 4, /* character special */
-+ NFLNK = 5, /* symbolic link */
-+ NFSOCK = 6, /* unix domain sockets */
-+ NFBAD = 7, /* unused */
-+ NFFIFO = 8 /* named pipe */
-+};
-+
-+/*
-+ * File access handle
-+ */
-+struct nfs_fh {
-+ opaque data[NFS_FHSIZE];
-+};
-+
-+/*
-+ * Timeval
-+ */
-+struct nfstime {
-+ unsigned seconds;
-+ unsigned useconds;
-+};
-+
-+
-+/*
-+ * File attributes
-+ */
-+struct fattr {
-+ ftype type; /* file type */
-+ unsigned mode; /* protection mode bits */
-+ unsigned nlink; /* # hard links */
-+ unsigned uid; /* owner user id */
-+ unsigned gid; /* owner group id */
-+ unsigned size; /* file size in bytes */
-+ unsigned blocksize; /* prefered block size */
-+ unsigned rdev; /* special device # */
-+ unsigned blocks; /* Kb of disk used by file */
-+ unsigned fsid; /* device # */
-+ unsigned fileid; /* inode # */
-+ nfstime atime; /* time of last access */
-+ nfstime mtime; /* time of last modification */
-+ nfstime ctime; /* time of last change */
-+};
-+
-+/*
-+ * File attributes which can be set
-+ */
-+struct sattr {
-+ unsigned mode; /* protection mode bits */
-+ unsigned uid; /* owner user id */
-+ unsigned gid; /* owner group id */
-+ unsigned size; /* file size in bytes */
-+ nfstime atime; /* time of last access */
-+ nfstime mtime; /* time of last modification */
-+};
-+
-+
-+typedef string filename<NFS_MAXNAMLEN>;
-+typedef string nfspath<NFS_MAXPATHLEN>;
-+
-+/*
-+ * Reply status with file attributes
-+ */
-+union attrstat switch (nfsstat status) {
-+case NFS_OK:
-+ fattr attributes;
-+default:
-+ void;
-+};
-+
-+struct sattrargs {
-+ nfs_fh file;
-+ sattr attributes;
-+};
-+
-+/*
-+ * Arguments for directory operations
-+ */
-+struct diropargs {
-+ nfs_fh dir; /* directory file handle */
-+ filename name; /* name (up to NFS_MAXNAMLEN bytes) */
-+};
-+
-+struct diropokres {
-+ nfs_fh file;
-+ fattr attributes;
-+};
-+
-+/*
-+ * Results from directory operation
-+ */
-+union diropres switch (nfsstat status) {
-+case NFS_OK:
-+ diropokres diropres;
-+default:
-+ void;
-+};
-+
-+union readlinkres switch (nfsstat status) {
-+case NFS_OK:
-+ nfspath data;
-+default:
-+ void;
-+};
-+
-+/*
-+ * Arguments to remote read
-+ */
-+struct readargs {
-+ nfs_fh file; /* handle for file */
-+ unsigned offset; /* byte offset in file */
-+ unsigned count; /* immediate read count */
-+ unsigned totalcount; /* total read count (from this offset)*/
-+};
-+
-+/*
-+ * Status OK portion of remote read reply
-+ */
-+struct readokres {
-+ fattr attributes; /* attributes, need for pagin*/
-+ opaque data<NFS_MAXDATA>;
-+};
-+
-+union readres switch (nfsstat status) {
-+case NFS_OK:
-+ readokres reply;
-+default:
-+ void;
-+};
-+
-+/*
-+ * Arguments to remote write
-+ */
-+struct writeargs {
-+ nfs_fh file; /* handle for file */
-+ unsigned beginoffset; /* beginning byte offset in file */
-+ unsigned offset; /* current byte offset in file */
-+ unsigned totalcount; /* total write count (to this offset)*/
-+ opaque data<NFS_MAXDATA>;
-+};
-+
-+struct createargs {
-+ diropargs where;
-+ sattr attributes;
-+};
-+
-+struct renameargs {
-+ diropargs from;
-+ diropargs to;
-+};
-+
-+struct linkargs {
-+ nfs_fh from;
-+ diropargs to;
-+};
-+
-+struct symlinkargs {
-+ diropargs from;
-+ nfspath to;
-+ sattr attributes;
-+};
-+
-+
-+typedef opaque nfscookie[NFS_COOKIESIZE];
-+
-+/*
-+ * Arguments to readdir
-+ */
-+struct readdirargs {
-+ nfs_fh dir; /* directory handle */
-+ nfscookie cookie;
-+ unsigned count; /* number of directory bytes to read */
-+};
-+
-+struct entry {
-+ unsigned fileid;
-+ filename name;
-+ nfscookie cookie;
-+ entry *nextentry;
-+};
-+
-+struct dirlist {
-+ entry *entries;
-+ bool eof;
-+};
-+
-+union readdirres switch (nfsstat status) {
-+case NFS_OK:
-+ dirlist reply;
-+default:
-+ void;
-+};
-+
-+struct statfsokres {
-+ unsigned tsize; /* preferred transfer size in bytes */
-+ unsigned bsize; /* fundamental file system block size */
-+ unsigned blocks; /* total blocks in file system */
-+ unsigned bfree; /* free blocks in fs */
-+ unsigned bavail; /* free blocks avail to non-superuser */
-+};
-+
-+union statfsres switch (nfsstat status) {
-+case NFS_OK:
-+ statfsokres reply;
-+default:
-+ void;
-+};
-+
-+#ifdef WANT_NFS3
-+
-+/*
-+ * NFSv3 constants and types
-+ */
-+const NFS3_FHSIZE = 64; /* maximum size in bytes of a file handle */
-+const NFS3_COOKIEVERFSIZE = 8; /* size of a cookie verifier for READDIR */
-+const NFS3_CREATEVERFSIZE = 8; /* size of the verifier used for CREATE */
-+const NFS3_WRITEVERFSIZE = 8; /* size of the verifier used for WRITE */
-+
-+typedef unsigned hyper uint64;
-+typedef hyper int64;
-+typedef unsigned long uint32;
-+typedef long int32;
-+typedef string filename3<>;
-+typedef string nfspath3<>;
-+typedef uint64 fileid3;
-+typedef uint64 cookie3;
-+typedef opaque cookieverf3[NFS3_COOKIEVERFSIZE];
-+typedef opaque createverf3[NFS3_CREATEVERFSIZE];
-+typedef opaque writeverf3[NFS3_WRITEVERFSIZE];
-+typedef uint32 uid3;
-+typedef uint32 gid3;
-+typedef uint64 size3;
-+typedef uint64 offset3;
-+typedef uint32 mode3;
-+typedef uint32 count3;
-+
-+/*
-+ * Error status (v3)
-+ */
-+enum nfsstat3 {
-+ NFS3_OK = 0,
-+ NFS3ERR_PERM = 1,
-+ NFS3ERR_NOENT = 2,
-+ NFS3ERR_IO = 5,
-+ NFS3ERR_NXIO = 6,
-+ NFS3ERR_ACCES = 13,
-+ NFS3ERR_EXIST = 17,
-+ NFS3ERR_XDEV = 18,
-+ NFS3ERR_NODEV = 19,
-+ NFS3ERR_NOTDIR = 20,
-+ NFS3ERR_ISDIR = 21,
-+ NFS3ERR_INVAL = 22,
-+ NFS3ERR_FBIG = 27,
-+ NFS3ERR_NOSPC = 28,
-+ NFS3ERR_ROFS = 30,
-+ NFS3ERR_MLINK = 31,
-+ NFS3ERR_NAMETOOLONG = 63,
-+ NFS3ERR_NOTEMPTY = 66,
-+ NFS3ERR_DQUOT = 69,
-+ NFS3ERR_STALE = 70,
-+ NFS3ERR_REMOTE = 71,
-+ NFS3ERR_BADHANDLE = 10001,
-+ NFS3ERR_NOT_SYNC = 10002,
-+ NFS3ERR_BAD_COOKIE = 10003,
-+ NFS3ERR_NOTSUPP = 10004,
-+ NFS3ERR_TOOSMALL = 10005,
-+ NFS3ERR_SERVERFAULT = 10006,
-+ NFS3ERR_BADTYPE = 10007,
-+ NFS3ERR_JUKEBOX = 10008
-+};
-+
-+/*
-+ * File types (v3)
-+ */
-+enum ftype3 {
-+ NF3REG = 1, /* regular file */
-+ NF3DIR = 2, /* directory */
-+ NF3BLK = 3, /* block special */
-+ NF3CHR = 4, /* character special */
-+ NF3LNK = 5, /* symbolic link */
-+ NF3SOCK = 6, /* unix domain sockets */
-+ NF3FIFO = 7 /* named pipe */
-+};
-+
-+struct specdata3 {
-+ uint32 specdata1;
-+ uint32 specdata2;
-+};
-+
-+/*
-+ * File access handle (v3)
-+ */
-+struct nfs_fh3 {
-+ opaque data<NFS3_FHSIZE>;
-+};
-+
-+/*
-+ * Timeval (v3)
-+ */
-+struct nfstime3 {
-+ uint32 seconds;
-+ uint32 nseconds;
-+};
-+
-+
-+/*
-+ * File attributes (v3)
-+ */
-+struct fattr3 {
-+ ftype3 type; /* file type */
-+ mode3 mode; /* protection mode bits */
-+ uint32 nlink; /* # hard links */
-+ uid3 uid; /* owner user id */
-+ gid3 gid; /* owner group id */
-+ size3 size; /* file size in bytes */
-+ size3 used; /* prefered block size */
-+ specdata3 rdev; /* special device # */
-+ uint64 fsid; /* device # */
-+ fileid3 fileid; /* inode # */
-+ nfstime3 atime; /* time of last access */
-+ nfstime3 mtime; /* time of last modification */
-+ nfstime3 ctime; /* time of last change */
-+};
-+
-+union post_op_attr switch (bool attributes_follow) {
-+case TRUE:
-+ fattr3 attributes;
-+case FALSE:
-+ void;
-+};
-+
-+struct wcc_attr {
-+ size3 size;
-+ nfstime3 mtime;
-+ nfstime3 ctime;
-+};
-+
-+union pre_op_attr switch (bool attributes_follow) {
-+case TRUE:
-+ wcc_attr attributes;
-+case FALSE:
-+ void;
-+};
-+
-+struct wcc_data {
-+ pre_op_attr before;
-+ post_op_attr after;
-+};
-+
-+union post_op_fh3 switch (bool handle_follows) {
-+case TRUE:
-+ nfs_fh3 handle;
-+case FALSE:
-+ void;
-+};
-+
-+/*
-+ * File attributes which can be set (v3)
-+ */
-+enum time_how {
-+ DONT_CHANGE = 0,
-+ SET_TO_SERVER_TIME = 1,
-+ SET_TO_CLIENT_TIME = 2
-+};
-+
-+union set_mode3 switch (bool set_it) {
-+case TRUE:
-+ mode3 mode;
-+default:
-+ void;
-+};
-+
-+union set_uid3 switch (bool set_it) {
-+case TRUE:
-+ uid3 uid;
-+default:
-+ void;
-+};
-+
-+union set_gid3 switch (bool set_it) {
-+case TRUE:
-+ gid3 gid;
-+default:
-+ void;
-+};
-+
-+union set_size3 switch (bool set_it) {
-+case TRUE:
-+ size3 size;
-+default:
-+ void;
-+};
-+
-+union set_atime switch (time_how set_it) {
-+case SET_TO_CLIENT_TIME:
-+ nfstime3 atime;
-+default:
-+ void;
-+};
-+
-+union set_mtime switch (time_how set_it) {
-+case SET_TO_CLIENT_TIME:
-+ nfstime3 mtime;
-+default:
-+ void;
-+};
-+
-+struct sattr3 {
-+ set_mode3 mode;
-+ set_uid3 uid;
-+ set_gid3 gid;
-+ set_size3 size;
-+ set_atime atime;
-+ set_mtime mtime;
-+};
-+
-+/*
-+ * Arguments for directory operations (v3)
-+ */
-+struct diropargs3 {
-+ nfs_fh3 dir; /* directory file handle */
-+ filename3 name; /* name (up to NFS_MAXNAMLEN bytes) */
-+};
-+
-+/*
-+ * Arguments to getattr (v3).
-+ */
-+struct GETATTR3args {
-+ nfs_fh3 object;
-+};
-+
-+struct GETATTR3resok {
-+ fattr3 obj_attributes;
-+};
-+
-+union GETATTR3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ GETATTR3resok resok;
-+default:
-+ void;
-+};
-+
-+/*
-+ * Arguments to setattr (v3).
-+ */
-+union sattrguard3 switch (bool check) {
-+case TRUE:
-+ nfstime3 obj_ctime;
-+case FALSE:
-+ void;
-+};
-+
-+struct SETATTR3args {
-+ nfs_fh3 object;
-+ sattr3 new_attributes;
-+ sattrguard3 guard;
-+};
-+
-+struct SETATTR3resok {
-+ wcc_data obj_wcc;
-+};
-+
-+struct SETATTR3resfail {
-+ wcc_data obj_wcc;
-+};
-+
-+union SETATTR3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ SETATTR3resok resok;
-+default:
-+ SETATTR3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to lookup (v3).
-+ */
-+struct LOOKUP3args {
-+ diropargs3 what;
-+};
-+
-+struct LOOKUP3resok {
-+ nfs_fh3 object;
-+ post_op_attr obj_attributes;
-+ post_op_attr dir_attributes;
-+};
-+
-+struct LOOKUP3resfail {
-+ post_op_attr dir_attributes;
-+};
-+
-+union LOOKUP3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ LOOKUP3resok resok;
-+default:
-+ LOOKUP3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to access (v3).
-+ */
-+const ACCESS3_READ = 0x0001;
-+const ACCESS3_LOOKUP = 0x0002;
-+const ACCESS3_MODIFY = 0x0004;
-+const ACCESS3_EXTEND = 0x0008;
-+const ACCESS3_DELETE = 0x0010;
-+const ACCESS3_EXECUTE = 0x0020;
-+
-+struct ACCESS3args {
-+ nfs_fh3 object;
-+ uint32 access;
-+};
-+
-+struct ACCESS3resok {
-+ post_op_attr obj_attributes;
-+ uint32 access;
-+};
-+
-+struct ACCESS3resfail {
-+ post_op_attr obj_attributes;
-+};
-+
-+union ACCESS3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ ACCESS3resok resok;
-+default:
-+ ACCESS3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to readlink (v3).
-+ */
-+struct READLINK3args {
-+ nfs_fh3 symlink;
-+};
-+
-+struct READLINK3resok {
-+ post_op_attr symlink_attributes;
-+ nfspath3 data;
-+};
-+
-+struct READLINK3resfail {
-+ post_op_attr symlink_attributes;
-+};
-+
-+union READLINK3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ READLINK3resok resok;
-+default:
-+ READLINK3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to read (v3).
-+ */
-+struct READ3args {
-+ nfs_fh3 file;
-+ offset3 offset;
-+ count3 count;
-+};
-+
-+struct READ3resok {
-+ post_op_attr file_attributes;
-+ count3 count;
-+ bool eof;
-+ opaque data<>;
-+};
-+
-+struct READ3resfail {
-+ post_op_attr file_attributes;
-+};
-+
-+/* XXX: solaris 2.6 uses ``nfsstat'' here */
-+union READ3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ READ3resok resok;
-+default:
-+ READ3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to write (v3).
-+ */
-+enum stable_how {
-+ UNSTABLE = 0,
-+ DATA_SYNC = 1,
-+ FILE_SYNC = 2
-+};
-+
-+struct WRITE3args {
-+ nfs_fh3 file;
-+ offset3 offset;
-+ count3 count;
-+ stable_how stable;
-+ opaque data<>;
-+};
-+
-+struct WRITE3resok {
-+ wcc_data file_wcc;
-+ count3 count;
-+ stable_how committed;
-+ writeverf3 verf;
-+};
-+
-+struct WRITE3resfail {
-+ wcc_data file_wcc;
-+};
-+
-+union WRITE3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ WRITE3resok resok;
-+default:
-+ WRITE3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to create (v3).
-+ */
-+enum createmode3 {
-+ UNCHECKED = 0,
-+ GUARDED = 1,
-+ EXCLUSIVE = 2
-+};
-+
-+union createhow3 switch (createmode3 mode) {
-+case UNCHECKED:
-+case GUARDED:
-+ sattr3 obj_attributes;
-+case EXCLUSIVE:
-+ createverf3 verf;
-+};
-+
-+struct CREATE3args {
-+ diropargs3 where;
-+ createhow3 how;
-+};
-+
-+struct CREATE3resok {
-+ post_op_fh3 obj;
-+ post_op_attr obj_attributes;
-+ wcc_data dir_wcc;
-+};
-+
-+struct CREATE3resfail {
-+ wcc_data dir_wcc;
-+};
-+
-+union CREATE3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ CREATE3resok resok;
-+default:
-+ CREATE3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to mkdir (v3).
-+ */
-+struct MKDIR3args {
-+ diropargs3 where;
-+ sattr3 attributes;
-+};
-+
-+struct MKDIR3resok {
-+ post_op_fh3 obj;
-+ post_op_attr obj_attributes;
-+ wcc_data dir_wcc;
-+};
-+
-+struct MKDIR3resfail {
-+ wcc_data dir_wcc;
-+};
-+
-+union MKDIR3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ MKDIR3resok resok;
-+default:
-+ MKDIR3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to symlink (v3).
-+ */
-+struct symlinkdata3 {
-+ sattr3 symlink_attributes;
-+ nfspath3 symlink_data;
-+};
-+
-+struct SYMLINK3args {
-+ diropargs3 where;
-+ symlinkdata3 symlink;
-+};
-+
-+struct SYMLINK3resok {
-+ post_op_fh3 obj;
-+ post_op_attr obj_attributes;
-+ wcc_data dir_wcc;
-+};
-+
-+struct SYMLINK3resfail {
-+ wcc_data dir_wcc;
-+};
-+
-+union SYMLINK3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ SYMLINK3resok resok;
-+default:
-+ SYMLINK3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to mknod (v3).
-+ */
-+struct devicedata3 {
-+ sattr3 dev_attributes;
-+ specdata3 spec;
-+};
-+
-+union mknoddata3 switch (ftype3 type) {
-+case NF3CHR:
-+case NF3BLK:
-+ devicedata3 device;
-+case NF3SOCK:
-+case NF3FIFO:
-+ sattr3 pipe_attributes;
-+default:
-+ void;
-+};
-+
-+struct MKNOD3args {
-+ diropargs3 where;
-+ mknoddata3 what;
-+};
-+
-+struct MKNOD3resok {
-+ post_op_fh3 obj;
-+ post_op_attr obj_attributes;
-+ wcc_data dir_wcc;
-+};
-+
-+struct MKNOD3resfail {
-+ wcc_data dir_wcc;
-+};
-+
-+union MKNOD3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ MKNOD3resok resok;
-+default:
-+ MKNOD3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to remove (v3).
-+ */
-+struct REMOVE3args {
-+ diropargs3 object;
-+};
-+
-+struct REMOVE3resok {
-+ wcc_data dir_wcc;
-+};
-+
-+struct REMOVE3resfail {
-+ wcc_data dir_wcc;
-+};
-+
-+union REMOVE3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ REMOVE3resok resok;
-+default:
-+ REMOVE3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to rmdir (v3).
-+ */
-+struct RMDIR3args {
-+ diropargs3 object;
-+};
-+
-+struct RMDIR3resok {
-+ wcc_data dir_wcc;
-+};
-+
-+struct RMDIR3resfail {
-+ wcc_data dir_wcc;
-+};
-+
-+union RMDIR3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ RMDIR3resok resok;
-+default:
-+ RMDIR3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to rename (v3).
-+ */
-+struct RENAME3args {
-+ diropargs3 from;
-+ diropargs3 to;
-+};
-+
-+struct RENAME3resok {
-+ wcc_data fromdir_wcc;
-+ wcc_data todir_wcc;
-+};
-+
-+struct RENAME3resfail {
-+ wcc_data fromdir_wcc;
-+ wcc_data todir_wcc;
-+};
-+
-+union RENAME3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ RENAME3resok resok;
-+default:
-+ RENAME3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to link (v3).
-+ */
-+struct LINK3args {
-+ nfs_fh3 file;
-+ diropargs3 link;
-+};
-+
-+struct LINK3resok {
-+ post_op_attr file_attributes;
-+ wcc_data linkdir_wcc;
-+};
-+
-+struct LINK3resfail {
-+ post_op_attr file_attributes;
-+ wcc_data linkdir_wcc;
-+};
-+
-+union LINK3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ LINK3resok resok;
-+default:
-+ LINK3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to readdir (v3).
-+ */
-+struct READDIR3args {
-+ nfs_fh3 dir;
-+ cookie3 cookie;
-+ cookieverf3 cookieverf;
-+ count3 count;
-+};
-+
-+struct entry3 {
-+ fileid3 fileid;
-+ filename3 name;
-+ cookie3 cookie;
-+ entry3 *nextentry;
-+};
-+
-+struct dirlist3 {
-+ entry3 *entries;
-+ bool eof;
-+};
-+
-+struct READDIR3resok {
-+ post_op_attr dir_attributes;
-+ cookieverf3 cookieverf;
-+ dirlist3 reply;
-+};
-+
-+struct READDIR3resfail {
-+ post_op_attr dir_attributes;
-+};
-+
-+union READDIR3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ READDIR3resok resok;
-+default:
-+ READDIR3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to readdirplus (v3).
-+ */
-+struct READDIRPLUS3args {
-+ nfs_fh3 dir;
-+ cookie3 cookie;
-+ cookieverf3 cookieverf;
-+ count3 dircount;
-+ count3 maxcount;
-+};
-+
-+struct entryplus3 {
-+ fileid3 fileid;
-+ filename3 name;
-+ cookie3 cookie;
-+ post_op_attr name_attributes;
-+ post_op_fh3 name_handle;
-+ entryplus3 *nextentry;
-+};
-+
-+struct dirlistplus3 {
-+ entryplus3 *entries;
-+ bool eof;
-+};
-+
-+struct READDIRPLUS3resok {
-+ post_op_attr dir_attributes;
-+ cookieverf3 cookieverf;
-+ dirlistplus3 reply;
-+};
-+
-+struct READDIRPLUS3resfail {
-+ post_op_attr dir_attributes;
-+};
-+
-+union READDIRPLUS3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ READDIRPLUS3resok resok;
-+default:
-+ READDIRPLUS3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to fsstat (v3).
-+ */
-+struct FSSTAT3args {
-+ nfs_fh3 fsroot;
-+};
-+
-+struct FSSTAT3resok {
-+ post_op_attr obj_attributes;
-+ size3 tbytes;
-+ size3 fbytes;
-+ size3 abytes;
-+ size3 tfiles;
-+ size3 ffiles;
-+ size3 afiles;
-+ uint32 invarsec;
-+};
-+
-+struct FSSTAT3resfail {
-+ post_op_attr obj_attributes;
-+};
-+
-+union FSSTAT3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ FSSTAT3resok resok;
-+default:
-+ FSSTAT3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to fsinfo (v3).
-+ */
-+const FSF3_LINK = 0x0001;
-+const FSF3_SYMLINK = 0x0002;
-+const FSF3_HOMOGENEOUS = 0x0008;
-+const FSF3_CANSETTIME = 0x0010;
-+
-+struct FSINFO3args {
-+ nfs_fh3 fsroot;
-+};
-+
-+struct FSINFO3resok {
-+ post_op_attr obj_attributes;
-+ uint32 rtmax;
-+ uint32 rtpref;
-+ uint32 rtmult;
-+ uint32 wtmax;
-+ uint32 wtpref;
-+ uint32 wtmult;
-+ uint32 dtpref;
-+ size3 maxfilesize;
-+ nfstime3 time_delta;
-+ uint32 properties;
-+};
-+
-+struct FSINFO3resfail {
-+ post_op_attr obj_attributes;
-+};
-+
-+union FSINFO3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ FSINFO3resok resok;
-+default:
-+ FSINFO3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to pathconf (v3).
-+ */
-+struct PATHCONF3args {
-+ nfs_fh3 object;
-+};
-+
-+struct PATHCONF3resok {
-+ post_op_attr obj_attributes;
-+ uint32 linkmax;
-+ uint32 name_max;
-+ bool no_trunc;
-+ bool chown_restricted;
-+ bool case_insensitive;
-+ bool case_preserving;
-+};
-+
-+struct PATHCONF3resfail {
-+ post_op_attr obj_attributes;
-+};
-+
-+union PATHCONF3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ PATHCONF3resok resok;
-+default:
-+ PATHCONF3resfail resfail;
-+};
-+
-+/*
-+ * Arguments to commit (v3).
-+ */
-+struct COMMIT3args {
-+ nfs_fh3 file;
-+ offset3 offset;
-+ count3 count;
-+};
-+
-+struct COMMIT3resok {
-+ wcc_data file_wcc;
-+ writeverf3 verf;
-+};
-+
-+struct COMMIT3resfail {
-+ wcc_data file_wcc;
-+};
-+
-+union COMMIT3res switch (nfsstat3 status) {
-+case NFS3_OK:
-+ COMMIT3resok resok;
-+default:
-+ COMMIT3resfail resfail;
-+};
-+
-+#endif /* WANT_NFS3 */
-+
-+/*
-+ * Remote file service routines
-+ */
-+program NFS_PROGRAM {
-+ version NFS_VERSION {
-+ void
-+ NFSPROC_NULL(void) = 0;
-+
-+ attrstat
-+ NFSPROC_GETATTR(nfs_fh) = 1;
-+
-+ attrstat
-+ NFSPROC_SETATTR(sattrargs) = 2;
-+
-+ void
-+ NFSPROC_ROOT(void) = 3;
-+
-+ diropres
-+ NFSPROC_LOOKUP(diropargs) = 4;
-+
-+ readlinkres
-+ NFSPROC_READLINK(nfs_fh) = 5;
-+
-+ readres
-+ NFSPROC_READ(readargs) = 6;
-+
-+ void
-+ NFSPROC_WRITECACHE(void) = 7;
-+
-+ attrstat
-+ NFSPROC_WRITE(writeargs) = 8;
-+
-+ diropres
-+ NFSPROC_CREATE(createargs) = 9;
-+
-+ nfsstat
-+ NFSPROC_REMOVE(diropargs) = 10;
-+
-+ nfsstat
-+ NFSPROC_RENAME(renameargs) = 11;
-+
-+ nfsstat
-+ NFSPROC_LINK(linkargs) = 12;
-+
-+ nfsstat
-+ NFSPROC_SYMLINK(symlinkargs) = 13;
-+
-+ diropres
-+ NFSPROC_MKDIR(createargs) = 14;
-+
-+ nfsstat
-+ NFSPROC_RMDIR(diropargs) = 15;
-+
-+ readdirres
-+ NFSPROC_READDIR(readdirargs) = 16;
-+
-+ statfsres
-+ NFSPROC_STATFS(nfs_fh) = 17;
-+ } = 2;
-+} = 100003;
-+#ifdef WANT_NFS3
-+program NFS3_PROGRAM {
-+ version NFS_V3 {
-+ void
-+ NFSPROC3_NULL(void) = 0;
-+
-+ GETATTR3res
-+ NFSPROC3_GETATTR(GETATTR3args) = 1;
-+
-+ SETATTR3res
-+ NFSPROC3_SETATTR(SETATTR3args) = 2;
-+
-+ LOOKUP3res
-+ NFSPROC3_LOOKUP(LOOKUP3args) = 3;
-+
-+ ACCESS3res
-+ NFSPROC3_ACCESS(ACCESS3args) = 4;
-+
-+ READLINK3res
-+ NFSPROC3_READLINK(READLINK3args) = 5;
-+
-+ READ3res
-+ NFSPROC3_READ(READ3args) = 6;
-+
-+ WRITE3res
-+ NFSPROC3_WRITE(WRITE3args) = 7;
-+
-+ CREATE3res
-+ NFSPROC3_CREATE(CREATE3args) = 8;
-+
-+ MKDIR3res
-+ NFSPROC3_MKDIR(MKDIR3args) = 9;
-+
-+ SYMLINK3res
-+ NFSPROC3_SYMLINK(SYMLINK3args) = 10;
-+
-+ MKNOD3res
-+ NFSPROC3_MKNOD(MKNOD3args) = 11;
-+
-+ REMOVE3res
-+ NFSPROC3_REMOVE(REMOVE3args) = 12;
-+
-+ RMDIR3res
-+ NFSPROC3_RMDIR(RMDIR3args) = 13;
-+
-+ RENAME3res
-+ NFSPROC3_RENAME(RENAME3args) = 14;
-+
-+ LINK3res
-+ NFSPROC3_LINK(LINK3args) = 15;
-+
-+ READDIR3res
-+ NFSPROC3_READDIR(READDIR3args) = 16;
-+
-+ READDIRPLUS3res
-+ NFSPROC3_READDIRPLUS(READDIRPLUS3args) = 17;
-+
-+ FSSTAT3res
-+ NFSPROC3_FSSTAT(FSSTAT3args) = 18;
-+
-+ FSINFO3res
-+ NFSPROC3_FSINFO(FSINFO3args) = 19;
-+
-+ PATHCONF3res
-+ NFSPROC3_PATHCONF(PATHCONF3args) = 20;
-+
-+ COMMIT3res
-+ NFSPROC3_COMMIT(COMMIT3args) = 21;
-+ } = 3;
-+} = 100003;
-+#endif
-+
-diff --git a/tirpc/rpcsvc/rquota.x b/tirpc/rpcsvc/rquota.x
-new file mode 100644
-index 0000000..72864d1
---- /dev/null
-+++ b/tirpc/rpcsvc/rquota.x
-@@ -0,0 +1,67 @@
-+/*
-+ * Remote quota protocol
-+ * Requires unix authentication
-+ */
-+
-+#ifndef RPC_HDR
-+%#ifndef lint
-+%/*static char sccsid[] = "from: @(#)rquota.x 1.2 87/09/20 Copyr 1987 Sun Micro";*/
-+%/*static char sccsid[] = "from: @(#)rquota.x 2.1 88/08/01 4.0 RPCSRC";*/
-+%static const char rcsid[] =
-+% "$FreeBSD: src/include/rpcsvc/rquota.x,v 1.6 1999/08/27 23:45:10 peter Exp $";
-+%#endif /* not lint */
-+#endif
-+
-+const RQ_PATHLEN = 1024;
-+
-+struct getquota_args {
-+ string gqa_pathp<RQ_PATHLEN>; /* path to filesystem of interest */
-+ int gqa_uid; /* inquire about quota for uid */
-+};
-+
-+/*
-+ * remote quota structure
-+ */
-+struct rquota {
-+ int rq_bsize; /* block size for block counts */
-+ bool rq_active; /* indicates whether quota is active */
-+ unsigned int rq_bhardlimit; /* absolute limit on disk blks alloc */
-+ unsigned int rq_bsoftlimit; /* preferred limit on disk blks */
-+ unsigned int rq_curblocks; /* current block count */
-+ unsigned int rq_fhardlimit; /* absolute limit on allocated files */
-+ unsigned int rq_fsoftlimit; /* preferred file limit */
-+ unsigned int rq_curfiles; /* current # allocated files */
-+ unsigned int rq_btimeleft; /* time left for excessive disk use */
-+ unsigned int rq_ftimeleft; /* time left for excessive files */
-+};
-+
-+enum gqr_status {
-+ Q_OK = 1, /* quota returned */
-+ Q_NOQUOTA = 2, /* noquota for uid */
-+ Q_EPERM = 3 /* no permission to access quota */
-+};
-+
-+union getquota_rslt switch (gqr_status status) {
-+case Q_OK:
-+ rquota gqr_rquota; /* valid if status == Q_OK */
-+case Q_NOQUOTA:
-+ void;
-+case Q_EPERM:
-+ void;
-+};
-+
-+program RQUOTAPROG {
-+ version RQUOTAVERS {
-+ /*
-+ * Get all quotas
-+ */
-+ getquota_rslt
-+ RQUOTAPROC_GETQUOTA(getquota_args) = 1;
-+
-+ /*
-+ * Get active quotas only
-+ */
-+ getquota_rslt
-+ RQUOTAPROC_GETACTIVEQUOTA(getquota_args) = 2;
-+ } = 1;
-+} = 100011;
---
-1.9.1
-