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 14 const RQ_PATHLEN = 1024; 15 16 struct 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 27 struct getquota_args { 28 string gqa_pathp<RQ_PATHLEN>; /* path to filesystem of interest */ 29 int gqa_uid; /* Inquire about quota for uid */ 30 }; 31 32 struct 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 39 struct 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 45 struct 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 */ 56 struct 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 69 enum 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 75 union getquota_rslt switch (gqr_status status) { 76 case Q_OK: 77 rquota gqr_rquota; /* valid if status == Q_OK */ 78 case Q_NOQUOTA: 79 void; 80 case Q_EPERM: 81 void; 82 }; 83 84 union setquota_rslt switch (gqr_status status) { 85 case Q_OK: 86 rquota sqr_rquota; /* valid if status == Q_OK */ 87 case Q_NOQUOTA: 88 void; 89 case Q_EPERM: 90 void; 91 }; 92 93 program 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