1 /* copied from RFC1813 and RFC1094 */
2 
3 const MNTPATHLEN = 1024;  /* Maximum bytes in a path name */
4 const MNTNAMLEN  = 255;   /* Maximum bytes in a name */
5 const FHSIZE3    = 64;    /* Maximum bytes in a V3 file handle */
6 
7 
8 typedef opaque fhandle3<FHSIZE3>;
9 typedef string dirpath<MNTPATHLEN>;
10 typedef string name<MNTNAMLEN>;
11 
12 enum mountstat3 {
13 	MNT3_OK = 0,                 /* no error */
14 	MNT3ERR_PERM = 1,            /* Not owner */
15 	MNT3ERR_NOENT = 2,           /* No such file or directory */
16 	MNT3ERR_IO = 5,              /* I/O error */
17 	MNT3ERR_ACCES = 13,          /* Permission denied */
18 	MNT3ERR_NOTDIR = 20,         /* Not a directory */
19 	MNT3ERR_INVAL = 22,          /* Invalid argument */
20 	MNT3ERR_NAMETOOLONG = 63,    /* Filename too long */
21 	MNT3ERR_NOTSUPP = 10004,     /* Operation not supported */
22 	MNT3ERR_SERVERFAULT = 10006  /* A failure on the server */
23 };
24 
25 
26 typedef struct mountbody *mountlist;
27 
28 struct mountbody {
29 	name       ml_hostname;
30 	dirpath    ml_directory;
31 	mountlist  ml_next;
32 };
33 
34 typedef struct groupnode *groups;
35 
36 struct groupnode {
37 	name     gr_name;
38 	groups   gr_next;
39 };
40 
41 
42 typedef struct exportnode *exports;
43 
44 struct exportnode {
45 	dirpath  ex_dir;
46 	groups   ex_groups;
47 	exports  ex_next;
48 };
49 
50 struct mountres3_ok {
51 	fhandle3   fhandle;
52 	int        auth_flavors<>;
53 };
54 
55 union mountres3 switch (mountstat3 fhs_status) {
56 	case MNT3_OK:
57 		mountres3_ok  mountinfo;
58 	default:
59 		void;
60 };
61 
62 
63 enum mountstat1 {
64 	MNT1_OK = 0,                 /* no error */
65 	MNT1ERR_PERM = 1,            /* Not owner */
66 	MNT1ERR_NOENT = 2,           /* No such file or directory */
67 	MNT1ERR_IO = 5,              /* I/O error */
68 	MNT1ERR_ACCES = 13,          /* Permission denied */
69 	MNT1ERR_NOTDIR = 20,         /* Not a directory */
70 	MNT1ERR_INVAL = 22,          /* Invalid argument */
71 	MNT1ERR_NAMETOOLONG = 63,    /* Filename too long */
72 	MNT1ERR_NOTSUPP = 10004,     /* Operation not supported */
73 	MNT1ERR_SERVERFAULT = 10006  /* A failure on the server */
74 };
75 
76 const FHSIZE = 32;
77 typedef opaque fhandle1[FHSIZE];
78 
79 struct mountres1_ok {
80 	fhandle1   fhandle;
81 };
82 
83 union mountres1 switch (mountstat1 fhs_status) {
84 	case MNT1_OK:
85 		mountres1_ok  mountinfo;
86 	default:
87 		void;
88 };
89 
90 program MOUNT_PROGRAM {
91 	version MOUNT_V1 {
92 	void      MOUNT1_NULL(void)    = 0;
93 	mountres1 MOUNT1_MNT(dirpath)  = 1;
94 	mountlist MOUNT1_DUMP(void)    = 2;
95 	void      MOUNT1_UMNT(dirpath) = 3;
96 	void      MOUNT1_UMNTALL(void) = 4;
97 	exports   MOUNT1_EXPORT(void)  = 5;
98 	} = 1;
99 	version MOUNT_V3 {
100 	void      MOUNT3_NULL(void)    = 0;
101 	mountres3 MOUNT3_MNT(dirpath)  = 1;
102 	mountlist MOUNT3_DUMP(void)    = 2;
103 	void      MOUNT3_UMNT(dirpath) = 3;
104 	void      MOUNT3_UMNTALL(void) = 4;
105 	exports   MOUNT3_EXPORT(void)  = 5;
106 	} = 3;
107 } = 100005;
108