Add support for NFS/PATHCONF
[deb_libnfs.git] / include / nfsc / libnfs-raw.h
1 /*
2 Copyright (C) 2010 by Ronnie Sahlberg <ronniesahlberg@gmail.com>
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published by
6 the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program; if not, see <http://www.gnu.org/licenses/>.
16 */
17 /*
18 * This is the lowlevel interface to access NFS resources.
19 * Through this interface you have access to the full gamut of nfs and nfs related
20 * protocol as well as the XDR encoded/decoded structures.
21 */
22 #ifndef _LIBNFS_RAW_H_
23 #define _LIBNFS_RAW_H_
24
25 #include <stdint.h>
26 #include <nfsc/libnfs-zdr.h>
27
28 struct rpc_data {
29 int size;
30 unsigned char *data;
31 };
32
33 struct rpc_context;
34 struct rpc_context *rpc_init_context(void);
35 void rpc_destroy_context(struct rpc_context *rpc);
36
37 void rpc_set_auth(struct rpc_context *rpc, struct AUTH *auth);
38
39 int rpc_get_fd(struct rpc_context *rpc);
40 int rpc_which_events(struct rpc_context *rpc);
41 int rpc_service(struct rpc_context *rpc, int revents);
42 char *rpc_get_error(struct rpc_context *rpc);
43 int rpc_queue_length(struct rpc_context *rpc);
44
45 /* Utility function to get an RPC context from a NFS context. Useful for doing low level NFSACL
46 * calls on a NFS context.
47 */
48 struct rpc_context *nfs_get_rpc_context(struct nfs_context *nfs);
49
50 /* This function returns the nfs_fh3 structure from a nfsfh structure.
51 This allows to use a file onened with nfs_open() together with low-level
52 rpc functions that thake a nfs filehandle
53 */
54 struct nfs_fh3 *nfs_get_fh(struct nfsfh *nfsfh);
55
56 #define RPC_STATUS_SUCCESS 0
57 #define RPC_STATUS_ERROR 1
58 #define RPC_STATUS_CANCEL 2
59
60 /*
61 * Async connection to the tcp port at server:port.
62 * Function returns
63 * 0 : The connection was initiated. Once the connection establish finishes, the callback will be invoked.
64 * <0 : An error occured when trying to set up the connection. The callback will not be invoked.
65 *
66 * When the callback is invoked, status indicates the result:
67 * RPC_STATUS_SUCCESS : The tcp connection was successfully established.
68 * data is NULL.
69 * RPC_STATUS_ERROR : The connection failed to establish.
70 * data is the erro string.
71 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
72 * : data is NULL.
73 */
74 int rpc_connect_async(struct rpc_context *rpc, const char *server, int port, rpc_cb cb, void *private_data);
75 /*
76 * When disconnecting a connection in flight. All commands in flight will be called with the callback
77 * and status RPC_STATUS_ERROR. Data will be the error string for the disconnection.
78 */
79 int rpc_disconnect(struct rpc_context *rpc, char *error);
80
81
82 /*
83 * PORTMAP FUNCTIONS
84 */
85
86 /*
87 * Call PORTMAPPER/NULL
88 * Function returns
89 * 0 : The connection was initiated. Once the connection establish finishes, the callback will be invoked.
90 * <0 : An error occured when trying to set up the connection. The callback will not be invoked.
91 *
92 * When the callback is invoked, status indicates the result:
93 * RPC_STATUS_SUCCESS : We got a successful response from the portmapper daemon.
94 * data is NULL.
95 * RPC_STATUS_ERROR : An error occured when trying to contact the portmapper.
96 * data is the error string.
97 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
98 * data is NULL.
99 */
100 int rpc_pmap_null_async(struct rpc_context *rpc, rpc_cb cb, void *private_data);
101
102
103 /*
104 * Call PORTMAPPER/GETPORT.
105 * Function returns
106 * 0 : The connection was initiated. Once the connection establish finishes, the callback will be invoked.
107 * <0 : An error occured when trying to set up the connection. The callback will not be invoked.
108 *
109 * When the callback is invoked, status indicates the result:
110 * RPC_STATUS_SUCCESS : We got a successful response from the portmapper daemon.
111 * data is a (uint32_t *), containing the port returned.
112 * RPC_STATUS_ERROR : An error occured when trying to contact the portmapper.
113 * data is the error string.
114 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
115 * data is NULL.
116 */
117 int rpc_pmap_getport_async(struct rpc_context *rpc, int program, int version, int protocol, rpc_cb cb, void *private_data);
118
119 /*
120 * Call PORTMAPPER/SET
121 * Function returns
122 * 0 : The connection was initiated. Once the connection establish finishes, the callback will be invoked.
123 * <0 : An error occured when trying to set up the connection. The callback will not be invoked.
124 *
125 * When the callback is invoked, status indicates the result:
126 * RPC_STATUS_SUCCESS : We got a successful response from the portmapper daemon.
127 * data is a (uint32_t *), containing status
128 * RPC_STATUS_ERROR : An error occured when trying to contact the portmapper.
129 * data is the error string.
130 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
131 * data is NULL.
132 */
133 int rpc_pmap_set_async(struct rpc_context *rpc, int program, int version, int protocol, int port, rpc_cb cb, void *private_data);
134
135 /*
136 * Call PORTMAPPER/UNSET
137 * Function returns
138 * 0 : The connection was initiated. Once the connection establish finishes, the callback will be invoked.
139 * <0 : An error occured when trying to set up the connection. The callback will not be invoked.
140 *
141 * When the callback is invoked, status indicates the result:
142 * RPC_STATUS_SUCCESS : We got a successful response from the portmapper daemon.
143 * data is a (uint32_t *), containing status
144 * RPC_STATUS_ERROR : An error occured when trying to contact the portmapper.
145 * data is the error string.
146 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
147 * data is NULL.
148 */
149 int rpc_pmap_unset_async(struct rpc_context *rpc, int program, int version, int protocol, int port, rpc_cb cb, void *private_data);
150
151 /*
152 * Call PORTMAPPER/CALLIT.
153 * Function returns
154 * 0 : The connection was initiated. Once the connection establish finishes, the callback will be invoked.
155 * <0 : An error occured when trying to set up the connection. The callback will not be invoked.
156 *
157 * When the callback is invoked, status indicates the result:
158 * RPC_STATUS_SUCCESS : We got a successful response from the portmapper daemon
159 * data is a 'pmap_call_result' pointer.
160 * RPC_STATUS_ERROR : An error occured when trying to contact the portmapper.
161 * data is the error string.
162 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
163 * data is NULL.
164 */
165 int rpc_pmap_callit_async(struct rpc_context *rpc, int program, int version, int procedure, char *data, int datalen, rpc_cb cb, void *private_data);
166
167 /*
168 * MOUNT FUNCTIONS
169 */
170 char *mountstat3_to_str(int stat);
171 int mountstat3_to_errno(int error);
172
173 /*
174 * Call MOUNT/NULL
175 * Function returns
176 * 0 : The call was initiated. The callback will be invoked when the call completes.
177 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
178 *
179 * When the callback is invoked, status indicates the result:
180 * RPC_STATUS_SUCCESS : We got a successful response from the mount daemon.
181 * data is NULL.
182 * RPC_STATUS_ERROR : An error occured when trying to contact the mount daemon.
183 * data is the error string.
184 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
185 * data is NULL.
186 */
187 int rpc_mount_null_async(struct rpc_context *rpc, rpc_cb cb, void *private_data);
188
189 /*
190 * Call MOUNT/MNT
191 * Function returns
192 * 0 : The call was initiated. The callback will be invoked when the call completes.
193 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
194 *
195 * When the callback is invoked, status indicates the result:
196 * RPC_STATUS_SUCCESS : We got a successful response from the mount daemon.
197 * data is union mountres3.
198 * RPC_STATUS_ERROR : An error occured when trying to contact the mount daemon.
199 * data is the error string.
200 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
201 * data is NULL.
202 */
203 int rpc_mount_mnt_async(struct rpc_context *rpc, rpc_cb cb, char *export, void *private_data);
204
205 /*
206 * Call MOUNT/DUMP
207 * Function returns
208 * 0 : The call was initiated. The callback will be invoked when the call completes.
209 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
210 *
211 * When the callback is invoked, status indicates the result:
212 * RPC_STATUS_SUCCESS : We got a successful response from the mount daemon.
213 * data is a mountlist.
214 * RPC_STATUS_ERROR : An error occured when trying to contact the mount daemon.
215 * data is the error string.
216 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
217 * data is NULL.
218 */
219 int rpc_mount_dump_async(struct rpc_context *rpc, rpc_cb cb, void *private_data);
220
221 /*
222 * Call MOUNT/UMNT
223 * Function returns
224 * 0 : The call was initiated. The callback will be invoked when the call completes.
225 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
226 *
227 * When the callback is invoked, status indicates the result:
228 * RPC_STATUS_SUCCESS : We got a successful response from the mount daemon.
229 * data NULL.
230 * RPC_STATUS_ERROR : An error occured when trying to contact the mount daemon.
231 * data is the error string.
232 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
233 * data is NULL.
234 */
235 int rpc_mount_umnt_async(struct rpc_context *rpc, rpc_cb cb, char *export, void *private_data);
236
237 /*
238 * Call MOUNT/UMNTALL
239 * Function returns
240 * 0 : The call was initiated. The callback will be invoked when the call completes.
241 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
242 *
243 * When the callback is invoked, status indicates the result:
244 * RPC_STATUS_SUCCESS : We got a successful response from the mount daemon.
245 * data NULL.
246 * RPC_STATUS_ERROR : An error occured when trying to contact the mount daemon.
247 * data is the error string.
248 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
249 * data is NULL.
250 */
251 int rpc_mount_umntall_async(struct rpc_context *rpc, rpc_cb cb, void *private_data);
252
253 /*
254 * Call MOUNT/EXPORT
255 * NOTE: You must include 'libnfs-raw-mount.h' to get the definitions of the
256 * returned structures.
257 *
258 * Function returns
259 * 0 : The call was initiated. The callback will be invoked when the call completes.
260 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
261 *
262 * When the callback is invoked, status indicates the result:
263 * RPC_STATUS_SUCCESS : We got a successful response from the mount daemon.
264 * data is a pointer to an exports pointer:
265 * exports export = *(exports *)data;
266 * RPC_STATUS_ERROR : An error occured when trying to contact the mount daemon.
267 * data is the error string.
268 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
269 * data is NULL.
270 */
271 int rpc_mount_export_async(struct rpc_context *rpc, rpc_cb cb, void *private_data);
272
273
274
275
276 /*
277 * NFS FUNCTIONS
278 */
279 struct nfs_fh3;
280 char *nfsstat3_to_str(int error);
281 int nfsstat3_to_errno(int error);
282
283 /*
284 * Call NFS/NULL
285 * Function returns
286 * 0 : The call was initiated. The callback will be invoked when the call completes.
287 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
288 *
289 * When the callback is invoked, status indicates the result:
290 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
291 * data is NULL.
292 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
293 * data is the error string.
294 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
295 * data is NULL.
296 */
297 int rpc_nfs_null_async(struct rpc_context *rpc, rpc_cb cb, void *private_data);
298
299 /*
300 * Call NFS/GETATTR
301 * Function returns
302 * 0 : The call was initiated. The callback will be invoked when the call completes.
303 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
304 *
305 * When the callback is invoked, status indicates the result:
306 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
307 * data is GETATTR3res
308 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
309 * data is the error string.
310 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
311 * data is NULL.
312 */
313 int rpc_nfs_getattr_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, void *private_data);
314
315 /*
316 * Call NFS/PATHCONF
317 * Function returns
318 * 0 : The call was initiated. The callback will be invoked when the call completes.
319 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
320 *
321 * When the callback is invoked, status indicates the result:
322 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
323 * data is PATHCONF3res
324 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
325 * data is the error string.
326 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
327 * data is NULL.
328 */
329 int rpc_nfs_pathconf_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, void *private_data);
330
331 /*
332 * Call NFS/LOOKUP
333 * Function returns
334 * 0 : The call was initiated. The callback will be invoked when the call completes.
335 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
336 *
337 * When the callback is invoked, status indicates the result:
338 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
339 * data is LOOKUP3res
340 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
341 * data is the error string.
342 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
343 * data is NULL.
344 */
345 int rpc_nfs_lookup_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, char *name, void *private_data);
346
347 /*
348 * Call NFS/ACCESS
349 * Function returns
350 * 0 : The call was initiated. The callback will be invoked when the call completes.
351 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
352 *
353 * When the callback is invoked, status indicates the result:
354 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
355 * data is ACCESS3res
356 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
357 * data is the error string.
358 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
359 * data is NULL.
360 */
361 int rpc_nfs_access_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, int access, void *private_data);
362
363 /*
364 * Call NFS/READ
365 * Function returns
366 * 0 : The call was initiated. The callback will be invoked when the call completes.
367 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
368 *
369 * When the callback is invoked, status indicates the result:
370 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
371 * data is READ3res
372 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
373 * data is the error string.
374 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
375 * data is NULL.
376 */
377 int rpc_nfs_read_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, uint64_t offset, uint64_t count, void *private_data);
378
379 /*
380 * Call NFS/WRITE
381 * Function returns
382 * 0 : The call was initiated. The callback will be invoked when the call completes.
383 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
384 *
385 * When the callback is invoked, status indicates the result:
386 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
387 * data is WRITE3res *
388 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
389 * data is the error string.
390 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
391 * data is NULL.
392 */
393 int rpc_nfs_write_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, char *buf, uint64_t offset, uint64_t count, int stable_how, void *private_data);
394
395 /*
396 * Call NFS/COMMIT
397 * Function returns
398 * 0 : The call was initiated. The callback will be invoked when the call completes.
399 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
400 *
401 * When the callback is invoked, status indicates the result:
402 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
403 * data is COMMIT3res *
404 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
405 * data is the error string.
406 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
407 * data is NULL.
408 */
409 int rpc_nfs_commit_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, void *private_data);
410
411
412 /*
413 * Call NFS/SETATTR
414 * Function returns
415 * 0 : The call was initiated. The callback will be invoked when the call completes.
416 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
417 *
418 * When the callback is invoked, status indicates the result:
419 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
420 * data is SETATTR3res *
421 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
422 * data is the error string.
423 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
424 * data is NULL.
425 */
426 struct SETATTR3args;
427 int rpc_nfs_setattr_async(struct rpc_context *rpc, rpc_cb cb, struct SETATTR3args *args, void *private_data);
428
429
430
431 /*
432 * Call NFS/MKDIR
433 * Function returns
434 * 0 : The call was initiated. The callback will be invoked when the call completes.
435 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
436 *
437 * When the callback is invoked, status indicates the result:
438 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
439 * data is MKDIR3res *
440 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
441 * data is the error string.
442 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
443 * data is NULL.
444 */
445 struct MKDIR3args;
446 int rpc_nfs_mkdir_async(struct rpc_context *rpc, rpc_cb cb, struct MKDIR3args *args, void *private_data);
447
448
449
450
451
452 /*
453 * Call NFS/RMDIR
454 * Function returns
455 * 0 : The call was initiated. The callback will be invoked when the call completes.
456 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
457 *
458 * When the callback is invoked, status indicates the result:
459 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
460 * data is RMDIR3res *
461 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
462 * data is the error string.
463 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
464 * data is NULL.
465 */
466 int rpc_nfs_rmdir_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, char *dir, void *private_data);
467
468
469
470
471 /*
472 * Call NFS/CREATE
473 * Function returns
474 * 0 : The call was initiated. The callback will be invoked when the call completes.
475 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
476 *
477 * When the callback is invoked, status indicates the result:
478 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
479 * data is CREATE3res *
480 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
481 * data is the error string.
482 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
483 * data is NULL.
484 */
485 struct CREATE3args;
486 int rpc_nfs_create_async(struct rpc_context *rpc, rpc_cb cb, struct CREATE3args *args, void *private_data);
487
488
489 /*
490 * Call NFS/MKNOD
491 * Function returns
492 * 0 : The call was initiated. The callback will be invoked when the call completes.
493 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
494 *
495 * When the callback is invoked, status indicates the result:
496 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
497 * data is MKNOD3res *
498 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
499 * data is the error string.
500 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
501 * data is NULL.
502 */
503 int rpc_nfs_mknod_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, char *file, int mode, int major, int minor, void *private_data);
504
505
506 /*
507 * Call NFS/REMOVE
508 * Function returns
509 * 0 : The call was initiated. The callback will be invoked when the call completes.
510 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
511 *
512 * When the callback is invoked, status indicates the result:
513 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
514 * data is REMOVE3res *
515 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
516 * data is the error string.
517 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
518 * data is NULL.
519 */
520 int rpc_nfs_remove_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, char *name, void *private_data);
521
522
523
524 /*
525 * Call NFS/READDIR
526 * Function returns
527 * 0 : The call was initiated. The callback will be invoked when the call completes.
528 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
529 *
530 * When the callback is invoked, status indicates the result:
531 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
532 * data is READDIR3res *
533 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
534 * data is the error string.
535 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
536 * data is NULL.
537 */
538 int rpc_nfs_readdir_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, uint64_t cookie, char *cookieverf, int count, void *private_data);
539
540 /*
541 * Call NFS/READDIRPLUS
542 * Function returns
543 * 0 : The call was initiated. The callback will be invoked when the call completes.
544 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
545 *
546 * When the callback is invoked, status indicates the result:
547 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
548 * data is READDIRPLUS3res *
549 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
550 * data is the error string.
551 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
552 * data is NULL.
553 */
554 int rpc_nfs_readdirplus_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, uint64_t cookie, char *cookieverf, int count, void *private_data);
555
556 /*
557 * Call NFS/FSSTAT
558 * Function returns
559 * 0 : The call was initiated. The callback will be invoked when the call completes.
560 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
561 *
562 * When the callback is invoked, status indicates the result:
563 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
564 * data is FSSTAT3res
565 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
566 * data is the error string.
567 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
568 * data is NULL.
569 */
570 int rpc_nfs_fsstat_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, void *private_data);
571
572
573
574 /*
575 * Call NFS/FSINFO
576 * Function returns
577 * 0 : The call was initiated. The callback will be invoked when the call completes.
578 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
579 *
580 * When the callback is invoked, status indicates the result:
581 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
582 * data is FSINFO3res
583 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
584 * data is the error string.
585 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
586 * data is NULL.
587 */
588 int rpc_nfs_fsinfo_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *fh, void *private_data);
589
590
591
592 /*
593 * Call NFS/READLINK
594 * Function returns
595 * 0 : The call was initiated. The callback will be invoked when the call completes.
596 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
597 *
598 * When the callback is invoked, status indicates the result:
599 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
600 * data is READLINK3res *
601 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
602 * data is the error string.
603 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
604 * data is NULL.
605 */
606 struct READLINK3args;
607 int rpc_nfs_readlink_async(struct rpc_context *rpc, rpc_cb cb, struct READLINK3args *args, void *private_data);
608
609
610
611 /*
612 * Call NFS/SYMLINK
613 * Function returns
614 * 0 : The call was initiated. The callback will be invoked when the call completes.
615 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
616 *
617 * When the callback is invoked, status indicates the result:
618 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
619 * data is SYMLINK3res *
620 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
621 * data is the error string.
622 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
623 * data is NULL.
624 */
625 struct SYMLINK3args;
626 int rpc_nfs_symlink_async(struct rpc_context *rpc, rpc_cb cb, struct SYMLINK3args *args, void *private_data);
627
628
629 /*
630 * Call NFS/RENAME
631 * Function returns
632 * 0 : The call was initiated. The callback will be invoked when the call completes.
633 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
634 *
635 * When the callback is invoked, status indicates the result:
636 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
637 * data is RENAME3res *
638 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
639 * data is the error string.
640 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
641 * data is NULL.
642 */
643 int rpc_nfs_rename_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *olddir, char *oldname, struct nfs_fh3 *newdir, char *newname, void *private_data);
644
645
646
647 /*
648 * Call NFS/LINK
649 * Function returns
650 * 0 : The call was initiated. The callback will be invoked when the call completes.
651 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
652 *
653 * When the callback is invoked, status indicates the result:
654 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
655 * data is LINK3res *
656 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
657 * data is the error string.
658 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
659 * data is NULL.
660 */
661 int rpc_nfs_link_async(struct rpc_context *rpc, rpc_cb cb, struct nfs_fh3 *file, struct nfs_fh3 *newdir, char *newname, void *private_data);
662
663
664
665
666 /*
667 * RQUOTA FUNCTIONS
668 */
669 char *rquotastat_to_str(int error);
670 int rquotastat_to_errno(int error);
671
672 /*
673 * Call RQUOTA1/NULL
674 * Function returns
675 * 0 : The call was initiated. The callback will be invoked when the call completes.
676 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
677 *
678 * When the callback is invoked, status indicates the result:
679 * RPC_STATUS_SUCCESS : We got a successful response from the rquota daemon.
680 * data is NULL.
681 * RPC_STATUS_ERROR : An error occured when trying to contact the rquota daemon.
682 * data is the error string.
683 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
684 * data is NULL.
685 */
686 int rpc_rquota1_null_async(struct rpc_context *rpc, rpc_cb cb, void *private_data);
687
688 /*
689 * Call RQUOTA1/GETQUOTA
690 * Function returns
691 * 0 : The call was initiated. The callback will be invoked when the call completes.
692 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
693 *
694 * When the callback is invoked, status indicates the result:
695 * RPC_STATUS_SUCCESS : We got a successful response from the rquota daemon.
696 * data is a RQUOTA1res structure.
697 * RPC_STATUS_ERROR : An error occured when trying to contact the rquota daemon.
698 * data is the error string.
699 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
700 * data is NULL.
701 */
702 int rpc_rquota1_getquota_async(struct rpc_context *rpc, rpc_cb cb, char *export, int uid, void *private_data);
703
704 /*
705 * Call RQUOTA1/GETACTIVEQUOTA
706 * Function returns
707 * 0 : The call was initiated. The callback will be invoked when the call completes.
708 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
709 *
710 * When the callback is invoked, status indicates the result:
711 * RPC_STATUS_SUCCESS : We got a successful response from the rquota daemon.
712 * data is a RQUOTA1res structure.
713 * RPC_STATUS_ERROR : An error occured when trying to contact the rquota daemon.
714 * data is the error string.
715 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
716 * data is NULL.
717 */
718 int rpc_rquota1_getactivequota_async(struct rpc_context *rpc, rpc_cb cb, char *export, int uid, void *private_data);
719
720
721
722
723 /*
724 * Call RQUOTA2/NULL
725 * Function returns
726 * 0 : The call was initiated. The callback will be invoked when the call completes.
727 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
728 *
729 * When the callback is invoked, status indicates the result:
730 * RPC_STATUS_SUCCESS : We got a successful response from the rquota daemon.
731 * data is NULL.
732 * RPC_STATUS_ERROR : An error occured when trying to contact the rquota daemon.
733 * data is the error string.
734 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
735 * data is NULL.
736 */
737 int rpc_rquota2_null_async(struct rpc_context *rpc, rpc_cb cb, void *private_data);
738
739 /*
740 * Call RQUOTA2/GETQUOTA
741 * Function returns
742 * 0 : The call was initiated. The callback will be invoked when the call completes.
743 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
744 *
745 * When the callback is invoked, status indicates the result:
746 * RPC_STATUS_SUCCESS : We got a successful response from the rquota daemon.
747 * data is a RQUOTA1res structure.
748 * RPC_STATUS_ERROR : An error occured when trying to contact the rquota daemon.
749 * data is the error string.
750 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
751 * data is NULL.
752 */
753 int rpc_rquota2_getquota_async(struct rpc_context *rpc, rpc_cb cb, char *export, int type, int uid, void *private_data);
754
755 /*
756 * Call RQUOTA2/GETACTIVEQUOTA
757 * Function returns
758 * 0 : The call was initiated. The callback will be invoked when the call completes.
759 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
760 *
761 * When the callback is invoked, status indicates the result:
762 * RPC_STATUS_SUCCESS : We got a successful response from the rquota daemon.
763 * data is a RQUOTA1res structure.
764 * RPC_STATUS_ERROR : An error occured when trying to contact the rquota daemon.
765 * data is the error string.
766 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
767 * data is NULL.
768 */
769 int rpc_rquota2_getactivequota_async(struct rpc_context *rpc, rpc_cb cb, char *export, int type, int uid, void *private_data);
770
771
772
773
774
775
776 /*
777 * NFSACL functions
778 */
779
780 /*
781 * Call NFSACL/NULL
782 * Call the NULL procedure for the NFSACL
783 *
784 * Function returns
785 * 0 : The call was initiated. The callback will be invoked when the call completes.
786 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
787 *
788 * When the callback is invoked, status indicates the result:
789 * RPC_STATUS_SUCCESS : We got a successful response from the rquota daemon.
790 * data is NULL
791 * RPC_STATUS_ERROR : An error occured when trying to contact the rquota daemon.
792 * data is the error string.
793 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
794 * data is NULL.
795 */
796 int rpc_nfsacl_null_async(struct rpc_context *rpc, rpc_cb cb, void *private_data);
797
798 /*
799 * Call NFSACL/GETACL
800 *
801 * Function returns
802 * 0 : The call was initiated. The callback will be invoked when the call completes.
803 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
804 *
805 * When the callback is invoked, status indicates the result:
806 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
807 * data is a GETACL3res pointer
808 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
809 * data is the error string.
810 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
811 * data is NULL.
812 */
813 struct GETACL3args;
814 int rpc_nfsacl_getacl_async(struct rpc_context *rpc, rpc_cb cb, struct GETACL3args *args, void *private_data);
815
816
817
818 /*
819 * Call NFSACL/SETACL
820 *
821 * Function returns
822 * 0 : The call was initiated. The callback will be invoked when the call completes.
823 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
824 *
825 * When the callback is invoked, status indicates the result:
826 * RPC_STATUS_SUCCESS : We got a successful response from the nfs daemon.
827 * data is a SETACL3res pointer
828 * RPC_STATUS_ERROR : An error occured when trying to contact the nfs daemon.
829 * data is the error string.
830 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
831 * data is NULL.
832 */
833 struct SETACL3args;
834 int rpc_nfsacl_setacl_async(struct rpc_context *rpc, rpc_cb cb, struct SETACL3args *args, void *private_data);
835
836
837
838
839 /*
840 * NLM functions
841 */
842 char *nlmstat4_to_str(int stat);
843
844 /*
845 * Call NLM/NULL
846 * Call the NULL procedure for the NLM protocol
847 *
848 * Function returns
849 * 0 : The call was initiated. The callback will be invoked when the call completes.
850 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
851 *
852 * When the callback is invoked, status indicates the result:
853 * RPC_STATUS_SUCCESS : We got a successful response from the nlm daemon.
854 * data is NULL
855 * RPC_STATUS_ERROR : An error occured when trying to contact the nlm daemon.
856 * data is the error string.
857 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
858 * data is NULL.
859 */
860 int rpc_nlm4_null_async(struct rpc_context *rpc, rpc_cb cb, void *private_data);
861
862 /*
863 * Call NLM/TEST
864 * Call the TEST procedure for the NLM protocol
865 *
866 * Function returns
867 * 0 : The call was initiated. The callback will be invoked when the call completes.
868 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
869 *
870 * When the callback is invoked, status indicates the result:
871 * RPC_STATUS_SUCCESS : We got a successful response from the nlm daemon.
872 * data is NLM4_TESTres
873 * RPC_STATUS_ERROR : An error occured when trying to contact the nlm daemon.
874 * data is the error string.
875 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
876 * data is NULL.
877 */
878 struct NLM4_TESTargs;
879 int rpc_nlm4_test_async(struct rpc_context *rpc, rpc_cb cb, struct NLM4_TESTargs *args, void *private_data);
880
881 /*
882 * Call NLM/LOCK
883 * Call the LOCK procedure for the NLM protocol
884 *
885 * Function returns
886 * 0 : The call was initiated. The callback will be invoked when the call completes.
887 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
888 *
889 * When the callback is invoked, status indicates the result:
890 * RPC_STATUS_SUCCESS : We got a successful response from the nlm daemon.
891 * data is NLM4_LOCKres
892 * RPC_STATUS_ERROR : An error occured when trying to contact the nlm daemon.
893 * data is the error string.
894 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
895 * data is NULL.
896 */
897 struct NLM4_LOCKargs;
898 int rpc_nlm4_lock_async(struct rpc_context *rpc, rpc_cb cb, struct NLM4_LOCKargs *args, void *private_data);
899
900 /*
901 * Call NLM/CANCEL
902 * Call the CANCEL procedure for the NLM protocol
903 *
904 * Function returns
905 * 0 : The call was initiated. The callback will be invoked when the call completes.
906 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
907 *
908 * When the callback is invoked, status indicates the result:
909 * RPC_STATUS_SUCCESS : We got a successful response from the nlm daemon.
910 * data is NLM4_CANCres
911 * RPC_STATUS_ERROR : An error occured when trying to contact the nlm daemon.
912 * data is the error string.
913 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
914 * data is NULL.
915 */
916 struct NLM4_CANCargs;
917 int rpc_nlm4_cancel_async(struct rpc_context *rpc, rpc_cb cb, struct NLM4_CANCargs *args, void *private_data);
918
919 /*
920 * Call NLM/UNLOCK
921 * Call the UNLOCK procedure for the NLM protocol
922 *
923 * Function returns
924 * 0 : The call was initiated. The callback will be invoked when the call completes.
925 * <0 : An error occured when trying to set up the call. The callback will not be invoked.
926 *
927 * When the callback is invoked, status indicates the result:
928 * RPC_STATUS_SUCCESS : We got a successful response from the nlm daemon.
929 * data is NLM4_UNLOCKres
930 * RPC_STATUS_ERROR : An error occured when trying to contact the nlm daemon.
931 * data is the error string.
932 * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete.
933 * data is NULL.
934 */
935 struct NLM4_UNLOCKargs;
936 int rpc_nlm4_unlock_async(struct rpc_context *rpc, rpc_cb cb, struct NLM4_UNLOCKargs *args, void *private_data);
937
938 #endif