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