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