関数 | |
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.c の 95 行で定義されています。
参照先 errno・unid_t::gid・handle・_SMB_DISK_QUOTA::qflags・SMB_GROUP_FS_QUOTA_TYPE・SMB_GROUP_QUOTA_TYPE・SMB_USER_FS_QUOTA_TYPE・SMB_USER_QUOTA_TYPE・unid_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.c の 149 行で定義されています。
参照先 errno・unid_t::gid・handle・SMB_GROUP_FS_QUOTA_TYPE・SMB_GROUP_QUOTA_TYPE・SMB_USER_FS_QUOTA_TYPE・SMB_USER_QUOTA_TYPE・unid_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.c の 228 行で定義されています。
参照先 default_quota_ops・smb_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] |
初期値:
{ {SMB_VFS_OP(default_quota_get_quota), SMB_VFS_OP_GET_QUOTA, SMB_VFS_LAYER_TRANSPARENT}, {SMB_VFS_OP(default_quota_set_quota), SMB_VFS_OP_SET_QUOTA, SMB_VFS_LAYER_TRANSPARENT}, {SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP} }
vfs_default_quota.c の 220 行で定義されています。