modules/vfs_default_quota.c

ソースコードを見る。

関数

static int default_quota_get_quota (vfs_handle_struct *handle, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dq)
static int default_quota_set_quota (vfs_handle_struct *handle, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dq)
NTSTATUS vfs_default_quota_init (void)

変数

static vfs_op_tuple default_quota_ops []


関数

static int default_quota_get_quota ( vfs_handle_struct handle,
enum SMB_QUOTA_TYPE  qtype,
unid_t  id,
SMB_DISK_QUOTA dq 
) [static]

vfs_default_quota.c95 行で定義されています。

参照先 errnounid_t::gidhandle_SMB_DISK_QUOTA::qflagsSMB_GROUP_FS_QUOTA_TYPESMB_GROUP_QUOTA_TYPESMB_USER_FS_QUOTA_TYPESMB_USER_QUOTA_TYPEunid_t::uid.

00096 {
00097         int ret = -1;
00098 
00099         if ((ret=SMB_VFS_NEXT_GET_QUOTA(handle, qtype, id, dq))!=0) {
00100                 return ret;
00101         }
00102 
00103         switch (qtype) {
00104                 case SMB_USER_QUOTA_TYPE:
00105                         /* we use id.uid == 0 for default quotas */
00106                         if ((id.uid==DEFAULT_QUOTA_UID(handle)) &&
00107                                 DEFAULT_QUOTA_UID_NOLIMIT(handle)) {
00108                                 SMB_QUOTAS_SET_NO_LIMIT(dq);
00109                         }
00110                         break;
00111 #ifdef HAVE_GROUP_QUOTA
00112                 case SMB_GROUP_QUOTA_TYPE:
00113                         /* we use id.gid == 0 for default quotas */
00114                         if ((id.gid==DEFAULT_QUOTA_GID(handle)) &&
00115                                 DEFAULT_QUOTA_GID_NOLIMIT(handle)) {
00116                                 SMB_QUOTAS_SET_NO_LIMIT(dq);
00117                         }
00118                         break;
00119 #endif /* HAVE_GROUP_QUOTA */
00120                 case SMB_USER_FS_QUOTA_TYPE:
00121                         {
00122                                 unid_t qid;
00123                                 uint32 qflags = dq->qflags;
00124                                 qid.uid = DEFAULT_QUOTA_UID(handle);
00125                                 SMB_VFS_NEXT_GET_QUOTA(handle, SMB_USER_QUOTA_TYPE, qid, dq);
00126                                 dq->qflags = qflags;
00127                         }
00128                         break;
00129 #ifdef HAVE_GROUP_QUOTA
00130                 case SMB_GROUP_FS_QUOTA_TYPE:
00131                         {
00132                                 unid_t qid;
00133                                 uint32 qflags = dq->qflags;
00134                                 qid.gid = DEFAULT_QUOTA_GID(handle);
00135                                 SMB_VFS_NEXT_GET_QUOTA(handle, SMB_GROUP_QUOTA_TYPE, qid, dq);
00136                                 dq->qflags = qflags;
00137                         }
00138                         break;
00139 #endif /* HAVE_GROUP_QUOTA */
00140                 default:
00141                         errno = ENOSYS;
00142                         return -1;
00143                         break;
00144         }
00145 
00146         return ret;
00147 }

static int default_quota_set_quota ( vfs_handle_struct handle,
enum SMB_QUOTA_TYPE  qtype,
unid_t  id,
SMB_DISK_QUOTA dq 
) [static]

vfs_default_quota.c149 行で定義されています。

参照先 errnounid_t::gidhandleSMB_GROUP_FS_QUOTA_TYPESMB_GROUP_QUOTA_TYPESMB_USER_FS_QUOTA_TYPESMB_USER_QUOTA_TYPEunid_t::uid.

00150 {
00151         int ret = -1;
00152 
00153         switch (qtype) {
00154                 case SMB_USER_QUOTA_TYPE:
00155                         /* we use id.uid == 0 for default quotas */
00156                         if ((id.uid==DEFAULT_QUOTA_UID(handle)) &&
00157                                 DEFAULT_QUOTA_UID_NOLIMIT(handle)) {
00158                                 return -1;
00159                         }
00160                         break;
00161 #ifdef HAVE_GROUP_QUOTA
00162                 case SMB_GROUP_QUOTA_TYPE:
00163                         /* we use id.gid == 0 for default quotas */
00164                         if ((id.gid==DEFAULT_QUOTA_GID(handle)) &&
00165                                 DEFAULT_QUOTA_GID_NOLIMIT(handle)) {
00166                                 return -1;
00167                         }
00168                         break;
00169 #endif /* HAVE_GROUP_QUOTA */
00170                 case SMB_USER_FS_QUOTA_TYPE:
00171                         break;
00172 #ifdef HAVE_GROUP_QUOTA
00173                 case SMB_GROUP_FS_QUOTA_TYPE:
00174                         break;
00175 #endif /* HAVE_GROUP_QUOTA */
00176                 default:
00177                         errno = ENOSYS;
00178                         return -1;
00179                         break;
00180         }
00181 
00182         if ((ret=SMB_VFS_NEXT_SET_QUOTA(handle, qtype, id, dq))!=0) {
00183                 return ret;
00184         }
00185 
00186         switch (qtype) {
00187                 case SMB_USER_QUOTA_TYPE:
00188                         break;
00189 #ifdef HAVE_GROUP_QUOTA
00190                 case SMB_GROUP_QUOTA_TYPE:
00191                         break;
00192 #endif /* HAVE_GROUP_QUOTA */
00193                 case SMB_USER_FS_QUOTA_TYPE:
00194                         {
00195                                 unid_t qid;
00196                                 qid.uid = DEFAULT_QUOTA_UID(handle);
00197                                 ret = SMB_VFS_NEXT_SET_QUOTA(handle, SMB_USER_QUOTA_TYPE, qid, dq);
00198                         }
00199                         break;
00200 #ifdef HAVE_GROUP_QUOTA
00201                 case SMB_GROUP_FS_QUOTA_TYPE:
00202                         {
00203                                 unid_t qid;
00204                                 qid.gid = DEFAULT_QUOTA_GID(handle);
00205                                 ret = SMB_VFS_NEXT_SET_QUOTA(handle, SMB_GROUP_QUOTA_TYPE, qid, dq);
00206                         }
00207                         break;
00208 #endif /* HAVE_GROUP_QUOTA */
00209                 default:
00210                         errno = ENOSYS;
00211                         return -1;
00212                         break;
00213         }
00214 
00215         return ret;
00216 }

NTSTATUS vfs_default_quota_init ( void   ) 

vfs_default_quota.c228 行で定義されています。

参照先 default_quota_opssmb_register_vfs().

00229 {
00230         return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, DEFAULT_QUOTA_NAME, default_quota_ops);
00231 }


変数

vfs_op_tuple default_quota_ops[] [static]

初期値:

vfs_default_quota.c220 行で定義されています。

参照元 vfs_default_quota_init().


Sambaに対してSat Aug 29 21:23:51 2009に生成されました。  doxygen 1.4.7