nfs-ganesha 1.4
|
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 }