source: rtems/cpukit/libfs/src/nfsclient/proto/nfs_prot.h @ 3becac2

4.115
Last change on this file since 3becac2 was 3becac2, checked in by Sebastian Huber <sebastian.huber@…>, on Oct 2, 2012 at 7:37:39 AM

nfsclient: Fix for short enums

The XDR library has a problem on architectures with short enums like the
default ARM EABI. Short enums means that the size of the enum type is
variable and the smallest integer type to hold all enum values will be
selected. For many enums this is char. The XDR library uses int32_t
for enum_t. There are several evil casts from an enum type to enum_t
which leads to invalid memory accesses on short enum architectures. A
workaround is to add appropriate dummy enum values.

  • Property mode set to 100644
File size: 11.3 KB
Line 
1/*
2 * Please do not edit this file.
3 * It was generated using rpcgen.
4 */
5
6#ifndef _NFS_PROT_H_RPCGEN
7#define _NFS_PROT_H_RPCGEN
8
9#include <rpc/rpc.h>
10
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16#define NFS_PORT 2049
17#define NFS_MAXDATA 8192
18#define NFS_MAXPATHLEN 1024
19#define NFS_MAXNAMLEN 255
20#define NFS_FHSIZE 32
21#define NFS_COOKIESIZE 4
22#define NFS_FIFO_DEV -1
23#define NFSMODE_FMT 0170000
24#define NFSMODE_DIR 0040000
25#define NFSMODE_CHR 0020000
26#define NFSMODE_BLK 0060000
27#define NFSMODE_REG 0100000
28#define NFSMODE_LNK 0120000
29#define NFSMODE_SOCK 0140000
30#define NFSMODE_FIFO 0010000
31
32enum nfsstat {
33        NFS_OK = 0,
34        NFSERR_PERM = 1,
35        NFSERR_NOENT = 2,
36        NFSERR_IO = 5,
37        NFSERR_NXIO = 6,
38        NFSERR_ACCES = 13,
39        NFSERR_EXIST = 17,
40        NFSERR_NODEV = 19,
41        NFSERR_NOTDIR = 20,
42        NFSERR_ISDIR = 21,
43        NFSERR_FBIG = 27,
44        NFSERR_NOSPC = 28,
45        NFSERR_ROFS = 30,
46        NFSERR_NAMETOOLONG = 63,
47        NFSERR_NOTEMPTY = 66,
48        NFSERR_DQUOT = 69,
49        NFSERR_STALE = 70,
50        NFSERR_WFLUSH = 99,
51  _NFSSTAT = 0xffffffff
52};
53typedef enum nfsstat nfsstat;
54
55enum ftype {
56        NFNON = 0,
57        NFREG = 1,
58        NFDIR = 2,
59        NFBLK = 3,
60        NFCHR = 4,
61        NFLNK = 5,
62        NFSOCK = 6,
63        NFBAD = 7,
64        NFFIFO = 8,
65  _FTYPE = 0xffffffff
66};
67typedef enum ftype ftype;
68
69struct nfs_fh {
70        char data[NFS_FHSIZE];
71};
72typedef struct nfs_fh nfs_fh;
73
74struct nfstime {
75        u_int seconds;
76        u_int useconds;
77};
78typedef struct nfstime nfstime;
79
80struct fattr {
81        ftype type;
82        u_int mode;
83        u_int nlink;
84        u_int uid;
85        u_int gid;
86        u_int size;
87        u_int blocksize;
88        u_int rdev;
89        u_int blocks;
90        u_int fsid;
91        u_int fileid;
92        nfstime atime;
93        nfstime mtime;
94        nfstime ctime;
95};
96typedef struct fattr fattr;
97
98struct sattr {
99        u_int mode;
100        u_int uid;
101        u_int gid;
102        u_int size;
103        nfstime atime;
104        nfstime mtime;
105};
106typedef struct sattr sattr;
107
108typedef char *filename;
109
110typedef char *nfspath;
111
112struct attrstat {
113        nfsstat status;
114        union {
115                fattr attributes;
116        } attrstat_u;
117};
118typedef struct attrstat attrstat;
119
120struct sattrargs {
121        nfs_fh file;
122        sattr attributes;
123};
124typedef struct sattrargs sattrargs;
125
126struct diropargs {
127        nfs_fh dir;
128        filename name;
129};
130typedef struct diropargs diropargs;
131
132struct diropokres {
133        nfs_fh file;
134        fattr attributes;
135};
136typedef struct diropokres diropokres;
137
138struct diropres {
139        nfsstat status;
140        union {
141                diropokres diropres;
142        } diropres_u;
143};
144typedef struct diropres diropres;
145
146struct readlinkres {
147        nfsstat status;
148        union {
149                nfspath data;
150        } readlinkres_u;
151};
152typedef struct readlinkres readlinkres;
153
154struct readargs {
155        nfs_fh file;
156        u_int offset;
157        u_int count;
158        u_int totalcount;
159};
160typedef struct readargs readargs;
161
162struct readokres {
163        fattr attributes;
164        struct {
165                u_int data_len;
166                char *data_val;
167        } data;
168};
169typedef struct readokres readokres;
170
171struct readres {
172        nfsstat status;
173        union {
174                readokres reply;
175        } readres_u;
176};
177typedef struct readres readres;
178
179struct writeargs {
180        nfs_fh file;
181        u_int beginoffset;
182        u_int offset;
183        u_int totalcount;
184        struct {
185                u_int data_len;
186                char *data_val;
187        } data;
188};
189typedef struct writeargs writeargs;
190
191struct createargs {
192        diropargs where;
193        sattr attributes;
194};
195typedef struct createargs createargs;
196
197struct renameargs {
198        diropargs from;
199        diropargs to;
200};
201typedef struct renameargs renameargs;
202
203struct linkargs {
204        nfs_fh from;
205        diropargs to;
206};
207typedef struct linkargs linkargs;
208
209struct symlinkargs {
210        diropargs from;
211        nfspath to;
212        sattr attributes;
213};
214typedef struct symlinkargs symlinkargs;
215
216struct nfscookie {
217        char data[NFS_COOKIESIZE];
218};
219typedef struct nfscookie nfscookie;
220
221struct readdirargs {
222        nfs_fh dir;
223        nfscookie cookie;
224        u_int count;
225};
226typedef struct readdirargs readdirargs;
227
228struct entry {
229        u_int fileid;
230        filename name;
231        nfscookie cookie;
232        struct entry *nextentry;
233};
234typedef struct entry entry;
235
236struct dirlist {
237        entry *entries;
238        bool_t eof;
239};
240typedef struct dirlist dirlist;
241
242struct readdirres {
243        nfsstat status;
244        union {
245                dirlist reply;
246        } readdirres_u;
247};
248typedef struct readdirres readdirres;
249
250struct statfsokres {
251        u_int tsize;
252        u_int bsize;
253        u_int blocks;
254        u_int bfree;
255        u_int bavail;
256};
257typedef struct statfsokres statfsokres;
258
259struct statfsres {
260        nfsstat status;
261        union {
262                statfsokres reply;
263        } statfsres_u;
264};
265typedef struct statfsres statfsres;
266
267#define NFS_PROGRAM 100003
268#define NFS_VERSION 2
269
270#if defined(__STDC__) || defined(__cplusplus)
271#define NFSPROC_NULL 0
272extern  void * nfsproc_null_2(void *, CLIENT *);
273extern  void * nfsproc_null_2_svc(void *, struct svc_req *);
274#define NFSPROC_GETATTR 1
275extern  attrstat * nfsproc_getattr_2(nfs_fh *, CLIENT *);
276extern  attrstat * nfsproc_getattr_2_svc(nfs_fh *, struct svc_req *);
277#define NFSPROC_SETATTR 2
278extern  attrstat * nfsproc_setattr_2(sattrargs *, CLIENT *);
279extern  attrstat * nfsproc_setattr_2_svc(sattrargs *, struct svc_req *);
280#define NFSPROC_ROOT 3
281extern  void * nfsproc_root_2(void *, CLIENT *);
282extern  void * nfsproc_root_2_svc(void *, struct svc_req *);
283#define NFSPROC_LOOKUP 4
284extern  diropres * nfsproc_lookup_2(diropargs *, CLIENT *);
285extern  diropres * nfsproc_lookup_2_svc(diropargs *, struct svc_req *);
286#define NFSPROC_READLINK 5
287extern  readlinkres * nfsproc_readlink_2(nfs_fh *, CLIENT *);
288extern  readlinkres * nfsproc_readlink_2_svc(nfs_fh *, struct svc_req *);
289#define NFSPROC_READ 6
290extern  readres * nfsproc_read_2(readargs *, CLIENT *);
291extern  readres * nfsproc_read_2_svc(readargs *, struct svc_req *);
292#define NFSPROC_WRITECACHE 7
293extern  void * nfsproc_writecache_2(void *, CLIENT *);
294extern  void * nfsproc_writecache_2_svc(void *, struct svc_req *);
295#define NFSPROC_WRITE 8
296extern  attrstat * nfsproc_write_2(writeargs *, CLIENT *);
297extern  attrstat * nfsproc_write_2_svc(writeargs *, struct svc_req *);
298#define NFSPROC_CREATE 9
299extern  diropres * nfsproc_create_2(createargs *, CLIENT *);
300extern  diropres * nfsproc_create_2_svc(createargs *, struct svc_req *);
301#define NFSPROC_REMOVE 10
302extern  nfsstat * nfsproc_remove_2(diropargs *, CLIENT *);
303extern  nfsstat * nfsproc_remove_2_svc(diropargs *, struct svc_req *);
304#define NFSPROC_RENAME 11
305extern  nfsstat * nfsproc_rename_2(renameargs *, CLIENT *);
306extern  nfsstat * nfsproc_rename_2_svc(renameargs *, struct svc_req *);
307#define NFSPROC_LINK 12
308extern  nfsstat * nfsproc_link_2(linkargs *, CLIENT *);
309extern  nfsstat * nfsproc_link_2_svc(linkargs *, struct svc_req *);
310#define NFSPROC_SYMLINK 13
311extern  nfsstat * nfsproc_symlink_2(symlinkargs *, CLIENT *);
312extern  nfsstat * nfsproc_symlink_2_svc(symlinkargs *, struct svc_req *);
313#define NFSPROC_MKDIR 14
314extern  diropres * nfsproc_mkdir_2(createargs *, CLIENT *);
315extern  diropres * nfsproc_mkdir_2_svc(createargs *, struct svc_req *);
316#define NFSPROC_RMDIR 15
317extern  nfsstat * nfsproc_rmdir_2(diropargs *, CLIENT *);
318extern  nfsstat * nfsproc_rmdir_2_svc(diropargs *, struct svc_req *);
319#define NFSPROC_READDIR 16
320extern  readdirres * nfsproc_readdir_2(readdirargs *, CLIENT *);
321extern  readdirres * nfsproc_readdir_2_svc(readdirargs *, struct svc_req *);
322#define NFSPROC_STATFS 17
323extern  statfsres * nfsproc_statfs_2(nfs_fh *, CLIENT *);
324extern  statfsres * nfsproc_statfs_2_svc(nfs_fh *, struct svc_req *);
325extern int nfs_program_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
326
327#else /* K&R C */
328#define NFSPROC_NULL 0
329extern  void * nfsproc_null_2();
330extern  void * nfsproc_null_2_svc();
331#define NFSPROC_GETATTR 1
332extern  attrstat * nfsproc_getattr_2();
333extern  attrstat * nfsproc_getattr_2_svc();
334#define NFSPROC_SETATTR 2
335extern  attrstat * nfsproc_setattr_2();
336extern  attrstat * nfsproc_setattr_2_svc();
337#define NFSPROC_ROOT 3
338extern  void * nfsproc_root_2();
339extern  void * nfsproc_root_2_svc();
340#define NFSPROC_LOOKUP 4
341extern  diropres * nfsproc_lookup_2();
342extern  diropres * nfsproc_lookup_2_svc();
343#define NFSPROC_READLINK 5
344extern  readlinkres * nfsproc_readlink_2();
345extern  readlinkres * nfsproc_readlink_2_svc();
346#define NFSPROC_READ 6
347extern  readres * nfsproc_read_2();
348extern  readres * nfsproc_read_2_svc();
349#define NFSPROC_WRITECACHE 7
350extern  void * nfsproc_writecache_2();
351extern  void * nfsproc_writecache_2_svc();
352#define NFSPROC_WRITE 8
353extern  attrstat * nfsproc_write_2();
354extern  attrstat * nfsproc_write_2_svc();
355#define NFSPROC_CREATE 9
356extern  diropres * nfsproc_create_2();
357extern  diropres * nfsproc_create_2_svc();
358#define NFSPROC_REMOVE 10
359extern  nfsstat * nfsproc_remove_2();
360extern  nfsstat * nfsproc_remove_2_svc();
361#define NFSPROC_RENAME 11
362extern  nfsstat * nfsproc_rename_2();
363extern  nfsstat * nfsproc_rename_2_svc();
364#define NFSPROC_LINK 12
365extern  nfsstat * nfsproc_link_2();
366extern  nfsstat * nfsproc_link_2_svc();
367#define NFSPROC_SYMLINK 13
368extern  nfsstat * nfsproc_symlink_2();
369extern  nfsstat * nfsproc_symlink_2_svc();
370#define NFSPROC_MKDIR 14
371extern  diropres * nfsproc_mkdir_2();
372extern  diropres * nfsproc_mkdir_2_svc();
373#define NFSPROC_RMDIR 15
374extern  nfsstat * nfsproc_rmdir_2();
375extern  nfsstat * nfsproc_rmdir_2_svc();
376#define NFSPROC_READDIR 16
377extern  readdirres * nfsproc_readdir_2();
378extern  readdirres * nfsproc_readdir_2_svc();
379#define NFSPROC_STATFS 17
380extern  statfsres * nfsproc_statfs_2();
381extern  statfsres * nfsproc_statfs_2_svc();
382extern int nfs_program_2_freeresult ();
383#endif /* K&R C */
384
385/* the xdr functions */
386
387#if defined(__STDC__) || defined(__cplusplus)
388extern  bool_t xdr_nfsstat (XDR *, nfsstat*);
389extern  bool_t xdr_ftype (XDR *, ftype*);
390extern  bool_t xdr_nfs_fh (XDR *, nfs_fh*);
391extern  bool_t xdr_nfstime (XDR *, nfstime*);
392extern  bool_t xdr_fattr (XDR *, fattr*);
393extern  bool_t xdr_sattr (XDR *, sattr*);
394extern  bool_t xdr_filename (XDR *, filename*);
395extern  bool_t xdr_nfspath (XDR *, nfspath*);
396extern  bool_t xdr_attrstat (XDR *, attrstat*);
397extern  bool_t xdr_sattrargs (XDR *, sattrargs*);
398extern  bool_t xdr_diropargs (XDR *, diropargs*);
399extern  bool_t xdr_diropokres (XDR *, diropokres*);
400extern  bool_t xdr_diropres (XDR *, diropres*);
401extern  bool_t xdr_readlinkres (XDR *, readlinkres*);
402extern  bool_t xdr_readargs (XDR *, readargs*);
403extern  bool_t xdr_readokres (XDR *, readokres*);
404extern  bool_t xdr_readres (XDR *, readres*);
405extern  bool_t xdr_writeargs (XDR *, writeargs*);
406extern  bool_t xdr_createargs (XDR *, createargs*);
407extern  bool_t xdr_renameargs (XDR *, renameargs*);
408extern  bool_t xdr_linkargs (XDR *, linkargs*);
409extern  bool_t xdr_symlinkargs (XDR *, symlinkargs*);
410extern  bool_t xdr_nfscookie (XDR *, nfscookie*);
411extern  bool_t xdr_readdirargs (XDR *, readdirargs*);
412extern  bool_t xdr_entry (XDR *, entry*);
413extern  bool_t xdr_dirlist (XDR *, dirlist*);
414extern  bool_t xdr_readdirres (XDR *, readdirres*);
415extern  bool_t xdr_statfsokres (XDR *, statfsokres*);
416extern  bool_t xdr_statfsres (XDR *, statfsres*);
417
418#else /* K&R C */
419extern bool_t xdr_nfsstat ();
420extern bool_t xdr_ftype ();
421extern bool_t xdr_nfs_fh ();
422extern bool_t xdr_nfstime ();
423extern bool_t xdr_fattr ();
424extern bool_t xdr_sattr ();
425extern bool_t xdr_filename ();
426extern bool_t xdr_nfspath ();
427extern bool_t xdr_attrstat ();
428extern bool_t xdr_sattrargs ();
429extern bool_t xdr_diropargs ();
430extern bool_t xdr_diropokres ();
431extern bool_t xdr_diropres ();
432extern bool_t xdr_readlinkres ();
433extern bool_t xdr_readargs ();
434extern bool_t xdr_readokres ();
435extern bool_t xdr_readres ();
436extern bool_t xdr_writeargs ();
437extern bool_t xdr_createargs ();
438extern bool_t xdr_renameargs ();
439extern bool_t xdr_linkargs ();
440extern bool_t xdr_symlinkargs ();
441extern bool_t xdr_nfscookie ();
442extern bool_t xdr_readdirargs ();
443extern bool_t xdr_entry ();
444extern bool_t xdr_dirlist ();
445extern bool_t xdr_readdirres ();
446extern bool_t xdr_statfsokres ();
447extern bool_t xdr_statfsres ();
448
449#endif /* K&R C */
450
451#ifdef __cplusplus
452}
453#endif
454
455#endif /* !_NFS_PROT_H_RPCGEN */
Note: See TracBrowser for help on using the repository browser.