nfs-ganesha 1.4

cmd_nfstools.h

Go to the documentation of this file.
00001 
00080 #ifndef _CMD_NFSTOOLS_H
00081 #define _CMD_NFSTOOLS_H
00082 
00083 #ifdef HAVE_CONFIG_H
00084 #include "config.h"
00085 #endif
00086 
00087 #include "ganesha_rpc.h"
00088 #include "nfs_proto_functions.h"
00089 #include "nfs_remote_functions.h"
00090 
00091 typedef enum cmdnfs_encodetype__
00092 {
00093   CMDNFS_ENCODE = 1,
00094   CMDNFS_DECODE = 2,
00095   CMDNFS_FREE = 3
00096 } cmdnfs_encodetype_t;
00097 
00098 /* defining encoding/decoding function type */
00099 
00100 typedef int (*cmdnfs_encoding_func_t) (cmdnfs_encodetype_t,     /* encoding or decoding */
00101                                        int, char **,    /* inputs for encoding  */
00102                                        int, FILE *,     /* indentation and output stream for decoding */
00103                                        caddr_t  /* pointer to nfs structure to encode or decode */
00104     );
00105 
00106 /* defining generic command type */
00107 
00108 typedef struct cmdnfs_funcdesc__
00109 {
00110 
00111   /* nfs function name */
00112   char *func_name;
00113 
00114   /* related nfs function */
00115   nfs_protocol_function_t func_call;
00116 
00117   /* for freeing resources */
00118   nfs_protocol_free_t func_free;
00119 
00120   /* encoding function shell->nfs  */
00121   cmdnfs_encoding_func_t func_encode;
00122 
00123   /* decoding function nfs->shell */
00124   cmdnfs_encoding_func_t func_decode;
00125 
00126   /* syntaxe for the command */
00127   char *func_help;
00128 
00129 } cmdnfs_funcdesc_t;
00130 
00131 typedef struct cmdnfsremote_funcdesc__
00132 {
00133 
00134   /* nfs function name */
00135   char *func_name;
00136 
00137   /* related nfs function */
00138   nfsremote_protocol_function_t func_call;
00139 
00140   /* for freeing resources */
00141   nfs_protocol_free_t func_free;
00142 
00143   /* encoding function shell->nfs  */
00144   cmdnfs_encoding_func_t func_encode;
00145 
00146   /* decoding function nfs->shell */
00147   cmdnfs_encoding_func_t func_decode;
00148 
00149   /* syntaxe for the command */
00150   char *func_help;
00151 
00152 } cmdnfsremote_funcdesc_t;
00153 
00154 /* encoding/decoding function definitions */
00155 
00156 int cmdnfs_void(cmdnfs_encodetype_t encodeflag,
00157                 int argc, char **argv,
00158                 int indent, FILE * out_stream, caddr_t p_nfs_struct);
00159 
00160 int cmdnfs_dirpath(cmdnfs_encodetype_t encodeflag,
00161                    int argc, char **argv,
00162                    int indent, FILE * out_stream, caddr_t p_nfs_struct);
00163 
00164 int cmdnfs_fhstatus2(cmdnfs_encodetype_t encodeflag,
00165                      int argc, char **argv,
00166                      int indent, FILE * out_stream, caddr_t p_nfs_struct);
00167 
00168 int cmdnfs_fhandle2(cmdnfs_encodetype_t encodeflag,
00169                     int argc, char **argv,
00170                     int indent, FILE * out_stream, caddr_t p_nfs_struct);
00171 
00172 int cmdnfs_mountlist(cmdnfs_encodetype_t encodeflag,
00173                      int argc, char **argv,
00174                      int indent, FILE * out_stream, caddr_t p_nfs_struct);
00175 
00176 int cmdnfs_exports(cmdnfs_encodetype_t encodeflag,
00177                    int argc, char **argv,
00178                    int indent, FILE * out_stream, caddr_t p_nfs_struct);
00179 
00180 int cmdnfs_mountres3(cmdnfs_encodetype_t encodeflag,
00181                      int argc, char **argv,
00182                      int indent, FILE * out_stream, caddr_t p_nfs_struct);
00183 
00184 int cmdnfs_fhandle3(cmdnfs_encodetype_t encodeflag,
00185                     int argc, char **argv,
00186                     int indent, FILE * out_stream, caddr_t p_nfs_struct);
00187 
00188 int cmdnfs_fattr2(cmdnfs_encodetype_t encodeflag,
00189                   int argc, char **argv,
00190                   int indent, FILE * out_stream, caddr_t p_nfs_struct);
00191 
00192 int cmdnfs_ATTR2res(cmdnfs_encodetype_t encodeflag,
00193                     int argc, char **argv,
00194                     int indent, FILE * out_stream, caddr_t p_nfs_struct);
00195 
00196 int cmdnfs_DIROP2res(cmdnfs_encodetype_t encodeflag,
00197                      int argc, char **argv,
00198                      int indent, FILE * out_stream, caddr_t p_nfs_struct);
00199 
00200 int cmdnfs_diropargs2(cmdnfs_encodetype_t encodeflag,
00201                       int argc, char **argv,
00202                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00203 
00204 int cmdnfs_nfsstat2(cmdnfs_encodetype_t encodeflag,
00205                     int argc, char **argv,
00206                     int indent, FILE * out_stream, caddr_t p_nfs_struct);
00207 
00208 int cmdnfs_READLINK2res(cmdnfs_encodetype_t encodeflag,
00209                         int argc, char **argv,
00210                         int indent, FILE * out_stream, caddr_t p_nfs_struct);
00211 
00212 int cmdnfs_sattr2(cmdnfs_encodetype_t encodeflag,
00213                   int argc, char **argv,
00214                   int indent, FILE * out_stream, caddr_t p_nfs_struct);
00215 
00216 int cmdnfs_CREATE2args(cmdnfs_encodetype_t encodeflag,
00217                        int argc, char **argv,
00218                        int indent, FILE * out_stream, caddr_t p_nfs_struct);
00219 
00220 int cmdnfs_SETATTR2args(cmdnfs_encodetype_t encodeflag,
00221                         int argc, char **argv,
00222                         int indent, FILE * out_stream, caddr_t p_nfs_struct);
00223 
00224 int cmdnfs_READDIR2args(cmdnfs_encodetype_t encodeflag,
00225                         int argc, char **argv,
00226                         int indent, FILE * out_stream, caddr_t p_nfs_struct);
00227 
00228 int cmdnfs_READDIR2res(cmdnfs_encodetype_t encodeflag,
00229                        int argc, char **argv,
00230                        int indent, FILE * out_stream, caddr_t p_nfs_struct);
00231 
00232 int cmdnfs_nfsstat3(cmdnfs_encodetype_t encodeflag,
00233                     int argc, char **argv,
00234                     int indent, FILE * out_stream, caddr_t p_nfs_struct);
00235 
00236 int cmdnfs_fattr3(cmdnfs_encodetype_t encodeflag,
00237                   int argc, char **argv,
00238                   int indent, FILE * out_stream, caddr_t p_nfs_struct);
00239 
00240 int cmdnfs_sattr3(cmdnfs_encodetype_t encodeflag,
00241                   int argc, char **argv,
00242                   int indent, FILE * out_stream, caddr_t p_nfs_struct);
00243 
00244 int cmdnfs_GETATTR3res(cmdnfs_encodetype_t encodeflag,
00245                        int argc, char **argv,
00246                        int indent, FILE * out_stream, caddr_t p_nfs_struct);
00247 
00248 int cmdnfs_postopattr(cmdnfs_encodetype_t encodeflag,
00249                       int argc, char **argv,
00250                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00251 
00252 int cmdnfs_postopfh3(cmdnfs_encodetype_t encodeflag,
00253                      int argc, char **argv,
00254                      int indent, FILE * out_stream, caddr_t p_nfs_struct);
00255 
00256 int cmdnfs_diropargs3(cmdnfs_encodetype_t encodeflag,
00257                       int argc, char **argv,
00258                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00259 
00260 int cmdnfs_LOOKUP3res(cmdnfs_encodetype_t encodeflag,
00261                       int argc, char **argv,
00262                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00263 
00264 int cmdnfs_READDIR3args(cmdnfs_encodetype_t encodeflag,
00265                         int argc, char **argv,
00266                         int indent, FILE * out_stream, caddr_t p_nfs_struct);
00267 
00268 int cmdnfs_READDIR3res(cmdnfs_encodetype_t encodeflag,
00269                        int argc, char **argv,
00270                        int indent, FILE * out_stream, caddr_t p_nfs_struct);
00271 
00272 int cmdnfs_READDIRPLUS3args(cmdnfs_encodetype_t encodeflag,
00273                             int argc, char **argv,
00274                             int indent, FILE * out_stream, caddr_t p_nfs_struct);
00275 
00276 int cmdnfs_READDIRPLUS3res(cmdnfs_encodetype_t encodeflag,
00277                            int argc, char **argv,
00278                            int indent, FILE * out_stream, caddr_t p_nfs_struct);
00279 
00280 int cmdnfs_READLINK3res(cmdnfs_encodetype_t encodeflag,
00281                         int argc, char **argv,
00282                         int indent, FILE * out_stream, caddr_t p_nfs_struct);
00283 
00284 int cmdnfs_FSSTAT3res(cmdnfs_encodetype_t encodeflag,
00285                       int argc, char **argv,
00286                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00287 
00288 int cmdnfs_ACCESS3args(cmdnfs_encodetype_t encodeflag,
00289                        int argc, char **argv,
00290                        int indent, FILE * out_stream, caddr_t p_nfs_struct);
00291 
00292 int cmdnfs_ACCESS3res(cmdnfs_encodetype_t encodeflag,
00293                       int argc, char **argv,
00294                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00295 
00296 int cmdnfs_CREATE3args(cmdnfs_encodetype_t encodeflag,
00297                        int argc, char **argv,
00298                        int indent, FILE * out_stream, caddr_t p_nfs_struct);
00299 
00300 int cmdnfs_CREATE3res(cmdnfs_encodetype_t encodeflag,
00301                       int argc, char **argv,
00302                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00303 
00304 int cmdnfs_MKDIR3args(cmdnfs_encodetype_t encodeflag,
00305                       int argc, char **argv,
00306                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00307 
00308 int cmdnfs_MKDIR3res(cmdnfs_encodetype_t encodeflag,
00309                      int argc, char **argv,
00310                      int indent, FILE * out_stream, caddr_t p_nfs_struct);
00311 
00312 int cmdnfs_REMOVE3res(cmdnfs_encodetype_t encodeflag,
00313                       int argc, char **argv,
00314                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00315 
00316 int cmdnfs_RMDIR3res(cmdnfs_encodetype_t encodeflag,
00317                      int argc, char **argv,
00318                      int indent, FILE * out_stream, caddr_t p_nfs_struct);
00319 
00320 int cmdnfs_SETATTR3args(cmdnfs_encodetype_t encodeflag,
00321                         int argc, char **argv,
00322                         int indent, FILE * out_stream, caddr_t p_nfs_struct);
00323 
00324 int cmdnfs_SETATTR3res(cmdnfs_encodetype_t encodeflag,
00325                        int argc, char **argv,
00326                        int indent, FILE * out_stream, caddr_t p_nfs_struct);
00327 
00328 int cmdnfs_RENAME3args(cmdnfs_encodetype_t encodeflag,
00329                        int argc, char **argv,
00330                        int indent, FILE * out_stream, caddr_t p_nfs_struct);
00331 
00332 int cmdnfs_RENAME3res(cmdnfs_encodetype_t encodeflag,
00333                       int argc, char **argv,
00334                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00335 
00336 int cmdnfs_LINK3args(cmdnfs_encodetype_t encodeflag,
00337                      int argc, char **argv,
00338                      int indent, FILE * out_stream, caddr_t p_nfs_struct);
00339 
00340 int cmdnfs_LINK3res(cmdnfs_encodetype_t encodeflag,
00341                     int argc, char **argv,
00342                     int indent, FILE * out_stream, caddr_t p_nfs_struct);
00343 
00344 int cmdnfs_SYMLINK3args(cmdnfs_encodetype_t encodeflag,
00345                         int argc, char **argv,
00346                         int indent, FILE * out_stream, caddr_t p_nfs_struct);
00347 
00348 int cmdnfs_SYMLINK3res(cmdnfs_encodetype_t encodeflag,
00349                        int argc, char **argv,
00350                        int indent, FILE * out_stream, caddr_t p_nfs_struct);
00351 
00352 int cmdnfs_FSINFO3res(cmdnfs_encodetype_t encodeflag,
00353                       int argc, char **argv,
00354                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00355 
00356 int cmdnfs_PATHCONF3res(cmdnfs_encodetype_t encodeflag,
00357                         int argc, char **argv,
00358                         int indent, FILE * out_stream, caddr_t p_nfs_struct);
00359 
00360 int cmdnfs_RENAME2args(cmdnfs_encodetype_t encodeflag,
00361                        int argc, char **argv,
00362                        int indent, FILE * out_stream, caddr_t p_nfs_struct);
00363 
00364 int cmdnfs_STATFS2res(cmdnfs_encodetype_t encodeflag,
00365                       int argc, char **argv,
00366                       int indent, FILE * out_stream, caddr_t p_nfs_struct);
00367 
00368 static cmdnfs_funcdesc_t __attribute((__unused__)) mnt1_funcdesc[] =
00369 {
00370   {
00371   "mnt1_null", mnt_Null, mnt_Null_Free, cmdnfs_void, cmdnfs_void, "mnt1_null"},
00372   {
00373   "mnt1_mount", mnt_Mnt, mnt1_Mnt_Free, cmdnfs_dirpath, cmdnfs_fhstatus2,
00374         "mnt1_mount <dirpath>"},
00375   {
00376   "mnt1_dump", mnt_Dump, mnt_Dump_Free, cmdnfs_void, cmdnfs_mountlist, "mnt1_dump"},
00377   {
00378   "mnt1_umount", mnt_Umnt, mnt_Umnt_Free, cmdnfs_dirpath, cmdnfs_void,
00379         "mnt1_umount <dirpath>"},
00380   {
00381   "mnt1_umount_all", mnt_UmntAll, mnt_UmntAll_Free, cmdnfs_void, cmdnfs_void,
00382         "mnt1_umount_all"},
00383   {
00384   "mnt1_export", mnt_Export, mnt_Export_Free, cmdnfs_void, cmdnfs_exports, "mnt1_export"},
00385   {
00386   NULL, NULL, NULL, NULL, NULL, NULL}
00387 };
00388 
00389 static cmdnfsremote_funcdesc_t __attribute((__unused__)) mnt1_remote_funcdesc[] =
00390 {
00391   {
00392   "mnt1_null", mnt1_remote_Null, mnt1_remote_Null_Free, cmdnfs_void, cmdnfs_void,
00393         "mnt1_null"},
00394   {
00395   "mnt1_mount", mnt1_remote_Mnt, mnt1_remote_Mnt_Free, cmdnfs_dirpath, cmdnfs_fhstatus2,
00396         "mnt1_mount <dirpath>"},
00397   {
00398   "mnt1_dump", mnt1_remote_Dump, mnt1_remote_Dump_Free, cmdnfs_void, cmdnfs_mountlist,
00399         "mnt1_dump"},
00400   {
00401   "mnt1_umount", mnt1_remote_Umnt, mnt1_remote_Umnt_Free, cmdnfs_dirpath, cmdnfs_void,
00402         "mnt1_umount <dirpath>"},
00403   {
00404   "mnt1_umount_all", mnt1_remote_UmntAll, mnt1_remote_UmntAll_Free, cmdnfs_void,
00405         cmdnfs_void, "mnt1_umount_all"},
00406   {
00407   "mnt1_export", mnt1_remote_Export, mnt1_remote_Export_Free, cmdnfs_void,
00408         cmdnfs_exports, "mnt1_export"},
00409   {
00410   NULL, NULL, NULL, NULL, NULL, NULL}
00411 };
00412 
00413 static cmdnfs_funcdesc_t __attribute((__unused__)) mnt3_funcdesc[] =
00414 {
00415   {
00416   "mnt3_null", mnt_Null, mnt_Null_Free, cmdnfs_void, cmdnfs_void, "mnt3_null"},
00417   {
00418   "mnt3_mount", mnt_Mnt, mnt3_Mnt_Free, cmdnfs_dirpath, cmdnfs_mountres3,
00419         "mnt3_mount <dirpath>"},
00420   {
00421   "mnt3_dump", mnt_Dump, mnt_Dump_Free, cmdnfs_void, cmdnfs_mountlist, "mnt3_dump"},
00422   {
00423   "mnt3_umount", mnt_Umnt, mnt_Umnt_Free, cmdnfs_dirpath, cmdnfs_void,
00424         "mnt3_umount <dirpath>"},
00425   {
00426   "mnt3_umount_all", mnt_UmntAll, mnt_UmntAll_Free, cmdnfs_void, cmdnfs_void,
00427         "mnt3_umount_all"},
00428   {
00429   "mnt3_export", mnt_Export, mnt_Export_Free, cmdnfs_void, cmdnfs_exports, "mnt3_export"},
00430   {
00431   NULL, NULL, NULL, NULL, NULL, NULL}
00432 };
00433 
00434 static cmdnfsremote_funcdesc_t __attribute((__unused__)) mnt3_remote_funcdesc[] =
00435 {
00436   {
00437   "mnt3_null", mnt3_remote_Null, mnt3_remote_Null_Free, cmdnfs_void, cmdnfs_void,
00438         "mnt3_null"},
00439   {
00440   "mnt3_mount", mnt3_remote_Mnt, mnt3_remote_Mnt_Free, cmdnfs_dirpath, cmdnfs_mountres3,
00441         "mnt3_mount <dirpath>"},
00442   {
00443   "mnt3_dump", mnt3_remote_Dump, mnt3_remote_Dump_Free, cmdnfs_void, cmdnfs_mountlist,
00444         "mnt3_dump"},
00445   {
00446   "mnt3_umount", mnt3_remote_Umnt, mnt3_remote_Umnt_Free, cmdnfs_dirpath, cmdnfs_void,
00447         "mnt3_umount <dirpath>"},
00448   {
00449   "mnt3_umount_all", mnt3_remote_UmntAll, mnt3_remote_UmntAll_Free, cmdnfs_void,
00450         cmdnfs_void, "mnt3_umount_all"},
00451   {
00452   "mnt3_export", mnt3_remote_Export, mnt3_remote_Export_Free, cmdnfs_void,
00453         cmdnfs_exports, "mnt3_export"},
00454   {
00455   NULL, NULL, NULL, NULL, NULL, NULL}
00456 };
00457 
00458 static cmdnfs_funcdesc_t __attribute((__unused__)) nfs2_funcdesc[] =
00459 {
00460   {
00461   "nfs2_null", nfs_Null, nfs_Null_Free, cmdnfs_void, cmdnfs_void, "nfs2_null"},
00462   {
00463   "nfs2_getattr", nfs_Getattr, nfs_Getattr_Free, cmdnfs_fhandle2, cmdnfs_ATTR2res,
00464         "nfs2_getattr <@handle2>"},
00465   {
00466   "nfs2_lookup", nfs_Lookup, nfs2_Lookup_Free, cmdnfs_diropargs2, cmdnfs_DIROP2res,
00467         "nfs2_lookup <@dir_handle> <name>"},
00468   {
00469   "nfs2_readlink", nfs_Readlink, nfs2_Readlink_Free, cmdnfs_fhandle2,
00470         cmdnfs_READLINK2res, "nfs2_readlink <@symlink_handle2>"},
00471   {
00472   "nfs2_create", nfs_Create, nfs_Create_Free, cmdnfs_CREATE2args, cmdnfs_DIROP2res,
00473         "nfs2_create <@dir_handle2> <name>  [<attr>=<value>,<attr>=<value>,...]\n"
00474         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.uuuuuu), mtime."},
00475   {
00476   "nfs2_mkdir", nfs_Mkdir, nfs_Mkdir_Free, cmdnfs_CREATE2args, cmdnfs_DIROP2res,
00477         "nfs2_mkdir <@dir_handle2> <name>[<attr>=<value>,<attr>=<value>,...]\n"
00478         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.uuuuuu), mtime."},
00479   {
00480   "nfs2_remove", nfs_Remove, nfs_Remove_Free, cmdnfs_diropargs2, cmdnfs_nfsstat2,
00481         "nfs2_remove <@dir_handle> <name>"},
00482   {
00483   "nfs2_rmdir", nfs_Rmdir, nfs_Rmdir_Free, cmdnfs_diropargs2, cmdnfs_nfsstat2,
00484         "nfs2_rmdir <@dir_handle> <name>"},
00485   {
00486   "nfs2_root", nfs2_Root, nfs2_Root_Free, cmdnfs_void, cmdnfs_void,
00487         "nfs2_root (not supported)"},
00488   {
00489   "nfs2_writecache", nfs2_Writecache, nfs2_Writecache_Free, cmdnfs_void, cmdnfs_void,
00490         "nfs2_writecache (not supported)"},
00491   {
00492   "nfs2_setattr", nfs_Setattr, nfs_Setattr_Free, cmdnfs_SETATTR2args, cmdnfs_ATTR2res,
00493         "nfs2_setattr <@handle2> <attr>=<value>[,<attr>=<value>,...]\n"
00494         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.uuuuuu), mtime."},
00495   {
00496   "nfs2_readdir", nfs_Readdir, nfs2_Readdir_Free, cmdnfs_READDIR2args,
00497         cmdnfs_READDIR2res, "nfs2_readdir <@dir_handle> <cookie> <count>"},
00498   {
00499   "nfs2_rename", nfs_Rename, nfs_Rename_Free, cmdnfs_RENAME2args, cmdnfs_nfsstat2,
00500         "nfs2_rename <@src_handle> <src_name> <@tgt_handle> <tgt_name>"},
00501   {
00502   "nfs2_statfs", nfs_Fsstat, nfs_Fsstat_Free, cmdnfs_fhandle2, cmdnfs_STATFS2res,
00503         "nfs2_statfs <@handle2>"},
00504   {
00505   NULL, NULL, NULL, NULL, NULL, NULL}
00506 /*  nfs_Read,        xdr_READ2args,    xdr_READ2res,    "nfs_Read", 
00507   nfs_Write,       xdr_WRITE2args,   xdr_ATTR2res,    "nfs_Write", 
00508   nfs_Link,        xdr_LINK2args,    xdr_nfsstat2,    "nfs_Link", 
00509   nfs_Symlink,     xdr_SYMLINK2args, xdr_nfsstat2,    "nfs_Symlink", 
00510   nfs_Fsstat,      xdr_fhandle2,     xdr_STATFS2res,  "nfs_Fsstat"*/
00511 };
00512 
00513 static cmdnfsremote_funcdesc_t __attribute((__unused__)) nfs2_remote_funcdesc[] =
00514 {
00515   {
00516   "nfs2_null", nfs2_remote_Null, nfs2_remote_Null_Free, cmdnfs_void, cmdnfs_void,
00517         "nfs2_null"},
00518   {
00519   "nfs2_getattr", nfs2_remote_Getattr, nfs2_remote_Getattr_Free, cmdnfs_fhandle2,
00520         cmdnfs_ATTR2res, "nfs2_getattr <@handle2>"},
00521   {
00522   "nfs2_lookup", nfs2_remote_Lookup, nfs2_remote_Lookup_Free, cmdnfs_diropargs2,
00523         cmdnfs_DIROP2res, "nfs2_lookup <@dir_handle> <name>"},
00524   {
00525   "nfs2_readlink", nfs2_remote_Readlink, nfs2_remote_Readlink_Free, cmdnfs_fhandle2,
00526         cmdnfs_READLINK2res, "nfs2_readlink <@symlink_handle2>"},
00527   {
00528   "nfs2_create", nfs2_remote_Create, nfs2_remote_Create_Free, cmdnfs_CREATE2args,
00529         cmdnfs_DIROP2res,
00530         "nfs2_create <@dir_handle2> <name>  [<attr>=<value>,<attr>=<value>,...]\n"
00531         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.uuuuuu), mtime."},
00532   {
00533   "nfs2_mkdir", nfs2_remote_Mkdir, nfs2_remote_Mkdir_Free, cmdnfs_CREATE2args,
00534         cmdnfs_DIROP2res,
00535         "nfs2_mkdir <@dir_handle2> <name>[<attr>=<value>,<attr>=<value>,...]\n"
00536         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.uuuuuu), mtime."},
00537   {
00538   "nfs2_remove", nfs2_remote_Remove, nfs2_remote_Remove_Free, cmdnfs_diropargs2,
00539         cmdnfs_nfsstat2, "nfs2_remove <@dir_handle> <name>"},
00540   {
00541   "nfs2_rmdir", nfs2_remote_Rmdir, nfs2_remote_Rmdir_Free, cmdnfs_diropargs2,
00542         cmdnfs_nfsstat2, "nfs2_rmdir <@dir_handle> <name>"},
00543   {
00544   "nfs2_root", nfs2_remote_Root, nfs2_remote_Root_Free, cmdnfs_void, cmdnfs_void,
00545         "nfs2_root (not supported)"},
00546   {
00547   "nfs2_writecache", nfs2_remote_Writecache, nfs2_remote_Writecache_Free, cmdnfs_void,
00548         cmdnfs_void, "nfs2_writecache (not supported)"},
00549   {
00550   "nfs2_setattr", nfs2_remote_Setattr, nfs2_remote_Setattr_Free, cmdnfs_SETATTR2args,
00551         cmdnfs_ATTR2res,
00552         "nfs2_setattr <@handle2> <attr>=<value>[,<attr>=<value>,...]\n"
00553         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.uuuuuu), mtime."},
00554   {
00555   "nfs2_readdir", nfs2_remote_Readdir, nfs2_remote_Readdir_Free, cmdnfs_READDIR2args,
00556         cmdnfs_READDIR2res, "nfs2_readdir <@dir_handle> <cookie> <count>"},
00557   {
00558   "nfs2_rename", nfs2_remote_Rename, nfs2_remote_Rename_Free, cmdnfs_RENAME2args,
00559         cmdnfs_nfsstat2, "nfs2_rename <@src_handle> <src_name> <@tgt_handle> <tgt_name>"},
00560   {
00561   "nfs2_statfs", nfs2_remote_Fsstat, nfs2_remote_Fsstat_Free, cmdnfs_fhandle2,
00562         cmdnfs_STATFS2res, "nfs2_statfs <@handle2>"},
00563   {
00564   NULL, NULL, NULL, NULL, NULL, NULL}
00565 /*  nfs_Read,        xdr_READ2args,    xdr_READ2res,    "nfs_Read", 
00566   nfs_Write,       xdr_WRITE2args,   xdr_ATTR2res,    "nfs_Write", 
00567   nfs_Link,        xdr_LINK2args,    xdr_nfsstat2,    "nfs_Link", 
00568   nfs_Symlink,     xdr_SYMLINK2args, xdr_nfsstat2,    "nfs_Symlink", 
00569   nfs_Fsstat,      xdr_fhandle2,     xdr_STATFS2res,  "nfs_Fsstat"*/
00570 };
00571 
00572 static cmdnfs_funcdesc_t __attribute__ ((__unused__)) nfs3_funcdesc[] =
00573 {
00574   {
00575   "nfs3_null", nfs_Null, nfs_Null_Free, cmdnfs_void, cmdnfs_void, "nfs3_null"},
00576   {
00577   "nfs3_getattr", nfs_Getattr, nfs_Getattr_Free, cmdnfs_fhandle3, cmdnfs_GETATTR3res,
00578         "nfs3_getattr <@handle3>"},
00579   {
00580   "nfs3_lookup", nfs_Lookup, nfs3_Lookup_Free, cmdnfs_diropargs3, cmdnfs_LOOKUP3res,
00581         "nfs3_lookup <@dir_handle3> <name>"},
00582   {
00583   "nfs3_readdir", nfs_Readdir, nfs3_Readdir_Free, cmdnfs_READDIR3args,
00584         cmdnfs_READDIR3res,
00585         "nfs3_readdir <@dir_handle3> <cookie(uint64)> <cookieverf(8 bytes hexa)> <count>"},
00586   {
00587   "nfs3_readdirplus", nfs3_Readdirplus, nfs3_Readdirplus_Free, cmdnfs_READDIRPLUS3args,
00588         cmdnfs_READDIRPLUS3res,
00589         "nfs3_readdirplus <@dir_handle3> <cookie(uint64)> <cookieverf(8 bytes hexa)> <dircount> <maxcount>"},
00590   {
00591   "nfs3_readlink", nfs_Readlink, nfs3_Readlink_Free, cmdnfs_fhandle3,
00592         cmdnfs_READLINK3res, "nfs3_readlink <@symlnk_handle3>"},
00593   {
00594   "nfs3_access", nfs3_Access, nfs3_Access_Free, cmdnfs_ACCESS3args, cmdnfs_ACCESS3res,
00595         "nfs3_access <@handle3> <[R][M][L][E][D][X]>\n"
00596         "\twith flags: R(ead) L(ookup) M(odify) E(xtend) D(elete) (e)X(ecute)"},
00597   {
00598   "nfs3_create", nfs_Create, nfs_Create_Free, cmdnfs_CREATE3args, cmdnfs_CREATE3res,
00599         "nfs3_create <@dir_handle3> <name> <UNCHECKED|GUARDED> [<attr>=<value>},<attr>=<value>,...]\n"
00600         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.nnnnnnnnn), mtime.\n"
00601         "nfs3_create <@dir_handle3> <name> EXCLUSIVE <createverf(8 bytes hexa)>"},
00602   {
00603   "nfs3_mkdir", nfs_Mkdir, nfs_Mkdir_Free, cmdnfs_MKDIR3args, cmdnfs_MKDIR3res,
00604         "nfs3_mkdir <@dir_handle3> <name> [<attr>=<value>,<attr>=<value>,...]\n"
00605         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.nnnnnnnnn), mtime."},
00606   {
00607   "nfs3_remove", nfs_Remove, nfs_Remove_Free, cmdnfs_diropargs3, cmdnfs_REMOVE3res,
00608         "nfs3_remove <@dir_handle3> <name>"},
00609   {
00610   "nfs3_rmdir", nfs_Rmdir, nfs_Rmdir_Free, cmdnfs_diropargs3, cmdnfs_RMDIR3res,
00611         "nfs3_rmdir <@dir_handle3> <name>"},
00612   {
00613   "nfs3_fsstat", nfs_Fsstat, nfs_Fsstat_Free, cmdnfs_fhandle3, cmdnfs_FSSTAT3res,
00614         "nfs3_fsstat <@handle3>"},
00615   {
00616   "nfs3_setattr", nfs_Setattr, nfs_Setattr_Free, cmdnfs_SETATTR3args,
00617         cmdnfs_SETATTR3res,
00618         "nfs3_setattr <@handle3> <attr>=<value>,<attr>=<value>,... [check_obj_ctime(format: YYYYMMDDHHMMSS.nnnnnnnnn)]\n"
00619         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.nnnnnnnnn), mtime."},
00620   {
00621   "nfs3_rename", nfs_Rename, nfs_Rename_Free, cmdnfs_RENAME3args, cmdnfs_RENAME3res,
00622         "nfs3_rename  <@from_dir_handle3> <from_name> <@to_dir_handle3> <to_name>"},
00623   {
00624   "nfs3_link", nfs_Link, nfs_Link_Free, cmdnfs_LINK3args, cmdnfs_LINK3res,
00625         "nfs3_link <@handle3> <@link_dir_handle3> <link_name>"},
00626   {
00627   "nfs3_symlink", nfs_Symlink, nfs_Symlink_Free, cmdnfs_SYMLINK3args,
00628         cmdnfs_SYMLINK3res,
00629         "nfs3_symlink <@dir_handle3> <name> [<attr>=<value>},<attr>=<value>,...] <symlink_data>"},
00630   {
00631   "nfs3_fsinfo", nfs3_Fsinfo, nfs3_Fsinfo_Free, cmdnfs_fhandle3, cmdnfs_FSINFO3res,
00632         "nfs3_fsinfo <@root_hdl3>"},
00633   {
00634   "nfs3_pathconf", nfs3_Pathconf, nfs3_Pathconf_Free, cmdnfs_fhandle3,
00635         cmdnfs_PATHCONF3res, "nfs3_pathconf <@handle3>"},
00636   {
00637   NULL, NULL, NULL, NULL, NULL, NULL}
00638 /*
00639   nfs_Read,         xdr_READ3args,        xdr_READ3res,        "nfs_Read", 
00640   nfs_Write,        xdr_WRITE3args,       xdr_WRITE3res,       "nfs_Write", 
00641   nfs3_Mknod,       xdr_MKNOD3args,       xdr_MKNOD3res,       "nfs3_Mknod", 
00642   nfs3_Commit,      xdr_COMMIT3args,      xdr_COMMIT3res,      "nfs3_Commit"
00643 */
00644 };
00645 
00646 static cmdnfsremote_funcdesc_t __attribute((__unused__)) nfs3_remote_funcdesc[] =
00647 {
00648   {
00649   "nfs3_null", nfs3_remote_Null, nfs3_remote_Null_Free, cmdnfs_void, cmdnfs_void,
00650         "nfs3_null"},
00651   {
00652   "nfs3_getattr", nfs3_remote_Getattr, nfs3_remote_Getattr_Free, cmdnfs_fhandle3,
00653         cmdnfs_GETATTR3res, "nfs3_getattr <@handle3>"},
00654   {
00655   "nfs3_lookup", nfs3_remote_Lookup, nfs3_remote_Lookup_Free, cmdnfs_diropargs3,
00656         cmdnfs_LOOKUP3res, "nfs3_lookup <@dir_handle3> <name>"},
00657   {
00658   "nfs3_readdir", nfs3_remote_Readdir, nfs3_remote_Readdir_Free, cmdnfs_READDIR3args,
00659         cmdnfs_READDIR3res,
00660         "nfs3_readdir <@dir_handle3> <cookie(uint64)> <cookieverf(8 bytes hexa)> <count>"},
00661   {
00662   "nfs3_readdirplus", nfs3_remote_Readdirplus, nfs3_remote_Readdirplus_Free,
00663         cmdnfs_READDIRPLUS3args, cmdnfs_READDIRPLUS3res,
00664         "nfs3_readdirplus <@dir_handle3> <cookie(uint64)> <cookieverf(8 bytes hexa)> <dircount> <maxcount>"},
00665   {
00666   "nfs3_readlink", nfs3_remote_Readlink, nfs3_remote_Readlink_Free, cmdnfs_fhandle3,
00667         cmdnfs_READLINK3res, "nfs3_readlink <@symlnk_handle3>"},
00668   {
00669   "nfs3_access", nfs3_remote_Access, nfs3_remote_Access_Free, cmdnfs_ACCESS3args,
00670         cmdnfs_ACCESS3res,
00671         "nfs3_access <@handle3> <[R][M][L][E][D][X]>\n"
00672         "\twith flags: R(ead) L(ookup) M(odify) E(xtend) D(elete) (e)X(ecute)"},
00673   {
00674   "nfs3_create", nfs3_remote_Create, nfs3_remote_Create_Free, cmdnfs_CREATE3args,
00675         cmdnfs_CREATE3res,
00676         "nfs3_create <@dir_handle3> <name> <UNCHECKED|GUARDED> [<attr>=<value>,<attr>=<value>,...]\n"
00677         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.nnnnnnnnn), mtime.\n"
00678         "nfs3_create <@dir_handle3> <name> EXCLUSIVE <createverf(8 bytes hexa)>"},
00679   {
00680   "nfs3_mkdir", nfs3_remote_Mkdir, nfs3_remote_Mkdir_Free, cmdnfs_MKDIR3args,
00681         cmdnfs_MKDIR3res,
00682         "nfs3_mkdir <@dir_handle3> <name> [<attr>=<value>,<attr>=<value>,...]\n"
00683         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.nnnnnnnnn), mtime."},
00684   {
00685   "nfs3_remove", nfs3_remote_Remove, nfs3_remote_Remove_Free, cmdnfs_diropargs3,
00686         cmdnfs_REMOVE3res, "nfs3_remove <@dir_handle3> <name>"},
00687   {
00688   "nfs3_rmdir", nfs3_remote_Rmdir, nfs3_remote_Rmdir_Free, cmdnfs_diropargs3,
00689         cmdnfs_RMDIR3res, "nfs3_rmdir <@dir_handle3> <name>"},
00690   {
00691   "nfs3_fsstat", nfs3_remote_Fsstat, nfs3_remote_Fsstat_Free, cmdnfs_fhandle3,
00692         cmdnfs_FSSTAT3res, "nfs3_fsstat <@handle3>"},
00693   {
00694   "nfs3_setattr", nfs3_remote_Setattr, nfs3_remote_Setattr_Free, cmdnfs_SETATTR3args,
00695         cmdnfs_SETATTR3res,
00696         "nfs3_setattr <@handle3> <attr>=<value>,<attr>=<value>,... [check_obj_ctime(format: YYYYMMDDHHMMSS.nnnnnnnnn)]\n"
00697         "\twhere <attr> can be: mode(octal value), uid, gid, size, atime(format: YYYYMMDDHHMMSS.nnnnnnnnn), mtime."},
00698   {
00699   "nfs3_rename", nfs3_remote_Rename, nfs3_remote_Rename_Free, cmdnfs_RENAME3args,
00700         cmdnfs_RENAME3res,
00701         "nfs3_rename  <@from_dir_handle3> <from_name> <@to_dir_handle3> <to_name>"},
00702   {
00703   "nfs3_link", nfs3_remote_Link, nfs3_remote_Link_Free, cmdnfs_LINK3args,
00704         cmdnfs_LINK3res, "nfs3_link <@handle3> <@link_dir_handle3> <link_name>"},
00705   {
00706   "nfs3_symlink", nfs3_remote_Symlink, nfs3_remote_Symlink_Free, cmdnfs_SYMLINK3args,
00707         cmdnfs_SYMLINK3res,
00708         "nfs3_symlink <@dir_handle3> <name> [<attr>=<value>},<attr>=<value>,...] <symlink_data>"},
00709   {
00710   "nfs3_fsinfo", nfs3_remote_Fsinfo, nfs3_remote_Fsinfo_Free, cmdnfs_fhandle3,
00711         cmdnfs_FSINFO3res, "nfs3_fsinfo <@root_hdl3>"},
00712   {
00713   "nfs3_pathconf", nfs3_remote_Pathconf, nfs3_remote_Pathconf_Free, cmdnfs_fhandle3,
00714         cmdnfs_PATHCONF3res, "nfs3_pathconf <@handle3>"},
00715   {
00716   NULL, NULL, NULL, NULL, NULL, NULL}
00717 /*
00718   nfs_Read,         xdr_READ3args,        xdr_READ3res,        "nfs_Read", 
00719   nfs_Write,        xdr_WRITE3args,       xdr_WRITE3res,       "nfs_Write", 
00720   nfs3_Mknod,       xdr_MKNOD3args,       xdr_MKNOD3res,       "nfs3_Mknod", 
00721   nfs3_Commit,      xdr_COMMIT3args,      xdr_COMMIT3res,      "nfs3_Commit"
00722 */
00723 };
00724 
00736 void print_nfsitem_line(FILE * out, fattr3 * attrib, char *name, char *target);
00737 
00746 void print_nfs_attributes(fattr3 * attrs, FILE * output);
00747 
00748 #endif