Subversion Repositories shark

Rev

Rev 423 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
423 giacomo 1
/*
2
 * linux/inxlude/linux/nfsd/xdr.h
3
 *
4
 * XDR types for nfsd. This is mainly a typing exercise.
5
 */
6
 
7
#ifndef LINUX_NFSD_H
8
#define LINUX_NFSD_H
9
 
10
#include <linux/fs.h>
11
#include <linux/vfs.h>
12
#include <linux/nfs.h>
13
 
14
struct nfsd_fhandle {
15
        struct svc_fh           fh;
16
};
17
 
18
struct nfsd_sattrargs {
19
        struct svc_fh           fh;
20
        struct iattr            attrs;
21
};
22
 
23
struct nfsd_diropargs {
24
        struct svc_fh           fh;
25
        char *                  name;
26
        int                     len;
27
};
28
 
29
struct nfsd_readargs {
30
        struct svc_fh           fh;
31
        __u32                   offset;
32
        __u32                   count;
33
        struct iovec            vec[RPCSVC_MAXPAGES];
34
        int                     vlen;
35
};
36
 
37
struct nfsd_writeargs {
38
        svc_fh                  fh;
39
        __u32                   offset;
40
        int                     len;
41
        struct iovec            vec[RPCSVC_MAXPAGES];
42
        int                     vlen;
43
};
44
 
45
struct nfsd_createargs {
46
        struct svc_fh           fh;
47
        char *                  name;
48
        int                     len;
49
        struct iattr            attrs;
50
};
51
 
52
struct nfsd_renameargs {
53
        struct svc_fh           ffh;
54
        char *                  fname;
55
        int                     flen;
56
        struct svc_fh           tfh;
57
        char *                  tname;
58
        int                     tlen;
59
};
60
 
61
struct nfsd_readlinkargs {
62
        struct svc_fh           fh;
63
        char *                  buffer;
64
};
65
 
66
struct nfsd_linkargs {
67
        struct svc_fh           ffh;
68
        struct svc_fh           tfh;
69
        char *                  tname;
70
        int                     tlen;
71
};
72
 
73
struct nfsd_symlinkargs {
74
        struct svc_fh           ffh;
75
        char *                  fname;
76
        int                     flen;
77
        char *                  tname;
78
        int                     tlen;
79
        struct iattr            attrs;
80
};
81
 
82
struct nfsd_readdirargs {
83
        struct svc_fh           fh;
84
        __u32                   cookie;
85
        __u32                   count;
86
        u32 *                   buffer;
87
};
88
 
89
struct nfsd_attrstat {
90
        struct svc_fh           fh;
91
};
92
 
93
struct nfsd_diropres  {
94
        struct svc_fh           fh;
95
};
96
 
97
struct nfsd_readlinkres {
98
        int                     len;
99
};
100
 
101
struct nfsd_readres {
102
        struct svc_fh           fh;
103
        unsigned long           count;
104
};
105
 
106
struct nfsd_readdirres {
107
        int                     count;
108
 
109
        struct readdir_cd       common;
110
        u32 *                   buffer;
111
        int                     buflen;
112
        u32 *                   offset;
113
};
114
 
115
struct nfsd_statfsres {
116
        struct kstatfs          stats;
117
};
118
 
119
/*
120
 * Storage requirements for XDR arguments and results.
121
 */
122
union nfsd_xdrstore {
123
        struct nfsd_sattrargs   sattr;
124
        struct nfsd_diropargs   dirop;
125
        struct nfsd_readargs    read;
126
        struct nfsd_writeargs   write;
127
        struct nfsd_createargs  create;
128
        struct nfsd_renameargs  rename;
129
        struct nfsd_linkargs    link;
130
        struct nfsd_symlinkargs symlink;
131
        struct nfsd_readdirargs readdir;
132
};
133
 
134
#define NFS2_SVC_XDRSIZE        sizeof(union nfsd_xdrstore)
135
 
136
 
137
int nfssvc_decode_void(struct svc_rqst *, u32 *, void *);
138
int nfssvc_decode_fhandle(struct svc_rqst *, u32 *, struct nfsd_fhandle *);
139
int nfssvc_decode_sattrargs(struct svc_rqst *, u32 *,
140
                                struct nfsd_sattrargs *);
141
int nfssvc_decode_diropargs(struct svc_rqst *, u32 *,
142
                                struct nfsd_diropargs *);
143
int nfssvc_decode_readargs(struct svc_rqst *, u32 *,
144
                                struct nfsd_readargs *);
145
int nfssvc_decode_writeargs(struct svc_rqst *, u32 *,
146
                                struct nfsd_writeargs *);
147
int nfssvc_decode_createargs(struct svc_rqst *, u32 *,
148
                                struct nfsd_createargs *);
149
int nfssvc_decode_renameargs(struct svc_rqst *, u32 *,
150
                                struct nfsd_renameargs *);
151
int nfssvc_decode_readlinkargs(struct svc_rqst *, u32 *,
152
                                struct nfsd_readlinkargs *);
153
int nfssvc_decode_linkargs(struct svc_rqst *, u32 *,
154
                                struct nfsd_linkargs *);
155
int nfssvc_decode_symlinkargs(struct svc_rqst *, u32 *,
156
                                struct nfsd_symlinkargs *);
157
int nfssvc_decode_readdirargs(struct svc_rqst *, u32 *,
158
                                struct nfsd_readdirargs *);
159
int nfssvc_encode_void(struct svc_rqst *, u32 *, void *);
160
int nfssvc_encode_attrstat(struct svc_rqst *, u32 *, struct nfsd_attrstat *);
161
int nfssvc_encode_diropres(struct svc_rqst *, u32 *, struct nfsd_diropres *);
162
int nfssvc_encode_readlinkres(struct svc_rqst *, u32 *, struct nfsd_readlinkres *);
163
int nfssvc_encode_readres(struct svc_rqst *, u32 *, struct nfsd_readres *);
164
int nfssvc_encode_statfsres(struct svc_rqst *, u32 *, struct nfsd_statfsres *);
165
int nfssvc_encode_readdirres(struct svc_rqst *, u32 *, struct nfsd_readdirres *);
166
 
167
int nfssvc_encode_entry(struct readdir_cd *, const char *name,
168
                                int namlen, loff_t offset, ino_t ino, unsigned int);
169
 
170
int nfssvc_release_fhandle(struct svc_rqst *, u32 *, struct nfsd_fhandle *);
171
 
172
#endif /* LINUX_NFSD_H */