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