source: trunk/third/openssh/defines.h @ 18759

Revision 18759, 12.9 KB checked in by zacheiss, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18758, which included commits to RCS files with non-trunk default branches.
Line 
1#ifndef _DEFINES_H
2#define _DEFINES_H
3
4/* $Id: defines.h,v 1.1.1.3 2003-02-05 19:04:32 zacheiss Exp $ */
5
6
7/* Constants */
8
9#ifndef SHUT_RDWR
10enum
11{
12  SHUT_RD = 0,          /* No more receptions.  */
13  SHUT_WR,                      /* No more transmissions.  */
14  SHUT_RDWR                     /* No more receptions or transmissions.  */
15};
16# define SHUT_RD   SHUT_RD
17# define SHUT_WR   SHUT_WR
18# define SHUT_RDWR SHUT_RDWR
19#endif
20
21#ifndef IPTOS_LOWDELAY
22# define IPTOS_LOWDELAY          0x10
23# define IPTOS_THROUGHPUT        0x08
24# define IPTOS_RELIABILITY       0x04
25# define IPTOS_LOWCOST           0x02
26# define IPTOS_MINCOST           IPTOS_LOWCOST
27#endif /* IPTOS_LOWDELAY */
28
29#ifndef MAXPATHLEN
30# ifdef PATH_MAX
31#  define MAXPATHLEN PATH_MAX
32# else /* PATH_MAX */
33#  define MAXPATHLEN 64 /* Should be safe */
34# endif /* PATH_MAX */
35#endif /* MAXPATHLEN */
36
37#ifndef STDIN_FILENO
38# define STDIN_FILENO    0
39#endif
40#ifndef STDOUT_FILENO
41# define STDOUT_FILENO   1
42#endif
43#ifndef STDERR_FILENO
44# define STDERR_FILENO   2
45#endif
46
47#ifndef NGROUPS_MAX     /* Disable groupaccess if NGROUP_MAX is not set */
48#ifdef NGROUPS
49#define NGROUPS_MAX NGROUPS
50#else
51#define NGROUPS_MAX 0
52#endif
53#endif
54
55#ifndef O_NONBLOCK      /* Non Blocking Open */
56# define O_NONBLOCK      00004
57#endif
58
59#ifndef S_ISDIR
60# define S_ISDIR(mode)  (((mode) & (_S_IFMT)) == (_S_IFDIR))
61#endif /* S_ISDIR */
62
63#ifndef S_ISREG
64# define S_ISREG(mode)  (((mode) & (_S_IFMT)) == (_S_IFREG))
65#endif /* S_ISREG */
66
67#ifndef S_ISLNK
68# define S_ISLNK(mode)  (((mode) & S_IFMT) == S_IFLNK)
69#endif /* S_ISLNK */
70
71#ifndef S_IXUSR
72# define S_IXUSR                        0000100 /* execute/search permission, */
73# define S_IXGRP                        0000010 /* execute/search permission, */
74# define S_IXOTH                        0000001 /* execute/search permission, */
75# define _S_IWUSR                       0000200 /* write permission, */
76# define S_IWUSR                        _S_IWUSR        /* write permission, owner */
77# define S_IWGRP                        0000020 /* write permission, group */
78# define S_IWOTH                        0000002 /* write permission, other */
79# define S_IRUSR                        0000400 /* read permission, owner */
80# define S_IRGRP                        0000040 /* read permission, group */
81# define S_IROTH                        0000004 /* read permission, other */
82# define S_IRWXU                        0000700 /* read, write, execute */
83# define S_IRWXG                        0000070 /* read, write, execute */
84# define S_IRWXO                        0000007 /* read, write, execute */
85#endif /* S_IXUSR */
86
87#if !defined(MAP_ANON) && defined(MAP_ANONYMOUS)
88#define MAP_ANON MAP_ANONYMOUS
89#endif
90
91#ifndef MAP_FAILED
92# define MAP_FAILED ((void *)-1)
93#endif
94
95/* *-*-nto-qnx doesn't define this constant in the system headers */
96#ifdef MISSING_NFDBITS
97# define        NFDBITS (8 * sizeof(unsigned long))
98#endif
99
100/*
101SCO Open Server 3 has INADDR_LOOPBACK defined in rpc/rpc.h but
102including rpc/rpc.h breaks Solaris 6
103*/
104#ifndef INADDR_LOOPBACK
105#define INADDR_LOOPBACK ((u_long)0x7f000001)
106#endif
107
108/* Types */
109
110/* If sys/types.h does not supply intXX_t, supply them ourselves */
111/* (or die trying) */
112
113
114#ifndef HAVE_U_INT
115typedef unsigned int u_int;
116#endif
117
118#ifndef HAVE_INTXX_T
119# if (SIZEOF_CHAR == 1)
120typedef char int8_t;
121# else
122#  error "8 bit int type not found."
123# endif
124# if (SIZEOF_SHORT_INT == 2)
125typedef short int int16_t;
126# else
127#  ifdef _UNICOS
128#   if (SIZEOF_SHORT_INT == 4)
129typedef short int16_t;
130#   else
131typedef long  int16_t;
132#   endif
133#  else
134#   error "16 bit int type not found."
135#  endif /* _UNICOS */
136# endif
137# if (SIZEOF_INT == 4)
138typedef int int32_t;
139# else
140#  ifdef _UNICOS
141typedef long  int32_t;
142#  else
143#   error "32 bit int type not found."
144#  endif /* _UNICOS */
145# endif
146#endif
147
148/* If sys/types.h does not supply u_intXX_t, supply them ourselves */
149#ifndef HAVE_U_INTXX_T
150# ifdef HAVE_UINTXX_T
151typedef uint8_t u_int8_t;
152typedef uint16_t u_int16_t;
153typedef uint32_t u_int32_t;
154# define HAVE_U_INTXX_T 1
155# else
156#  if (SIZEOF_CHAR == 1)
157typedef unsigned char u_int8_t;
158#  else
159#   error "8 bit int type not found."
160#  endif
161#  if (SIZEOF_SHORT_INT == 2)
162typedef unsigned short int u_int16_t;
163#  else
164#   ifdef _UNICOS
165#    if (SIZEOF_SHORT_INT == 4)
166typedef unsigned short u_int16_t;
167#    else
168typedef unsigned long  u_int16_t;
169#    endif
170#   else
171#    error "16 bit int type not found."
172#   endif
173#  endif
174#  if (SIZEOF_INT == 4)
175typedef unsigned int u_int32_t;
176#  else
177#   ifdef _UNICOS
178typedef unsigned long  u_int32_t;
179#   else
180#    error "32 bit int type not found."
181#   endif
182#  endif
183# endif
184#define __BIT_TYPES_DEFINED__
185#endif
186
187/* 64-bit types */
188#ifndef HAVE_INT64_T
189# if (SIZEOF_LONG_INT == 8)
190typedef long int int64_t;
191#   define HAVE_INT64_T 1
192# else
193#  if (SIZEOF_LONG_LONG_INT == 8)
194typedef long long int int64_t;
195#   define HAVE_INT64_T 1
196#  endif
197# endif
198#endif
199#ifndef HAVE_U_INT64_T
200# if (SIZEOF_LONG_INT == 8)
201typedef unsigned long int u_int64_t;
202#   define HAVE_U_INT64_T 1
203# else
204#  if (SIZEOF_LONG_LONG_INT == 8)
205typedef unsigned long long int u_int64_t;
206#   define HAVE_U_INT64_T 1
207#  endif
208# endif
209#endif
210#if !defined(HAVE_LONG_LONG_INT) && (SIZEOF_LONG_LONG_INT == 8)
211# define HAVE_LONG_LONG_INT 1
212#endif
213
214#ifndef HAVE_U_CHAR
215typedef unsigned char u_char;
216# define HAVE_U_CHAR
217#endif /* HAVE_U_CHAR */
218
219#ifndef SIZE_T_MAX
220#define SIZE_T_MAX ULONG_MAX
221#endif /* SIZE_T_MAX */
222
223#ifndef HAVE_SIZE_T
224typedef unsigned int size_t;
225# define HAVE_SIZE_T
226#endif /* HAVE_SIZE_T */
227
228#ifndef HAVE_SSIZE_T
229typedef int ssize_t;
230# define HAVE_SSIZE_T
231#endif /* HAVE_SSIZE_T */
232
233#ifndef HAVE_CLOCK_T
234typedef long clock_t;
235# define HAVE_CLOCK_T
236#endif /* HAVE_CLOCK_T */
237
238#ifndef HAVE_SA_FAMILY_T
239typedef int sa_family_t;
240# define HAVE_SA_FAMILY_T
241#endif /* HAVE_SA_FAMILY_T */
242
243#ifndef HAVE_PID_T
244typedef int pid_t;
245# define HAVE_PID_T
246#endif /* HAVE_PID_T */
247
248#ifndef HAVE_SIG_ATOMIC_T
249typedef int sig_atomic_t;
250# define HAVE_SIG_ATOMIC_T
251#endif /* HAVE_SIG_ATOMIC_T */
252
253#ifndef HAVE_MODE_T
254typedef int mode_t;
255# define HAVE_MODE_T
256#endif /* HAVE_MODE_T */
257
258#if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS)
259# define ss_family __ss_family
260#endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */
261
262#ifndef HAVE_SYS_UN_H
263struct  sockaddr_un {
264        short   sun_family;             /* AF_UNIX */
265        char    sun_path[108];          /* path name (gag) */
266};
267#endif /* HAVE_SYS_UN_H */
268
269#if defined(BROKEN_SYS_TERMIO_H) && !defined(_STRUCT_WINSIZE)
270#define _STRUCT_WINSIZE
271struct winsize {
272      unsigned short ws_row;          /* rows, in characters */
273      unsigned short ws_col;          /* columns, in character */
274      unsigned short ws_xpixel;       /* horizontal size, pixels */
275      unsigned short ws_ypixel;       /* vertical size, pixels */
276};
277#endif
278
279/* *-*-nto-qnx does not define this type in the system headers */
280#ifdef MISSING_FD_MASK
281 typedef unsigned long int      fd_mask;
282#endif
283
284/* Paths */
285
286#ifndef _PATH_BSHELL
287# define _PATH_BSHELL "/bin/sh"
288#endif
289#ifndef _PATH_CSHELL
290# define _PATH_CSHELL "/bin/csh"
291#endif
292#ifndef _PATH_SHELLS
293# define _PATH_SHELLS "/etc/shells"
294#endif
295
296#ifdef USER_PATH
297# ifdef _PATH_STDPATH
298#  undef _PATH_STDPATH
299# endif
300# define _PATH_STDPATH USER_PATH
301#endif
302
303#ifndef _PATH_STDPATH
304# define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin"
305#endif
306
307#ifndef _PATH_DEVNULL
308# define _PATH_DEVNULL "/dev/null"
309#endif
310
311#ifndef MAIL_DIRECTORY
312# define MAIL_DIRECTORY "/var/spool/mail"
313#endif
314
315#ifndef MAILDIR
316# define MAILDIR MAIL_DIRECTORY
317#endif
318
319#if !defined(_PATH_MAILDIR) && defined(MAILDIR)
320# define _PATH_MAILDIR MAILDIR
321#endif /* !defined(_PATH_MAILDIR) && defined(MAILDIR) */
322
323#ifndef _PATH_NOLOGIN
324# define _PATH_NOLOGIN "/etc/nologin"
325#endif
326
327/* Define this to be the path of the xauth program. */
328#ifdef XAUTH_PATH
329#define _PATH_XAUTH XAUTH_PATH
330#endif /* XAUTH_PATH */
331
332/* derived from XF4/xc/lib/dps/Xlibnet.h */
333#ifndef X_UNIX_PATH
334#  ifdef __hpux
335#    define X_UNIX_PATH "/var/spool/sockets/X11/%u"
336#  else
337#    define X_UNIX_PATH "/tmp/.X11-unix/X%u"
338#  endif
339#endif /* X_UNIX_PATH */
340#define _PATH_UNIX_X X_UNIX_PATH
341
342#ifndef _PATH_TTY
343# define _PATH_TTY "/dev/tty"
344#endif
345
346/* Macros */
347
348#if defined(HAVE_LOGIN_GETCAPBOOL) && defined(HAVE_LOGIN_CAP_H)
349# define HAVE_LOGIN_CAP
350#endif
351
352#ifndef MAX
353# define MAX(a,b) (((a)>(b))?(a):(b))
354# define MIN(a,b) (((a)<(b))?(a):(b))
355#endif
356
357#ifndef roundup
358# define roundup(x, y)   ((((x)+((y)-1))/(y))*(y))
359#endif
360
361#ifndef timersub
362#define timersub(a, b, result)                                  \
363   do {                                                         \
364      (result)->tv_sec = (a)->tv_sec - (b)->tv_sec;             \
365      (result)->tv_usec = (a)->tv_usec - (b)->tv_usec;          \
366      if ((result)->tv_usec < 0) {                              \
367         --(result)->tv_sec;                                    \
368         (result)->tv_usec += 1000000;                          \
369      }                                                         \
370   } while (0)
371#endif
372
373#ifndef __P
374# define __P(x) x
375#endif
376
377#if !defined(IN6_IS_ADDR_V4MAPPED)
378# define IN6_IS_ADDR_V4MAPPED(a) \
379        ((((u_int32_t *) (a))[0] == 0) && (((u_int32_t *) (a))[1] == 0) && \
380         (((u_int32_t *) (a))[2] == htonl (0xffff)))
381#endif /* !defined(IN6_IS_ADDR_V4MAPPED) */
382
383#if !defined(__GNUC__) || (__GNUC__ < 2)
384# define __attribute__(x)
385#endif /* !defined(__GNUC__) || (__GNUC__ < 2) */
386
387/* *-*-nto-qnx doesn't define this macro in the system headers */
388#ifdef MISSING_HOWMANY
389# define howmany(x,y)   (((x)+((y)-1))/(y))
390#endif
391
392#ifndef OSSH_ALIGNBYTES
393#define OSSH_ALIGNBYTES (sizeof(int) - 1)
394#endif
395#ifndef __CMSG_ALIGN
396#define __CMSG_ALIGN(p) (((u_int)(p) + OSSH_ALIGNBYTES) &~ OSSH_ALIGNBYTES)
397#endif
398
399/* Length of the contents of a control message of length len */
400#ifndef CMSG_LEN
401#define CMSG_LEN(len)   (__CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
402#endif
403
404/* Length of the space taken up by a padded control message of length len */
405#ifndef CMSG_SPACE
406#define CMSG_SPACE(len) (__CMSG_ALIGN(sizeof(struct cmsghdr)) + __CMSG_ALIGN(len))
407#endif
408
409/* Function replacement / compatibility hacks */
410
411#if !defined(HAVE_GETADDRINFO) && (defined(HAVE_OGETADDRINFO) || defined(HAVE_NGETADDRINFO))
412# define HAVE_GETADDRINFO
413#endif
414
415#ifndef HAVE_GETOPT_OPTRESET
416# undef getopt
417# undef opterr
418# undef optind
419# undef optopt
420# undef optreset
421# undef optarg
422# define getopt(ac, av, o)  BSDgetopt(ac, av, o)
423# define opterr             BSDopterr
424# define optind             BSDoptind
425# define optopt             BSDoptopt
426# define optreset           BSDoptreset
427# define optarg             BSDoptarg
428#endif
429
430/* In older versions of libpam, pam_strerror takes a single argument */
431#ifdef HAVE_OLD_PAM
432# define PAM_STRERROR(a,b) pam_strerror((b))
433#else
434# define PAM_STRERROR(a,b) pam_strerror((a),(b))
435#endif
436
437#ifdef PAM_SUN_CODEBASE
438# define PAM_MSG_MEMBER(msg, n, member) ((*(msg))[(n)].member)
439#else
440# define PAM_MSG_MEMBER(msg, n, member) ((msg)[(n)]->member)
441#endif
442
443#if defined(BROKEN_GETADDRINFO) && defined(HAVE_GETADDRINFO)
444# undef HAVE_GETADDRINFO
445#endif
446#if defined(BROKEN_GETADDRINFO) && defined(HAVE_FREEADDRINFO)
447# undef HAVE_FREEADDRINFO
448#endif
449#if defined(BROKEN_GETADDRINFO) && defined(HAVE_GAI_STRERROR)
450# undef HAVE_GAI_STRERROR
451#endif
452
453#if !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY)
454# define memmove(s1, s2, n) bcopy((s2), (s1), (n))
455#endif /* !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY) */
456
457#if defined(HAVE_VHANGUP) && !defined(HAVE_DEV_PTMX)
458#  define USE_VHANGUP
459#endif /* defined(HAVE_VHANGUP) && !defined(HAVE_DEV_PTMX) */
460
461#ifndef GETPGRP_VOID
462# define getpgrp() getpgrp(0)
463#endif
464
465/* OPENSSL_free() is Free() in versions before OpenSSL 0.9.6 */
466#if !defined(OPENSSL_VERSION_NUMBER) || (OPENSSL_VERSION_NUMBER < 0x0090600f)
467# define OPENSSL_free(x) Free(x)
468#endif
469
470#if !defined(HAVE___func__) && defined(HAVE___FUNCTION__)
471#  define __func__ __FUNCTION__
472#elif !defined(HAVE___func__)
473#  define __func__ ""
474#endif
475
476/*
477 * Define this to use pipes instead of socketpairs for communicating with the
478 * client program.  Socketpairs do not seem to work on all systems.
479 *
480 * configure.ac sets this for a few OS's which are known to have problems
481 * but you may need to set it yourself
482 */
483/* #define USE_PIPES 1 */
484
485/**
486 ** login recorder definitions
487 **/
488
489/* FIXME: put default paths back in */
490#ifndef UTMP_FILE
491#  ifdef _PATH_UTMP
492#    define UTMP_FILE _PATH_UTMP
493#  else
494#    ifdef CONF_UTMP_FILE
495#      define UTMP_FILE CONF_UTMP_FILE
496#    endif
497#  endif
498#endif
499#ifndef WTMP_FILE
500#  ifdef _PATH_WTMP
501#    define WTMP_FILE _PATH_WTMP
502#  else
503#    ifdef CONF_WTMP_FILE
504#      define WTMP_FILE CONF_WTMP_FILE
505#    endif
506#  endif
507#endif
508/* pick up the user's location for lastlog if given */
509#ifndef LASTLOG_FILE
510#  ifdef _PATH_LASTLOG
511#    define LASTLOG_FILE _PATH_LASTLOG
512#  else
513#    ifdef CONF_LASTLOG_FILE
514#      define LASTLOG_FILE CONF_LASTLOG_FILE
515#    endif
516#  endif
517#endif
518
519
520/* The login() library function in libutil is first choice */
521#if defined(HAVE_LOGIN) && !defined(DISABLE_LOGIN)
522#  define USE_LOGIN
523
524#else
525/* Simply select your favourite login types. */
526/* Can't do if-else because some systems use several... <sigh> */
527#  if defined(UTMPX_FILE) && !defined(DISABLE_UTMPX)
528#    define USE_UTMPX
529#  endif
530#  if defined(UTMP_FILE) && !defined(DISABLE_UTMP)
531#    define USE_UTMP
532#  endif
533#  if defined(WTMPX_FILE) && !defined(DISABLE_WTMPX)
534#    define USE_WTMPX
535#  endif
536#  if defined(WTMP_FILE) && !defined(DISABLE_WTMP)
537#    define USE_WTMP
538#  endif
539
540#endif
541
542/* I hope that the presence of LASTLOG_FILE is enough to detect this */
543#if defined(LASTLOG_FILE) && !defined(DISABLE_LASTLOG)
544#  define USE_LASTLOG
545#endif
546
547/** end of login recorder definitions */
548
549#endif /* _DEFINES_H */
Note: See TracBrowser for help on using the repository browser.