Initial start on a user-level NFS server.
[bluesky.git] / nfs3 / nfs3.c
1 /*
2  * This is sample code generated by rpcgen.
3  * These are only templates and you can use them
4  * as a guideline for developing your own functions.
5  */
6
7 #include "nfs3_prot.h"
8
9 static int null_int;
10 static void *null_result = (void *)&null_int;
11
12 void encode_fattr3(struct fattr3 *result, uint64_t inum)
13 {
14     result->type = NF3DIR;
15     result->mode = 0755;
16     result->nlink = 1;
17     result->uid = 0;
18     result->gid = 0;
19     result->size = 0;
20     result->used = 0;
21     result->rdev.major = 0;
22     result->rdev.minor = 0;
23     result->fsid = 0;
24     result->fileid = inum;
25     result->atime.seconds = 0;
26     result->atime.nseconds = 0;
27     result->mtime.seconds = 0;
28     result->mtime.nseconds = 0;
29     result->ctime.seconds = 0;
30     result->ctime.nseconds = 0;
31 }
32
33 void *
34 nfsproc3_null_3_svc(void *argp, struct svc_req *rqstp)
35 {
36     return null_result;
37 }
38
39 getattr3res *
40 nfsproc3_getattr_3_svc(nfs_fh3 *argp, struct svc_req *rqstp)
41 {
42     static getattr3res result;
43
44     result.status = NFS3_OK;
45     encode_fattr3(&result.getattr3res_u.attributes, 1);
46
47     return &result;
48 }
49
50 wccstat3 *
51 nfsproc3_setattr_3_svc(setattr3args *argp, struct svc_req *rqstp)
52 {
53     static wccstat3 result;
54
55     result.status = NFS3ERR_NOTSUPP;
56
57     return &result;
58 }
59
60 lookup3res *
61 nfsproc3_lookup_3_svc(diropargs3 *argp, struct svc_req *rqstp)
62 {
63     static lookup3res result;
64
65     result.status = NFS3ERR_NOTSUPP;
66
67     return &result;
68 }
69
70 access3res *
71 nfsproc3_access_3_svc(access3args *argp, struct svc_req *rqstp)
72 {
73     static access3res result;
74
75     result.status = NFS3ERR_NOTSUPP;
76
77     return &result;
78 }
79
80 readlink3res *
81 nfsproc3_readlink_3_svc(nfs_fh3 *argp, struct svc_req *rqstp)
82 {
83     static readlink3res result;
84
85     result.status = NFS3ERR_NOTSUPP;
86
87     return &result;
88 }
89
90 read3res *
91 nfsproc3_read_3_svc(read3args *argp, struct svc_req *rqstp)
92 {
93     static read3res result;
94
95     result.status = NFS3ERR_NOTSUPP;
96
97     return &result;
98 }
99
100 write3res *
101 nfsproc3_write_3_svc(write3args *argp, struct svc_req *rqstp)
102 {
103     static write3res result;
104
105     result.status = NFS3ERR_NOTSUPP;
106
107     return &result;
108 }
109
110 diropres3 *
111 nfsproc3_create_3_svc(create3args *argp, struct svc_req *rqstp)
112 {
113     static diropres3 result;
114
115     result.status = NFS3ERR_NOTSUPP;
116
117     return &result;
118 }
119
120 diropres3 *
121 nfsproc3_mkdir_3_svc(mkdir3args *argp, struct svc_req *rqstp)
122 {
123     static diropres3 result;
124
125     result.status = NFS3ERR_NOTSUPP;
126
127     return &result;
128 }
129
130 diropres3 *
131 nfsproc3_symlink_3_svc(symlink3args *argp, struct svc_req *rqstp)
132 {
133     static diropres3 result;
134
135     result.status = NFS3ERR_NOTSUPP;
136
137     return &result;
138 }
139
140 diropres3 *
141 nfsproc3_mknod_3_svc(mknod3args *argp, struct svc_req *rqstp)
142 {
143     static diropres3 result;
144
145     result.status = NFS3ERR_NOTSUPP;
146
147     return &result;
148 }
149
150 wccstat3 *
151 nfsproc3_remove_3_svc(diropargs3 *argp, struct svc_req *rqstp)
152 {
153     static wccstat3 result;
154
155     result.status = NFS3ERR_NOTSUPP;
156
157     return &result;
158 }
159
160 wccstat3 *
161 nfsproc3_rmdir_3_svc(diropargs3 *argp, struct svc_req *rqstp)
162 {
163     static wccstat3 result;
164
165     result.status = NFS3ERR_NOTSUPP;
166
167     return &result;
168 }
169
170 rename3res *
171 nfsproc3_rename_3_svc(rename3args *argp, struct svc_req *rqstp)
172 {
173     static rename3res result;
174
175     result.status = NFS3ERR_NOTSUPP;
176
177     return &result;
178 }
179
180 link3res *
181 nfsproc3_link_3_svc(link3args *argp, struct svc_req *rqstp)
182 {
183     static link3res result;
184
185     result.status = NFS3ERR_NOTSUPP;
186
187     return &result;
188 }
189
190 readdir3res *
191 nfsproc3_readdir_3_svc(readdir3args *argp, struct svc_req *rqstp)
192 {
193     static readdir3res result;
194
195     result.status = NFS3ERR_NOTSUPP;
196
197     return &result;
198 }
199
200 readdirplus3res *
201 nfsproc3_readdirplus_3_svc(readdirplus3args *argp, struct svc_req *rqstp)
202 {
203     static readdirplus3res result;
204
205     result.status = NFS3ERR_NOTSUPP;
206
207     return &result;
208 }
209
210 fsstat3res *
211 nfsproc3_fsstat_3_svc(nfs_fh3 *argp, struct svc_req *rqstp)
212 {
213     static fsstat3res result;
214
215     result.status = NFS3ERR_NOTSUPP;
216
217     return &result;
218 }
219
220 fsinfo3res *
221 nfsproc3_fsinfo_3_svc(nfs_fh3 *argp, struct svc_req *rqstp)
222 {
223     static fsinfo3res result;
224
225     result.status = NFS3_OK;
226     result.fsinfo3res_u.resok.obj_attributes.present = TRUE;
227     encode_fattr3(&result.fsinfo3res_u.resok.obj_attributes.post_op_attr_u.attributes, 1);
228     result.fsinfo3res_u.resok.rtmax = 32768;
229     result.fsinfo3res_u.resok.rtpref = 32768;
230     result.fsinfo3res_u.resok.rtmult = 4096;
231     result.fsinfo3res_u.resok.wtmax = 32768;
232     result.fsinfo3res_u.resok.wtpref = 32768;
233     result.fsinfo3res_u.resok.wtmult = 4096;
234     result.fsinfo3res_u.resok.dtpref = 4096;
235     result.fsinfo3res_u.resok.maxfilesize = 0x7fffffffffffffffULL;
236     result.fsinfo3res_u.resok.time_delta.seconds = 0;
237     result.fsinfo3res_u.resok.time_delta.nseconds = 1000;
238     result.fsinfo3res_u.resok.properties
239         = FSF3_LINK | FSF3_SYMLINK | FSF3_HOMOGENEOUS | FSF3_CANSETTIME;
240
241     return &result;
242 }
243
244 pathconf3res *
245 nfsproc3_pathconf_3_svc(nfs_fh3 *argp, struct svc_req *rqstp)
246 {
247     static pathconf3res result;
248
249     result.status = NFS3_OK;
250     result.pathconf3res_u.resok.obj_attributes.present = TRUE;
251     encode_fattr3(&result.pathconf3res_u.resok.obj_attributes.post_op_attr_u.attributes, 1);
252     result.pathconf3res_u.resok.linkmax = 0xffffffff;
253     result.pathconf3res_u.resok.name_max = 255;
254     result.pathconf3res_u.resok.no_trunc = TRUE;
255     result.pathconf3res_u.resok.chown_restricted = TRUE;
256     result.pathconf3res_u.resok.case_insensitive = FALSE;
257     result.pathconf3res_u.resok.case_preserving = TRUE;
258
259     return &result;
260 }
261
262 commit3res *
263 nfsproc3_commit_3_svc(commit3args *argp, struct svc_req *rqstp)
264 {
265     static commit3res result;
266
267     result.status = NFS3ERR_NOTSUPP;
268
269     return &result;
270 }