1/*
2 * Remote quota protocol
3 * Requires unix authentication
4 */
5
6#ifndef RPC_HDR
7%#include <sys/cdefs.h>
8%#ifndef __lint__
9%/*static char sccsid[] = "from: @(#)rquota.x 1.2 87/09/20 Copyr 1987 Sun Micro";*/
10%/*static char sccsid[] = "from: @(#)rquota.x	2.1 88/08/01 4.0 RPCSRC";*/
11%__RCSID("$NetBSD: rquota.x,v 1.5 2003/02/14 14:55:58 bouyer Exp $");
12%#endif /* not __lint__ */
13#endif
14
15const RQ_PATHLEN = 1024;
16
17struct getquota_args {
18	string gqa_pathp<RQ_PATHLEN>;  	/* path to filesystem of interest */
19	int gqa_uid;	        	/* inquire about quota for uid */
20};
21
22const RQUOTA_MAXQUOTAS = 0x02;
23const RQUOTA_USRQUOTA = 0x00;
24const RQUOTA_GRPQUOTA = 0x01;
25
26struct ext_getquota_args {
27	string gqa_pathp<RQ_PATHLEN>;  	/* path to filesystem of interest */
28	int gqa_type;			/* type of quota */
29	int gqa_id;	        	/* inquire about quota for uid/gid */
30};
31
32/*
33 * remote quota structure
34 */
35struct rquota {
36	int rq_bsize;			/* block size for block counts */
37	bool rq_active;  		/* indicates whether quota is active */
38	unsigned int rq_bhardlimit;	/* absolute limit on disk blks alloc */
39	unsigned int rq_bsoftlimit;	/* preferred limit on disk blks */
40	unsigned int rq_curblocks;	/* current block count */
41	unsigned int rq_fhardlimit;	/* absolute limit on allocated files */
42	unsigned int rq_fsoftlimit;	/* preferred file limit */
43	unsigned int rq_curfiles;	/* current # allocated files */
44	unsigned int rq_btimeleft;	/* time left for excessive disk use */
45	unsigned int rq_ftimeleft;	/* time left for excessive files */
46};
47
48enum gqr_status {
49	Q_OK = 1,		/* quota returned */
50	Q_NOQUOTA = 2,  	/* noquota for uid */
51	Q_EPERM = 3		/* no permission to access quota */
52};
53
54union getquota_rslt switch (gqr_status status) {
55case Q_OK:
56	rquota gqr_rquota;	/* valid if status == Q_OK */
57case Q_NOQUOTA:
58	void;
59case Q_EPERM:
60	void;
61};
62
63program RQUOTAPROG {
64	version RQUOTAVERS {
65		/*
66		 * Get all quotas
67		 */
68		getquota_rslt
69		RQUOTAPROC_GETQUOTA(getquota_args) = 1;
70
71		/*
72	 	 * Get active quotas only
73		 */
74		getquota_rslt
75		RQUOTAPROC_GETACTIVEQUOTA(getquota_args) = 2;
76	} = 1;
77	version EXT_RQUOTAVERS {
78		/*
79		 * Get all quotas
80		 */
81		getquota_rslt
82		RQUOTAPROC_GETQUOTA(ext_getquota_args) = 1;
83
84		/*
85	 	 * Get active quotas only
86		 */
87		getquota_rslt
88		RQUOTAPROC_GETACTIVEQUOTA(ext_getquota_args) = 2;
89	} = 2;
90} = 100011;
91