]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - include/rpcsvc/rquota.x
Merge one true awk from 2024-01-22 for the Awk Second Edition support
[FreeBSD/FreeBSD.git] / include / rpcsvc / rquota.x
1 /*
2  * Remote quota protocol
3  * Requires unix authentication
4  */
5
6 const RQ_PATHLEN = 1024;
7
8 struct sq_dqblk {
9         unsigned int rq_bhardlimit;     /* absolute limit on disk blks alloc */
10         unsigned int rq_bsoftlimit;     /* preferred limit on disk blks */
11         unsigned int rq_curblocks;      /* current block count */
12         unsigned int rq_fhardlimit;     /* absolute limit on allocated files */
13         unsigned int rq_fsoftlimit;     /* preferred file limit */
14         unsigned int rq_curfiles;       /* current # allocated files */
15         unsigned int rq_btimeleft;      /* time left for excessive disk use */
16         unsigned int rq_ftimeleft;      /* time left for excessive files */
17 };
18
19 struct getquota_args {
20         string gqa_pathp<RQ_PATHLEN>;   /* path to filesystem of interest */
21         int gqa_uid;                    /* Inquire about quota for uid */
22 };
23
24 struct setquota_args {
25         int sqa_qcmd;
26         string sqa_pathp<RQ_PATHLEN>;   /* path to filesystem of interest */
27         int sqa_id;                     /* Set quota for uid */
28         sq_dqblk sqa_dqblk;
29 };
30
31 struct ext_getquota_args {
32         string gqa_pathp<RQ_PATHLEN>;   /* path to filesystem of interest */
33         int gqa_type;                   /* Type of quota info is needed about */
34         int gqa_id;                     /* Inquire about quota for id */
35 };
36
37 struct ext_setquota_args {
38         int sqa_qcmd;
39         string sqa_pathp<RQ_PATHLEN>;   /* path to filesystem of interest */
40         int sqa_id;                     /* Set quota for id */
41         int sqa_type;                   /* Type of quota to set */
42         sq_dqblk sqa_dqblk;
43 };
44
45 /*
46  * remote quota structure
47  */
48 struct rquota {
49         int rq_bsize;                   /* block size for block counts */
50         bool rq_active;                 /* indicates whether quota is active */
51         unsigned int rq_bhardlimit;     /* absolute limit on disk blks alloc */
52         unsigned int rq_bsoftlimit;     /* preferred limit on disk blks */
53         unsigned int rq_curblocks;      /* current block count */
54         unsigned int rq_fhardlimit;     /* absolute limit on allocated files */
55         unsigned int rq_fsoftlimit;     /* preferred file limit */
56         unsigned int rq_curfiles;       /* current # allocated files */
57         unsigned int rq_btimeleft;      /* time left for excessive disk use */
58         unsigned int rq_ftimeleft;      /* time left for excessive files */
59 };      
60
61 enum gqr_status {
62         Q_OK = 1,               /* quota returned */
63         Q_NOQUOTA = 2,          /* noquota for uid */
64         Q_EPERM = 3             /* no permission to access quota */
65 };
66
67 union getquota_rslt switch (gqr_status status) {
68 case Q_OK:
69         rquota gqr_rquota;      /* valid if status == Q_OK */
70 case Q_NOQUOTA:
71         void;
72 case Q_EPERM:
73         void;
74 };
75
76 union setquota_rslt switch (gqr_status status) {
77 case Q_OK:
78         rquota sqr_rquota;      /* valid if status == Q_OK */
79 case Q_NOQUOTA:
80         void;
81 case Q_EPERM:
82         void;
83 };
84
85 program RQUOTAPROG {
86         version RQUOTAVERS {
87                 /*
88                  * Get all quotas
89                  */
90                 getquota_rslt
91                 RQUOTAPROC_GETQUOTA(getquota_args) = 1;
92
93                 /*
94                  * Get active quotas only
95                  */
96                 getquota_rslt
97                 RQUOTAPROC_GETACTIVEQUOTA(getquota_args) = 2;
98
99                 /*
100                  * Set all quotas
101                  */
102                 setquota_rslt
103                 RQUOTAPROC_SETQUOTA(setquota_args) = 3;
104
105                 /*
106                  * Get active quotas only
107                  */
108                 setquota_rslt
109                 RQUOTAPROC_SETACTIVEQUOTA(setquota_args) = 4;
110         } = 1;
111         version EXT_RQUOTAVERS {
112                 /*
113                  * Get all quotas
114                  */
115                 getquota_rslt
116                 RQUOTAPROC_GETQUOTA(ext_getquota_args) = 1;
117
118                 /*
119                  * Get active quotas only
120                  */
121                 getquota_rslt
122                 RQUOTAPROC_GETACTIVEQUOTA(ext_getquota_args) = 2;
123
124                 /*
125                  * Set all quotas
126                  */
127                 setquota_rslt
128                 RQUOTAPROC_SETQUOTA(ext_setquota_args) = 3;
129
130                 /*
131                  * Set active quotas only
132                  */
133                 setquota_rslt
134                 RQUOTAPROC_SETACTIVEQUOTA(ext_setquota_args) = 4;
135         } = 2;
136 } = 100011;