]> andersk Git - openssh.git/blob - defines.h
e60a587b106ebca5a4fc373d362065dcd4a4aead
[openssh.git] / defines.h
1 #ifndef _DEFINES_H
2 #define _DEFINES_H
3
4 /* Necessary headers */
5
6 #include <sys/types.h> /* For [u]intxx_t */
7
8 #include <sys/socket.h> /* For SHUT_XXXX */
9
10 # include <netinet/in_systm.h> /* For typedefs */
11 #include <netinet/in.h> /* For IPv6 macros */
12 #include <netinet/ip.h> /* For IPTOS macros */
13
14 #ifdef HAVE_SYS_BITYPES_H
15 # include <sys/bitypes.h> /* For u_intXX_t */
16 #endif 
17
18 #ifdef HAVE_PATHS_H
19 # include <paths.h> /* For _PATH_XXX */
20 #endif 
21
22 #ifdef HAVE_SYS_TIME_H
23 # include <sys/time.h> /* For timersub */
24 #endif
25
26 #ifdef HAVE_MAILLOCK_H
27 # include <maillock.h> /* For _PATH_MAILDIR */
28 #endif
29
30 #ifdef HAVE_SYS_CDEFS_H
31 # include <sys/cdefs.h> /* For __P() */
32 #endif 
33
34 #ifdef HAVE_SYS_SYSMACROS_H
35 # include <sys/sysmacros.h> /* For MIN, MAX, etc */
36 #endif
37
38 /* Constants */
39
40 #ifndef SHUT_RDWR
41 enum
42 {
43   SHUT_RD = 0,          /* No more receptions.  */
44   SHUT_WR,                      /* No more transmissions.  */
45   SHUT_RDWR                     /* No more receptions or transmissions.  */
46 };
47 # define SHUT_RD   SHUT_RD
48 # define SHUT_WR   SHUT_WR
49 # define SHUT_RDWR SHUT_RDWR
50 #endif
51
52 #ifndef IPTOS_LOWDELAY
53 # define IPTOS_LOWDELAY          0x10
54 # define IPTOS_THROUGHPUT        0x08
55 # define IPTOS_RELIABILITY       0x04
56 # define IPTOS_LOWCOST           0x02
57 # define IPTOS_MINCOST           IPTOS_LOWCOST
58 #endif /* IPTOS_LOWDELAY */
59
60 /* Types */
61
62 /* If sys/types.h does not supply intXX_t, supply them ourselves */
63 /* (or die trying) */
64 #ifndef HAVE_INTXX_T
65 # if (SIZEOF_CHAR == 1)
66 typedef char int8_t;
67 # else
68 #  error "8 bit int type not found."
69 # endif
70 # if (SIZEOF_SHORT_INT == 2)
71 typedef short int int16_t;
72 # else
73 #  error "16 bit int type not found."
74 # endif
75 # if (SIZEOF_INT == 4)
76 typedef int int32_t;
77 # else
78 #  error "32 bit int type not found."
79 # endif
80 /*
81 # if (SIZEOF_LONG_INT == 8)
82 typedef long int int64_t;
83 # else
84 #  if (SIZEOF_LONG_LONG_INT == 8)
85 typedef long long int int64_t;
86 #   define HAVE_INTXX_T 1
87 #  else
88 #   error "64 bit int type not found."
89 #  endif
90 # endif
91 */
92 #endif
93
94 /* If sys/types.h does not supply u_intXX_t, supply them ourselves */
95 #ifndef HAVE_U_INTXX_T
96 # ifdef HAVE_UINTXX_T
97 typedef uint8_t u_int8_t;
98 typedef uint16_t u_int16_t;
99 typedef uint32_t u_int32_t;
100 /*
101 typedef  uint64_t u_int64_t;
102 */
103 # define HAVE_U_INTXX_T 1
104 # else
105 #  if (SIZEOF_CHAR == 1)
106 typedef unsigned char u_int8_t;
107 #  else
108 #   error "8 bit int type not found."
109 #  endif
110 #  if (SIZEOF_SHORT_INT == 2)
111 typedef unsigned short int u_int16_t;
112 #  else
113 #   error "16 bit int type not found."
114 #  endif
115 #  if (SIZEOF_INT == 4)
116 typedef unsigned int u_int32_t;
117 #  else
118 #   error "32 bit int type not found."
119 #  endif
120 /*
121 #  if (SIZEOF_LONG_INT == 8)
122 typedef unsigned long int u_int64_t;
123 #  else
124 #   if (SIZEOF_LONG_LONG_INT == 8)
125 typedef unsigned long long int u_int64_t;
126 #    define HAVE_U_INTXX_T 1
127 #   else
128 #    error "64 bit int type not found."
129 #   endif
130 #  endif
131 */
132 # endif
133 #endif
134
135 #ifndef HAVE_SOCKLEN_T
136 typedef unsigned int socklen_t;
137 # define HAVE_SOCKLEN_T
138 #endif /* HAVE_SOCKLEN_T */
139
140 #ifndef HAVE_SIZE_T
141 typedef unsigned int size_t;
142 # define HAVE_SIZE_T
143 #endif /* HAVE_SIZE_T */
144
145 #ifndef HAVE_SSIZE_T
146 typedef int ssize_t;
147 # define HAVE_SSIZE_T
148 #endif /* HAVE_SSIZE_T */
149
150 #if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS)
151 # define ss_family __ss_family
152 #endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */
153
154 /* Paths */
155
156 #ifndef _PATH_BSHELL
157 # define _PATH_BSHELL "/bin/sh"
158 #endif
159
160 #ifdef USER_PATH
161 # ifdef _PATH_STDPATH
162 #  undef _PATH_STDPATH
163 # endif
164 # define _PATH_STDPATH USER_PATH
165 #endif
166
167 #ifndef _PATH_STDPATH
168 # define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin"
169 #endif
170
171 #ifndef _PATH_DEVNULL
172 # define _PATH_DEVNULL "/dev/null"
173 #endif
174
175 #ifndef MAIL_DIRECTORY
176 # define MAIL_DIRECTORY "/var/spool/mail"
177 #endif
178
179 #ifndef MAILDIR
180 # define MAILDIR MAIL_DIRECTORY
181 #endif
182
183 #if !defined(_PATH_MAILDIR) && defined(MAILDIR)
184 # define _PATH_MAILDIR MAILDIR
185 #endif /* !defined(_PATH_MAILDIR) && defined(MAILDIR) */
186
187 #ifndef _PATH_RSH
188 # ifdef RSH_PATH
189 #  define _PATH_RSH RSH_PATH
190 # endif /* RSH_PATH */
191 #endif /* _PATH_RSH */
192
193 /* Macros */
194
195 #ifndef MAX
196 # define MAX(a,b) (((a)>(b))?(a):(b))
197 # define MIN(a,b) (((a)<(b))?(a):(b))
198 #endif
199
200 #ifndef timersub
201 #define timersub(a, b, result)                                                                            \
202    do {                                                                                                                                           \
203       (result)->tv_sec = (a)->tv_sec - (b)->tv_sec;           \
204       (result)->tv_usec = (a)->tv_usec - (b)->tv_usec;        \
205       if ((result)->tv_usec < 0) {                            \
206          --(result)->tv_sec;                                  \
207          (result)->tv_usec += 1000000;                        \
208       }                                                       \
209    } while (0)
210 #endif
211
212 #ifndef __P
213 # define __P(x) x
214 #endif
215
216 #if !defined(IN6_IS_ADDR_V4MAPPED)
217 # define IN6_IS_ADDR_V4MAPPED(a) \
218         ((((u_int32_t *) (a))[0] == 0) && (((u_int32_t *) (a))[1] == 0) && \
219          (((u_int32_t *) (a))[2] == htonl (0xffff)))
220 #endif /* !defined(IN6_IS_ADDR_V4MAPPED) */
221
222 #if !defined(__GNUC__) || (__GNUC__ < 2)
223 # define __attribute__(x)
224 #endif /* !defined(__GNUC__) || (__GNUC__ < 2) */
225
226 #if defined(HAVE_SECURITY_PAM_APPL_H) && !defined(DISABLE_PAM)
227 # define USE_PAM
228 #endif /* defined(HAVE_SECURITY_PAM_APPL_H) && !defined(DISABLE_PAM) */
229
230 /* Function replacement / compatibility hacks */
231
232 /* In older versions of libpam, pam_strerror takes a single argument */
233 #ifdef HAVE_OLD_PAM
234 # define PAM_STRERROR(a,b) pam_strerror((b))
235 #else
236 # define PAM_STRERROR(a,b) pam_strerror((a),(b))
237 #endif
238
239 #if defined(BROKEN_GETADDRINFO) && defined(HAVE_GETADDRINFO)
240 # undef HAVE_GETADDRINFO
241 #endif /* defined(BROKEN_GETADDRINFO) && defined(HAVE_GETADDRINFO) */
242
243 #if !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY)
244 # define memmove(s1, s2, n) bcopy((s2), (s1), (n))
245 #endif /* !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY) */
246
247 #if !defined(HAVE_ATEXIT) && defined(HAVE_ON_EXIT)
248 # define atexit(a) on_exit(a)
249 #endif /* !defined(HAVE_ATEXIT) && defined(HAVE_ON_EXIT) */
250
251 /**
252  ** login recorder definitions
253  **/
254
255 /* preprocess */
256
257 #ifdef HAVE_UTMP_H
258 #  ifdef HAVE_TIME_IN_UTMP
259 #    include <time.h>
260 #  endif
261 #  include <utmp.h>
262 #endif
263 #ifdef HAVE_UTMPX_H
264 #  ifdef HAVE_TV_IN_UTMPX
265 #    include <sys/time.h>
266 #  endif
267 #  include <utmpx.h>
268 #endif
269 #ifdef HAVE_LASTLOG_H
270 #  include <lastlog.h>
271 #endif
272 #ifdef HAVE_PATHS_H
273 #  include <paths.h>
274 #endif
275
276 /* FIXME: put default paths back in */
277 #if !defined(UTMP_FILE) && defined(_PATH_UTMP)
278 #  define UTMP_FILE _PATH_UTMP
279 #endif
280 #if !defined(WTMP_FILE) && defined(_PATH_WTMP)
281 #  define WTMP_FILE _PATH_WTMP
282 #endif
283 /* pick up the user's location for lastlog if given */
284 #if !defined(LASTLOG_FILE) && defined(_PATH_LASTLOG)
285 #  define LASTLOG_FILE _PATH_LASTLOG
286 #endif
287 #if !defined(LASTLOG_FILE) && defined(CONF_LASTLOG_FILE)
288 #  define LASTLOG_FILE CONF_LASTLOG_FILE
289 #endif
290
291
292 /* The login() library function in libutil is first choice */
293 #if defined(HAVE_LOGIN) && !defined(DISABLE_LOGIN)
294 #  define USE_LOGIN
295
296 #else
297 /* Simply select your favourite login types. */
298 /* Can't do if-else because some systems use several... <sigh> */
299 #  if defined(UTMPX_FILE) && !defined(DISABLE_UTMPX)
300 #    define USE_UTMPX
301 #  endif
302 #  if defined(UTMP_FILE) && !defined(DISABLE_UTMP)
303 #    define USE_UTMP
304 #  endif
305 #  if defined(WTMPX_FILE) && !defined(DISABLE_WTMPX)
306 #    define USE_WTMPX
307 #  endif
308 #  if defined(WTMP_FILE) && !defined(DISABLE_WTMP)
309 #    define USE_WTMP
310 #  endif
311
312 #endif
313
314 /* I hope that the presence of LASTLOG_FILE is enough to detect this */
315 #if defined(LASTLOG_FILE) && !defined(DISABLE_LASTLOG)
316 #  define USE_LASTLOG
317 #endif
318
319 /* which type of time to use? (api.c) */
320 #ifdef HAVE_SYS_TIME_H
321 #  define USE_TIMEVAL
322 #endif
323
324 /** end of login recorder definitions */
325
326
327 #endif /* _DEFINES_H */
This page took 0.048548 seconds and 3 git commands to generate.