summaryrefslogtreecommitdiffstats
path: root/package/libtirpc/libtirpc-0010-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/libtirpc/libtirpc-0010-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch')
-rw-r--r--package/libtirpc/libtirpc-0010-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch1649
1 files changed, 1649 insertions, 0 deletions
diff --git a/package/libtirpc/libtirpc-0010-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch b/package/libtirpc/libtirpc-0010-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch
new file mode 100644
index 000000000..360a27f83
--- /dev/null
+++ b/package/libtirpc/libtirpc-0010-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch
@@ -0,0 +1,1649 @@
+From 52aecb645b2e45d120a941f42fdbe193e22c27e1 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>
+---
+ 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 7e63f78..351c5df 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3,10 +3,16 @@ 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
+
+ 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.7.9.5
+