nfs-ganesha 1.4

fsal_convert.c

Go to the documentation of this file.
00001 /*
00002  * vim:expandtab:shiftwidth=8:tabstop=8:
00003  */
00004 
00014 #ifdef HAVE_CONFIG_H
00015 #include "config.h"
00016 #endif
00017 #include "fsal_convert.h"
00018 #include "fsal_internal.h"
00019 #include <sys/types.h>
00020 #include <sys/stat.h>
00021 #include <errno.h>
00022 
00023 /* some ideas of conversion functions...
00024 
00025 int fs2fsal_error(int fs_errorcode);
00026 
00027 int fsal2fs_openflags( fsal_openflags_t fsal_flags, int * p_fs_flags );
00028 
00029 int fsal2fs_testperm(fsal_accessflags_t testperm);
00030 
00031 fsal_status_t fs2fsal_attributes(  <your fs attribute structure (input)>,
00032                                    fsal_attrib_list_t * p_fsalattr_out );
00033 
00034 fsal_accessmode_t fs2fsal_mode( <your fs object permission (input)> );
00035 
00036 void fsal2fs_mode( fsal_accessmode_t fsal_mode, <your fs mode type (output)> );
00037 
00038 fsal_nodetype_t  hpss2fsal_type( <your fs object type (input)> );
00039 
00040 fsal_u64_t fs2fsal_64( <your fs 64bits type> );
00041 
00042 <your fs 64bits type> fsal2hpss_64( fsal_u64_t fsal_size_in );
00043 
00044 fsal_fsid_t fs2fsal_fsid( <you fs fsid type> );
00045 
00046 fsal_status_t fsal2fs_attribset( fsal_handle_t  * p_fsal_handle,
00047                                  fsal_attrib_list_t  * p_attrib_set ,
00048                                 <depends on your fs way of setting attributes> );
00049 
00050 fsal_time_t fs2fsal_time( <your fs time structure> );
00051 
00052 <your fs time structure> fsal2fs_time(fsal_time_t in_time);
00053      
00054 */
00055 
00056 /* THOSE FUNCTIONS CAN BE USED FROM OUTSIDE THE MODULE : */
00057 
00067 mode_t fsal2unix_mode(fsal_accessmode_t fsal_mode)
00068 {
00069 
00070   mode_t out_mode = 0;
00071 
00072   if((fsal_mode & FSAL_MODE_SUID))
00073     out_mode |= S_ISUID;
00074   if((fsal_mode & FSAL_MODE_SGID))
00075     out_mode |= S_ISGID;
00076 
00077   if((fsal_mode & FSAL_MODE_RUSR))
00078     out_mode |= S_IRUSR;
00079   if((fsal_mode & FSAL_MODE_WUSR))
00080     out_mode |= S_IWUSR;
00081   if((fsal_mode & FSAL_MODE_XUSR))
00082     out_mode |= S_IXUSR;
00083   if((fsal_mode & FSAL_MODE_RGRP))
00084     out_mode |= S_IRGRP;
00085   if((fsal_mode & FSAL_MODE_WGRP))
00086     out_mode |= S_IWGRP;
00087   if((fsal_mode & FSAL_MODE_XGRP))
00088     out_mode |= S_IXGRP;
00089   if((fsal_mode & FSAL_MODE_ROTH))
00090     out_mode |= S_IROTH;
00091   if((fsal_mode & FSAL_MODE_WOTH))
00092     out_mode |= S_IWOTH;
00093   if((fsal_mode & FSAL_MODE_XOTH))
00094     out_mode |= S_IXOTH;
00095 
00096   return out_mode;
00097 
00098 }
00099 
00109 fsal_accessmode_t unix2fsal_mode(mode_t unix_mode)
00110 {
00111 
00112   fsal_accessmode_t fsalmode = 0;
00113 
00114   if(unix_mode & S_ISUID)
00115     fsalmode |= FSAL_MODE_SUID;
00116   if(unix_mode & S_ISGID)
00117     fsalmode |= FSAL_MODE_SGID;
00118 
00119   if(unix_mode & S_IRUSR)
00120     fsalmode |= FSAL_MODE_RUSR;
00121   if(unix_mode & S_IWUSR)
00122     fsalmode |= FSAL_MODE_WUSR;
00123   if(unix_mode & S_IXUSR)
00124     fsalmode |= FSAL_MODE_XUSR;
00125 
00126   if(unix_mode & S_IRGRP)
00127     fsalmode |= FSAL_MODE_RGRP;
00128   if(unix_mode & S_IWGRP)
00129     fsalmode |= FSAL_MODE_WGRP;
00130   if(unix_mode & S_IXGRP)
00131     fsalmode |= FSAL_MODE_XGRP;
00132 
00133   if(unix_mode & S_IROTH)
00134     fsalmode |= FSAL_MODE_ROTH;
00135   if(unix_mode & S_IWOTH)
00136     fsalmode |= FSAL_MODE_WOTH;
00137   if(unix_mode & S_IXOTH)
00138     fsalmode |= FSAL_MODE_XOTH;
00139 
00140   return fsalmode;
00141 
00142 }