Grid Community Toolkit
6.2.1705709074 (tag: v6.2.20240202)
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
gsi_openssh
source
defines.h
1
/*
2
* Copyright (c) 1999-2003 Damien Miller. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
6
* are met:
7
* 1. Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* 2. Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
12
*
13
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
14
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
15
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
16
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
17
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
*/
24
25
#ifndef _DEFINES_H
26
#define _DEFINES_H
27
28
/* Constants */
29
30
#if defined(HAVE_DECL_SHUT_RD) && HAVE_DECL_SHUT_RD == 0
31
enum
32
{
33
SHUT_RD = 0,
/* No more receptions. */
34
SHUT_WR,
/* No more transmissions. */
35
SHUT_RDWR
/* No more receptions or transmissions. */
36
};
37
# define SHUT_RD SHUT_RD
38
# define SHUT_WR SHUT_WR
39
# define SHUT_RDWR SHUT_RDWR
40
#endif
41
42
/*
43
* Cygwin doesn't really have a notion of reserved ports. It is still
44
* is useful on the client side so for compatibility it defines as 1024 via
45
* netinet/in.h inside an enum. We * don't actually want that restriction
46
* so we want to set that to zero, but we can't do it direct in config.h
47
* because it'll cause a conflicting definition the first time we include
48
* netinet/in.h.
49
*/
50
51
#ifdef HAVE_CYGWIN
52
#define IPPORT_RESERVED 0
53
#endif
54
55
/*
56
* Definitions for IP type of service (ip_tos)
57
*/
58
#include <netinet/in_systm.h>
59
#include <netinet/ip.h>
60
#ifndef IPTOS_LOWDELAY
61
# define IPTOS_LOWDELAY 0x10
62
# define IPTOS_THROUGHPUT 0x08
63
# define IPTOS_RELIABILITY 0x04
64
# define IPTOS_LOWCOST 0x02
65
# define IPTOS_MINCOST IPTOS_LOWCOST
66
#endif
/* IPTOS_LOWDELAY */
67
68
/*
69
* Definitions for DiffServ Codepoints as per RFCs 2474, 3246, 4594 & 8622.
70
* These are the 6 most significant bits as they appear on the wire, so the
71
* two least significant bits must be zero.
72
*/
73
#ifndef IPTOS_DSCP_AF11
74
# define IPTOS_DSCP_AF11 0x28
75
# define IPTOS_DSCP_AF12 0x30
76
# define IPTOS_DSCP_AF13 0x38
77
# define IPTOS_DSCP_AF21 0x48
78
# define IPTOS_DSCP_AF22 0x50
79
# define IPTOS_DSCP_AF23 0x58
80
# define IPTOS_DSCP_AF31 0x68
81
# define IPTOS_DSCP_AF32 0x70
82
# define IPTOS_DSCP_AF33 0x78
83
# define IPTOS_DSCP_AF41 0x88
84
# define IPTOS_DSCP_AF42 0x90
85
# define IPTOS_DSCP_AF43 0x98
86
# define IPTOS_DSCP_EF 0xb8
87
#endif
/* IPTOS_DSCP_AF11 */
88
#ifndef IPTOS_DSCP_CS0
89
# define IPTOS_DSCP_CS0 0x00
90
# define IPTOS_DSCP_CS1 0x20
91
# define IPTOS_DSCP_CS2 0x40
92
# define IPTOS_DSCP_CS3 0x60
93
# define IPTOS_DSCP_CS4 0x80
94
# define IPTOS_DSCP_CS5 0xa0
95
# define IPTOS_DSCP_CS6 0xc0
96
# define IPTOS_DSCP_CS7 0xe0
97
#endif
/* IPTOS_DSCP_CS0 */
98
#ifndef IPTOS_DSCP_EF
99
# define IPTOS_DSCP_EF 0xb8
100
#endif
/* IPTOS_DSCP_EF */
101
#ifndef IPTOS_DSCP_LE
102
# define IPTOS_DSCP_LE 0x04
103
#endif
/* IPTOS_DSCP_LE */
104
#ifndef IPTOS_PREC_CRITIC_ECP
105
# define IPTOS_PREC_CRITIC_ECP 0xa0
106
#endif
107
#ifndef IPTOS_PREC_INTERNETCONTROL
108
# define IPTOS_PREC_INTERNETCONTROL 0xc0
109
#endif
110
#ifndef IPTOS_PREC_NETCONTROL
111
# define IPTOS_PREC_NETCONTROL 0xe0
112
#endif
113
114
#ifndef PATH_MAX
115
# ifdef _POSIX_PATH_MAX
116
# define PATH_MAX _POSIX_PATH_MAX
117
# endif
118
#endif
119
120
#ifndef MAXPATHLEN
121
# ifdef PATH_MAX
122
# define MAXPATHLEN PATH_MAX
123
# else
/* PATH_MAX */
124
# define MAXPATHLEN 64
125
# endif
/* PATH_MAX */
126
#endif
/* MAXPATHLEN */
127
128
#ifndef HOST_NAME_MAX
129
# include "netdb.h"
/* for MAXHOSTNAMELEN */
130
# if defined(_POSIX_HOST_NAME_MAX)
131
# define HOST_NAME_MAX _POSIX_HOST_NAME_MAX
132
# elif defined(MAXHOSTNAMELEN)
133
# define HOST_NAME_MAX MAXHOSTNAMELEN
134
# else
135
# define HOST_NAME_MAX 255
136
# endif
137
#endif
/* HOST_NAME_MAX */
138
139
#if defined(HAVE_DECL_MAXSYMLINKS) && HAVE_DECL_MAXSYMLINKS == 0
140
# define MAXSYMLINKS 5
141
#endif
142
143
#ifndef STDIN_FILENO
144
# define STDIN_FILENO 0
145
#endif
146
#ifndef STDOUT_FILENO
147
# define STDOUT_FILENO 1
148
#endif
149
#ifndef STDERR_FILENO
150
# define STDERR_FILENO 2
151
#endif
152
153
#ifndef NGROUPS_MAX
/* Disable groupaccess if NGROUP_MAX is not set */
154
#ifdef NGROUPS
155
#define NGROUPS_MAX NGROUPS
156
#else
157
#define NGROUPS_MAX 0
158
#endif
159
#endif
160
161
#if defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK == 0
162
# define O_NONBLOCK 00004
/* Non Blocking Open */
163
#endif
164
165
#ifndef S_IFSOCK
166
# define S_IFSOCK 0
167
#endif
/* S_IFSOCK */
168
169
#ifndef S_ISDIR
170
# define S_ISDIR(mode) (((mode) & (_S_IFMT)) == (_S_IFDIR))
171
#endif
/* S_ISDIR */
172
173
#ifndef S_ISREG
174
# define S_ISREG(mode) (((mode) & (_S_IFMT)) == (_S_IFREG))
175
#endif
/* S_ISREG */
176
177
#ifndef S_ISLNK
178
# define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)
179
#endif
/* S_ISLNK */
180
181
#ifndef S_IXUSR
182
# define S_IXUSR 0000100
/* execute/search permission, */
183
# define S_IXGRP 0000010
/* execute/search permission, */
184
# define S_IXOTH 0000001
/* execute/search permission, */
185
# define _S_IWUSR 0000200
/* write permission, */
186
# define S_IWUSR _S_IWUSR
/* write permission, owner */
187
# define S_IWGRP 0000020
/* write permission, group */
188
# define S_IWOTH 0000002
/* write permission, other */
189
# define S_IRUSR 0000400
/* read permission, owner */
190
# define S_IRGRP 0000040
/* read permission, group */
191
# define S_IROTH 0000004
/* read permission, other */
192
# define S_IRWXU 0000700
/* read, write, execute */
193
# define S_IRWXG 0000070
/* read, write, execute */
194
# define S_IRWXO 0000007
/* read, write, execute */
195
#endif
/* S_IXUSR */
196
197
#if !defined(MAP_ANON) && defined(MAP_ANONYMOUS)
198
#define MAP_ANON MAP_ANONYMOUS
199
#endif
200
201
#ifndef MAP_FAILED
202
# define MAP_FAILED ((void *)-1)
203
#endif
204
205
/*
206
SCO Open Server 3 has INADDR_LOOPBACK defined in rpc/rpc.h but
207
including rpc/rpc.h breaks Solaris 6
208
*/
209
#ifndef INADDR_LOOPBACK
210
#define INADDR_LOOPBACK ((u_long)0x7f000001)
211
#endif
212
213
/* Types */
214
215
/* If sys/types.h does not supply intXX_t, supply them ourselves */
216
/* (or die trying) */
217
218
#ifndef HAVE_U_INT
219
typedef
unsigned
int
u_int;
220
#endif
221
222
#ifndef HAVE_INTXX_T
223
typedef
signed
char
int8_t;
224
# if (SIZEOF_SHORT_INT == 2)
225
typedef
short
int
int16_t;
226
# else
227
# error "16 bit int type not found."
228
# endif
229
# if (SIZEOF_INT == 4)
230
typedef
int
int32_t;
231
# else
232
# error "32 bit int type not found."
233
# endif
234
#endif
235
236
/* If sys/types.h does not supply u_intXX_t, supply them ourselves */
237
#ifndef HAVE_U_INTXX_T
238
# ifdef HAVE_UINTXX_T
239
typedef
uint8_t u_int8_t;
240
typedef
uint16_t u_int16_t;
241
typedef
uint32_t u_int32_t;
242
# define HAVE_U_INTXX_T 1
243
# else
244
typedef
unsigned
char
u_int8_t;
245
# if (SIZEOF_SHORT_INT == 2)
246
typedef
unsigned
short
int
u_int16_t;
247
# else
248
# error "16 bit int type not found."
249
# endif
250
# if (SIZEOF_INT == 4)
251
typedef
unsigned
int
u_int32_t;
252
# else
253
# error "32 bit int type not found."
254
# endif
255
# endif
256
#define __BIT_TYPES_DEFINED__
257
#endif
258
259
#if !defined(LLONG_MIN) && defined(LONG_LONG_MIN)
260
#define LLONG_MIN LONG_LONG_MIN
261
#endif
262
#if !defined(LLONG_MAX) && defined(LONG_LONG_MAX)
263
#define LLONG_MAX LONG_LONG_MAX
264
#endif
265
266
#ifndef UINT32_MAX
267
# if defined(HAVE_DECL_UINT32_MAX) && (HAVE_DECL_UINT32_MAX == 0)
268
# if (SIZEOF_INT == 4)
269
# define UINT32_MAX UINT_MAX
270
# endif
271
# endif
272
#endif
273
274
/* 64-bit types */
275
#ifndef HAVE_INT64_T
276
# if (SIZEOF_LONG_INT == 8)
277
typedef
long
int
int64_t;
278
# else
279
# if (SIZEOF_LONG_LONG_INT == 8)
280
typedef
long
long
int
int64_t;
281
# endif
282
# endif
283
#endif
284
#ifndef HAVE_U_INT64_T
285
# if (SIZEOF_LONG_INT == 8)
286
typedef
unsigned
long
int
u_int64_t;
287
# else
288
# if (SIZEOF_LONG_LONG_INT == 8)
289
typedef
unsigned
long
long
int
u_int64_t;
290
# endif
291
# endif
292
#endif
293
294
#ifndef HAVE_UINTXX_T
295
typedef
u_int8_t uint8_t;
296
typedef
u_int16_t uint16_t;
297
typedef
u_int32_t uint32_t;
298
typedef
u_int64_t uint64_t;
299
#endif
300
301
#ifndef HAVE_INTMAX_T
302
typedef
long
long
intmax_t;
303
#endif
304
305
#ifndef HAVE_UINTMAX_T
306
typedef
unsigned
long
long
uintmax_t;
307
#endif
308
309
#if SIZEOF_TIME_T == SIZEOF_LONG_LONG_INT
310
# define SSH_TIME_T_MAX LLONG_MAX
311
#else
312
# define SSH_TIME_T_MAX INT_MAX
313
#endif
314
315
#ifndef HAVE_U_CHAR
316
typedef
unsigned
char
u_char;
317
# define HAVE_U_CHAR
318
#endif
/* HAVE_U_CHAR */
319
320
#ifndef ULLONG_MAX
321
# define ULLONG_MAX ((unsigned long long)-1)
322
#endif
323
324
#ifndef SIZE_T_MAX
325
#define SIZE_T_MAX ULONG_MAX
326
#endif
/* SIZE_T_MAX */
327
328
#ifndef HAVE_SIZE_T
329
typedef
unsigned
int
size_t;
330
# define HAVE_SIZE_T
331
# define SIZE_T_MAX UINT_MAX
332
#endif
/* HAVE_SIZE_T */
333
334
#ifndef SIZE_MAX
335
#define SIZE_MAX SIZE_T_MAX
336
#endif
337
338
#ifndef INT32_MAX
339
# if (SIZEOF_INT == 4)
340
# define INT32_MAX INT_MAX
341
# elif (SIZEOF_LONG == 4)
342
# define INT32_MAX LONG_MAX
343
# else
344
# error "need INT32_MAX"
345
# endif
346
#endif
347
348
#ifndef INT64_MAX
349
# if (SIZEOF_INT == 8)
350
# define INT64_MAX INT_MAX
351
# elif (SIZEOF_LONG == 8)
352
# define INT64_MAX LONG_MAX
353
# elif (SIZEOF_LONG_LONG_INT == 8)
354
# define INT64_MAX LLONG_MAX
355
# else
356
# error "need INT64_MAX"
357
# endif
358
#endif
359
360
#ifndef HAVE_SSIZE_T
361
typedef
int
ssize_t;
362
#define SSIZE_MAX INT_MAX
363
# define HAVE_SSIZE_T
364
#endif
/* HAVE_SSIZE_T */
365
366
#ifndef HAVE_CLOCK_T
367
typedef
long
clock_t;
368
# define HAVE_CLOCK_T
369
#endif
/* HAVE_CLOCK_T */
370
371
#ifndef HAVE_SA_FAMILY_T
372
typedef
int
sa_family_t;
373
# define HAVE_SA_FAMILY_T
374
#endif
/* HAVE_SA_FAMILY_T */
375
376
#ifndef HAVE_PID_T
377
typedef
int
pid_t;
378
# define HAVE_PID_T
379
#endif
/* HAVE_PID_T */
380
381
#ifndef HAVE_SIG_ATOMIC_T
382
typedef
int
sig_atomic_t;
383
# define HAVE_SIG_ATOMIC_T
384
#endif
/* HAVE_SIG_ATOMIC_T */
385
386
#ifndef HAVE_MODE_T
387
typedef
int
mode_t;
388
# define HAVE_MODE_T
389
#endif
/* HAVE_MODE_T */
390
391
#if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS)
392
# define ss_family __ss_family
393
#endif
/* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */
394
395
#ifndef HAVE_SYS_UN_H
396
struct
sockaddr_un {
397
short
sun_family;
/* AF_UNIX */
398
char
sun_path[108];
/* path name (gag) */
399
};
400
#endif
/* HAVE_SYS_UN_H */
401
402
#ifndef HAVE_IN_ADDR_T
403
typedef
u_int32_t in_addr_t;
404
#endif
405
#ifndef HAVE_IN_PORT_T
406
typedef
u_int16_t in_port_t;
407
#endif
408
409
#if defined(BROKEN_SYS_TERMIO_H) && !defined(_STRUCT_WINSIZE)
410
#define _STRUCT_WINSIZE
411
struct
winsize {
412
unsigned
short
ws_row;
/* rows, in characters */
413
unsigned
short
ws_col;
/* columns, in character */
414
unsigned
short
ws_xpixel;
/* horizontal size, pixels */
415
unsigned
short
ws_ypixel;
/* vertical size, pixels */
416
};
417
#endif
418
419
/* bits needed for select that may not be in the system headers */
420
#ifndef HAVE_FD_MASK
421
typedef
unsigned
long
int
fd_mask;
422
#endif
423
424
#if defined(HAVE_DECL_NFDBITS) && HAVE_DECL_NFDBITS == 0
425
# define NFDBITS (8 * sizeof(unsigned long))
426
#endif
427
428
#if defined(HAVE_DECL_HOWMANY) && HAVE_DECL_HOWMANY == 0
429
# define howmany(x,y) (((x)+((y)-1))/(y))
430
#endif
431
432
/* Paths */
433
434
#ifndef _PATH_BSHELL
435
# define _PATH_BSHELL "/bin/sh"
436
#endif
437
438
#ifdef USER_PATH
439
# ifdef _PATH_STDPATH
440
# undef _PATH_STDPATH
441
# endif
442
# define _PATH_STDPATH USER_PATH
443
#endif
444
445
#ifndef _PATH_STDPATH
446
# define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin"
447
#endif
448
449
#ifndef SUPERUSER_PATH
450
# define SUPERUSER_PATH _PATH_STDPATH
451
#endif
452
453
#ifndef _PATH_DEVNULL
454
# define _PATH_DEVNULL "/dev/null"
455
#endif
456
457
/* user may have set a different path */
458
#if defined(_PATH_MAILDIR) && defined(MAIL_DIRECTORY)
459
# undef _PATH_MAILDIR
460
#endif
/* defined(_PATH_MAILDIR) && defined(MAIL_DIRECTORY) */
461
462
#ifdef MAIL_DIRECTORY
463
# define _PATH_MAILDIR MAIL_DIRECTORY
464
#endif
465
466
#ifndef _PATH_NOLOGIN
467
# define _PATH_NOLOGIN "/etc/nologin"
468
#endif
469
470
/* Define this to be the path of the xauth program. */
471
#ifdef XAUTH_PATH
472
#define _PATH_XAUTH XAUTH_PATH
473
#endif
/* XAUTH_PATH */
474
475
/* derived from XF4/xc/lib/dps/Xlibnet.h */
476
#ifndef X_UNIX_PATH
477
# ifdef __hpux
478
# define X_UNIX_PATH "/var/spool/sockets/X11/%u"
479
# else
480
# define X_UNIX_PATH "/tmp/.X11-unix/X%u"
481
# endif
482
#endif
/* X_UNIX_PATH */
483
#define _PATH_UNIX_X X_UNIX_PATH
484
485
#ifndef _PATH_TTY
486
# define _PATH_TTY "/dev/tty"
487
#endif
488
489
/* Macros */
490
491
#if defined(HAVE_LOGIN_GETCAPBOOL) && defined(HAVE_LOGIN_CAP_H)
492
# define HAVE_LOGIN_CAP
493
#endif
494
495
#ifndef MAX
496
# define MAX(a,b) (((a)>(b))?(a):(b))
497
# define MIN(a,b) (((a)<(b))?(a):(b))
498
#endif
499
500
#ifndef roundup
501
# define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
502
#endif
503
504
#ifndef timersub
505
#define timersub(a, b, result) \
506
do { \
507
(result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
508
(result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
509
if ((result)->tv_usec < 0) { \
510
--(result)->tv_sec; \
511
(result)->tv_usec += 1000000; \
512
} \
513
} while (0)
514
#endif
515
516
#ifndef TIMEVAL_TO_TIMESPEC
517
#define TIMEVAL_TO_TIMESPEC(tv, ts) { \
518
(ts)->tv_sec = (tv)->tv_sec; \
519
(ts)->tv_nsec = (tv)->tv_usec * 1000; \
520
}
521
#endif
522
523
#ifndef TIMESPEC_TO_TIMEVAL
524
#define TIMESPEC_TO_TIMEVAL(tv, ts) { \
525
(tv)->tv_sec = (ts)->tv_sec; \
526
(tv)->tv_usec = (ts)->tv_nsec / 1000; \
527
}
528
#endif
529
530
#ifndef timespeccmp
531
#define timespeccmp(tsp, usp, cmp) \
532
(((tsp)->tv_sec == (usp)->tv_sec) ? \
533
((tsp)->tv_nsec cmp (usp)->tv_nsec) : \
534
((tsp)->tv_sec cmp (usp)->tv_sec))
535
#endif
536
537
/* Operations on timespecs. */
538
#ifndef timespecclear
539
#define timespecclear(tsp) (tsp)->tv_sec = (tsp)->tv_nsec = 0
540
#endif
541
#ifndef timespeccmp
542
#define timespeccmp(tsp, usp, cmp) \
543
(((tsp)->tv_sec == (usp)->tv_sec) ? \
544
((tsp)->tv_nsec cmp (usp)->tv_nsec) : \
545
((tsp)->tv_sec cmp (usp)->tv_sec))
546
#endif
547
#ifndef timespecadd
548
#define timespecadd(tsp, usp, vsp) \
549
do { \
550
(vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \
551
(vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \
552
if ((vsp)->tv_nsec >= 1000000000L) { \
553
(vsp)->tv_sec++; \
554
(vsp)->tv_nsec -= 1000000000L; \
555
} \
556
} while (0)
557
#endif
558
#ifndef timespecsub
559
#define timespecsub(tsp, usp, vsp) \
560
do { \
561
(vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
562
(vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \
563
if ((vsp)->tv_nsec < 0) { \
564
(vsp)->tv_sec--; \
565
(vsp)->tv_nsec += 1000000000L; \
566
} \
567
} while (0)
568
#endif
569
570
#ifndef __P
571
# define __P(x) x
572
#endif
573
574
#if !defined(IN6_IS_ADDR_V4MAPPED)
575
# define IN6_IS_ADDR_V4MAPPED(a) \
576
((((u_int32_t *) (a))[0] == 0) && (((u_int32_t *) (a))[1] == 0) && \
577
(((u_int32_t *) (a))[2] == htonl (0xffff)))
578
#endif
/* !defined(IN6_IS_ADDR_V4MAPPED) */
579
580
#if !defined(__GNUC__) || (__GNUC__ < 2)
581
# define __attribute__(x)
582
#endif
/* !defined(__GNUC__) || (__GNUC__ < 2) */
583
584
#if !defined(HAVE_ATTRIBUTE__SENTINEL__) && !defined(__sentinel__)
585
# define __sentinel__
586
#endif
587
588
#if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__bounded__)
589
# define __bounded__(x, y, z)
590
#endif
591
592
#if !defined(HAVE_ATTRIBUTE__NONNULL__) && !defined(__nonnull__)
593
# define __nonnull__(x)
594
#endif
595
596
#ifndef OSSH_ALIGNBYTES
597
#define OSSH_ALIGNBYTES (sizeof(int) - 1)
598
#endif
599
#ifndef __CMSG_ALIGN
600
#define __CMSG_ALIGN(p) (((u_int)(p) + OSSH_ALIGNBYTES) &~ OSSH_ALIGNBYTES)
601
#endif
602
603
/* Length of the contents of a control message of length len */
604
#ifndef CMSG_LEN
605
#define CMSG_LEN(len) (__CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
606
#endif
607
608
/* Length of the space taken up by a padded control message of length len */
609
#ifndef CMSG_SPACE
610
#define CMSG_SPACE(len) (__CMSG_ALIGN(sizeof(struct cmsghdr)) + __CMSG_ALIGN(len))
611
#endif
612
613
/* given pointer to struct cmsghdr, return pointer to data */
614
#ifndef CMSG_DATA
615
#define CMSG_DATA(cmsg) ((u_char *)(cmsg) + __CMSG_ALIGN(sizeof(struct cmsghdr)))
616
#endif
/* CMSG_DATA */
617
618
/*
619
* RFC 2292 requires to check msg_controllen, in case that the kernel returns
620
* an empty list for some reasons.
621
*/
622
#ifndef CMSG_FIRSTHDR
623
#define CMSG_FIRSTHDR(mhdr) \
624
((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \
625
(struct cmsghdr *)(mhdr)->msg_control : \
626
(struct cmsghdr *)NULL)
627
#endif
/* CMSG_FIRSTHDR */
628
629
#if defined(HAVE_DECL_OFFSETOF) && HAVE_DECL_OFFSETOF == 0
630
# define offsetof(type, member) ((size_t) &((type *)0)->member)
631
#endif
632
633
/* Set up BSD-style BYTE_ORDER definition if it isn't there already */
634
/* XXX: doesn't try to cope with strange byte orders (PDP_ENDIAN) */
635
#ifndef BYTE_ORDER
636
# ifndef LITTLE_ENDIAN
637
# define LITTLE_ENDIAN 1234
638
# endif
/* LITTLE_ENDIAN */
639
# ifndef BIG_ENDIAN
640
# define BIG_ENDIAN 4321
641
# endif
/* BIG_ENDIAN */
642
# ifdef WORDS_BIGENDIAN
643
# define BYTE_ORDER BIG_ENDIAN
644
# else
/* WORDS_BIGENDIAN */
645
# define BYTE_ORDER LITTLE_ENDIAN
646
# endif
/* WORDS_BIGENDIAN */
647
#endif
/* BYTE_ORDER */
648
649
/* Function replacement / compatibility hacks */
650
651
#if !defined(HAVE_GETADDRINFO) && (defined(HAVE_OGETADDRINFO) || defined(HAVE_NGETADDRINFO))
652
# define HAVE_GETADDRINFO
653
#endif
654
655
#ifndef HAVE_GETOPT_OPTRESET
656
# undef getopt
657
# undef opterr
658
# undef optind
659
# undef optopt
660
# undef optreset
661
# undef optarg
662
# define getopt(ac, av, o) BSDgetopt(ac, av, o)
663
# define opterr BSDopterr
664
# define optind BSDoptind
665
# define optopt BSDoptopt
666
# define optreset BSDoptreset
667
# define optarg BSDoptarg
668
#endif
669
670
#if defined(BROKEN_GETADDRINFO) && defined(HAVE_GETADDRINFO)
671
# undef HAVE_GETADDRINFO
672
#endif
673
#if defined(BROKEN_GETADDRINFO) && defined(HAVE_FREEADDRINFO)
674
# undef HAVE_FREEADDRINFO
675
#endif
676
#if defined(BROKEN_GETADDRINFO) && defined(HAVE_GAI_STRERROR)
677
# undef HAVE_GAI_STRERROR
678
#endif
679
680
#if defined(HAVE_GETADDRINFO)
681
# if defined(HAVE_DECL_AI_NUMERICSERV) && HAVE_DECL_AI_NUMERICSERV == 0
682
# define AI_NUMERICSERV 0
683
# endif
684
#endif
685
686
#if defined(BROKEN_UPDWTMPX) && defined(HAVE_UPDWTMPX)
687
# undef HAVE_UPDWTMPX
688
#endif
689
690
#if defined(BROKEN_SHADOW_EXPIRE) && defined(HAS_SHADOW_EXPIRE)
691
# undef HAS_SHADOW_EXPIRE
692
#endif
693
694
#if defined(HAVE_OPENLOG_R) && defined(SYSLOG_DATA_INIT) && \
695
defined(SYSLOG_R_SAFE_IN_SIGHAND)
696
# define DO_LOG_SAFE_IN_SIGHAND
697
#endif
698
699
#if !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY)
700
# define memmove(s1, s2, n) bcopy((s2), (s1), (n))
701
#endif
/* !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY) */
702
703
#ifndef GETPGRP_VOID
704
# include <unistd.h>
705
# define getpgrp() getpgrp(0)
706
#endif
707
708
#ifdef USE_BSM_AUDIT
709
# define SSH_AUDIT_EVENTS
710
# define CUSTOM_SSH_AUDIT_EVENTS
711
#endif
712
713
#ifdef USE_LINUX_AUDIT
714
# define SSH_AUDIT_EVENTS
715
# define CUSTOM_SSH_AUDIT_EVENTS
716
#endif
717
718
#if !defined(HAVE___func__) && defined(HAVE___FUNCTION__)
719
# define __func__ __FUNCTION__
720
#elif !defined(HAVE___func__)
721
# define __func__ ""
722
#endif
723
724
#if defined(KRB5) && !defined(HEIMDAL)
725
# define krb5_get_err_text(context,code) error_message(code)
726
#endif
727
728
/* Maximum number of file descriptors available */
729
#ifdef HAVE_SYSCONF
730
# define SSH_SYSFDMAX sysconf(_SC_OPEN_MAX)
731
#else
732
# define SSH_SYSFDMAX 10000
733
#endif
734
735
#ifdef FSID_HAS_VAL
736
/* encode f_fsid into a 64 bit value */
737
#define FSID_TO_ULONG(f) \
738
((((u_int64_t)(f).val[0] & 0xffffffffUL) << 32) | \
739
((f).val[1] & 0xffffffffUL))
740
#elif defined(FSID_HAS___VAL)
741
#define FSID_TO_ULONG(f) \
742
((((u_int64_t)(f).__val[0] & 0xffffffffUL) << 32) | \
743
((f).__val[1] & 0xffffffffUL))
744
#else
745
# define FSID_TO_ULONG(f) ((f))
746
#endif
747
748
#if defined(__Lynx__)
749
/*
750
* LynxOS defines these in param.h which we do not want to include since
751
* it will also pull in a bunch of kernel definitions.
752
*/
753
# define ALIGNBYTES (sizeof(int) - 1)
754
# define ALIGN(p) (((unsigned)p + ALIGNBYTES) & ~ALIGNBYTES)
755
/* Missing prototypes on LynxOS */
756
int
snprintf (
char
*,
size_t
,
const
char
*, ...);
757
int
mkstemp (
char
*);
758
char
*crypt (
const
char
*,
const
char
*);
759
int
seteuid (uid_t);
760
int
setegid (gid_t);
761
char
*mkdtemp (
char
*);
762
int
rresvport_af (
int
*, sa_family_t);
763
int
innetgr (
const
char
*,
const
char
*,
const
char
*,
const
char
*);
764
#endif
765
766
/*
767
* Define this to use pipes instead of socketpairs for communicating with the
768
* client program. Socketpairs do not seem to work on all systems.
769
*
770
* configure.ac sets this for a few OS's which are known to have problems
771
* but you may need to set it yourself
772
*/
773
/* #define USE_PIPES 1 */
774
779
/* FIXME: put default paths back in */
780
#ifndef UTMP_FILE
781
# ifdef _PATH_UTMP
782
# define UTMP_FILE _PATH_UTMP
783
# else
784
# ifdef CONF_UTMP_FILE
785
# define UTMP_FILE CONF_UTMP_FILE
786
# endif
787
# endif
788
#endif
789
#ifndef WTMP_FILE
790
# ifdef _PATH_WTMP
791
# define WTMP_FILE _PATH_WTMP
792
# else
793
# ifdef CONF_WTMP_FILE
794
# define WTMP_FILE CONF_WTMP_FILE
795
# endif
796
# endif
797
#endif
798
/* pick up the user's location for lastlog if given */
799
#ifndef LASTLOG_FILE
800
# ifdef _PATH_LASTLOG
801
# define LASTLOG_FILE _PATH_LASTLOG
802
# else
803
# ifdef CONF_LASTLOG_FILE
804
# define LASTLOG_FILE CONF_LASTLOG_FILE
805
# endif
806
# endif
807
#endif
808
809
#if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW)
810
# define USE_SHADOW
811
#endif
812
813
/* The login() library function in libutil is first choice */
814
#if defined(HAVE_LOGIN) && !defined(DISABLE_LOGIN)
815
# define USE_LOGIN
816
817
#else
818
/* Simply select your favourite login types. */
819
/* Can't do if-else because some systems use several... <sigh> */
820
# if !defined(DISABLE_UTMPX)
821
# define USE_UTMPX
822
# endif
823
# if defined(UTMP_FILE) && !defined(DISABLE_UTMP)
824
# define USE_UTMP
825
# endif
826
# if defined(WTMPX_FILE) && !defined(DISABLE_WTMPX)
827
# define USE_WTMPX
828
# endif
829
# if defined(WTMP_FILE) && !defined(DISABLE_WTMP)
830
# define USE_WTMP
831
# endif
832
833
#endif
834
835
#ifndef UT_LINESIZE
836
# define UT_LINESIZE 8
837
#endif
838
839
/* I hope that the presence of LASTLOG_FILE is enough to detect this */
840
#if defined(LASTLOG_FILE) && !defined(DISABLE_LASTLOG)
841
# define USE_LASTLOG
842
#endif
843
844
#ifdef HAVE_OSF_SIA
845
# ifdef USE_SHADOW
846
# undef USE_SHADOW
847
# endif
848
# define CUSTOM_SYS_AUTH_PASSWD 1
849
#endif
850
851
#if defined(HAVE_LIBIAF) && defined(HAVE_SET_ID) && !defined(HAVE_SECUREWARE)
852
# define CUSTOM_SYS_AUTH_PASSWD 1
853
#endif
854
#if defined(HAVE_LIBIAF) && defined(HAVE_SET_ID) && !defined(BROKEN_LIBIAF)
855
# define USE_LIBIAF
856
#endif
857
858
/* HP-UX 11.11 */
859
#ifdef BTMP_FILE
860
# define _PATH_BTMP BTMP_FILE
861
#endif
862
863
#if defined(USE_BTMP) && defined(_PATH_BTMP)
864
# define CUSTOM_FAILED_LOGIN
865
#endif
866
869
#ifdef BROKEN_GETGROUPS
870
# define getgroups(a,b) ((a)==0 && (b)==NULL ? NGROUPS_MAX : getgroups((a),(b)))
871
#endif
872
873
#ifndef IOV_MAX
874
# if defined(_XOPEN_IOV_MAX)
875
# define IOV_MAX _XOPEN_IOV_MAX
876
# elif defined(DEF_IOV_MAX)
877
# define IOV_MAX DEF_IOV_MAX
878
# else
879
# define IOV_MAX 16
880
# endif
881
#endif
882
883
#ifndef EWOULDBLOCK
884
# define EWOULDBLOCK EAGAIN
885
#endif
886
887
#ifndef INET6_ADDRSTRLEN
/* for non IPv6 machines */
888
#define INET6_ADDRSTRLEN 46
889
#endif
890
891
#ifndef SSH_IOBUFSZ
892
# define SSH_IOBUFSZ 32*1024
893
#endif
894
895
/*
896
* We want functions in openbsd-compat, if enabled, to override system ones.
897
* We no-op out the weak symbol definition rather than remove it to reduce
898
* future sync problems. Some compilers (eg Unixware) do not allow an
899
* empty statement, so we use a bogus function declaration.
900
*/
901
#define DEF_WEAK(x) void __ssh_compat_weak_##x(void)
902
903
/*
904
* Platforms that have arc4random_uniform() and not arc4random_stir()
905
* shouldn't need the latter.
906
*/
907
#if defined(HAVE_ARC4RANDOM) && defined(HAVE_ARC4RANDOM_UNIFORM) && \
908
!defined(HAVE_ARC4RANDOM_STIR)
909
# define arc4random_stir()
910
#endif
911
912
#ifndef HAVE_VA_COPY
913
# ifdef HAVE___VA_COPY
914
# define va_copy(dest, src) __va_copy(dest, src)
915
# else
916
# define va_copy(dest, src) (dest) = (src)
917
# endif
918
#endif
919
920
#ifndef __predict_true
921
# if defined(__GNUC__) && \
922
((__GNUC__ > (2)) || (__GNUC__ == (2) && __GNUC_MINOR__ >= (96)))
923
# define __predict_true(exp) __builtin_expect(((exp) != 0), 1)
924
# define __predict_false(exp) __builtin_expect(((exp) != 0), 0)
925
# else
926
# define __predict_true(exp) ((exp) != 0)
927
# define __predict_false(exp) ((exp) != 0)
928
# endif
/* gcc version */
929
#endif
/* __predict_true */
930
931
#if defined(HAVE_GLOB_H) && defined(GLOB_HAS_ALTDIRFUNC) && \
932
defined(GLOB_HAS_GL_MATCHC) && defined(GLOB_HAS_GL_STATV) && \
933
defined(HAVE_DECL_GLOB_NOMATCH) && HAVE_DECL_GLOB_NOMATCH != 0 && \
934
!defined(BROKEN_GLOB)
935
# define USE_SYSTEM_GLOB
936
#endif
937
938
/*
939
* sntrup761 uses variable length arrays and c99-style declarations after code,
940
* so only enable if the compiler supports them.
941
*/
942
#if defined(VARIABLE_LENGTH_ARRAYS) && defined(VARIABLE_DECLARATION_AFTER_CODE)
943
# define USE_SNTRUP761X25519 1
944
#endif
945
#endif
/* _DEFINES_H */
Generated by
1.8.5