package/libtipc: renumber patches
authorFabrice Fontaine <fontaine.fabrice@gmail.com>
Fri, 16 Jul 2021 22:13:28 +0000 (00:13 +0200)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Sat, 17 Jul 2021 08:01:25 +0000 (10:01 +0200)
Commit 883a33ece55c6ef23c33a41196fddabadf140427 forgot to renumber
remaining patches

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
package/libtirpc/0001-Automatically-generate-XDR-header-files-from-.x-sour.patch [new file with mode: 0644]
package/libtirpc/0002-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch [new file with mode: 0644]
package/libtirpc/0003-Automatically-generate-XDR-header-files-from-.x-sour.patch [deleted file]
package/libtirpc/0004-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch [deleted file]

diff --git a/package/libtirpc/0001-Automatically-generate-XDR-header-files-from-.x-sour.patch b/package/libtirpc/0001-Automatically-generate-XDR-header-files-from-.x-sour.patch
new file mode 100644 (file)
index 0000000..2712f53
--- /dev/null
@@ -0,0 +1,1001 @@
+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
+
diff --git a/package/libtirpc/0002-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch b/package/libtirpc/0002-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch
new file mode 100644 (file)
index 0000000..7f53ffc
--- /dev/null
@@ -0,0 +1,1653 @@
+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
+
diff --git a/package/libtirpc/0003-Automatically-generate-XDR-header-files-from-.x-sour.patch b/package/libtirpc/0003-Automatically-generate-XDR-header-files-from-.x-sour.patch
deleted file mode 100644 (file)
index 2712f53..0000000
+++ /dev/null
@@ -1,1001 +0,0 @@
-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
-
diff --git a/package/libtirpc/0004-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch b/package/libtirpc/0004-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch
deleted file mode 100644 (file)
index 7f53ffc..0000000
+++ /dev/null
@@ -1,1653 +0,0 @@
-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
-