/*
	$Id: mount-spec 58 2003-10-14 19:32:25Z ajw $
	$URL: http://svn/NFS/trunk/!Sunfish/mount-spec $

	XDR Specification for the MOUNT V3 protocol.
	See RFC 1813 for more details.

	StrongEd$Mode=C
*/

#define MOUNT_RPC_PROGRAM 100005
#define MOUNT_RPC_VERSION 3


const MNTPATHLEN = 1024;  /* Maximum bytes in a path name */
const MNTNAMLEN  = 255;   /* Maximum bytes in a name */
const FHSIZE3    = 64;    /* Maximum bytes in a V3 file handle */

#ifndef NFS_FH
#define NFS_FH
struct nfs_fh {
   opaque       data<FHSIZE3>;
};
#endif

/*typedef opaque fhandle3<FHSIZE3>;*/
typedef string dirpath<MNTPATHLEN>;
typedef string name<MNTNAMLEN>;

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 */
};


void MOUNTPROC3_NULL(void) = 0;


union mountres switch (mountstat3 status) {
case MNT3_OK:
     nfs_fh  directory;
default:
     void;
};

mountres MOUNTPROC3_MNT(dirpath) = 1;

/*
mountlist MOUNTPROC3_DUMP(void) = 2;


typedef struct mountbody *mountlist;

struct mountbody {
     name       ml_hostname;
     dirpath    ml_directory;
     mountlist  ml_next;
};
*/

void MOUNTPROC3_UMNT(dirpath) = 3;

void MOUNTPROC3_UMNTALL(void) = 4;

/*
exports MOUNTPROC3_EXPORT(void) = 5;

typedef struct groupnode *groups;

struct groupnode {
     name     gr_name;
     groups   gr_next;
};

typedef struct exportnode *exports;

struct exportnode {
     dirpath  ex_dir;
     groups   ex_groups;
     exports  ex_next;
};
*/


