4 /* Necessary headers */
6 #include <sys/types.h> /* For [u]intxx_t */
8 #include <sys/socket.h> /* For SHUT_XXXX */
10 # include <netinet/in_systm.h> /* For typedefs */
11 #include <netinet/in.h> /* For IPv6 macros */
12 #include <netinet/ip.h> /* For IPTOS macros */
14 #ifdef HAVE_SYS_BITYPES_H
15 # include <sys/bitypes.h> /* For u_intXX_t */
19 # include <paths.h> /* For _PATH_XXX */
22 #ifdef HAVE_SYS_TIME_H
23 # include <sys/time.h> /* For timersub */
26 #ifdef HAVE_MAILLOCK_H
27 # include <maillock.h> /* For _PATH_MAILDIR */
30 #ifdef HAVE_SYS_CDEFS_H
31 # include <sys/cdefs.h> /* For __P() */
34 #ifdef HAVE_SYS_SYSMACROS_H
35 # include <sys/sysmacros.h> /* For MIN, MAX, etc */
43 SHUT_RD = 0, /* No more receptions. */
44 SHUT_WR, /* No more transmissions. */
45 SHUT_RDWR /* No more receptions or transmissions. */
47 # define SHUT_RD SHUT_RD
48 # define SHUT_WR SHUT_WR
49 # define SHUT_RDWR SHUT_RDWR
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 */
62 /* If sys/types.h does not supply intXX_t, supply them ourselves */
65 # if (SIZEOF_CHAR == 1)
68 # error "8 bit int type not found."
70 # if (SIZEOF_SHORT_INT == 2)
71 typedef short int int16_t;
73 # error "16 bit int type not found."
75 # if (SIZEOF_INT == 4)
78 # error "32 bit int type not found."
81 # if (SIZEOF_LONG_INT == 8)
82 typedef long int int64_t;
84 # if (SIZEOF_LONG_LONG_INT == 8)
85 typedef long long int int64_t;
86 # define HAVE_INTXX_T 1
88 # error "64 bit int type not found."
94 /* If sys/types.h does not supply u_intXX_t, supply them ourselves */
95 #ifndef HAVE_U_INTXX_T
97 typedef uint8_t u_int8_t;
98 typedef uint16_t u_int16_t;
99 typedef uint32_t u_int32_t;
101 typedef uint64_t u_int64_t;
103 # define HAVE_U_INTXX_T 1
105 # if (SIZEOF_CHAR == 1)
106 typedef unsigned char u_int8_t;
108 # error "8 bit int type not found."
110 # if (SIZEOF_SHORT_INT == 2)
111 typedef unsigned short int u_int16_t;
113 # error "16 bit int type not found."
115 # if (SIZEOF_INT == 4)
116 typedef unsigned int u_int32_t;
118 # error "32 bit int type not found."
121 # if (SIZEOF_LONG_INT == 8)
122 typedef unsigned long int u_int64_t;
124 # if (SIZEOF_LONG_LONG_INT == 8)
125 typedef unsigned long long int u_int64_t;
126 # define HAVE_U_INTXX_T 1
128 # error "64 bit int type not found."
135 #ifndef HAVE_SOCKLEN_T
136 typedef unsigned int socklen_t;
137 # define HAVE_SOCKLEN_T
138 #endif /* HAVE_SOCKLEN_T */
141 typedef unsigned int size_t;
143 #endif /* HAVE_SIZE_T */
147 # define HAVE_SSIZE_T
148 #endif /* HAVE_SSIZE_T */
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) */
157 # define _PATH_BSHELL "/bin/sh"
161 # ifdef _PATH_STDPATH
162 # undef _PATH_STDPATH
164 # define _PATH_STDPATH USER_PATH
167 #ifndef _PATH_STDPATH
168 # define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin"
171 #ifndef _PATH_DEVNULL
172 # define _PATH_DEVNULL "/dev/null"
175 #ifndef MAIL_DIRECTORY
176 # define MAIL_DIRECTORY "/var/spool/mail"
180 # define MAILDIR MAIL_DIRECTORY
183 #if !defined(_PATH_MAILDIR) && defined(MAILDIR)
184 # define _PATH_MAILDIR MAILDIR
185 #endif /* !defined(_PATH_MAILDIR) && defined(MAILDIR) */
189 # define _PATH_RSH RSH_PATH
190 # endif /* RSH_PATH */
191 #endif /* _PATH_RSH */
196 # define MAX(a,b) (((a)>(b))?(a):(b))
197 # define MIN(a,b) (((a)<(b))?(a):(b))
201 #define timersub(a, b, result) \
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; \
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) */
222 #if !defined(__GNUC__) || (__GNUC__ < 2)
223 # define __attribute__(x)
224 #endif /* !defined(__GNUC__) || (__GNUC__ < 2) */
226 #if defined(HAVE_SECURITY_PAM_APPL_H) && !defined(DISABLE_PAM)
228 #endif /* defined(HAVE_SECURITY_PAM_APPL_H) && !defined(DISABLE_PAM) */
230 /* Function replacement / compatibility hacks */
232 /* In older versions of libpam, pam_strerror takes a single argument */
234 # define PAM_STRERROR(a,b) pam_strerror((b))
236 # define PAM_STRERROR(a,b) pam_strerror((a),(b))
239 #if defined(BROKEN_GETADDRINFO) && defined(HAVE_GETADDRINFO)
240 # undef HAVE_GETADDRINFO
241 #endif /* defined(BROKEN_GETADDRINFO) && defined(HAVE_GETADDRINFO) */
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) */
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) */
252 ** login recorder definitions
258 # ifdef HAVE_TIME_IN_UTMP
264 # ifdef HAVE_TV_IN_UTMPX
265 # include <sys/time.h>
269 #ifdef HAVE_LASTLOG_H
270 # include <lastlog.h>
276 /* FIXME: put default paths back in */
277 #if !defined(UTMP_FILE) && defined(_PATH_UTMP)
278 # define UTMP_FILE _PATH_UTMP
280 #if !defined(WTMP_FILE) && defined(_PATH_WTMP)
281 # define WTMP_FILE _PATH_WTMP
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
287 #if !defined(LASTLOG_FILE) && defined(CONF_LASTLOG_FILE)
288 # define LASTLOG_FILE CONF_LASTLOG_FILE
292 /* The login() library function in libutil is first choice */
293 #if defined(HAVE_LOGIN) && !defined(DISABLE_LOGIN)
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)
302 # if defined(UTMP_FILE) && !defined(DISABLE_UTMP)
305 # if defined(WTMPX_FILE) && !defined(DISABLE_WTMPX)
308 # if defined(WTMP_FILE) && !defined(DISABLE_WTMP)
314 /* I hope that the presence of LASTLOG_FILE is enough to detect this */
315 #if defined(LASTLOG_FILE) && !defined(DISABLE_LASTLOG)
319 /* which type of time to use? (api.c) */
320 #ifdef HAVE_SYS_TIME_H
324 /** end of login recorder definitions */
327 #endif /* _DEFINES_H */