xref: /freebsd/crypto/openssh/defines.h (revision ca86bcf2531c7b149c95244a67853d44323e7855)
1d95e11bfSDag-Erling Smørgrav /*
2d95e11bfSDag-Erling Smørgrav  * Copyright (c) 1999-2003 Damien Miller.  All rights reserved.
3d95e11bfSDag-Erling Smørgrav  *
4d95e11bfSDag-Erling Smørgrav  * Redistribution and use in source and binary forms, with or without
5d95e11bfSDag-Erling Smørgrav  * modification, are permitted provided that the following conditions
6d95e11bfSDag-Erling Smørgrav  * are met:
7d95e11bfSDag-Erling Smørgrav  * 1. Redistributions of source code must retain the above copyright
8d95e11bfSDag-Erling Smørgrav  *    notice, this list of conditions and the following disclaimer.
9d95e11bfSDag-Erling Smørgrav  * 2. Redistributions in binary form must reproduce the above copyright
10d95e11bfSDag-Erling Smørgrav  *    notice, this list of conditions and the following disclaimer in the
11d95e11bfSDag-Erling Smørgrav  *    documentation and/or other materials provided with the distribution.
12d95e11bfSDag-Erling Smørgrav  *
13d95e11bfSDag-Erling Smørgrav  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
14d95e11bfSDag-Erling Smørgrav  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
15d95e11bfSDag-Erling Smørgrav  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
16d95e11bfSDag-Erling Smørgrav  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
17d95e11bfSDag-Erling Smørgrav  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18d95e11bfSDag-Erling Smørgrav  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19d95e11bfSDag-Erling Smørgrav  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20d95e11bfSDag-Erling Smørgrav  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21d95e11bfSDag-Erling Smørgrav  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22d95e11bfSDag-Erling Smørgrav  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23d95e11bfSDag-Erling Smørgrav  */
24d95e11bfSDag-Erling Smørgrav 
2583d2307dSDag-Erling Smørgrav #ifndef _DEFINES_H
2683d2307dSDag-Erling Smørgrav #define _DEFINES_H
2783d2307dSDag-Erling Smørgrav 
2883d2307dSDag-Erling Smørgrav /* Constants */
2983d2307dSDag-Erling Smørgrav 
30761efaa7SDag-Erling Smørgrav #if defined(HAVE_DECL_SHUT_RD) && HAVE_DECL_SHUT_RD == 0
3183d2307dSDag-Erling Smørgrav enum
3283d2307dSDag-Erling Smørgrav {
3383d2307dSDag-Erling Smørgrav   SHUT_RD = 0,		/* No more receptions.  */
3483d2307dSDag-Erling Smørgrav   SHUT_WR,			/* No more transmissions.  */
3583d2307dSDag-Erling Smørgrav   SHUT_RDWR			/* No more receptions or transmissions.  */
3683d2307dSDag-Erling Smørgrav };
3783d2307dSDag-Erling Smørgrav # define SHUT_RD   SHUT_RD
3883d2307dSDag-Erling Smørgrav # define SHUT_WR   SHUT_WR
3983d2307dSDag-Erling Smørgrav # define SHUT_RDWR SHUT_RDWR
4083d2307dSDag-Erling Smørgrav #endif
4183d2307dSDag-Erling Smørgrav 
424a421b63SDag-Erling Smørgrav /*
43076ad2f8SDag-Erling Smørgrav  * Cygwin doesn't really have a notion of reserved ports.  It is still
44076ad2f8SDag-Erling Smørgrav  * is useful on the client side so for compatibility it defines as 1024 via
45076ad2f8SDag-Erling Smørgrav  * netinet/in.h inside an enum.  We * don't actually want that restriction
46076ad2f8SDag-Erling Smørgrav  * so we want to set that to zero, but we can't do it direct in config.h
47076ad2f8SDag-Erling Smørgrav  * because it'll cause a conflicting definition the first time we include
48076ad2f8SDag-Erling Smørgrav  * netinet/in.h.
49076ad2f8SDag-Erling Smørgrav  */
50076ad2f8SDag-Erling Smørgrav 
51076ad2f8SDag-Erling Smørgrav #ifdef HAVE_CYGWIN
52076ad2f8SDag-Erling Smørgrav #define IPPORT_RESERVED 0
53076ad2f8SDag-Erling Smørgrav #endif
54076ad2f8SDag-Erling Smørgrav 
55076ad2f8SDag-Erling Smørgrav /*
564a421b63SDag-Erling Smørgrav  * Definitions for IP type of service (ip_tos)
574a421b63SDag-Erling Smørgrav  */
58faa715d3SDag-Erling Smørgrav #include <netinet/in_systm.h>
594a421b63SDag-Erling Smørgrav #include <netinet/ip.h>
6083d2307dSDag-Erling Smørgrav #ifndef IPTOS_LOWDELAY
6183d2307dSDag-Erling Smørgrav # define IPTOS_LOWDELAY          0x10
6283d2307dSDag-Erling Smørgrav # define IPTOS_THROUGHPUT        0x08
6383d2307dSDag-Erling Smørgrav # define IPTOS_RELIABILITY       0x04
6483d2307dSDag-Erling Smørgrav # define IPTOS_LOWCOST           0x02
6583d2307dSDag-Erling Smørgrav # define IPTOS_MINCOST           IPTOS_LOWCOST
6683d2307dSDag-Erling Smørgrav #endif /* IPTOS_LOWDELAY */
6783d2307dSDag-Erling Smørgrav 
684a421b63SDag-Erling Smørgrav /*
694a421b63SDag-Erling Smørgrav  * Definitions for DiffServ Codepoints as per RFC2474
704a421b63SDag-Erling Smørgrav  */
714a421b63SDag-Erling Smørgrav #ifndef IPTOS_DSCP_AF11
724a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF11		0x28
734a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF12		0x30
744a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF13		0x38
754a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF21		0x48
764a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF22		0x50
774a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF23		0x58
784a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF31		0x68
794a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF32		0x70
804a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF33		0x78
814a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF41		0x88
824a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF42		0x90
834a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_AF43		0x98
844a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_EF		0xb8
854a421b63SDag-Erling Smørgrav #endif /* IPTOS_DSCP_AF11 */
864a421b63SDag-Erling Smørgrav #ifndef IPTOS_DSCP_CS0
874a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_CS0		0x00
884a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_CS1		0x20
894a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_CS2		0x40
904a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_CS3		0x60
914a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_CS4		0x80
924a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_CS5		0xa0
934a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_CS6		0xc0
944a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_CS7		0xe0
954a421b63SDag-Erling Smørgrav #endif /* IPTOS_DSCP_CS0 */
964a421b63SDag-Erling Smørgrav #ifndef IPTOS_DSCP_EF
974a421b63SDag-Erling Smørgrav # define	IPTOS_DSCP_EF		0xb8
984a421b63SDag-Erling Smørgrav #endif /* IPTOS_DSCP_EF */
994a421b63SDag-Erling Smørgrav 
100462c32cbSDag-Erling Smørgrav #ifndef PATH_MAX
101462c32cbSDag-Erling Smørgrav # ifdef _POSIX_PATH_MAX
102462c32cbSDag-Erling Smørgrav # define PATH_MAX _POSIX_PATH_MAX
103462c32cbSDag-Erling Smørgrav # endif
104462c32cbSDag-Erling Smørgrav #endif
105462c32cbSDag-Erling Smørgrav 
10683d2307dSDag-Erling Smørgrav #ifndef MAXPATHLEN
10783d2307dSDag-Erling Smørgrav # ifdef PATH_MAX
10883d2307dSDag-Erling Smørgrav #  define MAXPATHLEN PATH_MAX
10983d2307dSDag-Erling Smørgrav # else /* PATH_MAX */
110043840dfSDag-Erling Smørgrav #  define MAXPATHLEN 64
111043840dfSDag-Erling Smørgrav /* realpath uses a fixed buffer of size MAXPATHLEN, so force use of ours */
112043840dfSDag-Erling Smørgrav #  ifndef BROKEN_REALPATH
113043840dfSDag-Erling Smørgrav #   define BROKEN_REALPATH 1
114043840dfSDag-Erling Smørgrav #  endif /* BROKEN_REALPATH */
11583d2307dSDag-Erling Smørgrav # endif /* PATH_MAX */
11683d2307dSDag-Erling Smørgrav #endif /* MAXPATHLEN */
11783d2307dSDag-Erling Smørgrav 
118bc5531deSDag-Erling Smørgrav #ifndef HOST_NAME_MAX
119bc5531deSDag-Erling Smørgrav # include "netdb.h" /* for MAXHOSTNAMELEN */
120bc5531deSDag-Erling Smørgrav # if defined(_POSIX_HOST_NAME_MAX)
121bc5531deSDag-Erling Smørgrav #  define HOST_NAME_MAX _POSIX_HOST_NAME_MAX
122bc5531deSDag-Erling Smørgrav # elif defined(MAXHOSTNAMELEN)
123bc5531deSDag-Erling Smørgrav #  define HOST_NAME_MAX MAXHOSTNAMELEN
124bc5531deSDag-Erling Smørgrav # else
125bc5531deSDag-Erling Smørgrav #  define HOST_NAME_MAX	255
126bc5531deSDag-Erling Smørgrav # endif
127bc5531deSDag-Erling Smørgrav #endif /* HOST_NAME_MAX */
128bc5531deSDag-Erling Smørgrav 
129d4af9e69SDag-Erling Smørgrav #if defined(HAVE_DECL_MAXSYMLINKS) && HAVE_DECL_MAXSYMLINKS == 0
130043840dfSDag-Erling Smørgrav # define MAXSYMLINKS 5
131043840dfSDag-Erling Smørgrav #endif
132043840dfSDag-Erling Smørgrav 
13383d2307dSDag-Erling Smørgrav #ifndef STDIN_FILENO
13483d2307dSDag-Erling Smørgrav # define STDIN_FILENO    0
13583d2307dSDag-Erling Smørgrav #endif
13683d2307dSDag-Erling Smørgrav #ifndef STDOUT_FILENO
13783d2307dSDag-Erling Smørgrav # define STDOUT_FILENO   1
13883d2307dSDag-Erling Smørgrav #endif
13983d2307dSDag-Erling Smørgrav #ifndef STDERR_FILENO
14083d2307dSDag-Erling Smørgrav # define STDERR_FILENO   2
14183d2307dSDag-Erling Smørgrav #endif
14283d2307dSDag-Erling Smørgrav 
14383d2307dSDag-Erling Smørgrav #ifndef NGROUPS_MAX	/* Disable groupaccess if NGROUP_MAX is not set */
14483d2307dSDag-Erling Smørgrav #ifdef NGROUPS
14583d2307dSDag-Erling Smørgrav #define NGROUPS_MAX NGROUPS
14683d2307dSDag-Erling Smørgrav #else
14783d2307dSDag-Erling Smørgrav #define NGROUPS_MAX 0
14883d2307dSDag-Erling Smørgrav #endif
14983d2307dSDag-Erling Smørgrav #endif
15083d2307dSDag-Erling Smørgrav 
151761efaa7SDag-Erling Smørgrav #if defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK == 0
152761efaa7SDag-Erling Smørgrav # define O_NONBLOCK      00004	/* Non Blocking Open */
15383d2307dSDag-Erling Smørgrav #endif
15483d2307dSDag-Erling Smørgrav 
155e146993eSDag-Erling Smørgrav #ifndef S_IFSOCK
156e146993eSDag-Erling Smørgrav # define S_IFSOCK 0
157e146993eSDag-Erling Smørgrav #endif /* S_IFSOCK */
158e146993eSDag-Erling Smørgrav 
15983d2307dSDag-Erling Smørgrav #ifndef S_ISDIR
16083d2307dSDag-Erling Smørgrav # define S_ISDIR(mode)	(((mode) & (_S_IFMT)) == (_S_IFDIR))
16183d2307dSDag-Erling Smørgrav #endif /* S_ISDIR */
16283d2307dSDag-Erling Smørgrav 
16383d2307dSDag-Erling Smørgrav #ifndef S_ISREG
16483d2307dSDag-Erling Smørgrav # define S_ISREG(mode)	(((mode) & (_S_IFMT)) == (_S_IFREG))
16583d2307dSDag-Erling Smørgrav #endif /* S_ISREG */
16683d2307dSDag-Erling Smørgrav 
16783d2307dSDag-Erling Smørgrav #ifndef S_ISLNK
16883d2307dSDag-Erling Smørgrav # define S_ISLNK(mode)	(((mode) & S_IFMT) == S_IFLNK)
16983d2307dSDag-Erling Smørgrav #endif /* S_ISLNK */
17083d2307dSDag-Erling Smørgrav 
17183d2307dSDag-Erling Smørgrav #ifndef S_IXUSR
17283d2307dSDag-Erling Smørgrav # define S_IXUSR			0000100	/* execute/search permission, */
17383d2307dSDag-Erling Smørgrav # define S_IXGRP			0000010	/* execute/search permission, */
17483d2307dSDag-Erling Smørgrav # define S_IXOTH			0000001	/* execute/search permission, */
17583d2307dSDag-Erling Smørgrav # define _S_IWUSR			0000200	/* write permission, */
17683d2307dSDag-Erling Smørgrav # define S_IWUSR			_S_IWUSR	/* write permission, owner */
17783d2307dSDag-Erling Smørgrav # define S_IWGRP			0000020	/* write permission, group */
17883d2307dSDag-Erling Smørgrav # define S_IWOTH			0000002	/* write permission, other */
17983d2307dSDag-Erling Smørgrav # define S_IRUSR			0000400	/* read permission, owner */
18083d2307dSDag-Erling Smørgrav # define S_IRGRP			0000040	/* read permission, group */
18183d2307dSDag-Erling Smørgrav # define S_IROTH			0000004	/* read permission, other */
18283d2307dSDag-Erling Smørgrav # define S_IRWXU			0000700	/* read, write, execute */
18383d2307dSDag-Erling Smørgrav # define S_IRWXG			0000070	/* read, write, execute */
18483d2307dSDag-Erling Smørgrav # define S_IRWXO			0000007	/* read, write, execute */
18583d2307dSDag-Erling Smørgrav #endif /* S_IXUSR */
18683d2307dSDag-Erling Smørgrav 
18783d2307dSDag-Erling Smørgrav #if !defined(MAP_ANON) && defined(MAP_ANONYMOUS)
18883d2307dSDag-Erling Smørgrav #define MAP_ANON MAP_ANONYMOUS
18983d2307dSDag-Erling Smørgrav #endif
19083d2307dSDag-Erling Smørgrav 
19183d2307dSDag-Erling Smørgrav #ifndef MAP_FAILED
19283d2307dSDag-Erling Smørgrav # define MAP_FAILED ((void *)-1)
19383d2307dSDag-Erling Smørgrav #endif
19483d2307dSDag-Erling Smørgrav 
19583d2307dSDag-Erling Smørgrav /*
19683d2307dSDag-Erling Smørgrav SCO Open Server 3 has INADDR_LOOPBACK defined in rpc/rpc.h but
19783d2307dSDag-Erling Smørgrav including rpc/rpc.h breaks Solaris 6
19883d2307dSDag-Erling Smørgrav */
19983d2307dSDag-Erling Smørgrav #ifndef INADDR_LOOPBACK
2004b17dab0SDag-Erling Smørgrav #define INADDR_LOOPBACK ((u_long)0x7f000001)
20183d2307dSDag-Erling Smørgrav #endif
20283d2307dSDag-Erling Smørgrav 
20383d2307dSDag-Erling Smørgrav /* Types */
20483d2307dSDag-Erling Smørgrav 
20583d2307dSDag-Erling Smørgrav /* If sys/types.h does not supply intXX_t, supply them ourselves */
20683d2307dSDag-Erling Smørgrav /* (or die trying) */
20783d2307dSDag-Erling Smørgrav 
20883d2307dSDag-Erling Smørgrav #ifndef HAVE_U_INT
20983d2307dSDag-Erling Smørgrav typedef unsigned int u_int;
21083d2307dSDag-Erling Smørgrav #endif
21183d2307dSDag-Erling Smørgrav 
21283d2307dSDag-Erling Smørgrav #ifndef HAVE_INTXX_T
213462c32cbSDag-Erling Smørgrav typedef signed char int8_t;
21483d2307dSDag-Erling Smørgrav # if (SIZEOF_SHORT_INT == 2)
21583d2307dSDag-Erling Smørgrav typedef short int int16_t;
21683d2307dSDag-Erling Smørgrav # else
2174b17dab0SDag-Erling Smørgrav #  ifdef _UNICOS
21883d2307dSDag-Erling Smørgrav #   if (SIZEOF_SHORT_INT == 4)
21983d2307dSDag-Erling Smørgrav typedef short int16_t;
22083d2307dSDag-Erling Smørgrav #   else
22183d2307dSDag-Erling Smørgrav typedef long  int16_t;
22283d2307dSDag-Erling Smørgrav #   endif
22383d2307dSDag-Erling Smørgrav #  else
22483d2307dSDag-Erling Smørgrav #   error "16 bit int type not found."
2254b17dab0SDag-Erling Smørgrav #  endif /* _UNICOS */
22683d2307dSDag-Erling Smørgrav # endif
22783d2307dSDag-Erling Smørgrav # if (SIZEOF_INT == 4)
22883d2307dSDag-Erling Smørgrav typedef int int32_t;
22983d2307dSDag-Erling Smørgrav # else
2304b17dab0SDag-Erling Smørgrav #  ifdef _UNICOS
23183d2307dSDag-Erling Smørgrav typedef long  int32_t;
23283d2307dSDag-Erling Smørgrav #  else
23383d2307dSDag-Erling Smørgrav #   error "32 bit int type not found."
2344b17dab0SDag-Erling Smørgrav #  endif /* _UNICOS */
23583d2307dSDag-Erling Smørgrav # endif
23683d2307dSDag-Erling Smørgrav #endif
23783d2307dSDag-Erling Smørgrav 
23883d2307dSDag-Erling Smørgrav /* If sys/types.h does not supply u_intXX_t, supply them ourselves */
23983d2307dSDag-Erling Smørgrav #ifndef HAVE_U_INTXX_T
24083d2307dSDag-Erling Smørgrav # ifdef HAVE_UINTXX_T
24183d2307dSDag-Erling Smørgrav typedef uint8_t u_int8_t;
24283d2307dSDag-Erling Smørgrav typedef uint16_t u_int16_t;
24383d2307dSDag-Erling Smørgrav typedef uint32_t u_int32_t;
24483d2307dSDag-Erling Smørgrav # define HAVE_U_INTXX_T 1
24583d2307dSDag-Erling Smørgrav # else
24683d2307dSDag-Erling Smørgrav typedef unsigned char u_int8_t;
24783d2307dSDag-Erling Smørgrav #  if (SIZEOF_SHORT_INT == 2)
24883d2307dSDag-Erling Smørgrav typedef unsigned short int u_int16_t;
24983d2307dSDag-Erling Smørgrav #  else
2504b17dab0SDag-Erling Smørgrav #   ifdef _UNICOS
25183d2307dSDag-Erling Smørgrav #    if (SIZEOF_SHORT_INT == 4)
25283d2307dSDag-Erling Smørgrav typedef unsigned short u_int16_t;
25383d2307dSDag-Erling Smørgrav #    else
25483d2307dSDag-Erling Smørgrav typedef unsigned long  u_int16_t;
25583d2307dSDag-Erling Smørgrav #    endif
25683d2307dSDag-Erling Smørgrav #   else
25783d2307dSDag-Erling Smørgrav #    error "16 bit int type not found."
25883d2307dSDag-Erling Smørgrav #   endif
25983d2307dSDag-Erling Smørgrav #  endif
26083d2307dSDag-Erling Smørgrav #  if (SIZEOF_INT == 4)
26183d2307dSDag-Erling Smørgrav typedef unsigned int u_int32_t;
26283d2307dSDag-Erling Smørgrav #  else
2634b17dab0SDag-Erling Smørgrav #   ifdef _UNICOS
26483d2307dSDag-Erling Smørgrav typedef unsigned long  u_int32_t;
26583d2307dSDag-Erling Smørgrav #   else
26683d2307dSDag-Erling Smørgrav #    error "32 bit int type not found."
26783d2307dSDag-Erling Smørgrav #   endif
26883d2307dSDag-Erling Smørgrav #  endif
26983d2307dSDag-Erling Smørgrav # endif
27083d2307dSDag-Erling Smørgrav #define __BIT_TYPES_DEFINED__
27183d2307dSDag-Erling Smørgrav #endif
27283d2307dSDag-Erling Smørgrav 
27383d2307dSDag-Erling Smørgrav /* 64-bit types */
27483d2307dSDag-Erling Smørgrav #ifndef HAVE_INT64_T
27583d2307dSDag-Erling Smørgrav # if (SIZEOF_LONG_INT == 8)
27683d2307dSDag-Erling Smørgrav typedef long int int64_t;
27783d2307dSDag-Erling Smørgrav # else
27883d2307dSDag-Erling Smørgrav #  if (SIZEOF_LONG_LONG_INT == 8)
27983d2307dSDag-Erling Smørgrav typedef long long int int64_t;
28083d2307dSDag-Erling Smørgrav #  endif
28183d2307dSDag-Erling Smørgrav # endif
28283d2307dSDag-Erling Smørgrav #endif
28383d2307dSDag-Erling Smørgrav #ifndef HAVE_U_INT64_T
28483d2307dSDag-Erling Smørgrav # if (SIZEOF_LONG_INT == 8)
28583d2307dSDag-Erling Smørgrav typedef unsigned long int u_int64_t;
28683d2307dSDag-Erling Smørgrav # else
28783d2307dSDag-Erling Smørgrav #  if (SIZEOF_LONG_LONG_INT == 8)
28883d2307dSDag-Erling Smørgrav typedef unsigned long long int u_int64_t;
28983d2307dSDag-Erling Smørgrav #  endif
29083d2307dSDag-Erling Smørgrav # endif
29183d2307dSDag-Erling Smørgrav #endif
29283d2307dSDag-Erling Smørgrav 
293f7167e0eSDag-Erling Smørgrav #ifndef HAVE_UINTXX_T
294f7167e0eSDag-Erling Smørgrav typedef u_int8_t uint8_t;
295f7167e0eSDag-Erling Smørgrav typedef u_int16_t uint16_t;
296f7167e0eSDag-Erling Smørgrav typedef u_int32_t uint32_t;
297f7167e0eSDag-Erling Smørgrav typedef u_int64_t uint64_t;
298f7167e0eSDag-Erling Smørgrav #endif
299f7167e0eSDag-Erling Smørgrav 
300f7167e0eSDag-Erling Smørgrav #ifndef HAVE_INTMAX_T
301f7167e0eSDag-Erling Smørgrav typedef long long intmax_t;
302f7167e0eSDag-Erling Smørgrav #endif
303f7167e0eSDag-Erling Smørgrav 
304f7167e0eSDag-Erling Smørgrav #ifndef HAVE_UINTMAX_T
305f7167e0eSDag-Erling Smørgrav typedef unsigned long long uintmax_t;
306f7167e0eSDag-Erling Smørgrav #endif
307f7167e0eSDag-Erling Smørgrav 
30883d2307dSDag-Erling Smørgrav #ifndef HAVE_U_CHAR
30983d2307dSDag-Erling Smørgrav typedef unsigned char u_char;
31083d2307dSDag-Erling Smørgrav # define HAVE_U_CHAR
31183d2307dSDag-Erling Smørgrav #endif /* HAVE_U_CHAR */
31283d2307dSDag-Erling Smørgrav 
3136888a9beSDag-Erling Smørgrav #ifndef ULLONG_MAX
3146888a9beSDag-Erling Smørgrav # define ULLONG_MAX ((unsigned long long)-1)
3156888a9beSDag-Erling Smørgrav #endif
3166888a9beSDag-Erling Smørgrav 
3174b17dab0SDag-Erling Smørgrav #ifndef SIZE_T_MAX
3184b17dab0SDag-Erling Smørgrav #define SIZE_T_MAX ULONG_MAX
3194b17dab0SDag-Erling Smørgrav #endif /* SIZE_T_MAX */
3204b17dab0SDag-Erling Smørgrav 
32183d2307dSDag-Erling Smørgrav #ifndef HAVE_SIZE_T
32283d2307dSDag-Erling Smørgrav typedef unsigned int size_t;
32383d2307dSDag-Erling Smørgrav # define HAVE_SIZE_T
324efcad6b7SDag-Erling Smørgrav # define SIZE_T_MAX UINT_MAX
32583d2307dSDag-Erling Smørgrav #endif /* HAVE_SIZE_T */
32683d2307dSDag-Erling Smørgrav 
3274a421b63SDag-Erling Smørgrav #ifndef SIZE_MAX
3284a421b63SDag-Erling Smørgrav #define SIZE_MAX SIZE_T_MAX
3294a421b63SDag-Erling Smørgrav #endif
3304a421b63SDag-Erling Smørgrav 
33183d2307dSDag-Erling Smørgrav #ifndef HAVE_SSIZE_T
33283d2307dSDag-Erling Smørgrav typedef int ssize_t;
33383d2307dSDag-Erling Smørgrav # define HAVE_SSIZE_T
33483d2307dSDag-Erling Smørgrav #endif /* HAVE_SSIZE_T */
33583d2307dSDag-Erling Smørgrav 
33683d2307dSDag-Erling Smørgrav #ifndef HAVE_CLOCK_T
33783d2307dSDag-Erling Smørgrav typedef long clock_t;
33883d2307dSDag-Erling Smørgrav # define HAVE_CLOCK_T
33983d2307dSDag-Erling Smørgrav #endif /* HAVE_CLOCK_T */
34083d2307dSDag-Erling Smørgrav 
34183d2307dSDag-Erling Smørgrav #ifndef HAVE_SA_FAMILY_T
34283d2307dSDag-Erling Smørgrav typedef int sa_family_t;
34383d2307dSDag-Erling Smørgrav # define HAVE_SA_FAMILY_T
34483d2307dSDag-Erling Smørgrav #endif /* HAVE_SA_FAMILY_T */
34583d2307dSDag-Erling Smørgrav 
34683d2307dSDag-Erling Smørgrav #ifndef HAVE_PID_T
34783d2307dSDag-Erling Smørgrav typedef int pid_t;
34883d2307dSDag-Erling Smørgrav # define HAVE_PID_T
34983d2307dSDag-Erling Smørgrav #endif /* HAVE_PID_T */
35083d2307dSDag-Erling Smørgrav 
35183d2307dSDag-Erling Smørgrav #ifndef HAVE_SIG_ATOMIC_T
35283d2307dSDag-Erling Smørgrav typedef int sig_atomic_t;
35383d2307dSDag-Erling Smørgrav # define HAVE_SIG_ATOMIC_T
35483d2307dSDag-Erling Smørgrav #endif /* HAVE_SIG_ATOMIC_T */
35583d2307dSDag-Erling Smørgrav 
35683d2307dSDag-Erling Smørgrav #ifndef HAVE_MODE_T
35783d2307dSDag-Erling Smørgrav typedef int mode_t;
35883d2307dSDag-Erling Smørgrav # define HAVE_MODE_T
35983d2307dSDag-Erling Smørgrav #endif /* HAVE_MODE_T */
36083d2307dSDag-Erling Smørgrav 
36183d2307dSDag-Erling Smørgrav #if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS)
36283d2307dSDag-Erling Smørgrav # define ss_family __ss_family
36383d2307dSDag-Erling Smørgrav #endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */
36483d2307dSDag-Erling Smørgrav 
36583d2307dSDag-Erling Smørgrav #ifndef HAVE_SYS_UN_H
36683d2307dSDag-Erling Smørgrav struct	sockaddr_un {
36783d2307dSDag-Erling Smørgrav 	short	sun_family;		/* AF_UNIX */
36883d2307dSDag-Erling Smørgrav 	char	sun_path[108];		/* path name (gag) */
36983d2307dSDag-Erling Smørgrav };
37083d2307dSDag-Erling Smørgrav #endif /* HAVE_SYS_UN_H */
37183d2307dSDag-Erling Smørgrav 
3725e8dbd04SDag-Erling Smørgrav #ifndef HAVE_IN_ADDR_T
3735e8dbd04SDag-Erling Smørgrav typedef u_int32_t	in_addr_t;
3745e8dbd04SDag-Erling Smørgrav #endif
3757aee6ffeSDag-Erling Smørgrav #ifndef HAVE_IN_PORT_T
3767aee6ffeSDag-Erling Smørgrav typedef u_int16_t	in_port_t;
3777aee6ffeSDag-Erling Smørgrav #endif
3785e8dbd04SDag-Erling Smørgrav 
37983d2307dSDag-Erling Smørgrav #if defined(BROKEN_SYS_TERMIO_H) && !defined(_STRUCT_WINSIZE)
38083d2307dSDag-Erling Smørgrav #define _STRUCT_WINSIZE
38183d2307dSDag-Erling Smørgrav struct winsize {
38283d2307dSDag-Erling Smørgrav       unsigned short ws_row;          /* rows, in characters */
38383d2307dSDag-Erling Smørgrav       unsigned short ws_col;          /* columns, in character */
38483d2307dSDag-Erling Smørgrav       unsigned short ws_xpixel;       /* horizontal size, pixels */
38583d2307dSDag-Erling Smørgrav       unsigned short ws_ypixel;       /* vertical size, pixels */
38683d2307dSDag-Erling Smørgrav };
38783d2307dSDag-Erling Smørgrav #endif
38883d2307dSDag-Erling Smørgrav 
389e4a9863fSDag-Erling Smørgrav /* bits needed for select that may not be in the system headers */
390e4a9863fSDag-Erling Smørgrav #ifndef HAVE_FD_MASK
39183d2307dSDag-Erling Smørgrav  typedef unsigned long int	fd_mask;
39283d2307dSDag-Erling Smørgrav #endif
39383d2307dSDag-Erling Smørgrav 
394e4a9863fSDag-Erling Smørgrav #if defined(HAVE_DECL_NFDBITS) && HAVE_DECL_NFDBITS == 0
395e4a9863fSDag-Erling Smørgrav # define	NFDBITS (8 * sizeof(unsigned long))
396e4a9863fSDag-Erling Smørgrav #endif
397e4a9863fSDag-Erling Smørgrav 
398e4a9863fSDag-Erling Smørgrav #if defined(HAVE_DECL_HOWMANY) && HAVE_DECL_HOWMANY == 0
399e4a9863fSDag-Erling Smørgrav # define howmany(x,y)	(((x)+((y)-1))/(y))
400e4a9863fSDag-Erling Smørgrav #endif
401e4a9863fSDag-Erling Smørgrav 
40283d2307dSDag-Erling Smørgrav /* Paths */
40383d2307dSDag-Erling Smørgrav 
40483d2307dSDag-Erling Smørgrav #ifndef _PATH_BSHELL
40583d2307dSDag-Erling Smørgrav # define _PATH_BSHELL "/bin/sh"
40683d2307dSDag-Erling Smørgrav #endif
40783d2307dSDag-Erling Smørgrav 
40883d2307dSDag-Erling Smørgrav #ifdef USER_PATH
40983d2307dSDag-Erling Smørgrav # ifdef _PATH_STDPATH
41083d2307dSDag-Erling Smørgrav #  undef _PATH_STDPATH
41183d2307dSDag-Erling Smørgrav # endif
41283d2307dSDag-Erling Smørgrav # define _PATH_STDPATH USER_PATH
41383d2307dSDag-Erling Smørgrav #endif
41483d2307dSDag-Erling Smørgrav 
41583d2307dSDag-Erling Smørgrav #ifndef _PATH_STDPATH
41683d2307dSDag-Erling Smørgrav # define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin"
41783d2307dSDag-Erling Smørgrav #endif
41883d2307dSDag-Erling Smørgrav 
419d95e11bfSDag-Erling Smørgrav #ifndef SUPERUSER_PATH
420d95e11bfSDag-Erling Smørgrav # define SUPERUSER_PATH	_PATH_STDPATH
421d95e11bfSDag-Erling Smørgrav #endif
422d95e11bfSDag-Erling Smørgrav 
42383d2307dSDag-Erling Smørgrav #ifndef _PATH_DEVNULL
42483d2307dSDag-Erling Smørgrav # define _PATH_DEVNULL "/dev/null"
42583d2307dSDag-Erling Smørgrav #endif
42683d2307dSDag-Erling Smørgrav 
427e146993eSDag-Erling Smørgrav /* user may have set a different path */
428e146993eSDag-Erling Smørgrav #if defined(_PATH_MAILDIR) && defined(MAIL_DIRECTORY)
429a0ee8cc6SDag-Erling Smørgrav # undef _PATH_MAILDIR
430e146993eSDag-Erling Smørgrav #endif /* defined(_PATH_MAILDIR) && defined(MAIL_DIRECTORY) */
43183d2307dSDag-Erling Smørgrav 
432e146993eSDag-Erling Smørgrav #ifdef MAIL_DIRECTORY
433e146993eSDag-Erling Smørgrav # define _PATH_MAILDIR MAIL_DIRECTORY
43483d2307dSDag-Erling Smørgrav #endif
43583d2307dSDag-Erling Smørgrav 
43683d2307dSDag-Erling Smørgrav #ifndef _PATH_NOLOGIN
43783d2307dSDag-Erling Smørgrav # define _PATH_NOLOGIN "/etc/nologin"
43883d2307dSDag-Erling Smørgrav #endif
43983d2307dSDag-Erling Smørgrav 
44083d2307dSDag-Erling Smørgrav /* Define this to be the path of the xauth program. */
44183d2307dSDag-Erling Smørgrav #ifdef XAUTH_PATH
44283d2307dSDag-Erling Smørgrav #define _PATH_XAUTH XAUTH_PATH
44383d2307dSDag-Erling Smørgrav #endif /* XAUTH_PATH */
44483d2307dSDag-Erling Smørgrav 
44583d2307dSDag-Erling Smørgrav /* derived from XF4/xc/lib/dps/Xlibnet.h */
44683d2307dSDag-Erling Smørgrav #ifndef X_UNIX_PATH
44783d2307dSDag-Erling Smørgrav #  ifdef __hpux
44883d2307dSDag-Erling Smørgrav #    define X_UNIX_PATH "/var/spool/sockets/X11/%u"
44983d2307dSDag-Erling Smørgrav #  else
45083d2307dSDag-Erling Smørgrav #    define X_UNIX_PATH "/tmp/.X11-unix/X%u"
45183d2307dSDag-Erling Smørgrav #  endif
45283d2307dSDag-Erling Smørgrav #endif /* X_UNIX_PATH */
45383d2307dSDag-Erling Smørgrav #define _PATH_UNIX_X X_UNIX_PATH
45483d2307dSDag-Erling Smørgrav 
45583d2307dSDag-Erling Smørgrav #ifndef _PATH_TTY
45683d2307dSDag-Erling Smørgrav # define _PATH_TTY "/dev/tty"
45783d2307dSDag-Erling Smørgrav #endif
45883d2307dSDag-Erling Smørgrav 
45983d2307dSDag-Erling Smørgrav /* Macros */
46083d2307dSDag-Erling Smørgrav 
46183d2307dSDag-Erling Smørgrav #if defined(HAVE_LOGIN_GETCAPBOOL) && defined(HAVE_LOGIN_CAP_H)
46283d2307dSDag-Erling Smørgrav # define HAVE_LOGIN_CAP
46383d2307dSDag-Erling Smørgrav #endif
46483d2307dSDag-Erling Smørgrav 
46583d2307dSDag-Erling Smørgrav #ifndef MAX
46683d2307dSDag-Erling Smørgrav # define MAX(a,b) (((a)>(b))?(a):(b))
46783d2307dSDag-Erling Smørgrav # define MIN(a,b) (((a)<(b))?(a):(b))
46883d2307dSDag-Erling Smørgrav #endif
46983d2307dSDag-Erling Smørgrav 
47083d2307dSDag-Erling Smørgrav #ifndef roundup
47183d2307dSDag-Erling Smørgrav # define roundup(x, y)   ((((x)+((y)-1))/(y))*(y))
47283d2307dSDag-Erling Smørgrav #endif
47383d2307dSDag-Erling Smørgrav 
47483d2307dSDag-Erling Smørgrav #ifndef timersub
47583d2307dSDag-Erling Smørgrav #define timersub(a, b, result)					\
47683d2307dSDag-Erling Smørgrav    do {								\
47783d2307dSDag-Erling Smørgrav       (result)->tv_sec = (a)->tv_sec - (b)->tv_sec;		\
47883d2307dSDag-Erling Smørgrav       (result)->tv_usec = (a)->tv_usec - (b)->tv_usec;		\
47983d2307dSDag-Erling Smørgrav       if ((result)->tv_usec < 0) {				\
48083d2307dSDag-Erling Smørgrav 	 --(result)->tv_sec;					\
48183d2307dSDag-Erling Smørgrav 	 (result)->tv_usec += 1000000;				\
48283d2307dSDag-Erling Smørgrav       }								\
48383d2307dSDag-Erling Smørgrav    } while (0)
48483d2307dSDag-Erling Smørgrav #endif
48583d2307dSDag-Erling Smørgrav 
486d0c8c0bcSDag-Erling Smørgrav #ifndef TIMEVAL_TO_TIMESPEC
487d0c8c0bcSDag-Erling Smørgrav #define	TIMEVAL_TO_TIMESPEC(tv, ts) {					\
488d0c8c0bcSDag-Erling Smørgrav 	(ts)->tv_sec = (tv)->tv_sec;					\
489d0c8c0bcSDag-Erling Smørgrav 	(ts)->tv_nsec = (tv)->tv_usec * 1000;				\
490d0c8c0bcSDag-Erling Smørgrav }
491d0c8c0bcSDag-Erling Smørgrav #endif
492d0c8c0bcSDag-Erling Smørgrav 
493d0c8c0bcSDag-Erling Smørgrav #ifndef TIMESPEC_TO_TIMEVAL
494d0c8c0bcSDag-Erling Smørgrav #define	TIMESPEC_TO_TIMEVAL(tv, ts) {					\
495d0c8c0bcSDag-Erling Smørgrav 	(tv)->tv_sec = (ts)->tv_sec;					\
496d0c8c0bcSDag-Erling Smørgrav 	(tv)->tv_usec = (ts)->tv_nsec / 1000;				\
497d0c8c0bcSDag-Erling Smørgrav }
498d0c8c0bcSDag-Erling Smørgrav #endif
499d0c8c0bcSDag-Erling Smørgrav 
50083d2307dSDag-Erling Smørgrav #ifndef __P
50183d2307dSDag-Erling Smørgrav # define __P(x) x
50283d2307dSDag-Erling Smørgrav #endif
50383d2307dSDag-Erling Smørgrav 
50483d2307dSDag-Erling Smørgrav #if !defined(IN6_IS_ADDR_V4MAPPED)
50583d2307dSDag-Erling Smørgrav # define IN6_IS_ADDR_V4MAPPED(a) \
50683d2307dSDag-Erling Smørgrav 	((((u_int32_t *) (a))[0] == 0) && (((u_int32_t *) (a))[1] == 0) && \
50783d2307dSDag-Erling Smørgrav 	 (((u_int32_t *) (a))[2] == htonl (0xffff)))
50883d2307dSDag-Erling Smørgrav #endif /* !defined(IN6_IS_ADDR_V4MAPPED) */
50983d2307dSDag-Erling Smørgrav 
51083d2307dSDag-Erling Smørgrav #if !defined(__GNUC__) || (__GNUC__ < 2)
51183d2307dSDag-Erling Smørgrav # define __attribute__(x)
51283d2307dSDag-Erling Smørgrav #endif /* !defined(__GNUC__) || (__GNUC__ < 2) */
51383d2307dSDag-Erling Smørgrav 
514043840dfSDag-Erling Smørgrav #if !defined(HAVE_ATTRIBUTE__SENTINEL__) && !defined(__sentinel__)
515043840dfSDag-Erling Smørgrav # define __sentinel__
516043840dfSDag-Erling Smørgrav #endif
517043840dfSDag-Erling Smørgrav 
518021d409fSDag-Erling Smørgrav #if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__bounded__)
519021d409fSDag-Erling Smørgrav # define __bounded__(x, y, z)
520021d409fSDag-Erling Smørgrav #endif
521021d409fSDag-Erling Smørgrav 
522d4af9e69SDag-Erling Smørgrav #if !defined(HAVE_ATTRIBUTE__NONNULL__) && !defined(__nonnull__)
523d4af9e69SDag-Erling Smørgrav # define __nonnull__(x)
524d4af9e69SDag-Erling Smørgrav #endif
525d4af9e69SDag-Erling Smørgrav 
52683d2307dSDag-Erling Smørgrav #ifndef OSSH_ALIGNBYTES
52783d2307dSDag-Erling Smørgrav #define OSSH_ALIGNBYTES	(sizeof(int) - 1)
52883d2307dSDag-Erling Smørgrav #endif
52983d2307dSDag-Erling Smørgrav #ifndef __CMSG_ALIGN
53083d2307dSDag-Erling Smørgrav #define	__CMSG_ALIGN(p) (((u_int)(p) + OSSH_ALIGNBYTES) &~ OSSH_ALIGNBYTES)
53183d2307dSDag-Erling Smørgrav #endif
53283d2307dSDag-Erling Smørgrav 
53383d2307dSDag-Erling Smørgrav /* Length of the contents of a control message of length len */
53483d2307dSDag-Erling Smørgrav #ifndef CMSG_LEN
53583d2307dSDag-Erling Smørgrav #define	CMSG_LEN(len)	(__CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
53683d2307dSDag-Erling Smørgrav #endif
53783d2307dSDag-Erling Smørgrav 
53883d2307dSDag-Erling Smørgrav /* Length of the space taken up by a padded control message of length len */
53983d2307dSDag-Erling Smørgrav #ifndef CMSG_SPACE
54083d2307dSDag-Erling Smørgrav #define	CMSG_SPACE(len)	(__CMSG_ALIGN(sizeof(struct cmsghdr)) + __CMSG_ALIGN(len))
54183d2307dSDag-Erling Smørgrav #endif
54283d2307dSDag-Erling Smørgrav 
543d95e11bfSDag-Erling Smørgrav /* given pointer to struct cmsghdr, return pointer to data */
544d95e11bfSDag-Erling Smørgrav #ifndef CMSG_DATA
545d95e11bfSDag-Erling Smørgrav #define CMSG_DATA(cmsg) ((u_char *)(cmsg) + __CMSG_ALIGN(sizeof(struct cmsghdr)))
546d95e11bfSDag-Erling Smørgrav #endif /* CMSG_DATA */
547d95e11bfSDag-Erling Smørgrav 
548d95e11bfSDag-Erling Smørgrav /*
549d95e11bfSDag-Erling Smørgrav  * RFC 2292 requires to check msg_controllen, in case that the kernel returns
550d95e11bfSDag-Erling Smørgrav  * an empty list for some reasons.
551d95e11bfSDag-Erling Smørgrav  */
552d95e11bfSDag-Erling Smørgrav #ifndef CMSG_FIRSTHDR
553d95e11bfSDag-Erling Smørgrav #define CMSG_FIRSTHDR(mhdr) \
554d95e11bfSDag-Erling Smørgrav 	((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \
555d95e11bfSDag-Erling Smørgrav 	 (struct cmsghdr *)(mhdr)->msg_control : \
556d95e11bfSDag-Erling Smørgrav 	 (struct cmsghdr *)NULL)
557d95e11bfSDag-Erling Smørgrav #endif /* CMSG_FIRSTHDR */
558d95e11bfSDag-Erling Smørgrav 
559d4af9e69SDag-Erling Smørgrav #if defined(HAVE_DECL_OFFSETOF) && HAVE_DECL_OFFSETOF == 0
560d74d50a8SDag-Erling Smørgrav # define offsetof(type, member) ((size_t) &((type *)0)->member)
561d74d50a8SDag-Erling Smørgrav #endif
562d95e11bfSDag-Erling Smørgrav 
563761efaa7SDag-Erling Smørgrav /* Set up BSD-style BYTE_ORDER definition if it isn't there already */
564761efaa7SDag-Erling Smørgrav /* XXX: doesn't try to cope with strange byte orders (PDP_ENDIAN) */
565761efaa7SDag-Erling Smørgrav #ifndef BYTE_ORDER
566761efaa7SDag-Erling Smørgrav # ifndef LITTLE_ENDIAN
567761efaa7SDag-Erling Smørgrav #  define LITTLE_ENDIAN  1234
568761efaa7SDag-Erling Smørgrav # endif /* LITTLE_ENDIAN */
569761efaa7SDag-Erling Smørgrav # ifndef BIG_ENDIAN
570761efaa7SDag-Erling Smørgrav #  define BIG_ENDIAN     4321
571761efaa7SDag-Erling Smørgrav # endif /* BIG_ENDIAN */
572761efaa7SDag-Erling Smørgrav # ifdef WORDS_BIGENDIAN
573761efaa7SDag-Erling Smørgrav #  define BYTE_ORDER BIG_ENDIAN
574761efaa7SDag-Erling Smørgrav # else /* WORDS_BIGENDIAN */
575761efaa7SDag-Erling Smørgrav #  define BYTE_ORDER LITTLE_ENDIAN
576761efaa7SDag-Erling Smørgrav # endif /* WORDS_BIGENDIAN */
577761efaa7SDag-Erling Smørgrav #endif /* BYTE_ORDER */
578761efaa7SDag-Erling Smørgrav 
57983d2307dSDag-Erling Smørgrav /* Function replacement / compatibility hacks */
58083d2307dSDag-Erling Smørgrav 
58183d2307dSDag-Erling Smørgrav #if !defined(HAVE_GETADDRINFO) && (defined(HAVE_OGETADDRINFO) || defined(HAVE_NGETADDRINFO))
58283d2307dSDag-Erling Smørgrav # define HAVE_GETADDRINFO
58383d2307dSDag-Erling Smørgrav #endif
58483d2307dSDag-Erling Smørgrav 
58583d2307dSDag-Erling Smørgrav #ifndef HAVE_GETOPT_OPTRESET
586ee21a45fSDag-Erling Smørgrav # undef getopt
587ee21a45fSDag-Erling Smørgrav # undef opterr
588ee21a45fSDag-Erling Smørgrav # undef optind
589ee21a45fSDag-Erling Smørgrav # undef optopt
590ee21a45fSDag-Erling Smørgrav # undef optreset
591ee21a45fSDag-Erling Smørgrav # undef optarg
59283d2307dSDag-Erling Smørgrav # define getopt(ac, av, o)  BSDgetopt(ac, av, o)
593ee21a45fSDag-Erling Smørgrav # define opterr             BSDopterr
594ee21a45fSDag-Erling Smørgrav # define optind             BSDoptind
595ee21a45fSDag-Erling Smørgrav # define optopt             BSDoptopt
596ee21a45fSDag-Erling Smørgrav # define optreset           BSDoptreset
597ee21a45fSDag-Erling Smørgrav # define optarg             BSDoptarg
59883d2307dSDag-Erling Smørgrav #endif
59983d2307dSDag-Erling Smørgrav 
60083d2307dSDag-Erling Smørgrav #if defined(BROKEN_GETADDRINFO) && defined(HAVE_GETADDRINFO)
60183d2307dSDag-Erling Smørgrav # undef HAVE_GETADDRINFO
60283d2307dSDag-Erling Smørgrav #endif
60383d2307dSDag-Erling Smørgrav #if defined(BROKEN_GETADDRINFO) && defined(HAVE_FREEADDRINFO)
60483d2307dSDag-Erling Smørgrav # undef HAVE_FREEADDRINFO
60583d2307dSDag-Erling Smørgrav #endif
60683d2307dSDag-Erling Smørgrav #if defined(BROKEN_GETADDRINFO) && defined(HAVE_GAI_STRERROR)
60783d2307dSDag-Erling Smørgrav # undef HAVE_GAI_STRERROR
60883d2307dSDag-Erling Smørgrav #endif
60983d2307dSDag-Erling Smørgrav 
610bc5531deSDag-Erling Smørgrav #if defined(HAVE_GETADDRINFO)
611bc5531deSDag-Erling Smørgrav # if defined(HAVE_DECL_AI_NUMERICSERV) && HAVE_DECL_AI_NUMERICSERV == 0
612bc5531deSDag-Erling Smørgrav #   define AI_NUMERICSERV	0
613bc5531deSDag-Erling Smørgrav # endif
614bc5531deSDag-Erling Smørgrav #endif
615bc5531deSDag-Erling Smørgrav 
61652028650SDag-Erling Smørgrav #if defined(BROKEN_UPDWTMPX) && defined(HAVE_UPDWTMPX)
61752028650SDag-Erling Smørgrav # undef HAVE_UPDWTMPX
61852028650SDag-Erling Smørgrav #endif
61952028650SDag-Erling Smørgrav 
620d4af9e69SDag-Erling Smørgrav #if defined(BROKEN_SHADOW_EXPIRE) && defined(HAS_SHADOW_EXPIRE)
621d4af9e69SDag-Erling Smørgrav # undef HAS_SHADOW_EXPIRE
622d4af9e69SDag-Erling Smørgrav #endif
623d4af9e69SDag-Erling Smørgrav 
624761efaa7SDag-Erling Smørgrav #if defined(HAVE_OPENLOG_R) && defined(SYSLOG_DATA_INIT) && \
625761efaa7SDag-Erling Smørgrav     defined(SYSLOG_R_SAFE_IN_SIGHAND)
626761efaa7SDag-Erling Smørgrav # define DO_LOG_SAFE_IN_SIGHAND
627761efaa7SDag-Erling Smørgrav #endif
628761efaa7SDag-Erling Smørgrav 
62983d2307dSDag-Erling Smørgrav #if !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY)
63083d2307dSDag-Erling Smørgrav # define memmove(s1, s2, n) bcopy((s2), (s1), (n))
63183d2307dSDag-Erling Smørgrav #endif /* !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY) */
63283d2307dSDag-Erling Smørgrav 
63383d2307dSDag-Erling Smørgrav #ifndef GETPGRP_VOID
634761efaa7SDag-Erling Smørgrav # include <unistd.h>
63583d2307dSDag-Erling Smørgrav # define getpgrp() getpgrp(0)
63683d2307dSDag-Erling Smørgrav #endif
63783d2307dSDag-Erling Smørgrav 
6385e8dbd04SDag-Erling Smørgrav #ifdef USE_BSM_AUDIT
6395e8dbd04SDag-Erling Smørgrav # define SSH_AUDIT_EVENTS
6405e8dbd04SDag-Erling Smørgrav # define CUSTOM_SSH_AUDIT_EVENTS
6415e8dbd04SDag-Erling Smørgrav #endif
6425e8dbd04SDag-Erling Smørgrav 
6434a421b63SDag-Erling Smørgrav #ifdef USE_LINUX_AUDIT
6444a421b63SDag-Erling Smørgrav # define SSH_AUDIT_EVENTS
6454a421b63SDag-Erling Smørgrav # define CUSTOM_SSH_AUDIT_EVENTS
6464a421b63SDag-Erling Smørgrav #endif
6474a421b63SDag-Erling Smørgrav 
64883d2307dSDag-Erling Smørgrav #if !defined(HAVE___func__) && defined(HAVE___FUNCTION__)
64983d2307dSDag-Erling Smørgrav #  define __func__ __FUNCTION__
65083d2307dSDag-Erling Smørgrav #elif !defined(HAVE___func__)
65183d2307dSDag-Erling Smørgrav #  define __func__ ""
65283d2307dSDag-Erling Smørgrav #endif
65383d2307dSDag-Erling Smørgrav 
654d95e11bfSDag-Erling Smørgrav #if defined(KRB5) && !defined(HEIMDAL)
655d95e11bfSDag-Erling Smørgrav #  define krb5_get_err_text(context,code) error_message(code)
656d95e11bfSDag-Erling Smørgrav #endif
657d95e11bfSDag-Erling Smørgrav 
65852028650SDag-Erling Smørgrav #if defined(SKEYCHALLENGE_4ARG)
65952028650SDag-Erling Smørgrav # define _compat_skeychallenge(a,b,c,d) skeychallenge(a,b,c,d)
66052028650SDag-Erling Smørgrav #else
66152028650SDag-Erling Smørgrav # define _compat_skeychallenge(a,b,c,d) skeychallenge(a,b,c)
66252028650SDag-Erling Smørgrav #endif
66352028650SDag-Erling Smørgrav 
664efcad6b7SDag-Erling Smørgrav /* Maximum number of file descriptors available */
665efcad6b7SDag-Erling Smørgrav #ifdef HAVE_SYSCONF
666efcad6b7SDag-Erling Smørgrav # define SSH_SYSFDMAX sysconf(_SC_OPEN_MAX)
667efcad6b7SDag-Erling Smørgrav #else
668efcad6b7SDag-Erling Smørgrav # define SSH_SYSFDMAX 10000
669efcad6b7SDag-Erling Smørgrav #endif
670efcad6b7SDag-Erling Smørgrav 
671d4af9e69SDag-Erling Smørgrav #ifdef FSID_HAS_VAL
672d4af9e69SDag-Erling Smørgrav /* encode f_fsid into a 64 bit value  */
673d4af9e69SDag-Erling Smørgrav #define FSID_TO_ULONG(f) \
674d4af9e69SDag-Erling Smørgrav 	((((u_int64_t)(f).val[0] & 0xffffffffUL) << 32) | \
675d4af9e69SDag-Erling Smørgrav 	    ((f).val[1] & 0xffffffffUL))
6767aee6ffeSDag-Erling Smørgrav #elif defined(FSID_HAS___VAL)
6777aee6ffeSDag-Erling Smørgrav #define FSID_TO_ULONG(f) \
6787aee6ffeSDag-Erling Smørgrav 	((((u_int64_t)(f).__val[0] & 0xffffffffUL) << 32) | \
6797aee6ffeSDag-Erling Smørgrav 	    ((f).__val[1] & 0xffffffffUL))
680d4af9e69SDag-Erling Smørgrav #else
681d4af9e69SDag-Erling Smørgrav # define FSID_TO_ULONG(f) ((f))
682d4af9e69SDag-Erling Smørgrav #endif
683d4af9e69SDag-Erling Smørgrav 
684043840dfSDag-Erling Smørgrav #if defined(__Lynx__)
685043840dfSDag-Erling Smørgrav  /*
686043840dfSDag-Erling Smørgrav   * LynxOS defines these in param.h which we do not want to include since
687043840dfSDag-Erling Smørgrav   * it will also pull in a bunch of kernel definitions.
688043840dfSDag-Erling Smørgrav   */
689043840dfSDag-Erling Smørgrav # define ALIGNBYTES (sizeof(int) - 1)
690043840dfSDag-Erling Smørgrav # define ALIGN(p) (((unsigned)p + ALIGNBYTES) & ~ALIGNBYTES)
691043840dfSDag-Erling Smørgrav   /* Missing prototypes on LynxOS */
692043840dfSDag-Erling Smørgrav   int snprintf (char *, size_t, const char *, ...);
693043840dfSDag-Erling Smørgrav   int mkstemp (char *);
694043840dfSDag-Erling Smørgrav   char *crypt (const char *, const char *);
695043840dfSDag-Erling Smørgrav   int seteuid (uid_t);
696043840dfSDag-Erling Smørgrav   int setegid (gid_t);
697043840dfSDag-Erling Smørgrav   char *mkdtemp (char *);
698043840dfSDag-Erling Smørgrav   int rresvport_af (int *, sa_family_t);
699043840dfSDag-Erling Smørgrav   int innetgr (const char *, const char *, const char *, const char *);
700043840dfSDag-Erling Smørgrav #endif
701efcad6b7SDag-Erling Smørgrav 
70283d2307dSDag-Erling Smørgrav /*
70383d2307dSDag-Erling Smørgrav  * Define this to use pipes instead of socketpairs for communicating with the
70483d2307dSDag-Erling Smørgrav  * client program.  Socketpairs do not seem to work on all systems.
70583d2307dSDag-Erling Smørgrav  *
70683d2307dSDag-Erling Smørgrav  * configure.ac sets this for a few OS's which are known to have problems
70783d2307dSDag-Erling Smørgrav  * but you may need to set it yourself
70883d2307dSDag-Erling Smørgrav  */
70983d2307dSDag-Erling Smørgrav /* #define USE_PIPES 1 */
71083d2307dSDag-Erling Smørgrav 
71183d2307dSDag-Erling Smørgrav /**
71283d2307dSDag-Erling Smørgrav  ** login recorder definitions
71383d2307dSDag-Erling Smørgrav  **/
71483d2307dSDag-Erling Smørgrav 
71583d2307dSDag-Erling Smørgrav /* FIXME: put default paths back in */
71683d2307dSDag-Erling Smørgrav #ifndef UTMP_FILE
71783d2307dSDag-Erling Smørgrav #  ifdef _PATH_UTMP
71883d2307dSDag-Erling Smørgrav #    define UTMP_FILE _PATH_UTMP
71983d2307dSDag-Erling Smørgrav #  else
72083d2307dSDag-Erling Smørgrav #    ifdef CONF_UTMP_FILE
72183d2307dSDag-Erling Smørgrav #      define UTMP_FILE CONF_UTMP_FILE
72283d2307dSDag-Erling Smørgrav #    endif
72383d2307dSDag-Erling Smørgrav #  endif
72483d2307dSDag-Erling Smørgrav #endif
72583d2307dSDag-Erling Smørgrav #ifndef WTMP_FILE
72683d2307dSDag-Erling Smørgrav #  ifdef _PATH_WTMP
72783d2307dSDag-Erling Smørgrav #    define WTMP_FILE _PATH_WTMP
72883d2307dSDag-Erling Smørgrav #  else
72983d2307dSDag-Erling Smørgrav #    ifdef CONF_WTMP_FILE
73083d2307dSDag-Erling Smørgrav #      define WTMP_FILE CONF_WTMP_FILE
73183d2307dSDag-Erling Smørgrav #    endif
73283d2307dSDag-Erling Smørgrav #  endif
73383d2307dSDag-Erling Smørgrav #endif
73483d2307dSDag-Erling Smørgrav /* pick up the user's location for lastlog if given */
73583d2307dSDag-Erling Smørgrav #ifndef LASTLOG_FILE
73683d2307dSDag-Erling Smørgrav #  ifdef _PATH_LASTLOG
73783d2307dSDag-Erling Smørgrav #    define LASTLOG_FILE _PATH_LASTLOG
73883d2307dSDag-Erling Smørgrav #  else
73983d2307dSDag-Erling Smørgrav #    ifdef CONF_LASTLOG_FILE
74083d2307dSDag-Erling Smørgrav #      define LASTLOG_FILE CONF_LASTLOG_FILE
74183d2307dSDag-Erling Smørgrav #    endif
74283d2307dSDag-Erling Smørgrav #  endif
74383d2307dSDag-Erling Smørgrav #endif
74483d2307dSDag-Erling Smørgrav 
745efcad6b7SDag-Erling Smørgrav #if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW)
746efcad6b7SDag-Erling Smørgrav # define USE_SHADOW
747efcad6b7SDag-Erling Smørgrav #endif
74883d2307dSDag-Erling Smørgrav 
74983d2307dSDag-Erling Smørgrav /* The login() library function in libutil is first choice */
75083d2307dSDag-Erling Smørgrav #if defined(HAVE_LOGIN) && !defined(DISABLE_LOGIN)
75183d2307dSDag-Erling Smørgrav #  define USE_LOGIN
75283d2307dSDag-Erling Smørgrav 
75383d2307dSDag-Erling Smørgrav #else
75483d2307dSDag-Erling Smørgrav /* Simply select your favourite login types. */
75583d2307dSDag-Erling Smørgrav /* Can't do if-else because some systems use several... <sigh> */
756b40cdde6SEd Schouten #  if !defined(DISABLE_UTMPX)
75783d2307dSDag-Erling Smørgrav #    define USE_UTMPX
75883d2307dSDag-Erling Smørgrav #  endif
75983d2307dSDag-Erling Smørgrav #  if defined(UTMP_FILE) && !defined(DISABLE_UTMP)
76083d2307dSDag-Erling Smørgrav #    define USE_UTMP
76183d2307dSDag-Erling Smørgrav #  endif
76283d2307dSDag-Erling Smørgrav #  if defined(WTMPX_FILE) && !defined(DISABLE_WTMPX)
76383d2307dSDag-Erling Smørgrav #    define USE_WTMPX
76483d2307dSDag-Erling Smørgrav #  endif
76583d2307dSDag-Erling Smørgrav #  if defined(WTMP_FILE) && !defined(DISABLE_WTMP)
76683d2307dSDag-Erling Smørgrav #    define USE_WTMP
76783d2307dSDag-Erling Smørgrav #  endif
76883d2307dSDag-Erling Smørgrav 
76983d2307dSDag-Erling Smørgrav #endif
77083d2307dSDag-Erling Smørgrav 
77152028650SDag-Erling Smørgrav #ifndef UT_LINESIZE
77252028650SDag-Erling Smørgrav # define UT_LINESIZE 8
77352028650SDag-Erling Smørgrav #endif
77452028650SDag-Erling Smørgrav 
77583d2307dSDag-Erling Smørgrav /* I hope that the presence of LASTLOG_FILE is enough to detect this */
77683d2307dSDag-Erling Smørgrav #if defined(LASTLOG_FILE) && !defined(DISABLE_LASTLOG)
77783d2307dSDag-Erling Smørgrav #  define USE_LASTLOG
77883d2307dSDag-Erling Smørgrav #endif
77983d2307dSDag-Erling Smørgrav 
78052028650SDag-Erling Smørgrav #ifdef HAVE_OSF_SIA
78152028650SDag-Erling Smørgrav # ifdef USE_SHADOW
78252028650SDag-Erling Smørgrav #  undef USE_SHADOW
78352028650SDag-Erling Smørgrav # endif
78452028650SDag-Erling Smørgrav # define CUSTOM_SYS_AUTH_PASSWD 1
78552028650SDag-Erling Smørgrav #endif
78652028650SDag-Erling Smørgrav 
787cce7d346SDag-Erling Smørgrav #if defined(HAVE_LIBIAF) && defined(HAVE_SET_ID) && !defined(HAVE_SECUREWARE)
788043840dfSDag-Erling Smørgrav # define CUSTOM_SYS_AUTH_PASSWD 1
789043840dfSDag-Erling Smørgrav #endif
790d4af9e69SDag-Erling Smørgrav #if defined(HAVE_LIBIAF) && defined(HAVE_SET_ID) && !defined(BROKEN_LIBIAF)
791d4af9e69SDag-Erling Smørgrav # define USE_LIBIAF
792d4af9e69SDag-Erling Smørgrav #endif
793043840dfSDag-Erling Smørgrav 
7945e8dbd04SDag-Erling Smørgrav /* HP-UX 11.11 */
7955e8dbd04SDag-Erling Smørgrav #ifdef BTMP_FILE
7965e8dbd04SDag-Erling Smørgrav # define _PATH_BTMP BTMP_FILE
7975e8dbd04SDag-Erling Smørgrav #endif
7985e8dbd04SDag-Erling Smørgrav 
7995e8dbd04SDag-Erling Smørgrav #if defined(USE_BTMP) && defined(_PATH_BTMP)
8005e8dbd04SDag-Erling Smørgrav # define CUSTOM_FAILED_LOGIN
8015e8dbd04SDag-Erling Smørgrav #endif
8025e8dbd04SDag-Erling Smørgrav 
80383d2307dSDag-Erling Smørgrav /** end of login recorder definitions */
80483d2307dSDag-Erling Smørgrav 
805043840dfSDag-Erling Smørgrav #ifdef BROKEN_GETGROUPS
806043840dfSDag-Erling Smørgrav # define getgroups(a,b) ((a)==0 && (b)==NULL ? NGROUPS_MAX : getgroups((a),(b)))
807043840dfSDag-Erling Smørgrav #endif
808043840dfSDag-Erling Smørgrav 
809043840dfSDag-Erling Smørgrav #if defined(HAVE_MMAP) && defined(BROKEN_MMAP)
810043840dfSDag-Erling Smørgrav # undef HAVE_MMAP
811043840dfSDag-Erling Smørgrav #endif
812043840dfSDag-Erling Smørgrav 
813761efaa7SDag-Erling Smørgrav #ifndef IOV_MAX
814761efaa7SDag-Erling Smørgrav # if defined(_XOPEN_IOV_MAX)
815761efaa7SDag-Erling Smørgrav #  define	IOV_MAX		_XOPEN_IOV_MAX
816761efaa7SDag-Erling Smørgrav # elif defined(DEF_IOV_MAX)
817761efaa7SDag-Erling Smørgrav #  define	IOV_MAX		DEF_IOV_MAX
818761efaa7SDag-Erling Smørgrav # else
819761efaa7SDag-Erling Smørgrav #  define	IOV_MAX		16
820021d409fSDag-Erling Smørgrav # endif
821021d409fSDag-Erling Smørgrav #endif
822021d409fSDag-Erling Smørgrav 
823d4af9e69SDag-Erling Smørgrav #ifndef EWOULDBLOCK
824d4af9e69SDag-Erling Smørgrav # define EWOULDBLOCK EAGAIN
825d4af9e69SDag-Erling Smørgrav #endif
826d4af9e69SDag-Erling Smørgrav 
827cce7d346SDag-Erling Smørgrav #ifndef INET6_ADDRSTRLEN	/* for non IPv6 machines */
828cce7d346SDag-Erling Smørgrav #define INET6_ADDRSTRLEN 46
829cce7d346SDag-Erling Smørgrav #endif
830cce7d346SDag-Erling Smørgrav 
8317aee6ffeSDag-Erling Smørgrav #ifndef SSH_IOBUFSZ
8327aee6ffeSDag-Erling Smørgrav # define SSH_IOBUFSZ 8192
8337aee6ffeSDag-Erling Smørgrav #endif
8347aee6ffeSDag-Erling Smørgrav 
835f7167e0eSDag-Erling Smørgrav /*
836*ca86bcf2SDag-Erling Smørgrav  * We want functions in openbsd-compat, if enabled, to override system ones.
837*ca86bcf2SDag-Erling Smørgrav  * We no-op out the weak symbol definition rather than remove it to reduce
838*ca86bcf2SDag-Erling Smørgrav  * future sync problems.
839*ca86bcf2SDag-Erling Smørgrav  */
840*ca86bcf2SDag-Erling Smørgrav #define DEF_WEAK(x)
841*ca86bcf2SDag-Erling Smørgrav 
842*ca86bcf2SDag-Erling Smørgrav /*
843f7167e0eSDag-Erling Smørgrav  * Platforms that have arc4random_uniform() and not arc4random_stir()
844f7167e0eSDag-Erling Smørgrav  * shouldn't need the latter.
845f7167e0eSDag-Erling Smørgrav  */
846f7167e0eSDag-Erling Smørgrav #if defined(HAVE_ARC4RANDOM) && defined(HAVE_ARC4RANDOM_UNIFORM) && \
847f7167e0eSDag-Erling Smørgrav     !defined(HAVE_ARC4RANDOM_STIR)
848f7167e0eSDag-Erling Smørgrav # define arc4random_stir()
849f7167e0eSDag-Erling Smørgrav #endif
850f7167e0eSDag-Erling Smørgrav 
851a0ee8cc6SDag-Erling Smørgrav #ifndef HAVE_VA_COPY
852a0ee8cc6SDag-Erling Smørgrav # ifdef HAVE___VA_COPY
853a0ee8cc6SDag-Erling Smørgrav #  define va_copy(dest, src) __va_copy(dest, src)
854a0ee8cc6SDag-Erling Smørgrav # else
855a0ee8cc6SDag-Erling Smørgrav #  define va_copy(dest, src) (dest) = (src)
856a0ee8cc6SDag-Erling Smørgrav # endif
857a0ee8cc6SDag-Erling Smørgrav #endif
858a0ee8cc6SDag-Erling Smørgrav 
859a0ee8cc6SDag-Erling Smørgrav #ifndef __predict_true
860a0ee8cc6SDag-Erling Smørgrav # if defined(__GNUC__) && \
861a0ee8cc6SDag-Erling Smørgrav      ((__GNUC__ > (2)) || (__GNUC__ == (2) && __GNUC_MINOR__ >= (96)))
862a0ee8cc6SDag-Erling Smørgrav #  define __predict_true(exp)     __builtin_expect(((exp) != 0), 1)
863a0ee8cc6SDag-Erling Smørgrav #  define __predict_false(exp)    __builtin_expect(((exp) != 0), 0)
864a0ee8cc6SDag-Erling Smørgrav # else
865a0ee8cc6SDag-Erling Smørgrav #  define __predict_true(exp)     ((exp) != 0)
866a0ee8cc6SDag-Erling Smørgrav #  define __predict_false(exp)    ((exp) != 0)
867a0ee8cc6SDag-Erling Smørgrav # endif /* gcc version */
868a0ee8cc6SDag-Erling Smørgrav #endif /* __predict_true */
869a0ee8cc6SDag-Erling Smørgrav 
870acc1a9efSDag-Erling Smørgrav #if defined(HAVE_GLOB_H) && defined(GLOB_HAS_ALTDIRFUNC) && \
871acc1a9efSDag-Erling Smørgrav     defined(GLOB_HAS_GL_MATCHC) && defined(GLOB_HAS_GL_STATV) && \
872acc1a9efSDag-Erling Smørgrav     defined(HAVE_DECL_GLOB_NOMATCH) &&  HAVE_DECL_GLOB_NOMATCH != 0 && \
873acc1a9efSDag-Erling Smørgrav     !defined(BROKEN_GLOB)
874acc1a9efSDag-Erling Smørgrav # define USE_SYSTEM_GLOB
875acc1a9efSDag-Erling Smørgrav #endif
876acc1a9efSDag-Erling Smørgrav 
87783d2307dSDag-Erling Smørgrav #endif /* _DEFINES_H */
878