X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fafpd%2Funix.h;h=c663ecac2371ac98dc7915ee72ac700fb9b8116f;hb=4054f4b3c85ecab060dafd46c0d3632cadbb5803;hp=19dba748d9f943b9db9c2e4fb1d6b9b09de498d5;hpb=6c1f3cff882955229cb9e0b94eca5e725817633b;p=netatalk.git diff --git a/etc/afpd/unix.h b/etc/afpd/unix.h index 19dba748..c663ecac 100644 --- a/etc/afpd/unix.h +++ b/etc/afpd/unix.h @@ -1,5 +1,5 @@ /* - * $Id: unix.h,v 1.7 2001-06-20 18:33:04 rufustfirefly Exp $ + * $Id: unix.h,v 1.23 2010-04-12 14:28:47 franklahm Exp $ */ #ifndef AFPD_UNIX_H @@ -9,6 +9,7 @@ #include #endif /* HAVE_SYS_CDEFS_H */ #include +#include "config.h" #include "volume.h" #if defined( sun ) && !defined( __svr4__ ) @@ -30,7 +31,8 @@ typedef int mode_t; #if defined(TRU64) #define f_frsize f_fsize #else /* TRU64 */ -#if defined(HAVE_SYS_STATVFS_H) || defined(__svr4__) +/* temp fix, was: defined(HAVE_SYS_STATVFS) || defined(__svr4__) */ +#if defined(__svr4__) || (defined(__NetBSD__) && (__NetBSD_Version__ >= 200040000)) #include #define statfs statvfs #else /* HAVE_SYS_STATVFS || __svr4__ */ @@ -42,6 +44,10 @@ typedef int mode_t; #include #endif /* __svr4__ || HAVE_SYS_MNTTAB_H */ +#if defined(__DragonFly__) +#define dqblk ufs_dqblk +#endif + #if defined(HAVE_SYS_MOUNT_H) || defined(BSD4_4) || \ defined(linux) || defined(ultrix) #include @@ -60,7 +66,10 @@ typedef int mode_t; #if defined(linux) || defined(ultrix) || defined(HAVE_QUOTA_H) #ifndef NEED_QUOTACTL_WRAPPER -#include +/*#include */ +/*long quotactl (int, const char *, unsigned int, caddr_t); */ +/* extern long quotactl (int, const char *, long, caddr_t); */ + #else /* ! NEED_QUOTACTL_WRAPPER */ #include #include @@ -84,17 +93,142 @@ typedef int mode_t; #include #endif /* _IBMR2 */ -extern int getnfsquota __P((const struct vol *, const int, const u_int32_t, - struct dqblk *)); +#include +#include +#include +#include "directory.h" + + +#if defined (linux) -extern int uquota_getvolspace __P((const struct vol *, VolSpace *, VolSpace *, - const u_int32_t)); +#define MAXQUOTAS 2 + +/* 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; /* Type in which we store size limitations */ +typedef u_int32_t qid_t; /* Type in which we store ids in memory */ + +struct dqblk { + qsize_t bsize; + 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 */ +}; + +/* API v1 command definitions */ +#define Q_V1_GETQUOTA 0x0300 +#define Q_V1_SYNC 0x0600 +#define Q_V1_SETQLIM 0x0700 +#define Q_V1_GETSTATS 0x0800 +/* API v2 command definitions */ +#define Q_V2_SYNC 0x0600 +#define Q_V2_SETQLIM 0x0700 +#define Q_V2_GETQUOTA 0x0D00 +#define Q_V2_GETSTATS 0x1100 +/* proc API command definitions */ +#define Q_V3_SYNC 0x800001 +#define Q_V3_GETQUOTA 0x800007 +#define Q_V3_SETQUOTA 0x800008 + +/* Interface versions */ +#define IFACE_UNSET 0 +#define IFACE_VFSOLD 1 +#define IFACE_VFSV0 2 +#define IFACE_GENERIC 3 + +#define DEV_QBSIZE 1024 + +struct dqblk_v3 { + u_int64_t dqb_bhardlimit; + u_int64_t dqb_bsoftlimit; + u_int64_t dqb_curspace; + u_int64_t dqb_ihardlimit; + u_int64_t dqb_isoftlimit; + u_int64_t dqb_curinodes; + u_int64_t dqb_btime; + u_int64_t dqb_itime; + u_int32_t dqb_valid; +}; + +struct dqblk_v2 { + unsigned int dqb_ihardlimit; + unsigned int dqb_isoftlimit; + unsigned int dqb_curinodes; + unsigned int dqb_bhardlimit; + unsigned int dqb_bsoftlimit; + qsize_t dqb_curspace; + time_t dqb_btime; + time_t dqb_itime; +}; + +struct dqstats_v2 { + u_int32_t lookups; + u_int32_t drops; + u_int32_t reads; + u_int32_t writes; + u_int32_t cache_hits; + u_int32_t allocated_dquots; + u_int32_t free_dquots; + u_int32_t syncs; + u_int32_t version; +}; + +struct dqblk_v1 { + u_int32_t dqb_bhardlimit; + u_int32_t dqb_bsoftlimit; + u_int32_t dqb_curblocks; + u_int32_t dqb_ihardlimit; + u_int32_t dqb_isoftlimit; + u_int32_t dqb_curinodes; + time_t dqb_btime; + time_t dqb_itime; +}; + +extern long quotactl (unsigned int, const char *, int, caddr_t); + + + +#endif /* linux */ + +extern int getnfsquota (struct vol *, const int, const u_int32_t, + struct dqblk *); + +extern int uquota_getvolspace (struct vol *, VolSpace *, VolSpace *, + const u_int32_t); #endif /* NO_QUOTA_SUPPORT */ -extern int gmem __P((const gid_t)); -extern int setdeskmode __P((const mode_t)); -extern int setdirmode __P((const mode_t, const int, const int)); -extern int setdeskowner __P((const uid_t, const gid_t)); -extern int setdirowner __P((const uid_t, const gid_t, const int)); +extern struct afp_options default_options; + +extern int gmem (const gid_t); +extern int setdeskmode (const mode_t); +extern int setdirunixmode (const struct vol *, const char *, mode_t); +extern int setdirmode (const struct vol *, const char *, mode_t); +extern int setdeskowner (const uid_t, const gid_t); +extern int setdirowner (const struct vol *, const char *, const uid_t, const gid_t); +extern int setfilunixmode (const struct vol *, struct path*, const mode_t); +extern int setfilowner (const struct vol *, const uid_t, const gid_t, struct path*); +extern void accessmode (char *, struct maccess *, struct dir *, struct stat *); + +#ifdef AFS + #define accessmode afsmode +#endif #endif /* UNIX_H */