nfs-ganesha 1.4

nfs_remote_functions.c

Go to the documentation of this file.
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 }