1996-05-04 11:50:46 +04:00
# ifndef _INCLUDES_H
# define _INCLUDES_H
/*
2002-01-30 09:08:46 +03:00
Unix SMB / CIFS implementation .
1996-05-04 11:50:46 +04:00
Machine customisation and include handling
1998-01-22 16:27:43 +03:00
Copyright ( C ) Andrew Tridgell 1994 - 1998
2002-01-09 08:27:59 +03:00
Copyright ( C ) 2002 by Martin Pool < mbp @ samba . org >
1996-05-04 11:50:46 +04:00
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
2007-07-09 23:25:36 +04:00
the Free Software Foundation ; either version 3 of the License , or
1996-05-04 11:50:46 +04:00
( 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
2007-07-10 04:52:41 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
1996-05-04 11:50:46 +04:00
*/
2008-09-16 18:30:14 +04:00
# include "../replace/replace.h"
1998-10-07 11:55:14 +04:00
2011-02-15 08:19:46 +03:00
# if _SAMBA_BUILD_ == 4
# undef _SAMBA_BUILD_
# define _SAMBA_BUILD_ 3
# endif
2007-01-03 11:55:22 +03:00
/* make sure we have included the correct config.h */
# ifndef NO_CONFIG_H /* for some tests */
# ifndef CONFIG_H_IS_FROM_SAMBA
# error "make sure you have removed all config.h files from standalone builds!"
# error "the included config.h isn't from samba!"
# endif
# endif /* NO_CONFIG_H */
2006-05-24 18:38:11 +04:00
/* only do the C++ reserved word check when we compile
to include - - with - developer since too many systems
still have comflicts with their header files ( e . g . IRIX 6.4 ) */
2010-11-17 12:36:37 +03:00
# if !defined(__cplusplus) && defined(DEVELOPER) && defined(__linux__)
2005-06-25 00:25:18 +04:00
# define class #error DONT_USE_CPLUSPLUS_RESERVED_NAMES
2006-02-22 14:47:41 +03:00
# define private #error DONT_USE_CPLUSPLUS_RESERVED_NAMES
2005-06-25 00:25:18 +04:00
# define public #error DONT_USE_CPLUSPLUS_RESERVED_NAMES
2005-06-25 01:18:20 +04:00
# define protected #error DONT_USE_CPLUSPLUS_RESERVED_NAMES
2005-06-25 00:25:18 +04:00
# define template #error DONT_USE_CPLUSPLUS_RESERVED_NAMES
# define this #error DONT_USE_CPLUSPLUS_RESERVED_NAMES
# define new #error DONT_USE_CPLUSPLUS_RESERVED_NAMES
# define delete #error DONT_USE_CPLUSPLUS_RESERVED_NAMES
# define friend #error DONT_USE_CPLUSPLUS_RESERVED_NAMES
# endif
1998-07-29 07:08:05 +04:00
# include "local.h"
1996-05-04 11:50:46 +04:00
1998-07-29 07:08:05 +04:00
# ifdef SUNOS4
/* on SUNOS4 termios.h conflicts with sys/ioctl.h */
# undef HAVE_TERMIOS_H
1996-05-04 11:50:46 +04:00
# endif
1999-12-13 16:27:58 +03:00
# ifdef RELIANTUNIX
/*
* < unistd . h > has to be included before any other to get
2001-04-04 21:20:57 +04:00
* large file support on Reliant UNIX . Yes , it ' s broken : - ) .
1999-12-13 16:27:58 +03:00
*/
# ifdef HAVE_UNISTD_H
# include <unistd.h>
# endif
# endif /* RELIANTUNIX */
2006-09-19 02:49:20 +04:00
# include "system/dir.h"
# include "system/locale.h"
# include "system/time.h"
# include "system/wait.h"
1998-11-24 02:07:38 +03:00
# if defined(HAVE_RPC_RPC_H)
1999-12-13 16:27:58 +03:00
/*
* Check for AUTH_ERROR define conflict with rpc / rpc . h in prot . h .
*/
# if defined(HAVE_SYS_SECURITY_H) && defined(HAVE_RPC_AUTH_ERROR_CONFLICT)
# undef AUTH_ERROR
# endif
2004-09-08 03:30:27 +04:00
/*
* HP - UX 11. X has TCP_NODELAY and TCP_MAXSEG defined in < netinet / tcp . h > which
* was included above . However < rpc / rpc . h > includes < sys / xti . h > which defines
* them again without checking if they already exsist . This generates
* two " Redefinition of macro " warnings for every single . c file that is
* compiled .
*/
# if defined(HPUX) && defined(TCP_NODELAY)
# undef TCP_NODELAY
# endif
# if defined(HPUX) && defined(TCP_MAXSEG)
# undef TCP_MAXSEG
# endif
1998-11-24 02:07:38 +03:00
# include <rpc/rpc.h>
# endif
1998-11-19 07:15:23 +03:00
# if defined(HAVE_YP_GET_DEFAULT_DOMAIN) && defined(HAVE_SETNETGRENT) && defined(HAVE_ENDNETGRENT) && defined(HAVE_GETNETGRENT)
# define HAVE_NETGROUP 1
# endif
1998-11-24 02:07:38 +03:00
# if defined (HAVE_NETGROUP)
2004-08-31 19:11:41 +04:00
# if defined(HAVE_RPCSVC_YP_PROT_H)
2004-09-08 03:30:27 +04:00
/*
* HP - UX 11. X has TCP_NODELAY and TCP_MAXSEG defined in < netinet / tcp . h > which
* was included above . However < rpc / rpc . h > includes < sys / xti . h > which defines
* them again without checking if they already exsist . This generates
* two " Redefinition of macro " warnings for every single . c file that is
* compiled .
*/
# if defined(HPUX) && defined(TCP_NODELAY)
# undef TCP_NODELAY
# endif
# if defined(HPUX) && defined(TCP_MAXSEG)
# undef TCP_MAXSEG
# endif
2004-08-31 19:11:41 +04:00
# include <rpcsvc/yp_prot.h>
# endif
2004-09-16 06:49:01 +04:00
# if defined(HAVE_RPCSVC_YPCLNT_H)
# include <rpcsvc/ypclnt.h>
# endif
1998-11-24 02:07:38 +03:00
# endif /* HAVE_NETGROUP */
2009-11-27 17:52:57 +03:00
# ifndef HAVE_KRB5_H
2001-11-28 01:37:25 +03:00
# undef HAVE_KRB5
2001-10-18 14:26:06 +04:00
# endif
2011-02-24 13:56:08 +03:00
# ifndef HAVE_LDAP_H
2001-11-28 01:37:25 +03:00
# undef HAVE_LDAP
2001-11-20 11:54:15 +03:00
# endif
2003-08-15 05:29:08 +04:00
# if HAVE_SYS_ATTRIBUTES_H
# include <sys/attributes.h>
# endif
2007-08-10 13:44:13 +04:00
# ifndef ENOATTR
2009-08-07 02:09:01 +04:00
# if defined(ENODATA)
2007-08-10 13:44:13 +04:00
# define ENOATTR ENODATA
2009-08-07 02:09:01 +04:00
# else
# define ENOATTR ENOENT
# endif
2007-08-10 13:44:13 +04:00
# endif
2004-02-20 18:52:14 +03:00
/* mutually exclusive (SuSE 8.2) */
2003-06-06 00:29:55 +04:00
# if HAVE_ATTR_XATTR_H
# include <attr/xattr.h>
2004-02-20 18:50:18 +03:00
# elif HAVE_SYS_XATTR_H
2004-02-20 01:17:54 +03:00
# include <sys/xattr.h>
# endif
2006-02-20 14:57:47 +03:00
# ifdef HAVE_SYS_EA_H
# include <sys/ea.h>
# endif
2005-04-10 08:27:14 +04:00
# ifdef HAVE_SYS_EXTATTR_H
# include <sys/extattr.h>
# endif
# ifdef HAVE_SYS_UIO_H
# include <sys/uio.h>
# endif
2003-06-30 06:11:13 +04:00
# if HAVE_LANGINFO_H
# include <langinfo.h>
# endif
2008-02-01 15:04:10 +03:00
# if HAVE_NETGROUP_H
# include <netgroup.h>
# endif
2006-01-09 18:54:16 +03:00
# if defined(HAVE_AIO_H) && defined(WITH_AIO)
2005-06-28 02:08:58 +04:00
# include <aio.h>
# endif
2009-02-18 03:16:35 +03:00
# ifdef WITH_MADVISE_PROTECTED
# include <sys/mman.h>
# endif
2003-04-16 17:19:51 +04:00
/* Special macros that are no-ops except when run under Valgrind on
* x86 . They ' ve moved a little bit from valgrind 1.0 .4 to 1.9 .4 */
# if HAVE_VALGRIND_MEMCHECK_H
/* memcheck.h includes valgrind.h */
# include <valgrind/memcheck.h>
# elif HAVE_VALGRIND_H
# include <valgrind.h>
# endif
2002-09-25 19:19:00 +04:00
/* we support ADS if we want it and have krb5 and ldap libs */
# if defined(WITH_ADS) && defined(HAVE_KRB5) && defined(HAVE_LDAP)
2001-11-20 11:54:15 +03:00
# define HAVE_ADS
# endif
1999-12-13 16:27:58 +03:00
/*
2001-06-25 06:53:13 +04:00
* Define additional missing types
1999-12-13 16:27:58 +03:00
*/
2008-10-19 11:51:26 +04:00
# if defined(AIX)
2002-07-15 14:35:28 +04:00
typedef sig_atomic_t SIG_ATOMIC_T ;
# else
2008-10-19 11:51:26 +04:00
typedef sig_atomic_t volatile SIG_ATOMIC_T ;
2001-06-25 06:53:13 +04:00
# endif
1999-12-13 16:27:58 +03:00
1998-07-29 07:08:05 +04:00
# ifndef uchar
# define uchar unsigned char
1996-05-04 11:50:46 +04:00
# endif
1998-09-01 00:20:54 +04:00
/*
Samba needs type definitions for int16 , int32 , uint16 and uint32 .
Normally these are signed and unsigned 16 and 32 bit integers , but
they actually only need to be at least 16 and 32 bits
respectively . Thus if your word size is 8 bytes just defining them
as signed and unsigned int will work .
*/
# ifndef uint8
2008-10-14 05:38:34 +04:00
# define uint8 uint8_t
1998-09-01 00:20:54 +04:00
# endif
1998-11-19 07:15:23 +03:00
# if !defined(int16) && !defined(HAVE_INT16_FROM_RPC_RPC_H)
2008-10-14 05:38:34 +04:00
# define int16 int16_t
2006-05-24 18:26:34 +04:00
/* needed to work around compile issue on HP-UX 11.x */
# define _INT16 1
1998-09-01 00:20:54 +04:00
# endif
1998-11-19 07:15:23 +03:00
/*
* Note we duplicate the size tests in the unsigned
* case as int16 may be a typedef from rpc / rpc . h
*/
2008-10-14 05:38:34 +04:00
1998-11-19 07:15:23 +03:00
# if !defined(uint16) && !defined(HAVE_UINT16_FROM_RPC_RPC_H)
2008-10-14 05:38:34 +04:00
# define uint16 uint16_t
1998-09-01 00:20:54 +04:00
# endif
1998-11-19 07:15:23 +03:00
# if !defined(int32) && !defined(HAVE_INT32_FROM_RPC_RPC_H)
2008-10-14 05:38:34 +04:00
# define int32 int32_t
2009-07-01 21:49:35 +04:00
# ifndef _INT32
/* needed to work around compile issue on HP-UX 11.x */
# define _INT32 1
# endif
1997-12-03 08:22:24 +03:00
# endif
1998-11-19 07:15:23 +03:00
/*
* Note we duplicate the size tests in the unsigned
* case as int32 may be a typedef from rpc / rpc . h
*/
# if !defined(uint32) && !defined(HAVE_UINT32_FROM_RPC_RPC_H)
2008-10-14 05:38:34 +04:00
# define uint32 uint32_t
2001-06-26 09:38:24 +04:00
# endif
1996-05-04 11:50:46 +04:00
2006-04-12 18:10:39 +04:00
/*
* check for 8 byte long long
*/
# if !defined(uint64)
2008-10-14 05:38:34 +04:00
# define uint64 uint64_t
2006-04-12 18:10:39 +04:00
# endif
2006-08-23 02:53:08 +04:00
# if !defined(int64)
2008-10-14 05:38:34 +04:00
# define int64 int64_t
2006-08-23 02:53:08 +04:00
# endif
2006-04-12 18:10:39 +04:00
1998-09-01 00:20:54 +04:00
/*
1998-09-03 22:40:31 +04:00
* Types for devices , inodes and offsets .
1998-09-01 00:20:54 +04:00
*/
# ifndef SMB_DEV_T
2002-01-10 03:28:09 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_DEV64_T)
# define SMB_DEV_T dev64_t
# else
# define SMB_DEV_T dev_t
# endif
1998-09-01 00:20:54 +04:00
# endif
2006-01-13 01:17:54 +03:00
# ifndef LARGE_SMB_DEV_T
# if (defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_DEV64_T)) || (defined(SIZEOF_DEV_T) && (SIZEOF_DEV_T == 8))
# define LARGE_SMB_DEV_T 1
# endif
# endif
# ifdef LARGE_SMB_DEV_T
# define SDEV_T_VAL(p, ofs, v) (SIVAL((p),(ofs),(v)&0xFFFFFFFF), SIVAL((p),(ofs)+4,(v)>>32))
2008-10-14 03:59:36 +04:00
# define DEV_T_VAL(p, ofs) ((SMB_DEV_T)(((uint64_t)(IVAL((p),(ofs))))| (((uint64_t)(IVAL((p),(ofs)+4))) << 32)))
2006-01-13 01:17:54 +03:00
# else
# define SDEV_T_VAL(p, ofs, v) (SIVAL((p),(ofs),v),SIVAL((p),(ofs)+4,0))
# define DEV_T_VAL(p, ofs) ((SMB_DEV_T)(IVAL((p),(ofs))))
# endif
1998-09-05 00:53:58 +04:00
/*
* Setup the correctly sized inode type .
*/
1998-09-01 00:20:54 +04:00
# ifndef SMB_INO_T
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_INO64_T)
1998-09-05 00:53:58 +04:00
# define SMB_INO_T ino64_t
# else
# define SMB_INO_T ino_t
# endif
# endif
# ifndef LARGE_SMB_INO_T
1999-12-13 16:27:58 +03:00
# if (defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_INO64_T)) || (defined(SIZEOF_INO_T) && (SIZEOF_INO_T == 8))
1998-09-05 00:53:58 +04:00
# define LARGE_SMB_INO_T 1
# endif
1998-09-01 00:20:54 +04:00
# endif
1998-10-24 12:08:05 +04:00
# ifdef LARGE_SMB_INO_T
2011-04-23 13:15:30 +04:00
# define SINO_T_VAL(p, ofs, v) SBVAL(p, ofs, v)
# define INO_T_VAL(p, ofs) ((SMB_INO_T)BVAL(p, ofs))
1998-10-24 12:08:05 +04:00
# else
2011-04-23 13:15:30 +04:00
# define SINO_T_VAL(p, ofs, v) SBVAL(p, ofs, ((uint64_t)(v)) & UINT32_MAX)
2006-01-13 01:17:54 +03:00
# define INO_T_VAL(p, ofs) ((SMB_INO_T)(IVAL((p),(ofs))))
1998-10-24 12:08:05 +04:00
# endif
1998-09-03 22:40:31 +04:00
# ifndef SMB_OFF_T
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T)
1998-09-04 04:23:28 +04:00
# define SMB_OFF_T off64_t
# else
# define SMB_OFF_T off_t
# endif
1998-09-03 22:40:31 +04:00
# endif
2011-04-23 13:10:05 +04:00
/* TODO: remove this macros */
# define SBIG_UINT(p, ofs, v) SBVAL(p, ofs, v)
# define BIG_UINT(p, ofs) BVAL(p, ofs)
# define IVAL2_TO_SMB_BIG_UINT(p, ofs) BVAL(p, ofs)
2004-03-04 21:17:01 +03:00
2000-01-13 15:05:40 +03:00
/* this should really be a 64 bit type if possible */
2008-10-14 03:59:36 +04:00
typedef uint64_t br_off ;
2000-01-13 15:05:40 +03:00
1998-09-18 06:30:03 +04:00
# define SMB_OFF_T_BITS (sizeof(SMB_OFF_T)*8)
1998-09-03 22:40:31 +04:00
/*
* Set the define that tells us if we can do 64 bit
* NT SMB calls .
*/
# ifndef LARGE_SMB_OFF_T
1999-12-13 16:27:58 +03:00
# if (defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T)) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8))
1998-09-04 04:23:28 +04:00
# define LARGE_SMB_OFF_T 1
# endif
1998-09-03 22:40:31 +04:00
# endif
1998-09-18 22:30:42 +04:00
# ifdef LARGE_SMB_OFF_T
# define SOFF_T(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
2001-04-18 08:33:24 +04:00
# define SOFF_T_R(p, ofs, v) (SIVAL(p,(ofs)+4,(v)&0xFFFFFFFF), SIVAL(p,ofs,(v)>>32))
2008-10-14 03:59:36 +04:00
# define IVAL_TO_SMB_OFF_T(buf,off) ((SMB_OFF_T)(( ((uint64_t)(IVAL((buf),(off)))) & ((uint64_t)0xFFFFFFFF) )))
1998-09-18 22:30:42 +04:00
# else
# define SOFF_T(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
2001-04-18 08:33:24 +04:00
# define SOFF_T_R(p, ofs, v) (SIVAL(p,(ofs)+4,v),SIVAL(p,ofs,0))
2002-12-03 11:02:41 +03:00
# define IVAL_TO_SMB_OFF_T(buf,off) ((SMB_OFF_T)(( ((uint32)(IVAL((buf),(off)))) & 0xFFFFFFFF )))
1998-09-18 22:30:42 +04:00
# endif
2009-05-27 01:37:14 +04:00
# ifndef HAVE_BLKSIZE_T
/* This is mainly for HP/UX which defines st_blksize as long */
2009-05-27 10:09:23 +04:00
typedef long blksize_t ;
2009-05-27 01:37:14 +04:00
# endif
# ifndef HAVE_BLKCNT_T
/* This is mainly for HP/UX which doesn't have blkcnt_t */
2009-05-27 10:09:23 +04:00
typedef long blkcnt_t ;
2009-05-27 01:37:14 +04:00
# endif
1998-09-02 00:11:54 +04:00
/*
1998-09-03 22:40:31 +04:00
* Type for stat structure .
1998-09-02 00:11:54 +04:00
*/
2009-05-14 17:34:42 +04:00
struct stat_ex {
dev_t st_ex_dev ;
ino_t st_ex_ino ;
mode_t st_ex_mode ;
nlink_t st_ex_nlink ;
uid_t st_ex_uid ;
gid_t st_ex_gid ;
dev_t st_ex_rdev ;
off_t st_ex_size ;
struct timespec st_ex_atime ;
struct timespec st_ex_mtime ;
struct timespec st_ex_ctime ;
struct timespec st_ex_btime ; /* birthtime */
2009-07-09 04:51:35 +04:00
/* Is birthtime real, or was it calculated ? */
bool st_ex_calculated_birthtime ;
2009-05-14 17:34:42 +04:00
blksize_t st_ex_blksize ;
blkcnt_t st_ex_blocks ;
2009-05-27 00:39:50 +04:00
uint32_t st_ex_flags ;
uint32_t st_ex_mask ;
2009-05-14 17:34:42 +04:00
/*
* Add space for VFS internal extensions . The initial user of this
* would be the onefs modules , passing the snapid from the stat calls
* to the file_id_create call . Maybe we ' ll have to expand this later ,
* but the core of Samba should never look at this field .
*/
uint64_t vfs_private ;
} ;
typedef struct stat_ex SMB_STRUCT_STAT ;
1998-09-04 04:23:28 +04:00
1999-12-13 16:27:58 +03:00
/*
* Type for dirent structure .
*/
# ifndef SMB_STRUCT_DIRENT
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_DIRENT64)
# define SMB_STRUCT_DIRENT struct dirent64
# else
# define SMB_STRUCT_DIRENT struct dirent
# endif
# endif
2005-08-22 22:03:08 +04:00
/*
* Type for DIR structure .
*/
# ifndef SMB_STRUCT_DIR
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_DIR64)
# define SMB_STRUCT_DIR DIR64
# else
# define SMB_STRUCT_DIR DIR
# endif
# endif
1998-09-04 04:23:28 +04:00
/*
* Defines for 64 bit fcntl locks .
*/
# ifndef SMB_STRUCT_FLOCK
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
1998-09-04 04:23:28 +04:00
# define SMB_STRUCT_FLOCK struct flock64
# else
# define SMB_STRUCT_FLOCK struct flock
# endif
# endif
# ifndef SMB_F_SETLKW
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
1998-09-04 04:23:28 +04:00
# define SMB_F_SETLKW F_SETLKW64
# else
# define SMB_F_SETLKW F_SETLKW
# endif
1998-09-02 00:11:54 +04:00
# endif
1998-09-04 04:23:28 +04:00
# ifndef SMB_F_SETLK
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
1998-09-04 04:23:28 +04:00
# define SMB_F_SETLK F_SETLK64
# else
# define SMB_F_SETLK F_SETLK
# endif
# endif
# ifndef SMB_F_GETLK
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
1998-09-04 04:23:28 +04:00
# define SMB_F_GETLK F_GETLK64
# else
# define SMB_F_GETLK F_GETLK
# endif
1998-09-03 22:40:31 +04:00
# endif
1998-09-02 00:11:54 +04:00
2005-06-28 02:08:58 +04:00
/*
* Type for aiocb structure .
*/
# ifndef SMB_STRUCT_AIOCB
# if defined(WITH_AIO)
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_AIOCB64)
# define SMB_STRUCT_AIOCB struct aiocb64
# else
# define SMB_STRUCT_AIOCB struct aiocb
# endif
# else
# define SMB_STRUCT_AIOCB int /* AIO not being used but we still need the define.... */
# endif
# endif
2009-08-25 07:57:37 +04:00
enum timestamp_set_resolution {
TIMESTAMP_SET_SECONDS = 0 ,
TIMESTAMP_SET_MSEC ,
TIMESTAMP_SET_NT_OR_BETTER
} ;
2007-12-07 23:02:44 +03:00
/* Our own fstrings */
2007-12-08 01:54:38 +03:00
/*
- - - - - - - - - - - - - -
/ \
/ REST \
/ IN \
/ PEACE \
/ \
| The infamous pstring |
| |
| |
| 7 December |
| |
| 2007 |
* | * * * | *
_________ ) / \ \ _ //(\/(/\)/\//\/\///|_)_______
*/
2007-12-08 04:44:42 +03:00
# ifndef FSTRING_LEN
2007-12-07 23:02:44 +03:00
# define FSTRING_LEN 256
typedef char fstring [ FSTRING_LEN ] ;
2007-12-08 04:44:42 +03:00
# endif
2002-03-02 08:35:10 +03:00
2000-05-09 17:28:19 +04:00
/* Lists, trees, caching, database... */
2008-11-01 05:14:43 +03:00
# include "../lib/util/util.h"
2009-09-15 21:11:45 +04:00
# include "../lib/util/util_net.h"
2008-10-12 18:19:15 +04:00
# include "../lib/util/xfile.h"
2008-10-18 16:07:51 +04:00
# include "../lib/util/memory.h"
2008-10-18 20:50:37 +04:00
# include "../lib/util/attr.h"
2010-02-14 01:57:36 +03:00
# include "../lib/util/tsort.h"
2008-10-11 23:48:00 +04:00
# include "../lib/util/dlinklist.h"
2011-04-14 13:43:31 +04:00
# include <tdb.h>
2006-10-21 03:46:59 +04:00
# include "util_tdb.h"
2005-06-09 02:10:34 +04:00
2011-04-14 13:43:31 +04:00
# include <talloc.h>
2008-10-12 01:57:44 +04:00
2009-01-05 11:06:05 +03:00
# include "event.h"
2008-10-12 03:46:15 +04:00
# include "../lib/util/data_blob.h"
2008-10-12 01:57:44 +04:00
# include "../lib/util/time.h"
2011-04-14 01:34:25 +04:00
# include "../lib/util/debug.h"
# include "../lib/util/debug_s3.h"
2008-10-22 16:06:08 +04:00
2010-05-31 14:51:58 +04:00
# include "libads/ads_status.h"
2008-10-23 17:35:21 +04:00
# include "../libcli/util/error.h"
2009-03-02 00:31:10 +03:00
# include "../lib/util/charset/charset.h"
2011-04-27 10:39:42 +04:00
# include "dynconfig/dynconfig.h"
2006-07-18 01:09:02 +04:00
# include "locking.h"
2009-02-09 10:10:34 +03:00
# include "smb_perfcount.h"
1996-05-04 11:50:46 +04:00
# include "smb.h"
2008-10-12 18:17:21 +04:00
# include "../lib/util/byteorder.h"
2009-12-22 10:50:55 +03:00
2003-05-12 22:12:31 +04:00
# include "client.h"
2003-05-06 06:34:59 +04:00
# include "module.h"
2008-10-23 19:27:30 +04:00
# include "../lib/util/talloc_stack.h"
2009-04-11 01:45:45 +04:00
# include "../lib/util/smb_threads.h"
# include "../lib/util/smb_threads_internal.h"
2006-02-04 01:19:41 +03:00
2006-05-05 11:15:45 +04:00
/*
* Reasons for cache flush .
*/
enum flush_reason_enum {
SEEK_FLUSH ,
READ_FLUSH ,
WRITE_FLUSH ,
READRAW_FLUSH ,
OPLOCK_RELEASE_FLUSH ,
CLOSE_FLUSH ,
SYNC_FLUSH ,
SIZECHANGE_FLUSH ,
/* NUM_FLUSH_REASONS must remain the last value in the enumeration. */
NUM_FLUSH_REASONS } ;
2008-11-02 19:29:39 +03:00
/***** prototypes *****/
2003-03-28 05:03:31 +03:00
# ifndef NO_PROTO_H
1997-10-30 18:42:40 +03:00
# include "proto.h"
2003-03-28 05:03:31 +03:00
# endif
1997-10-30 18:42:40 +03:00
2000-02-03 07:47:50 +03:00
/* String routines */
2003-03-18 14:22:52 +03:00
# include "srvstr.h"
2000-02-03 07:47:50 +03:00
# include "safe_string.h"
1999-12-23 04:57:43 +03:00
1998-07-29 07:08:05 +04:00
# ifndef SIGCLD
# define SIGCLD SIGCHLD
1996-05-04 11:50:46 +04:00
# endif
2003-03-28 04:07:05 +03:00
# ifndef SIGRTMIN
2009-06-07 17:58:38 +04:00
# define SIGRTMIN NSIG
2003-03-28 04:07:05 +03:00
# endif
1998-07-29 07:08:05 +04:00
# if defined(HAVE_PUTPRPWNAM) && defined(AUTH_CLEARTEXT_SEG_CHARS)
# define OSF1_ENH_SEC 1
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# if defined(HAVE_CRYPT16) && defined(HAVE_GETAUTHUID)
# define ULTRIX_AUTH 1
# endif
1996-05-04 11:50:46 +04:00
1998-10-07 11:55:14 +04:00
/* yuck, I'd like a better way of doing this */
# define DIRP_SIZE (256 + 32)
1999-12-13 16:27:58 +03:00
/* default socket options. Dave Miller thinks we should default to TCP_NODELAY
given the socket IO pattern that Samba uses */
# ifdef TCP_NODELAY
# define DEFAULT_SOCKET_OPTIONS "TCP_NODELAY"
# else
# define DEFAULT_SOCKET_OPTIONS ""
# endif
2001-12-20 07:01:44 +03:00
/* dmalloc -- free heap debugger (dmalloc.org). This should be near
* the * bottom * of include files so as not to conflict . */
2002-01-09 08:10:47 +03:00
# ifdef ENABLE_DMALLOC
2001-12-20 07:01:44 +03:00
# include <dmalloc.h>
# endif
2000-06-15 13:35:37 +04:00
# if HAVE_KERNEL_SHARE_MODES
# ifndef LOCK_MAND
# define LOCK_MAND 32 /* This is a mandatory flock */
# define LOCK_READ 64 /* ... Which allows concurrent read operations */
# define LOCK_WRITE 128 /* ... Which allows concurrent write operations */
# define LOCK_RW 192 /* ... Which allows concurrent read & write ops */
# endif
# endif
2000-06-23 10:19:26 +04:00
# define MAX_SEC_CTX_DEPTH 8 /* Maximum number of security contexts */
2000-09-29 08:45:00 +04:00
# ifdef GLIBC_HACK_FCNTL64
/* this is a gross hack. 64 bit locking is completely screwed up on
i386 Linux in glibc 2.1 .95 ( which ships with RedHat 7.0 ) . This hack
" fixes " the problem with the current 2.4 .0 test kernels
*/
# define fcntl fcntl64
# undef F_SETLKW
# undef F_SETLK
# define F_SETLK 13
# define F_SETLKW 14
# endif
2001-07-04 11:15:53 +04:00
2001-04-28 17:49:34 +04:00
/* add varargs prototypes with printf checking */
2005-08-26 07:23:48 +04:00
/*PRINTFLIKE2 */
2001-09-09 06:37:10 +04:00
int fdprintf ( int , const char * , . . . ) PRINTF_ATTRIBUTE ( 2 , 3 ) ;
2005-08-26 07:23:48 +04:00
/*PRINTFLIKE1 */
2001-09-09 06:37:10 +04:00
int d_printf ( const char * , . . . ) PRINTF_ATTRIBUTE ( 1 , 2 ) ;
2005-08-26 07:23:48 +04:00
/*PRINTFLIKE2 */
2001-09-09 06:37:10 +04:00
int d_fprintf ( FILE * f , const char * , . . . ) PRINTF_ATTRIBUTE ( 2 , 3 ) ;
2003-07-23 07:59:57 +04:00
2005-08-26 07:23:48 +04:00
/* PRINTFLIKE2 */
2003-01-03 06:24:23 +03:00
void sys_adminlog ( int priority , const char * format_str , . . . ) PRINTF_ATTRIBUTE ( 2 , 3 ) ;
2005-08-26 07:23:48 +04:00
/* PRINTFLIKE2 */
2003-01-03 06:24:23 +03:00
int fstr_sprintf ( fstring s , const char * fmt , . . . ) PRINTF_ATTRIBUTE ( 2 , 3 ) ;
int d_vfprintf ( FILE * f , const char * format , va_list ap ) PRINTF_ATTRIBUTE ( 2 , 0 ) ;
int smb_xvasprintf ( char * * ptr , const char * format , va_list ap ) PRINTF_ATTRIBUTE ( 2 , 0 ) ;
2007-11-24 19:27:54 +03:00
int asprintf_strupper_m ( char * * strp , const char * fmt , . . . ) PRINTF_ATTRIBUTE ( 2 , 3 ) ;
char * talloc_asprintf_strupper_m ( TALLOC_CTX * t , const char * fmt , . . . ) PRINTF_ATTRIBUTE ( 2 , 3 ) ;
2002-12-31 02:55:53 +03:00
/*
* Veritas File System . Often in addition to native .
* Quotas different .
*/
# if defined(HAVE_SYS_FS_VX_QUOTA_H)
# define VXFS_QUOTA
# endif
2008-01-20 02:44:14 +03:00
# ifndef XATTR_CREATE
# define XATTR_CREATE 0x1 /* set value, fail if attr already exists */
# endif
# ifndef XATTR_REPLACE
# define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */
# endif
2003-04-14 05:19:58 +04:00
# ifdef TRUE
# undef TRUE
# endif
# define TRUE __ERROR__XX__DONT_USE_TRUE
2000-07-06 10:59:27 +04:00
2003-04-14 05:19:58 +04:00
# ifdef FALSE
# undef FALSE
# endif
# define FALSE __ERROR__XX__DONT_USE_FALSE
2003-10-21 08:08:32 +04:00
/* If we have blacklisted mmap() try to avoid using it accidentally by
undefining the HAVE_MMAP symbol . */
# ifdef MMAP_BLACKLIST
# undef HAVE_MMAP
# endif
2009-02-13 21:36:11 +03:00
# ifndef CONST_DISCARD
2011-03-25 13:31:38 +03:00
# define CONST_DISCARD(type, ptr) ((type) ((void *) (ptr)))
2009-02-13 21:36:11 +03:00
# endif
2009-02-09 19:48:30 +03:00
2008-10-18 20:50:37 +04:00
void dump_core ( void ) _NORETURN_ ;
void exit_server ( const char * const reason ) _NORETURN_ ;
void exit_server_cleanly ( const char * const reason ) _NORETURN_ ;
void exit_server_fault ( void ) _NORETURN_ ;
2006-04-04 04:27:50 +04:00
2008-02-29 15:35:16 +03:00
# if defined(HAVE_IPV6)
void in6_addr_to_sockaddr_storage ( struct sockaddr_storage * ss ,
struct in6_addr ip ) ;
# endif
2009-08-06 01:38:43 +04:00
/* samba3 doesn't use uwrap yet */
# define uwrap_enabled() 0
2010-05-06 19:49:36 +04:00
# define BASE_RID (0x000003E8L)
2003-04-14 05:19:58 +04:00
# endif /* _INCLUDES_H */