1#pragma once
2
3#ifdef __cplusplus
4extern "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
59struct 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
88struct dqinfo {
89    uint64_t dqi_bgrace;
90    uint64_t dqi_igrace;
91    uint32_t dqi_flags;
92    uint32_t dqi_valid;
93};
94
95int quotactl(int, const char*, int, char*);
96
97#ifdef __cplusplus
98}
99#endif
100