nfs-ganesha 1.4
|
00001 /* 00002 * vim:expandtab:shiftwidth=8:tabstop=8: 00003 * 00004 * 00005 * Copyright CEA/DAM/DIF (2008) 00006 * contributeur : Philippe DENIEL philippe.deniel@cea.fr 00007 * Thomas LEIBOVICI thomas.leibovici@cea.fr 00008 * 00009 * 00010 * This program is free software; you can redistribute it and/or 00011 * modify it under the terms of the GNU Lesser General Public 00012 * License as published by the Free Software Foundation; either 00013 * version 3 of the License, or (at your option) any later version. 00014 * 00015 * This program is distributed in the hope that it will be useful, 00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * Lesser General Public License for more details. 00019 * 00020 * You should have received a copy of the GNU Lesser General Public 00021 * License along with this library; if not, write to the Free Software 00022 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00023 * 00024 * --------------------------------------- 00025 * 00026 * nfs_remote_functions.c : Functions for NFS protocol through RPCs. 00027 * 00028 * 00029 */ 00030 #ifdef HAVE_CONFIG_H 00031 #include "config.h" 00032 #endif 00033 00034 #ifdef _SOLARIS 00035 #include "solaris_port.h" 00036 #endif 00037 00038 #include <stdio.h> 00039 #include <string.h> 00040 #include <pthread.h> 00041 #include <fcntl.h> 00042 #include <sys/file.h> /* for having FNDELAY */ 00043 #include "log.h" 00044 #include "ganesha_rpc.h" 00045 #include "nfs23.h" 00046 #include "nfs4.h" 00047 #include "nfs_core.h" 00048 #include "nfs_tools.h" 00049 #include "mount.h" 00050 00051 #include "nfs_remote_functions.h" 00052 00053 static struct timeval TIMEOUT = { 25, 0 }; 00054 00065 int mnt1_remote_Null(CLIENT * clnt /* IN */ , 00066 nfs_arg_t * parg /* IN */ , 00067 nfs_res_t * pres /* OUT */ ) 00068 { 00070 if(clnt == NULL) 00071 { 00072 return -1; 00073 } 00074 00075 return clnt_call(clnt, MOUNTPROC2_NULL, 00076 (xdrproc_t) xdr_void, (caddr_t) parg, 00077 (xdrproc_t) xdr_void, (caddr_t) pres, TIMEOUT); 00078 } 00079 00090 int mnt1_remote_Mnt(CLIENT * clnt /* IN */ , 00091 nfs_arg_t * parg /* IN */ , 00092 nfs_res_t * pres /* OUT */ ) 00093 { 00094 //printf("REQUEST PROCESSING: Calling mnt1_remote_Mnt\n"); 00095 if(clnt == NULL) 00096 { 00097 return -1; 00098 } 00099 00100 memset((char *)pres, 0, sizeof(fhstatus2)); 00101 return clnt_call(clnt, MOUNTPROC2_MNT, 00102 (xdrproc_t) xdr_dirpath, (caddr_t) parg, 00103 (xdrproc_t) xdr_fhstatus2, (caddr_t) pres, TIMEOUT); 00104 } 00105 00116 int mnt1_remote_Dump(CLIENT * clnt /* IN */ , 00117 nfs_arg_t * parg /* IN */ , 00118 nfs_res_t * pres /* OUT */ ) 00119 { 00120 //printf("REQUEST PROCESSING: Calling mnt1_remote_Dump\n"); 00121 if(clnt == NULL) 00122 { 00123 return -1; 00124 } 00125 00126 memset((char *)pres, 0, sizeof(mountlist)); 00127 return clnt_call(clnt, MOUNTPROC2_DUMP, 00128 (xdrproc_t) xdr_void, (caddr_t) parg, 00129 (xdrproc_t) xdr_mountlist, (caddr_t) pres, TIMEOUT); 00130 } 00131 00142 int mnt1_remote_Umnt(CLIENT * clnt /* IN */ , 00143 nfs_arg_t * parg /* IN */ , 00144 nfs_res_t * pres /* OUT */ ) 00145 { 00146 //printf("REQUEST PROCESSING: Calling mnt1_remote_Umnt\n"); 00147 if(clnt == NULL) 00148 { 00149 return -1; 00150 } 00151 00152 return clnt_call(clnt, MOUNTPROC2_UMNT, 00153 (xdrproc_t) xdr_dirpath, (caddr_t) parg, 00154 (xdrproc_t) xdr_void, (caddr_t) pres, TIMEOUT); 00155 } 00156 00167 int mnt1_remote_UmntAll(CLIENT * clnt /* IN */ , 00168 nfs_arg_t * parg /* IN */ , 00169 nfs_res_t * pres /* OUT */ ) 00170 { 00171 //printf("REQUEST PROCESSING: Calling mnt1_remote_UmntAll\n"); 00172 if(clnt == NULL) 00173 { 00174 return -1; 00175 } 00176 00177 return clnt_call(clnt, MOUNTPROC2_UMNTALL, 00178 (xdrproc_t) xdr_void, (caddr_t) parg, 00179 (xdrproc_t) xdr_void, (caddr_t) pres, TIMEOUT); 00180 } 00181 00192 int mnt1_remote_Export(CLIENT * clnt /* IN */ , 00193 nfs_arg_t * parg /* IN */ , 00194 nfs_res_t * pres /* OUT */ ) 00195 { 00196 //printf("REQUEST PROCESSING: Calling mnt1_remote_Export\n"); 00197 if(clnt == NULL) 00198 { 00199 return -1; 00200 } 00201 00202 memset((char *)pres, 0, sizeof(exports)); 00203 return clnt_call(clnt, MOUNTPROC2_EXPORT, 00204 (xdrproc_t) xdr_void, (caddr_t) parg, 00205 (xdrproc_t) xdr_exports, (caddr_t) pres, TIMEOUT); 00206 } 00207 00218 int mnt3_remote_Null(CLIENT * clnt /* IN */ , 00219 nfs_arg_t * parg /* IN */ , 00220 nfs_res_t * pres /* OUT */ ) 00221 { 00222 //printf("REQUEST PROCESSING: Calling mnt3_remote_Null\n"); 00223 if(clnt == NULL) 00224 { 00225 return -1; 00226 } 00227 00228 return clnt_call(clnt, MOUNTPROC3_NULL, 00229 (xdrproc_t) xdr_void, (caddr_t) parg, 00230 (xdrproc_t) xdr_void, (caddr_t) pres, TIMEOUT); 00231 } 00232 00243 int mnt3_remote_Mnt(CLIENT * clnt /* IN */ , 00244 nfs_arg_t * parg /* IN */ , 00245 nfs_res_t * pres /* OUT */ ) 00246 { 00247 //printf("REQUEST PROCESSING: Calling mnt3_remote_Mnt\n"); 00248 if(clnt == NULL) 00249 { 00250 return -1; 00251 } 00252 00253 memset((char *)pres, 0, sizeof(mountres3)); 00254 return clnt_call(clnt, MOUNTPROC3_MNT, 00255 (xdrproc_t) xdr_dirpath, (caddr_t) parg, 00256 (xdrproc_t) xdr_mountres3, (caddr_t) pres, TIMEOUT); 00257 } 00258 00269 int mnt3_remote_Dump(CLIENT * clnt /* IN */ , 00270 nfs_arg_t * parg /* IN */ , 00271 nfs_res_t * pres /* OUT */ ) 00272 { 00273 //printf("REQUEST PROCESSING: Calling mnt3_remote_Dump\n"); 00274 if(clnt == NULL) 00275 { 00276 return -1; 00277 } 00278 00279 memset((char *)pres, 0, sizeof(mountlist)); 00280 return clnt_call(clnt, MOUNTPROC3_DUMP, 00281 (xdrproc_t) xdr_void, (caddr_t) parg, 00282 (xdrproc_t) xdr_mountlist, (caddr_t) pres, TIMEOUT); 00283 } 00284 00295 int mnt3_remote_Umnt(CLIENT * clnt /* IN */ , 00296 nfs_arg_t * parg /* IN */ , 00297 nfs_res_t * pres /* OUT */ ) 00298 { 00299 //printf("REQUEST PROCESSING: Calling mnt3_remote_Umnt\n"); 00300 if(clnt == NULL) 00301 { 00302 return -1; 00303 } 00304 00305 return clnt_call(clnt, MOUNTPROC3_UMNT, 00306 (xdrproc_t) xdr_dirpath, (caddr_t) parg, 00307 (xdrproc_t) xdr_void, (caddr_t) pres, TIMEOUT); 00308 } 00309 00320 int mnt3_remote_UmntAll(CLIENT * clnt /* IN */ , 00321 nfs_arg_t * parg /* IN */ , 00322 nfs_res_t * pres /* OUT */ ) 00323 { 00324 //printf("REQUEST PROCESSING: Calling mnt3_remote_UmntAll\n"); 00325 if(clnt == NULL) 00326 { 00327 return -1; 00328 } 00329 00330 return clnt_call(clnt, MOUNTPROC3_UMNTALL, 00331 (xdrproc_t) xdr_void, (caddr_t) parg, 00332 (xdrproc_t) xdr_void, (caddr_t) pres, TIMEOUT); 00333 } 00334 00345 int mnt3_remote_Export(CLIENT * clnt /* IN */ , 00346 nfs_arg_t * parg /* IN */ , 00347 nfs_res_t * pres /* OUT */ ) 00348 { 00349 //printf("REQUEST PROCESSING: Calling mnt3_remote_Export\n"); 00350 if(clnt == NULL) 00351 { 00352 return -1; 00353 } 00354 00355 memset((char *)pres, 0, sizeof(exports)); 00356 return clnt_call(clnt, MOUNTPROC3_EXPORT, 00357 (xdrproc_t) xdr_void, (caddr_t) parg, 00358 (xdrproc_t) xdr_exports, (caddr_t) pres, TIMEOUT); 00359 } 00360 00371 int nfs2_remote_Null(CLIENT * clnt /* IN */ , 00372 nfs_arg_t * parg /* IN */ , 00373 nfs_res_t * pres /* OUT */ ) 00374 { 00375 //printf("REQUEST PROCESSING: Calling nfs2_remote_Null\n"); 00376 if(clnt == NULL) 00377 { 00378 return -1; 00379 } 00380 00381 return clnt_call(clnt, NFSPROC_NULL, 00382 (xdrproc_t) xdr_void, (caddr_t) parg, 00383 (xdrproc_t) xdr_void, (caddr_t) pres, TIMEOUT); 00384 } 00385 00396 int nfs2_remote_Getattr(CLIENT * clnt /* IN */ , 00397 nfs_arg_t * parg /* IN */ , 00398 nfs_res_t * pres /* OUT */ ) 00399 { 00400 //printf("REQUEST PROCESSING: Calling nfs2_remote_Getattr\n"); 00401 if(clnt == NULL) 00402 { 00403 return -1; 00404 } 00405 00406 memset((char *)pres, 0, sizeof(ATTR2res)); 00407 return clnt_call(clnt, NFSPROC_GETATTR, 00408 (xdrproc_t) xdr_fhandle2, (caddr_t) parg, 00409 (xdrproc_t) xdr_ATTR2res, (caddr_t) pres, TIMEOUT); 00410 } 00411 00422 int nfs2_remote_Setattr(CLIENT * clnt /* IN */ , 00423 nfs_arg_t * parg /* IN */ , 00424 nfs_res_t * pres /* OUT */ ) 00425 { 00426 //printf("REQUEST PROCESSING: Calling nfs2_remote_Setattr\n"); 00427 if(clnt == NULL) 00428 { 00429 return -1; 00430 } 00431 00432 memset((char *)pres, 0, sizeof(ATTR2res)); 00433 return clnt_call(clnt, NFSPROC_SETATTR, 00434 (xdrproc_t) xdr_SETATTR2args, (caddr_t) parg, 00435 (xdrproc_t) xdr_ATTR2res, (caddr_t) pres, TIMEOUT); 00436 } 00437 00448 int nfs2_remote_Root(CLIENT * clnt /* IN */ , 00449 nfs_arg_t * parg /* IN */ , 00450 nfs_res_t * pres /* OUT */ ) 00451 { 00452 //printf("REQUEST PROCESSING: Calling nfs2_remote_Root\n"); 00453 if(clnt == NULL) 00454 { 00455 return -1; 00456 } 00457 00458 return clnt_call(clnt, NFSPROC_ROOT, 00459 (xdrproc_t) xdr_void, (caddr_t) parg, 00460 (xdrproc_t) xdr_void, (caddr_t) pres, TIMEOUT); 00461 } 00462 00473 int nfs2_remote_Lookup(CLIENT * clnt /* IN */ , 00474 nfs_arg_t * parg /* IN */ , 00475 nfs_res_t * pres /* OUT */ ) 00476 { 00477 //printf("REQUEST PROCESSING: Calling nfs2_remote_Lookup\n"); 00478 if(clnt == NULL) 00479 { 00480 return -1; 00481 } 00482 00483 memset((char *)pres, 0, sizeof(DIROP2res)); 00484 return clnt_call(clnt, NFSPROC_LOOKUP, 00485 (xdrproc_t) xdr_diropargs2, (caddr_t) parg, 00486 (xdrproc_t) xdr_DIROP2res, (caddr_t) pres, TIMEOUT); 00487 } 00488 00499 int nfs2_remote_Readlink(CLIENT * clnt /* IN */ , 00500 nfs_arg_t * parg /* IN */ , 00501 nfs_res_t * pres /* OUT */ ) 00502 { 00503 //printf("REQUEST PROCESSING: Calling nfs2_remote_Readlink\n"); 00504 if(clnt == NULL) 00505 { 00506 return -1; 00507 } 00508 00509 memset((char *)pres, 0, sizeof(READLINK2res)); 00510 return clnt_call(clnt, NFSPROC_READLINK, 00511 (xdrproc_t) xdr_fhandle2, (caddr_t) parg, 00512 (xdrproc_t) xdr_READLINK2res, (caddr_t) pres, TIMEOUT); 00513 } 00514 00525 int nfs2_remote_Read(CLIENT * clnt /* IN */ , 00526 nfs_arg_t * parg /* IN */ , 00527 nfs_res_t * pres /* OUT */ ) 00528 { 00529 //printf("REQUEST PROCESSING: Calling nfs2_remote_Read\n"); 00530 if(clnt == NULL) 00531 { 00532 return -1; 00533 } 00534 00535 memset((char *)pres, 0, sizeof(READ2res)); 00536 return clnt_call(clnt, NFSPROC_READ, 00537 (xdrproc_t) xdr_READ2args, (caddr_t) parg, 00538 (xdrproc_t) xdr_READ2res, (caddr_t) pres, TIMEOUT); 00539 } 00540 00551 int nfs2_remote_Writecache(CLIENT * clnt /* IN */ , 00552 nfs_arg_t * parg /* IN */ , 00553 nfs_res_t * pres /* OUT */ ) 00554 { 00555 //printf("REQUEST PROCESSING: Calling nfs2_remote_Writecache\n"); 00556 if(clnt == NULL) 00557 { 00558 return -1; 00559 } 00560 00561 return clnt_call(clnt, NFSPROC_WRITECACHE, 00562 (xdrproc_t) xdr_void, (caddr_t) parg, 00563 (xdrproc_t) xdr_void, (caddr_t) pres, TIMEOUT); 00564 } 00565 00576 int nfs2_remote_Write(CLIENT * clnt /* IN */ , 00577 nfs_arg_t * parg /* IN */ , 00578 nfs_res_t * pres /* OUT */ ) 00579 { 00580 //printf("REQUEST PROCESSING: Calling nfs2_remote_Write\n"); 00581 if(clnt == NULL) 00582 { 00583 return -1; 00584 } 00585 00586 memset((char *)pres, 0, sizeof(ATTR2res)); 00587 return clnt_call(clnt, NFSPROC_WRITE, 00588 (xdrproc_t) xdr_WRITE2args, (caddr_t) parg, 00589 (xdrproc_t) xdr_ATTR2res, (caddr_t) pres, TIMEOUT); 00590 } 00591 00602 int nfs2_remote_Create(CLIENT * clnt /* IN */ , 00603 nfs_arg_t * parg /* IN */ , 00604 nfs_res_t * pres /* OUT */ ) 00605 { 00606 //printf("REQUEST PROCESSING: Calling nfs2_remote_Create\n"); 00607 if(clnt == NULL) 00608 { 00609 return -1; 00610 } 00611 00612 memset((char *)pres, 0, sizeof(DIROP2res)); 00613 return clnt_call(clnt, NFSPROC_CREATE, 00614 (xdrproc_t) xdr_CREATE2args, (caddr_t) parg, 00615 (xdrproc_t) xdr_DIROP2res, (caddr_t) pres, TIMEOUT); 00616 } 00617 00628 int nfs2_remote_Remove(CLIENT * clnt /* IN */ , 00629 nfs_arg_t * parg /* IN */ , 00630 nfs_res_t * pres /* OUT */ ) 00631 { 00632 //printf("REQUEST PROCESSING: Calling nfs2_remote_Remove\n"); 00633 if(clnt == NULL) 00634 { 00635 return -1; 00636 } 00637 00638 memset((char *)pres, 0, sizeof(nfsstat2)); 00639 return clnt_call(clnt, NFSPROC_REMOVE, 00640 (xdrproc_t) xdr_diropargs2, (caddr_t) parg, 00641 (xdrproc_t) xdr_nfsstat2, (caddr_t) pres, TIMEOUT); 00642 } 00643 00654 int nfs2_remote_Rename(CLIENT * clnt /* IN */ , 00655 nfs_arg_t * parg /* IN */ , 00656 nfs_res_t * pres /* OUT */ ) 00657 { 00658 //printf("REQUEST PROCESSING: Calling nfs2_remote_Rename\n"); 00659 if(clnt == NULL) 00660 { 00661 return -1; 00662 } 00663 00664 memset((char *)pres, 0, sizeof(nfsstat2)); 00665 return clnt_call(clnt, NFSPROC_RENAME, 00666 (xdrproc_t) xdr_RENAME2args, (caddr_t) parg, 00667 (xdrproc_t) xdr_nfsstat2, (caddr_t) pres, TIMEOUT); 00668 } 00669 00680 int nfs2_remote_Link(CLIENT * clnt /* IN */ , 00681 nfs_arg_t * parg /* IN */ , 00682 nfs_res_t * pres /* OUT */ ) 00683 { 00684 //printf("REQUEST PROCESSING: Calling nfs2_remote_Link\n"); 00685 if(clnt == NULL) 00686 { 00687 return -1; 00688 } 00689 00690 memset((char *)pres, 0, sizeof(nfsstat2)); 00691 return clnt_call(clnt, NFSPROC_LINK, 00692 (xdrproc_t) xdr_LINK2args, (caddr_t) parg, 00693 (xdrproc_t) xdr_nfsstat2, (caddr_t) pres, TIMEOUT); 00694 } 00695 00706 int nfs2_remote_Symlink(CLIENT * clnt /* IN */ , 00707 nfs_arg_t * parg /* IN */ , 00708 nfs_res_t * pres /* OUT */ ) 00709 { 00710 //printf("REQUEST PROCESSING: Calling nfs2_remote_Symlink\n"); 00711 if(clnt == NULL) 00712 { 00713 return -1; 00714 } 00715 00716 memset((char *)pres, 0, sizeof(nfsstat2)); 00717 return clnt_call(clnt, NFSPROC_SYMLINK, 00718 (xdrproc_t) xdr_SYMLINK2args, (caddr_t) parg, 00719 (xdrproc_t) xdr_nfsstat2, (caddr_t) pres, TIMEOUT); 00720 } 00721 00732 int nfs2_remote_Mkdir(CLIENT * clnt /* IN */ , 00733 nfs_arg_t * parg /* IN */ , 00734 nfs_res_t * pres /* OUT */ ) 00735 { 00736 //printf("REQUEST PROCESSING: Calling nfs2_remote_Mkdir\n"); 00737 if(clnt == NULL) 00738 { 00739 return -1; 00740 } 00741 00742 memset((char *)pres, 0, sizeof(DIROP2res)); 00743 return clnt_call(clnt, NFSPROC_MKDIR, 00744 (xdrproc_t) xdr_CREATE2args, (caddr_t) parg, 00745 (xdrproc_t) xdr_DIROP2res, (caddr_t) pres, TIMEOUT); 00746 } 00747 00758 int nfs2_remote_Rmdir(CLIENT * clnt /* IN */ , 00759 nfs_arg_t * parg /* IN */ , 00760 nfs_res_t * pres /* OUT */ ) 00761 { 00762 //printf("REQUEST PROCESSING: Calling nfs2_remote_Rmdir\n"); 00763 if(clnt == NULL) 00764 { 00765 return -1; 00766 } 00767 00768 memset((char *)pres, 0, sizeof(nfsstat2)); 00769 return clnt_call(clnt, NFSPROC_RMDIR, 00770 (xdrproc_t) xdr_diropargs2, (caddr_t) parg, 00771 (xdrproc_t) xdr_nfsstat2, (caddr_t) pres, TIMEOUT); 00772 } 00773 00784 int nfs2_remote_Readdir(CLIENT * clnt /* IN */ , 00785 nfs_arg_t * parg /* IN */ , 00786 nfs_res_t * pres /* OUT */ ) 00787 { 00788 //printf("REQUEST PROCESSING: Calling nfs2_remote_Readdir\n"); 00789 if(clnt == NULL) 00790 { 00791 return -1; 00792 } 00793 00794 memset((char *)pres, 0, sizeof(READDIR2res)); 00795 return clnt_call(clnt, NFSPROC_READDIR, 00796 (xdrproc_t) xdr_READDIR2args, (caddr_t) parg, 00797 (xdrproc_t) xdr_READDIR2res, (caddr_t) pres, TIMEOUT); 00798 } 00799 00810 int nfs2_remote_Fsstat(CLIENT * clnt /* IN */ , 00811 nfs_arg_t * parg /* IN */ , 00812 nfs_res_t * pres /* OUT */ ) 00813 { 00814 //printf("REQUEST PROCESSING: Calling nfs2_remote_Fsstat\n"); 00815 if(clnt == NULL) 00816 { 00817 return -1; 00818 } 00819 00820 memset((char *)pres, 0, sizeof(STATFS2res)); 00821 return clnt_call(clnt, NFSPROC_STATFS, 00822 (xdrproc_t) xdr_fhandle2, (caddr_t) parg, 00823 (xdrproc_t) xdr_STATFS2res, (caddr_t) pres, TIMEOUT); 00824 } 00825 00836 int nfs3_remote_Null(CLIENT * clnt /* IN */ , 00837 nfs_arg_t * parg /* IN */ , 00838 nfs_res_t * pres /* OUT */ ) 00839 { 00840 //printf("REQUEST PROCESSING: Calling nfs3_remote_Null\n"); 00841 if(clnt == NULL) 00842 { 00843 return -1; 00844 } 00845 00846 return clnt_call(clnt, NFSPROC3_NULL, 00847 (xdrproc_t) xdr_void, (caddr_t) parg, 00848 (xdrproc_t) xdr_void, (caddr_t) pres, TIMEOUT); 00849 } 00850 00861 int nfs3_remote_Getattr(CLIENT * clnt /* IN */ , 00862 nfs_arg_t * parg /* IN */ , 00863 nfs_res_t * pres /* OUT */ ) 00864 { 00865 //printf("REQUEST PROCESSING: Calling nfs3_remote_Getattr\n"); 00866 if(clnt == NULL) 00867 { 00868 return -1; 00869 } 00870 00871 memset((char *)pres, 0, sizeof(GETATTR3res)); 00872 return clnt_call(clnt, NFSPROC3_GETATTR, 00873 (xdrproc_t) xdr_GETATTR3args, (caddr_t) parg, 00874 (xdrproc_t) xdr_GETATTR3res, (caddr_t) pres, TIMEOUT); 00875 } 00876 00887 int nfs3_remote_Setattr(CLIENT * clnt /* IN */ , 00888 nfs_arg_t * parg /* IN */ , 00889 nfs_res_t * pres /* OUT */ ) 00890 { 00891 //printf("REQUEST PROCESSING: Calling nfs3_remote_Setattr\n"); 00892 if(clnt == NULL) 00893 { 00894 return -1; 00895 } 00896 00897 memset((char *)pres, 0, sizeof(SETATTR3res)); 00898 return clnt_call(clnt, NFSPROC3_SETATTR, 00899 (xdrproc_t) xdr_SETATTR3args, (caddr_t) parg, 00900 (xdrproc_t) xdr_SETATTR3res, (caddr_t) pres, TIMEOUT); 00901 } 00902 00913 int nfs3_remote_Lookup(CLIENT * clnt /* IN */ , 00914 nfs_arg_t * parg /* IN */ , 00915 nfs_res_t * pres /* OUT */ ) 00916 { 00917 //printf("REQUEST PROCESSING: Calling nfs3_remote_Lookup\n"); 00918 if(clnt == NULL) 00919 { 00920 return -1; 00921 } 00922 00923 memset((char *)pres, 0, sizeof(LOOKUP3res)); 00924 return clnt_call(clnt, NFSPROC3_LOOKUP, 00925 (xdrproc_t) xdr_LOOKUP3args, (caddr_t) parg, 00926 (xdrproc_t) xdr_LOOKUP3res, (caddr_t) pres, TIMEOUT); 00927 } 00928 00939 int nfs3_remote_Readlink(CLIENT * clnt /* IN */ , 00940 nfs_arg_t * parg /* IN */ , 00941 nfs_res_t * pres /* OUT */ ) 00942 { 00943 //printf("REQUEST PROCESSING: Calling nfs3_remote_Readlink\n"); 00944 if(clnt == NULL) 00945 { 00946 return -1; 00947 } 00948 00949 memset((char *)pres, 0, sizeof(READLINK3res)); 00950 return clnt_call(clnt, NFSPROC3_READLINK, 00951 (xdrproc_t) xdr_READLINK3args, (caddr_t) parg, 00952 (xdrproc_t) xdr_READLINK3res, (caddr_t) pres, TIMEOUT); 00953 } 00954 00965 int nfs3_remote_Read(CLIENT * clnt /* IN */ , 00966 nfs_arg_t * parg /* IN */ , 00967 nfs_res_t * pres /* OUT */ ) 00968 { 00969 //printf("REQUEST PROCESSING: Calling nfs3_remote_Read\n"); 00970 if(clnt == NULL) 00971 { 00972 return -1; 00973 } 00974 00975 memset((char *)pres, 0, sizeof(READ3res)); 00976 return clnt_call(clnt, NFSPROC3_READ, 00977 (xdrproc_t) xdr_READ3args, (caddr_t) parg, 00978 (xdrproc_t) xdr_READ3res, (caddr_t) pres, TIMEOUT); 00979 } 00980 00991 int nfs3_remote_Write(CLIENT * clnt /* IN */ , 00992 nfs_arg_t * parg /* IN */ , 00993 nfs_res_t * pres /* OUT */ ) 00994 { 00995 //printf("REQUEST PROCESSING: Calling nfs3_remote_Write\n"); 00996 if(clnt == NULL) 00997 { 00998 return -1; 00999 } 01000 01001 memset((char *)pres, 0, sizeof(WRITE3res)); 01002 return clnt_call(clnt, NFSPROC3_WRITE, 01003 (xdrproc_t) xdr_WRITE3args, (caddr_t) parg, 01004 (xdrproc_t) xdr_WRITE3res, (caddr_t) pres, TIMEOUT); 01005 } 01006 01017 int nfs3_remote_Create(CLIENT * clnt /* IN */ , 01018 nfs_arg_t * parg /* IN */ , 01019 nfs_res_t * pres /* OUT */ ) 01020 { 01021 //printf("REQUEST PROCESSING: Calling nfs3_remote_Create\n"); 01022 if(clnt == NULL) 01023 { 01024 return -1; 01025 } 01026 01027 memset((char *)pres, 0, sizeof(CREATE3res)); 01028 return clnt_call(clnt, NFSPROC3_CREATE, 01029 (xdrproc_t) xdr_CREATE3args, (caddr_t) parg, 01030 (xdrproc_t) xdr_CREATE3res, (caddr_t) pres, TIMEOUT); 01031 } 01032 01043 int nfs3_remote_Remove(CLIENT * clnt /* IN */ , 01044 nfs_arg_t * parg /* IN */ , 01045 nfs_res_t * pres /* OUT */ ) 01046 { 01047 //printf("REQUEST PROCESSING: Calling nfs3_remote_Remove\n"); 01048 if(clnt == NULL) 01049 { 01050 return -1; 01051 } 01052 01053 memset((char *)pres, 0, sizeof(REMOVE3res)); 01054 return clnt_call(clnt, NFSPROC3_REMOVE, 01055 (xdrproc_t) xdr_REMOVE3args, (caddr_t) parg, 01056 (xdrproc_t) xdr_REMOVE3res, (caddr_t) pres, TIMEOUT); 01057 } 01058 01069 int nfs3_remote_Rename(CLIENT * clnt /* IN */ , 01070 nfs_arg_t * parg /* IN */ , 01071 nfs_res_t * pres /* OUT */ ) 01072 { 01073 //printf("REQUEST PROCESSING: Calling nfs3_remote_Rename\n"); 01074 if(clnt == NULL) 01075 { 01076 return -1; 01077 } 01078 01079 memset((char *)pres, 0, sizeof(RENAME3res)); 01080 return clnt_call(clnt, NFSPROC3_RENAME, 01081 (xdrproc_t) xdr_RENAME3args, (caddr_t) parg, 01082 (xdrproc_t) xdr_RENAME3res, (caddr_t) pres, TIMEOUT); 01083 } 01084 01095 int nfs3_remote_Link(CLIENT * clnt /* IN */ , 01096 nfs_arg_t * parg /* IN */ , 01097 nfs_res_t * pres /* OUT */ ) 01098 { 01099 //printf("REQUEST PROCESSING: Calling nfs3_remote_Link\n"); 01100 if(clnt == NULL) 01101 { 01102 return -1; 01103 } 01104 01105 memset((char *)pres, 0, sizeof(LINK3res)); 01106 return clnt_call(clnt, NFSPROC3_LINK, 01107 (xdrproc_t) xdr_LINK3args, (caddr_t) parg, 01108 (xdrproc_t) xdr_LINK3res, (caddr_t) pres, TIMEOUT); 01109 } 01110 01121 int nfs3_remote_Symlink(CLIENT * clnt /* IN */ , 01122 nfs_arg_t * parg /* IN */ , 01123 nfs_res_t * pres /* OUT */ ) 01124 { 01125 //printf("REQUEST PROCESSING: Calling nfs3_remote_Symlink\n"); 01126 if(clnt == NULL) 01127 { 01128 return -1; 01129 } 01130 01131 memset((char *)pres, 0, sizeof(SYMLINK3res)); 01132 return clnt_call(clnt, NFSPROC3_SYMLINK, 01133 (xdrproc_t) xdr_SYMLINK3args, (caddr_t) parg, 01134 (xdrproc_t) xdr_SYMLINK3res, (caddr_t) pres, TIMEOUT); 01135 } 01136 01147 int nfs3_remote_Mkdir(CLIENT * clnt /* IN */ , 01148 nfs_arg_t * parg /* IN */ , 01149 nfs_res_t * pres /* OUT */ ) 01150 { 01151 //printf("REQUEST PROCESSING: Calling nfs3_remote_Mkdir\n"); 01152 if(clnt == NULL) 01153 { 01154 return -1; 01155 } 01156 01157 memset((char *)pres, 0, sizeof(MKDIR3res)); 01158 return clnt_call(clnt, NFSPROC3_MKDIR, 01159 (xdrproc_t) xdr_MKDIR3args, (caddr_t) parg, 01160 (xdrproc_t) xdr_MKDIR3res, (caddr_t) pres, TIMEOUT); 01161 } 01162 01173 int nfs3_remote_Rmdir(CLIENT * clnt /* IN */ , 01174 nfs_arg_t * parg /* IN */ , 01175 nfs_res_t * pres /* OUT */ ) 01176 { 01177 //printf("REQUEST PROCESSING: Calling nfs3_remote_Rmdir\n"); 01178 if(clnt == NULL) 01179 { 01180 return -1; 01181 } 01182 01183 memset((char *)pres, 0, sizeof(RMDIR3res)); 01184 return clnt_call(clnt, NFSPROC3_RMDIR, 01185 (xdrproc_t) xdr_RMDIR3args, (caddr_t) parg, 01186 (xdrproc_t) xdr_RMDIR3res, (caddr_t) pres, TIMEOUT); 01187 } 01188 01199 int nfs3_remote_Readdir(CLIENT * clnt /* IN */ , 01200 nfs_arg_t * parg /* IN */ , 01201 nfs_res_t * pres /* OUT */ ) 01202 { 01203 //printf("REQUEST PROCESSING: Calling nfs3_remote_Readdir\n"); 01204 if(clnt == NULL) 01205 { 01206 return -1; 01207 } 01208 01209 memset((char *)pres, 0, sizeof(READDIR3res)); 01210 return clnt_call(clnt, NFSPROC3_READDIR, 01211 (xdrproc_t) xdr_READDIR3args, (caddr_t) parg, 01212 (xdrproc_t) xdr_READDIR3res, (caddr_t) pres, TIMEOUT); 01213 } 01214 01225 int nfs3_remote_Fsstat(CLIENT * clnt /* IN */ , 01226 nfs_arg_t * parg /* IN */ , 01227 nfs_res_t * pres /* OUT */ ) 01228 { 01229 //printf("REQUEST PROCESSING: Calling nfs3_remote_Fsstat\n"); 01230 if(clnt == NULL) 01231 { 01232 return -1; 01233 } 01234 01235 memset((char *)pres, 0, sizeof(FSSTAT3res)); 01236 return clnt_call(clnt, NFSPROC3_FSSTAT, 01237 (xdrproc_t) xdr_FSSTAT3args, (caddr_t) parg, 01238 (xdrproc_t) xdr_FSSTAT3res, (caddr_t) pres, TIMEOUT); 01239 } 01240 01251 int nfs3_remote_Access(CLIENT * clnt /* IN */ , 01252 nfs_arg_t * parg /* IN */ , 01253 nfs_res_t * pres /* OUT */ ) 01254 { 01255 //printf("REQUEST PROCESSING: Calling nfs3_remote_Access\n"); 01256 if(clnt == NULL) 01257 { 01258 return -1; 01259 } 01260 01261 memset((char *)pres, 0, sizeof(ACCESS3res)); 01262 return clnt_call(clnt, NFSPROC3_ACCESS, 01263 (xdrproc_t) xdr_ACCESS3args, (caddr_t) parg, 01264 (xdrproc_t) xdr_ACCESS3res, (caddr_t) pres, TIMEOUT); 01265 } 01266 01277 int nfs3_remote_Readdirplus(CLIENT * clnt /* IN */ , 01278 nfs_arg_t * parg /* IN */ , 01279 nfs_res_t * pres /* OUT */ ) 01280 { 01281 //printf("REQUEST PROCESSING: Calling nfs3_remote_Readdirplus\n"); 01282 if(clnt == NULL) 01283 { 01284 return -1; 01285 } 01286 01287 memset((char *)pres, 0, sizeof(READDIRPLUS3res)); 01288 return clnt_call(clnt, NFSPROC3_READDIRPLUS, 01289 (xdrproc_t) xdr_READDIRPLUS3args, (caddr_t) parg, 01290 (xdrproc_t) xdr_READDIRPLUS3res, (caddr_t) pres, TIMEOUT); 01291 } 01292 01303 int nfs3_remote_Fsinfo(CLIENT * clnt /* IN */ , 01304 nfs_arg_t * parg /* IN */ , 01305 nfs_res_t * pres /* OUT */ ) 01306 { 01307 //printf("REQUEST PROCESSING: Calling nfs3_remote_Fsinfo\n"); 01308 if(clnt == NULL) 01309 { 01310 return -1; 01311 } 01312 01313 memset((char *)pres, 0, sizeof(FSINFO3res)); 01314 return clnt_call(clnt, NFSPROC3_FSINFO, 01315 (xdrproc_t) xdr_FSINFO3args, (caddr_t) parg, 01316 (xdrproc_t) xdr_FSINFO3res, (caddr_t) pres, TIMEOUT); 01317 } 01318 01329 int nfs3_remote_Pathconf(CLIENT * clnt /* IN */ , 01330 nfs_arg_t * parg /* IN */ , 01331 nfs_res_t * pres /* OUT */ ) 01332 { 01333 //printf("REQUEST PROCESSING: Calling nfs3_remote_Pathconf\n"); 01334 if(clnt == NULL) 01335 { 01336 return -1; 01337 } 01338 01339 memset((char *)pres, 0, sizeof(PATHCONF3res)); 01340 return clnt_call(clnt, NFSPROC3_PATHCONF, 01341 (xdrproc_t) xdr_PATHCONF3args, (caddr_t) parg, 01342 (xdrproc_t) xdr_PATHCONF3res, (caddr_t) pres, TIMEOUT); 01343 } 01344 01355 int nfs3_remote_Commit(CLIENT * clnt /* IN */ , 01356 nfs_arg_t * parg /* IN */ , 01357 nfs_res_t * pres /* OUT */ ) 01358 { 01359 //printf("REQUEST PROCESSING: Calling nfs3_remote_Commit\n"); 01360 if(clnt == NULL) 01361 { 01362 return -1; 01363 } 01364 01365 memset((char *)pres, 0, sizeof(COMMIT3res)); 01366 return clnt_call(clnt, NFSPROC3_COMMIT, 01367 (xdrproc_t) xdr_COMMIT3args, (caddr_t) parg, 01368 (xdrproc_t) xdr_COMMIT3res, (caddr_t) pres, TIMEOUT); 01369 } 01370 01381 int nfs3_remote_Mknod(CLIENT * clnt /* IN */ , 01382 nfs_arg_t * parg /* IN */ , 01383 nfs_res_t * pres /* OUT */ ) 01384 { 01385 //printf("REQUEST PROCESSING: Calling nfs3_remote_Mknod\n"); 01386 if(clnt == NULL) 01387 { 01388 return -1; 01389 } 01390 01391 memset((char *)pres, 0, sizeof(MKNOD3res)); 01392 return clnt_call(clnt, NFSPROC3_MKNOD, 01393 (xdrproc_t) xdr_MKNOD3args, (caddr_t) parg, 01394 (xdrproc_t) xdr_MKNOD3res, (caddr_t) pres, TIMEOUT); 01395 } 01396 01405 int nfs4_remote_Null(CLIENT * clnt /* IN */ ) 01406 { 01407 COMPOUND4args parg; 01408 COMPOUND4res pres; 01409 // printf("REQUEST PROCESSING: Calling nfs4_remote_Null\n"); 01410 if(clnt == NULL) 01411 { 01412 return -1; 01413 } 01414 01415 return clnt_call(clnt, NFSPROC4_NULL, 01416 (xdrproc_t) xdr_void, (caddr_t) & parg, 01417 (xdrproc_t) xdr_void, (caddr_t) & pres, TIMEOUT); 01418 } 01419 01430 int nfs4_remote_COMPOUND(CLIENT * clnt /* IN */ , 01431 COMPOUND4args * parg /* IN */ , 01432 COMPOUND4res * pres /* OUT */ ) 01433 { 01434 // printf("REQUEST PROCESSING: Calling nfs4_remote_COMPOUND\n"); 01435 if(clnt == NULL) 01436 { 01437 return -1; 01438 } 01439 01440 memset((char *)pres, 0, sizeof(COMPOUND4res) * parg->argarray.argarray_len); 01441 return clnt_call(clnt, NFSPROC4_COMPOUND, 01442 (xdrproc_t) xdr_COMPOUND4args, (caddr_t) parg, 01443 (xdrproc_t) xdr_COMPOUND4res, (caddr_t) pres, TIMEOUT); 01444 } 01445 01446 /* Free functions */ 01447 01456 void mnt1_remote_Null_Free(nfs_res_t * pres) 01457 { 01458 return; 01459 } 01460 01469 void mnt1_remote_Mnt_Free(nfs_res_t * pres) 01470 { 01471 return; 01472 } 01473 01482 void mnt1_remote_Dump_Free(nfs_res_t * pres) 01483 { 01484 return; 01485 } 01486 01495 void mnt1_remote_Export_Free(nfs_res_t * pres) 01496 { 01497 return; 01498 } 01499 01508 void mnt1_remote_Umnt_Free(nfs_res_t * pres) 01509 { 01510 return; 01511 } 01512 01521 void mnt1_remote_UmntAll_Free(nfs_res_t * pres) 01522 { 01523 return; 01524 } 01525 01534 void mnt3_remote_Null_Free(nfs_res_t * pres) 01535 { 01536 return; 01537 } 01538 01547 void mnt3_remote_Mnt_Free(nfs_res_t * pres) 01548 { 01549 return; 01550 } 01551 01560 void mnt3_remote_Dump_Free(nfs_res_t * pres) 01561 { 01562 return; 01563 } 01564 01573 void mnt3_remote_Export_Free(nfs_res_t * pres) 01574 { 01575 return; 01576 } 01577 01586 void mnt3_remote_Umnt_Free(nfs_res_t * pres) 01587 { 01588 return; 01589 } 01590 01599 void mnt3_remote_UmntAll_Free(nfs_res_t * pres) 01600 { 01601 return; 01602 } 01603 01612 void nfs2_remote_Null_Free(nfs_res_t * resp) 01613 { 01614 return; 01615 } 01616 01625 void nfs2_remote_Getattr_Free(nfs_res_t * resp) 01626 { 01627 return; 01628 } 01629 01638 void nfs2_remote_Setattr_Free(nfs_res_t * resp) 01639 { 01640 return; 01641 } 01642 01651 void nfs2_remote_Lookup_Free(nfs_res_t * resp) 01652 { 01653 return; 01654 } 01655 01664 void nfs2_remote_Read_Free(nfs_res_t * resp) 01665 { 01666 return; 01667 } 01668 01677 void nfs2_remote_Write_Free(nfs_res_t * resp) 01678 { 01679 return; 01680 } 01681 01690 void nfs2_remote_Create_Free(nfs_res_t * resp) 01691 { 01692 return; 01693 } 01694 01703 void nfs2_remote_Mkdir_Free(nfs_res_t * resp) 01704 { 01705 return; 01706 } 01707 01716 void nfs2_remote_Symlink_Free(nfs_res_t * resp) 01717 { 01718 return; 01719 } 01720 01729 void nfs2_remote_Remove_Free(nfs_res_t * resp) 01730 { 01731 return; 01732 } 01733 01742 void nfs2_remote_Rmdir_Free(nfs_res_t * resp) 01743 { 01744 return; 01745 } 01746 01755 void nfs2_remote_Rename_Free(nfs_res_t * resp) 01756 { 01757 return; 01758 } 01759 01768 void nfs2_remote_Link_Free(nfs_res_t * resp) 01769 { 01770 return; 01771 } 01772 01781 void nfs2_remote_Fsstat_Free(nfs_res_t * resp) 01782 { 01783 return; 01784 } 01785 01794 void nfs2_remote_Root_Free(nfs_res_t * pres) 01795 { 01796 return; 01797 } 01798 01807 void nfs2_remote_Writecache_Free(nfs_res_t * pres) 01808 { 01809 return; 01810 } 01811 01820 void nfs2_remote_Readdir_Free(nfs_res_t * resp) 01821 { 01822 return; 01823 } 01824 01833 void nfs2_remote_Readlink_Free(nfs_res_t * resp) 01834 { 01835 return; 01836 } 01837 01846 void nfs3_remote_Null_Free(nfs_res_t * resp) 01847 { 01848 return; 01849 } 01850 01859 void nfs3_remote_Getattr_Free(nfs_res_t * resp) 01860 { 01861 return; 01862 } 01863 01872 void nfs3_remote_Setattr_Free(nfs_res_t * resp) 01873 { 01874 return; 01875 } 01876 01885 void nfs3_remote_Lookup_Free(nfs_res_t * resp) 01886 { 01887 return; 01888 } 01889 01898 void nfs3_remote_Access_Free(nfs_res_t * pres) 01899 { 01900 return; 01901 } 01902 01911 void nfs3_remote_Readlink_Free(nfs_res_t * resp) 01912 { 01913 return; 01914 } 01915 01924 void nfs3_remote_Write_Free(nfs_res_t * resp) 01925 { 01926 return; 01927 } 01928 01937 void nfs3_remote_Create_Free(nfs_res_t * resp) 01938 { 01939 return; 01940 } 01941 01950 void nfs3_remote_Mkdir_Free(nfs_res_t * resp) 01951 { 01952 return; 01953 } 01954 01963 void nfs3_remote_Symlink_Free(nfs_res_t * resp) 01964 { 01965 return; 01966 } 01967 01976 void nfs3_remote_Mknod_Free(nfs_res_t * pres) 01977 { 01978 return; 01979 } 01980 01989 void nfs3_remote_Remove_Free(nfs_res_t * resp) 01990 { 01991 return; 01992 } 01993 02002 void nfs3_remote_Rmdir_Free(nfs_res_t * resp) 02003 { 02004 return; 02005 } 02006 02015 void nfs3_remote_Rename_Free(nfs_res_t * resp) 02016 { 02017 return; 02018 } 02019 02028 void nfs3_remote_Link_Free(nfs_res_t * resp) 02029 { 02030 return; 02031 } 02032 02041 void nfs3_remote_Readdir_Free(nfs_res_t * resp) 02042 { 02043 return; 02044 } 02045 02054 void nfs3_remote_Readdirplus_Free(nfs_res_t * resp) 02055 { 02056 return; 02057 } 02058 02067 void nfs3_remote_Fsstat_Free(nfs_res_t * resp) 02068 { 02069 return; 02070 } 02071 02080 void nfs3_remote_Fsinfo_Free(nfs_res_t * pres) 02081 { 02082 return; 02083 } 02084 02093 void nfs3_remote_Pathconf_Free(nfs_res_t * pres) 02094 { 02095 return; 02096 } 02097 02106 void nfs3_remote_Commit_Free(nfs_res_t * pres) 02107 { 02108 return; 02109 } 02110 02119 void nfs3_remote_Read_Free(nfs_res_t * resp) 02120 { 02121 return; 02122 }