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#ifndef RPC_HDR 10%#include <sys/cdefs.h> 11%__FBSDID("$FreeBSD$"); 12#endif 13 14const RQ_PATHLEN = 1024; 15 16struct sq_dqblk { 17 unsigned int rq_bhardlimit; /* absolute limit on disk blks alloc */ 18 unsigned int rq_bsoftlimit; /* preferred limit on disk blks */ 19 unsigned int rq_curblocks; /* current block count */ 20 unsigned int rq_fhardlimit; /* absolute limit on allocated files */ 21 unsigned int rq_fsoftlimit; /* preferred file limit */ 22 unsigned int rq_curfiles; /* current # allocated files */ 23 unsigned int rq_btimeleft; /* time left for excessive disk use */ 24 unsigned int rq_ftimeleft; /* time left for excessive files */ 25}; 26 27struct getquota_args { 28 string gqa_pathp<RQ_PATHLEN>; /* path to filesystem of interest */ 29 int gqa_uid; /* Inquire about quota for uid */ 30}; 31 32struct setquota_args { 33 int sqa_qcmd; 34 string sqa_pathp<RQ_PATHLEN>; /* path to filesystem of interest */ 35 int sqa_id; /* Set quota for uid */ 36 sq_dqblk sqa_dqblk; 37}; 38 39struct ext_getquota_args { 40 string gqa_pathp<RQ_PATHLEN>; /* path to filesystem of interest */ 41 int gqa_type; /* Type of quota info is needed about */ 42 int gqa_id; /* Inquire about quota for id */ 43}; 44 45struct ext_setquota_args { 46 int sqa_qcmd; 47 string sqa_pathp<RQ_PATHLEN>; /* path to filesystem of interest */ 48 int sqa_id; /* Set quota for id */ 49 int sqa_type; /* Type of quota to set */ 50 sq_dqblk sqa_dqblk; 51}; 52 53/* 54 * remote quota structure 55 */ 56struct rquota { 57 int rq_bsize; /* block size for block counts */ 58 bool rq_active; /* indicates whether quota is active */ 59 unsigned int rq_bhardlimit; /* absolute limit on disk blks alloc */ 60 unsigned int rq_bsoftlimit; /* preferred limit on disk blks */ 61 unsigned int rq_curblocks; /* current block count */ 62 unsigned int rq_fhardlimit; /* absolute limit on allocated files */ 63 unsigned int rq_fsoftlimit; /* preferred file limit */ 64 unsigned int rq_curfiles; /* current # allocated files */ 65 unsigned int rq_btimeleft; /* time left for excessive disk use */ 66 unsigned int rq_ftimeleft; /* time left for excessive files */ 67}; 68 69enum gqr_status { 70 Q_OK = 1, /* quota returned */ 71 Q_NOQUOTA = 2, /* noquota for uid */ 72 Q_EPERM = 3 /* no permission to access quota */ 73}; 74 75union getquota_rslt switch (gqr_status status) { 76case Q_OK: 77 rquota gqr_rquota; /* valid if status == Q_OK */ 78case Q_NOQUOTA: 79 void; 80case Q_EPERM: 81 void; 82}; 83 84union setquota_rslt switch (gqr_status status) { 85case Q_OK: 86 rquota sqr_rquota; /* valid if status == Q_OK */ 87case Q_NOQUOTA: 88 void; 89case Q_EPERM: 90 void; 91}; 92 93program RQUOTAPROG { 94 version RQUOTAVERS { 95 /* 96 * Get all quotas 97 */ 98 getquota_rslt 99 RQUOTAPROC_GETQUOTA(getquota_args) = 1; 100 101 /* 102 * Get active quotas only 103 */ 104 getquota_rslt 105 RQUOTAPROC_GETACTIVEQUOTA(getquota_args) = 2; 106 107 /* 108 * Set all quotas 109 */ 110 setquota_rslt 111 RQUOTAPROC_SETQUOTA(setquota_args) = 3; 112 113 /* 114 * Get active quotas only 115 */ 116 setquota_rslt 117 RQUOTAPROC_SETACTIVEQUOTA(setquota_args) = 4; 118 } = 1; 119 version EXT_RQUOTAVERS { 120 /* 121 * Get all quotas 122 */ 123 getquota_rslt 124 RQUOTAPROC_GETQUOTA(ext_getquota_args) = 1; 125 126 /* 127 * Get active quotas only 128 */ 129 getquota_rslt 130 RQUOTAPROC_GETACTIVEQUOTA(ext_getquota_args) = 2; 131 132 /* 133 * Set all quotas 134 */ 135 setquota_rslt 136 RQUOTAPROC_SETQUOTA(ext_setquota_args) = 3; 137 138 /* 139 * Set active quotas only 140 */ 141 setquota_rslt 142 RQUOTAPROC_SETACTIVEQUOTA(ext_setquota_args) = 4; 143 } = 2; 144} = 100011; 145