/* Unix SMB/CIFS implementation. SYS QUOTA code constants Copyright (C) Stefan (metze) Metzmacher 2003 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _SYSQUOTAS_H #define _SYSQUOTAS_H #ifdef HAVE_SYS_QUOTAS /* Sometimes we need this on linux for linux/quota.h */ #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_ASM_TYPES_H #include #endif /* * This shouldn't be neccessary - it should be /usr/include/sys/quota.h * Unfortunately, RH7.1 ships with a different quota system using struct mem_dqblk * rather than the struct dqblk defined in /usr/include/sys/quota.h. * This means we must include linux/quota.h to have a hope of working on * RH7.1 systems. And it also means this breaks if the kernel is upgraded * to a Linus 2.4.x (where x > the minor number shipped with RH7.1) until * Linus synchronises with the AC patches. Sometimes I *hate* Linux :-). JRA. */ #ifdef HAVE_LINUX_QUOTA_H #include #elif defined(HAVE_SYS_QUOTA_H) #include #endif #if defined(HAVE_STRUCT_IF_DQBLK) # define SYS_DQBLK if_dqblk # define dqb_curblocks dqb_curspace/bsize #elif defined(HAVE_STRUCT_MEM_DQBLK) # define SYS_DQBLK mem_dqblk # define dqb_curblocks dqb_curspace/bsize #else /* STRUCT_DQBLK */ # define SYS_DQBLK dqblk #endif #ifndef Q_SETQLIM #define Q_SETQLIM Q_SETQUOTA #endif /********************************************* check for XFS QUOTA MANAGER *********************************************/ /* on linux */ #ifdef HAVE_LINUX_XQM_H # include # define HAVE_XFS_QUOTA #else # ifdef HAVE_XFS_XQM_H # include # define HAVE_XFS_QUOTA # else # ifdef HAVE_LINUX_DQBLK_XFS_H # include # define HAVE_XFS_QUOTA # endif # endif #endif /* on IRIX */ #ifdef Q_XGETQUOTA # ifndef HAVE_XFS_QUOTA # define HAVE_XFS_QUOTA # ifndef Q_XQUOTAON # define Q_XQUOTAON Q_QUOTAON # endif /* Q_XQUOTAON */ # ifndef Q_XQUOTAOFF # define Q_XQUOTAOFF Q_QUOTAOFF # endif /* Q_XQUOTAOFF */ # ifndef Q_XGETQSTAT # define Q_XGETQSTAT Q_GETQSTAT # endif /* Q_XGETQSTAT */ # endif /* HAVE_XFS_QUOTA */ #endif /* Q_XGETQUOTA */ #ifdef HAVE_XFS_QUOTA /* Linux has BBSIZE in * or * IRIX has BBSIZE in */ #ifdef HAVE_LINUX_XFS_FS_H #include #elif defined(HAVE_XFS_XFS_FS_H) #include #endif /* *_XFS_FS_H */ #ifndef BBSHIFT #define BBSHIFT 9 #endif /* BBSHIFT */ #ifndef BBSIZE #define BBSIZE (1< #define HAVE_MNTENT 1 /*#endif defined(HAVE_MNTENT_H)&&defined(HAVE_SETMNTENT)&&defined(HAVE_GETMNTENT)&&defined(HAVE_ENDMNTENT) */ #elif defined(HAVE_DEVNM_H)&&defined(HAVE_DEVNM) #include #endif /* defined(HAVE_DEVNM_H)&&defined(HAVE_DEVNM) */ #endif /* HAVE_SYS_QUOTAS */ #ifndef QUOTABLOCK_SIZE #define QUOTABLOCK_SIZE 1024 #endif /************************************************** Some stuff for the sys_quota api. **************************************************/ #define SMB_QUOTAS_NO_LIMIT ((SMB_BIG_UINT)(0)) #define SMB_QUOTAS_NO_SPACE ((SMB_BIG_UINT)(1)) typedef struct _SMB_DISK_QUOTA { enum SMB_QUOTA_TYPE qtype; SMB_BIG_UINT bsize; SMB_BIG_UINT hardlimit; /* In bsize units. */ SMB_BIG_UINT softlimit; /* In bsize units. */ SMB_BIG_UINT curblocks; /* In bsize units. */ SMB_BIG_UINT ihardlimit; /* inode hard limit. */ SMB_BIG_UINT isoftlimit; /* inode soft limit. */ SMB_BIG_UINT curinodes; /* Current used inodes. */ uint32 qflags; } SMB_DISK_QUOTA; #endif /*_SYSQUOTAS_H */