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