123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653 |
- 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
|