summaryrefslogtreecommitdiff
path: root/hints/gnu.h
diff options
context:
space:
mode:
Diffstat (limited to 'hints/gnu.h')
-rw-r--r--hints/gnu.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/hints/gnu.h b/hints/gnu.h
new file mode 100644
index 0000000..02d247c
--- /dev/null
+++ b/hints/gnu.h
@@ -0,0 +1,88 @@
+/*
+ * Configuration for GNU
+ *
+ * For AFS support look at the end of this file
+ */
+
+/* See hints/none.h for a complete list of options with explanations */
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/syscall.h>
+#include <mntent.h>
+
+#include <rpc/rpc.h>
+#include <rpc/pmap_prot.h>
+#include <rpcsvc/rquota.h>
+/* #include "include/rquota.h" */
+#include <sys/socket.h>
+#include <netdb.h>
+
+#include <string.h>
+#include <stdio.h>
+
+/* definitions from sys/quota.h */
+#define USRQUOTA 0 /* element used for user quotas */
+#define GRPQUOTA 1 /* element used for group quotas */
+
+/*
+ * Command definitions for the 'quotactl' system call.
+ * The commands are broken into a main command defined below
+ * and a subcommand that is used to convey the type of
+ * quota that is being manipulated (see above).
+ */
+#define SUBCMDMASK 0x00ff
+#define SUBCMDSHIFT 8
+#define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
+
+/* declare an internal version of the quota block struct */
+typedef u_int64_t qsize_t;
+struct dqblk {
+ qsize_t dqb_ihardlimit; /* absolute limit on allocated inodes */
+ qsize_t dqb_isoftlimit; /* preferred inode limit */
+ qsize_t dqb_curinodes; /* current # allocated inodes */
+ qsize_t dqb_bhardlimit; /* absolute limit on disk blks alloc */
+ qsize_t dqb_bsoftlimit; /* preferred limit on disk blks */
+ qsize_t dqb_curblocks; /* current block count */
+ time_t dqb_btime; /* time limit for excessive disk use */
+ time_t dqb_itime; /* time limit for excessive inode use */
+};
+/* you can use this switch to hard-wire the quota API if it's not identified correctly */
+/* #define LINUX_API_VERSION 1 */ /* API range [1..3] */
+
+int linuxquota_query( const char * dev, int uid, int isgrp, struct dqblk * dqb );
+int linuxquota_setqlim( const char * dev, int uid, int isgrp, struct dqblk * dqb );
+int linuxquota_sync( const char * dev, int isgrp );
+
+
+#define Q_DIV(X) (X)
+#define Q_MUL(X) (X)
+#define DEV_QBSIZE 1024
+
+#define Q_CTL_V3
+#define CADR (caddr_t)
+
+#define MY_XDR
+
+#define MNTENT mntent
+
+#define GQR_STATUS status
+#define GQR_RQUOTA getquota_rslt_u.gqr_rquota
+
+#define QS_BHARD dqb_bhardlimit
+#define QS_BSOFT dqb_bsoftlimit
+#define QS_BCUR dqb_curblocks
+#define QS_FHARD dqb_ihardlimit
+#define QS_FSOFT dqb_isoftlimit
+#define QS_FCUR dqb_curinodes
+#define QS_BTIME dqb_btime
+#define QS_FTIME dqb_itime
+
+/* uncomment this is you're using NFS with a version of the quota tools < 3.0 */
+/* #define LINUX_RQUOTAD_BUG */
+
+/* enable support for extended quota RPC (i.e. quota RPC version 2) */
+/* note: could also be enabled by defining MY_XDR (and including "include/rquota.h") */
+#if defined (EXT_RQUOTAVERS)
+#define USE_EXT_RQUOTA
+#endif