1 #pragma once 2 3 #ifdef __cplusplus 4 extern "C" { 5 #endif 6 7 #include <stdint.h> 8 9 #define _LINUX_QUOTA_VERSION 2 10 11 #define dbtob(num) ((num) << 10) 12 #define btodb(num) ((num) >> 10) 13 #define fs_to_dq_blocks(num, blksize) (((num) * (blksize)) / 1024) 14 15 #define MAX_IQ_TIME 604800 16 #define MAX_DQ_TIME 604800 17 18 #define MAXQUOTAS 2 19 #define USRQUOTA 0 20 #define GRPQUOTA 1 21 22 #define INITQFNAMES {"user", "group", "undefined"}; 23 24 #define QUOTAFILENAME "quota" 25 #define QUOTAGROUP "staff" 26 27 #define NR_DQHASH 43 28 #define NR_DQUOTS 256 29 30 #define SUBCMDMASK 0x00ff 31 #define SUBCMDSHIFT 8 32 #define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type)&SUBCMDMASK)) 33 34 #define Q_SYNC 0x800001 35 #define Q_QUOTAON 0x800002 36 #define Q_QUOTAOFF 0x800003 37 #define Q_GETFMT 0x800004 38 #define Q_GETINFO 0x800005 39 #define Q_SETINFO 0x800006 40 #define Q_GETQUOTA 0x800007 41 #define Q_SETQUOTA 0x800008 42 43 #define QFMT_VFS_OLD 1 44 #define QFMT_VFS_V0 2 45 #define QFMT_OCFS2 3 46 #define QFMT_VFS_V1 4 47 48 #define QIF_BLIMITS 1 49 #define QIF_SPACE 2 50 #define QIF_ILIMITS 4 51 #define QIF_INODES 8 52 #define QIF_BTIME 16 53 #define QIF_ITIME 32 54 #define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS) 55 #define QIF_USAGE (QIF_SPACE | QIF_INODES) 56 #define QIF_TIMES (QIF_BTIME | QIF_ITIME) 57 #define QIF_ALL (QIF_LIMITS | QIF_USAGE | QIF_TIMES) 58 59 struct dqblk { 60 uint64_t dqb_bhardlimit; 61 uint64_t dqb_bsoftlimit; 62 uint64_t dqb_curspace; 63 uint64_t dqb_ihardlimit; 64 uint64_t dqb_isoftlimit; 65 uint64_t dqb_curinodes; 66 uint64_t dqb_btime; 67 uint64_t dqb_itime; 68 uint32_t dqb_valid; 69 }; 70 71 #define dq_bhardlimit dq_dqb.dqb_bhardlimit 72 #define dq_bsoftlimit dq_dqb.dqb_bsoftlimit 73 #define dq_curspace dq_dqb.dqb_curspace 74 #define dq_valid dq_dqb.dqb_valid 75 #define dq_ihardlimit dq_dqb.dqb_ihardlimit 76 #define dq_isoftlimit dq_dqb.dqb_isoftlimit 77 #define dq_curinodes dq_dqb.dqb_curinodes 78 #define dq_btime dq_dqb.dqb_btime 79 #define dq_itime dq_dqb.dqb_itime 80 81 #define dqoff(UID) ((long long)(UID) * sizeof(struct dqblk)) 82 83 #define IIF_BGRACE 1 84 #define IIF_IGRACE 2 85 #define IIF_FLAGS 4 86 #define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS) 87 88 struct dqinfo { 89 uint64_t dqi_bgrace; 90 uint64_t dqi_igrace; 91 uint32_t dqi_flags; 92 uint32_t dqi_valid; 93 }; 94 95 int quotactl(int, const char*, int, char*); 96 97 #ifdef __cplusplus 98 } 99 #endif 100