xref: /openbsd-src/lib/librpcsvc/rquota.x (revision 043fbe51c197dbbcd422e917b65f765d8b5f8874)
1*043fbe51Sderaadt /*	$OpenBSD: rquota.x,v 1.4 2009/10/27 23:59:30 deraadt Exp $	*/
2c7940187Sniklas 
3df930be7Sderaadt /*
4df930be7Sderaadt  * Remote quota protocol
5df930be7Sderaadt  * Requires unix authentication
6df930be7Sderaadt  */
7df930be7Sderaadt 
8df930be7Sderaadt #ifndef RPC_HDR
9df930be7Sderaadt #endif
10df930be7Sderaadt 
11df930be7Sderaadt const RQ_PATHLEN = 1024;
12df930be7Sderaadt 
13df930be7Sderaadt struct getquota_args {
14df930be7Sderaadt 	string gqa_pathp<RQ_PATHLEN>;	/* path to filesystem of interest */
15df930be7Sderaadt 	int gqa_uid;			/* inquire about quota for uid */
16df930be7Sderaadt };
17df930be7Sderaadt 
18df930be7Sderaadt /*
19df930be7Sderaadt  * remote quota structure
20df930be7Sderaadt  */
21df930be7Sderaadt struct rquota {
22df930be7Sderaadt 	int rq_bsize;			/* block size for block counts */
23df930be7Sderaadt 	bool rq_active;			/* indicates whether quota is active */
24df930be7Sderaadt 	unsigned int rq_bhardlimit;	/* absolute limit on disk blks alloc */
25df930be7Sderaadt 	unsigned int rq_bsoftlimit;	/* preferred limit on disk blks */
26df930be7Sderaadt 	unsigned int rq_curblocks;	/* current block count */
27df930be7Sderaadt 	unsigned int rq_fhardlimit;	/* absolute limit on allocated files */
28df930be7Sderaadt 	unsigned int rq_fsoftlimit;	/* preferred file limit */
29df930be7Sderaadt 	unsigned int rq_curfiles;	/* current # allocated files */
30df930be7Sderaadt 	unsigned int rq_btimeleft;	/* time left for excessive disk use */
31df930be7Sderaadt 	unsigned int rq_ftimeleft;	/* time left for excessive files */
32df930be7Sderaadt };
33df930be7Sderaadt 
34df930be7Sderaadt enum gqr_status {
35df930be7Sderaadt 	Q_OK = 1,		/* quota returned */
36df930be7Sderaadt 	Q_NOQUOTA = 2,		/* noquota for uid */
37df930be7Sderaadt 	Q_EPERM = 3		/* no permission to access quota */
38df930be7Sderaadt };
39df930be7Sderaadt 
40df930be7Sderaadt union getquota_rslt switch (gqr_status status) {
41df930be7Sderaadt case Q_OK:
42df930be7Sderaadt 	rquota gqr_rquota;	/* valid if status == Q_OK */
43df930be7Sderaadt case Q_NOQUOTA:
44df930be7Sderaadt 	void;
45df930be7Sderaadt case Q_EPERM:
46df930be7Sderaadt 	void;
47df930be7Sderaadt };
48df930be7Sderaadt 
49df930be7Sderaadt program RQUOTAPROG {
50df930be7Sderaadt 	version RQUOTAVERS {
51df930be7Sderaadt 		/*
52df930be7Sderaadt 		 * Get all quotas
53df930be7Sderaadt 		 */
54df930be7Sderaadt 		getquota_rslt
55df930be7Sderaadt 		RQUOTAPROC_GETQUOTA(getquota_args) = 1;
56df930be7Sderaadt 
57df930be7Sderaadt 		/*
58df930be7Sderaadt 		 * Get active quotas only
59df930be7Sderaadt 		 */
60df930be7Sderaadt 		getquota_rslt
61df930be7Sderaadt 		RQUOTAPROC_GETACTIVEQUOTA(getquota_args) = 2;
62df930be7Sderaadt 	} = 1;
63df930be7Sderaadt } = 100011;
64