1 /*
2  *   Unreal Internet Relay Chat Daemon, include/config.h
3  *   Copyright (C) 1990 Jarkko Oikarinen
4  *
5  *   $Id$
6  *
7  *   This program is free software; you can redistribute it and/or modify
8  *   it under the terms of the GNU General Public License as published by
9  *   the Free Software Foundation; either version 1, or (at your option)
10  *   any later version.
11  *
12  *   This program is distributed in the hope that it will be useful,
13  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *   GNU General Public License for more details.
16  *
17  *   You should have received a copy of the GNU General Public License
18  *   along with this program; if not, write to the Free Software
19  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  */
21 
22 #ifndef	__config_include__
23 #define	__config_include__
24 
25 #include "setup.h"
26 
27 /*
28  *
29  *   NOTICE
30  *
31  * Under normal conditions, you should not have to edit this file.  Run
32  * the Config script in the root directory instead!
33  *
34  * Windows is not a normal condition, edit this file if you use it. :-)
35  *
36  *
37  */
38 
39  /*
40     * Define this if you're testing/debugging/programming.
41 #undef DEBUG
42   */
43 
44 /* Type of host. These should be made redundant somehow. -avalon */
45 
46 /*	BSD			Nothing Needed 4.{2,3} BSD, SunOS 3.x, 4.x */
47 /*	HPUX			Nothing needed (A.08/A.09) */
48 /*	ULTRIX			Nothing needed (4.2) */
49 /*	OSF			Nothing needed (1.2) */
50 /* #undef	AIX		IBM ugly so-called Unix, AIX */
51 /* #undef	MIPS		MIPS Unix */
52 /*	SGI			Nothing needed (IRIX 4.0.4) */
53 /* #undef 	SVR3		SVR3 stuff - being worked on where poss. */
54 /* #undef	DYNIXPTX	Sequents Brain-dead Posix implement. */
55 /* #undef	SOL20		Solaris2 */
56 /* #undef	ESIX		ESIX */
57 /* #undef	NEXT		NeXTStep */
58 /* #undef	SVR4 */
59 
60 /* Additional flags to give FreeBSD's malloc, only play with this if you
61  * know what you're doing.
62  */
63 
64 #define MALLOC_FLAGS_EXTRA ""
65 
66 /*
67     dog3/comstud ircd fdlists
68     undef this to make them work
69 */
70 
71 #undef NO_FDLIST
72 
73 /*
74  * Defining this will enable poll() usage instead of select().
75  * This is the default on *NIX as of 3.2.10.
76  * On Windows this would require Vista or newer so we stick with
77  * select for now.
78  */
79 #ifndef _WIN32
80 #define USE_POLL
81 #endif
82 
83 /*
84  * Defining this will allow all ircops to see people in +s channels
85  * By default, only net/tech admins can see this
86  */
87 #define SHOW_SECRET
88 
89 /*
90  * Admin's chat...
91  */
92 #define ADMINCHAT 1
93 
94 /*
95  * If channel mode is +z, only send to secure links & people
96  *
97 */
98 #undef SECURECHANMSGSONLYGOTOSECURE
99 
100 /*
101    If you want to support chinese and/or japanese nicks
102 */
103 #undef NICK_GB2312
104 #undef NICK_GBK
105 #undef NICK_GBK_JAP
106 
107 /*
108   Remote rehash
109 */
110 #define REMOTE_REHASH
111 
112 /*
113  * Special remote include caching, see this Changelog item:
114  * - Added special caching of remote includes. When a remote include fails to
115  *   load (for example when the webserver is down), then the most recent
116  *   version of that remote include will be used, and the ircd will still boot
117  *   and be able to rehash. Even though this is quite a simple feature, it
118  *   can make a key difference when deciding to roll out remote includes on
119  *   your network. Previously, servers would be unable to boot or rehash when
120  *   the webserver was down, which would be a big problem (often unacceptable).
121  *   The latest version of fetched urls are cached in the cache/ directory as
122  *   cache/<md5 hash of url>.
123  *   Obviously, if there's no 'latest version' and an url fails, the ircd will
124  *   still not be able to boot. This would be the case if you added or changed
125  *   the path of a remote include and it's trying to fetch it for the first time.
126  * There usually is no reason to disable this.
127  */
128 #define REMOTEINC_SPECIALCACHE
129 
130 /*
131   Stripbadwords patch
132 */
133 #define STRIPBADWORDS
134 
135 /*
136  * Always strip badwords in channels? (channel does not have to be +G)
137 */
138 #undef STRIPBADWORDS_CHAN_ALWAYS
139 
140 /*
141  * THROTTLING
142  *   This will only allow 1 connection per ip in set::throttle::period time
143  * NOTE: There's no reason to disable this (anymore) since it can be fully
144  *       configured in the unrealircd.conf. Keep the define...
145  */
146 #define THROTTLING
147 
148 /*
149  * No spoof code
150  *
151  * This enables the spoof protection.
152  */
153 /* #define NOSPOOF 1  */
154 
155 
156 /*
157  * Enables locops to override the RFC1459 flood control too
158 */
159 #undef NO_FAKE_LAG_FOR_LOCOPS
160 
161 /*
162  * HOSTILENAME - Define this if you want the hostile username patch included,
163  *		 it will strip characters that are not 0-9,a-z,A-Z,_,- or .
164  */
165 #define HOSTILENAME		/* [DO NOT CHANGE!] */
166 
167 /*
168  * Use JOIN instead of SJOIN on every remotely sent JOIN
169 */
170 #undef JOIN_INSTEAD_OF_SJOIN_ON_REMOTEJOIN
171 
172 /*
173  * So called 'smart' banning: if this is enabled and a ban on like *!*@*h.com is present,
174  * then you cannot add a ban like *!*@*blah.com. In other words.. the ircd tries to be "smart".
175  * In general this is considered quite annoying. This was on by default until Unreal 3.2.8.
176  */
177 #undef SOCALLEDSMARTBANNING
178 
179 /*
180 ** Freelinks garbage collector -Stskeeps
181 **
182 ** GARBAGE_COLLECT_EVERY - how many seconds between every garbage collect
183 ** HOW_MANY_FREELINKS_ALLOWED - how many freelinks allowed
184 */
185 #ifndef GARBAGE_COLLECT_EVERY
186 #define GARBAGE_COLLECT_EVERY 		600	/* default: 600 (10 mins) */
187 #endif
188 
189 #define HOW_MANY_FREELINKS_ALLOWED 	200	/* default: 200 */
190 
191 /*
192  * MAXUNKNOWNCONNECTIONSPERIP
193 */
194 #define MAXUNKNOWNCONNECTIONSPERIP 3
195 
196 
197 /* Do these work? I dunno... */
198 
199 /* #undef	VMS		   Should work for IRC client, not server */
200 /* #undef	MAIL50		   If you're running VMS 5.0 */
201 /* #undef	PCS		   PCS Cadmus MUNIX, use with BSD flag! */
202 
203 /*
204  * NOTE: On some systems, valloc() causes many problems.
205  */
206 #undef	VALLOC			/* Define this if you have valloc(3) */
207 
208 /*
209  * read/write are restarted after signals defining this 1, gets
210  * siginterrupt call compiled, which attempts to remove this
211  * behaviour (apollo sr10.1/bsd4.3 needs this)
212  */
213 #ifdef APOLLO
214 #define	RESTARTING_SYSTEMCALLS
215 #endif
216 
217 /*
218  * If your host supports varargs and has vsprintf(), vprintf() and vscanf()
219  * C calls in its library, then you can define USE_VARARGS to use varargs
220  * instead of imitation variable arg passing.
221 */
222 #define	USE_VARARGS
223 
224 /* NOTE: with current server code, varargs doesn't survive because it can't
225  *       be used in a chain of 3 or more funtions which all have a variable
226  *       number of params.  If anyone has a solution to this, please notify
227  *       the maintainer.
228  */
229 
230 /* DEBUGMODE: This should only be used when tracing a problem. It creates
231  * an insane amount of log output which can be very useful for debugging.
232  * You should *NEVER* enable this setting on production servers.
233  */
234 /* #undef	DEBUGMODE */
235 
236 /*
237  * Full pathnames and defaults of irc system's support files. Please note that
238  * these are only the recommened names and paths.  You must define PPATH if you
239  * want a pidfile written. Also, IRCDTUNE should be defined because it is needed for
240  * operation. All of these options are runtime-configurable (except for CPATH and LPATH)
241  * in the files block of unrealircd.conf. CPATH is runtime-configurable as a command-
242  * line argument. These used as the default values for options absent from the user's
243  * unrealircd.conf.
244  */
245 #define	CPATH		"/usr/local/etc/Unreal/unrealircd.conf"	/* server configuration file */
246 #define	MPATH		"/usr/local/etc/Unreal/ircd.motd"	/* server MOTD file */
247 #define SMPATH		"/usr/local/etc/Unreal/ircd.smotd"	/* short MOTD file */
248 #define RPATH		"/usr/local/etc/Unreal/ircd.rules"	/* server rules file */
249 #define OPATH		"/usr/local/etc/Unreal/oper.motd"	/* Operators MOTD file */
250 #define	LPATH		"/var/log/ircd/debug.log"	/* Where the debug file lives, if DEBUGMODE */
251 #define	PPATH		"/var/run/ircd/ircd.pid"	/* file for server pid */
252 #define VPATH		"/usr/local/etc/Unreal/ircd.svsmotd"	/* Services MOTD append. */
253 #define BPATH		"/usr/local/etc/Unreal/bot.motd"	/* Bot MOTD */
254 #define IRCDTUNE 	"/var/run/ircd/ircd.tune"	/* tuning .. */
255 
256 /* CHROOTDIR
257  *
258  * This enables running the IRCd chrooted (requires initial root privileges,
259  * but will be dropped to IRC_USER/IRC_GROUP privileges if those are defined).
260  *
261  * The directory to chroot to is simply DPATH (which is set via ./Config).
262  * (This may effect the PATH locations above, though you can symlink it)
263  *
264  * Usually you only simply need to enable this, and set IRC_USER and
265  * IRC_GROUP, you don't need to create a special chroot environment..
266  * UnrealIRCd will do that by itself (Unreal will create /dev/random,
267  * etc. etc.).
268  *
269  * Change to '#define CHROOTDIR' to enable...
270  */
271 /* #define CHROOTDIR    */
272 
273 /*
274  * IRC_USER
275  *
276  * If you start the server as root but wish to have it run as another user,
277  * define IRC_USER to that user name.  This should only be defined if you
278  * are running as root and even then perhaps not.
279  */
280 #define IRC_USER  "ircd"
281 #define IRC_GROUP "ircd"
282 
283 
284 /* SHOW_INVISIBLE_LUSERS
285  *
286  * As defined this will show the correct invisible count for anyone who does
287  * LUSERS on your server. On a large net this doesnt mean much, but on a
288  * small net it might be an advantage to undefine it.
289  * (This will get defined for you if you're using userload (stats w).  -mlv)
290  */
291 #define	SHOW_INVISIBLE_LUSERS
292 
293 /*
294  * NOTE: defining CMDLINE_CONFIG and installing ircd SUID or SGID is a MAJOR
295  *       security problem - they can use the "-f" option to read any files
296  *       that the 'new' access lets them. Note also that defining this is
297  *       a major security hole if your ircd goes down and some other user
298  *       starts up the server with a new conf file that has some extra
299  *       O-lines.
300  *       Naturally, for non-suid/sgid ircds, this setting does not matter,
301  *       hence command line parameters are always permitted then.
302  */
303 #undef	CMDLINE_CONFIG
304 
305 /** FAKELAG_CONFIGURABLE makes it possible to make certain classes exempted
306  * from 'fake lag' (that is, the artificial delay that is added by the ircd
307  * to prevent flooding, which causes the messages/commands of the user to
308  * slow down). Naturally, incorrect use of this feature can cause SEVERE
309  * issues, in fact it can easily bring your whole IRCd down if one of the
310  * users with class::options::nofakelag does a good flood at full speed.
311  * Hence, this is disabled by default, and you need to explicitly enable it
312  * here IF YOU KNOW WHAT YOU ARE DOING. People complaining their ircd
313  * ""crashed"" because of this setting will be shot. </DISCLAIMER>
314  * Common usage for this are: a trusted bot ran by an IRCOp, that you only
315  * want to give "flood access" and nothing else, and other such things.
316  */
317 #undef FAKELAG_CONFIGURABLE
318 
319 /*
320  * Size of the LISTEN request.  Some machines handle this large
321  * without problem, but not all.  It defaults to 5, but can be
322  * raised if you know your machine handles it.
323  */
324 #ifndef LISTEN_SIZE
325 #define LISTEN_SIZE 5
326 #endif
327 
328 /*
329  * Max amount of internal send buffering when socket is stuck (bytes)
330  */
331 #ifndef MAXSENDQLENGTH
332 #define MAXSENDQLENGTH 3000000
333 #endif
334 /*
335  *  BUFFERPOOL is the maximum size of the total of all sendq's.
336  *  Recommended value is 2 * MAXSENDQLENGTH, for hubs, 5 *.
337  */
338 #ifndef BUFFERPOOL
339 #define	BUFFERPOOL     (18 * MAXSENDQLENGTH)
340 #endif
341 
342 /*
343  * CLIENT_FLOOD
344  *
345  * this controls the number of bytes the server will allow a client to
346  * send to the server without processing before disconnecting the client for
347  * flooding it.  Values greater than 8000 make no difference to the server.
348  * NOTE: you can now also set this in class::recvq, if that's not present,
349  *       this default value will be used.
350  */
351 #define	CLIENT_FLOOD	8000
352 
353 /* Anti-Flood options
354  * NO_FLOOD_AWAY - enables limiting of how frequently a client can set /away
355  */
356 
357 #define NO_FLOOD_AWAY
358 
359 /* You can define the nickname of NickServ here (usually "NickServ").
360  * This is ONLY used for the ""infamous IDENTIFY feature"", which is:
361  * whenever a user connects with a server password but there isn't
362  * a server password set, the password is sent to NickServ in an
363  * 'IDENTIFY <pass>' message.
364  */
365 #define NickServ "NickServ"
366 
367 /*
368  * How many open targets can one nick have for messaging nicks and
369  * inviting them?
370  */
371 
372 #define MAXTARGETS		20
373 #define TARGET_DELAY		15
374 
375 /*   STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP  */
376 
377 /* You shouldn't change anything below this line, unless absolutely needed. */
378 
379 /*
380  * Port where ircd resides. NOTE: This *MUST* be greater than 1024 if you
381  * plan to run ircd under any other uid than root.
382  */
383 #define PORTNUM 6667		/* 6667 is default */
384 
385 /*
386  * Maximum number of network connections your server will allow.
387  * This is usually configured via ./Config on *NIX,
388  * the setting mentioned below is the default for Windows.
389  * 2004-10-13: 1024 -> 4096
390  */
391 #ifndef MAXCONNECTIONS
392 #define MAXCONNECTIONS	4096
393 #endif
394 
395 /*
396  * this defines the length of the nickname history.  each time a user changes
397  * nickname or signs off, their old nickname is added to the top of the list.
398  * The following sizes are recommended:
399  * 8MB or less  core memory : 500	(at least 1/4 of max users)
400  * 8MB-16MB     core memory : 500-750	(1/4 -> 1/2 of max users)
401  * 16MB-32MB    core memory : 750-1000	(1/2 -> 3/4 of max users)
402  * 32MB or more core memory : 1000+	(> 3/4 of max users)
403  * where max users is the expected maximum number of users.
404  * (100 nicks/users ~ 25k)
405  * NOTE: this is directly related to the amount of memory ircd will use whilst
406  *	 resident and running - it hardly ever gets swapped to disk! You can
407  *	 ignore these recommendations- they only are meant to serve as a guide
408  * NOTE: But the *Minimum* ammount should be 100, in order to make nick
409  *       chasing possible for mode and kick.
410  */
411 #ifndef NICKNAMEHISTORYLENGTH
412 #define NICKNAMEHISTORYLENGTH 2000
413 #endif
414 
415 /*
416  * Time interval to wait and if no messages have been received, then check for
417  * pings, outgoing connects, events, and a couple of other things.
418  * Imo this is quite useless nowdays, it only saves _some_ cpu on tiny networks
419  * with like 10 users all of them being inactive. On a normal network with >30
420  * users this value is completely irrelevant.
421  * The original value here was 60 (which was [hopefuly] never reached and was
422  * stupid anyway), changed to 2.
423  * DO NOT SET THIS TO ANYTHING MORE THAN 5. BETTER YET, JUST LEAVE IT AT 2!
424  */
425 #define TIMESEC  2
426 
427 /*
428  * If daemon doesn't receive anything from any of its links within
429  * PINGFREQUENCY seconds, then the server will attempt to check for
430  * an active link with a PING message. If no reply is received within
431  * (PINGFREQUENCY * 2) seconds, then the connection will be closed.
432  * NOTE: This is simply the class::pingfreq for the default class, nothing fancy ;)
433  */
434 #define PINGFREQUENCY    120	/* Recommended value: 120 */
435 
436 /*
437  * Often net breaks for a short time and it's useful to try to
438  * establishing the same connection again faster than CONNECTFREQUENCY
439  * would allow. But, to keep trying on bad connection, we require
440  * that connection has been open for certain minimum time
441  * (HANGONGOODLINK) and we give the net few seconds to steady
442  * (HANGONRETRYDELAY). This latter has to be long enough that the
443  * other end of the connection has time to notice it broke too.
444  */
445 #define HANGONRETRYDELAY 20	/* Recommended value: 20 seconds */
446 #define HANGONGOODLINK 300	/* Recommended value: 5 minutes */
447 
448 /*
449  * Number of seconds to wait for write to complete if stuck.
450  */
451 #define WRITEWAITDELAY     15	/* Recommended value: 15 */
452 
453 /*
454  * Number of seconds to wait for a connect(2) call to complete.
455  * NOTE: this must be at *LEAST* 10.  When a client connects, it has
456  * CONNECTTIMEOUT - 10 seconds for its host to respond to an ident lookup
457  * query and for a DNS answer to be retrieved.
458  */
459 #define	CONNECTTIMEOUT	30	/* Recommended value: 60 */
460 
461 /*
462  * Max time from the nickname change that still causes KILL
463  * automaticly to switch for the current nick of that user. (seconds)
464  */
465 #define KILLCHASETIMELIMIT 90	/* Recommended value: 90 */
466 
467 /*
468  * Use much faster badwords replace routine (>100 times faster).
469  * Disabling this is not supported.
470  */
471 #define FAST_BADWORD_REPLACE
472 
473 /*
474  * Forces Unreal to use compressed IPv6 addresses rather than expanding them
475  */
476 #undef IPV6_COMPRESSED
477 
478 /*
479  * Extended channel modes. This extends the channel modes with yet another
480  * 32 possible modes which can also be used in modules.
481  * This is now pretty much required.
482  */
483 #define EXTCMODE
484 
485 /*
486  * New channelmode +f system which allows flood control for:
487  * msgs, joins, ctcps, nickchanges and /knock.
488  */
489 #define NEWCHFLOODPROT
490 
491 /* JoinThrottle (chanmode +j): +j x:y throttles users to X joins per Y seconds (per-user).
492  * In peak situations (eg: just after a server restart with thousand clients joining
493  * hundreds of channels) it can use like ~200k, but in normal circumstances you should
494  * count on just ~10-50k.
495  */
496 #define JOINTHROTTLE
497 
498 /* Detect slow spamfilters? This requires a little more cpu time when processing
499  * any spamfilter (like on text/connect/..) but will save you from slowing down
500  * your IRCd to a near-halt (well, in most cases.. there are still cases like when
501  * it goes into a loop that it will still stall completely... forever..).
502  * This is kinda experimental, and requires getrusage.
503  */
504 #ifndef _WIN32
505 #define SPAMFILTER_DETECTSLOW
506 #endif
507 
508 /* ------------------------- END CONFIGURATION SECTION -------------------- */
509 #define MOTD MPATH
510 #define RULES RPATH
511 #define	MYNAME SPATH
512 #define	CONFIGFILE CPATH
513 #define	IRCD_PIDFILE PPATH
514 
515 #if defined(CHROOTDIR) && !defined(IRC_USER)
516 #error "ERROR: It makes no sense to define CHROOTDIR but not IRC_USER and IRC_GROUP! Please define IRC_USER and IRC_GROUP properly as the user/group to change to."
517 #endif
518 
519 #ifdef	__osf__
520 #define	OSF
521 /* OSF defines BSD to be its version of BSD */
522 #undef BSD
523 #include <sys/param.h>
524 #ifndef BSD
525 #define BSD
526 #endif
527 #endif
528 
529 #ifdef	ultrix
530 #define	ULTRIX
531 #endif
532 
533 #ifdef	__hpux
534 #define	HPUX
535 #endif
536 
537 #ifdef	sgi
538 #define	SGI
539 #endif
540 
541 #ifndef KLINE_TEMP
542 #define KLINE_PERM 0
543 #define KLINE_TEMP 1
544 #define KLINE_AKILL 2
545 #define KLINE_EXCEPT 3
546 #endif
547 
548 #ifdef DEBUGMODE
549 #ifndef _WIN32
550 		extern void debug(int, char *, ...);
551 #define Debug(x) debug x
552 #else
553 		extern void debug(int, char *, ...);
554 #define Debug(x) debug x
555 #endif
556 #define LOGFILE LPATH
557 #else
558 #define Debug(x) ;
559 #if VMS
560 #define LOGFILE "NLA0:"
561 #else
562 #define LOGFILE "/dev/null"
563 #endif
564 #endif
565 
566 
567 #if defined(mips) || defined(PCS)
568 #undef SYSV
569 #endif
570 
571 #ifdef MIPS
572 #undef BSD
573 #define BSD             1	/* mips only works in bsd43 environment */
574 #endif
575 
576 #ifdef	BSD_RELIABLE_SIGNALS
577 # if defined(SYSV_UNRELIABLE_SIGNALS) || defined(POSIX_SIGNALS)
578 error You stuffed up config.h signals
579 #define use only one.
580 # endif
581 #define	HAVE_RELIABLE_SIGNALS
582 #endif
583 #ifdef	SYSV_UNRELIABLE_SIGNALS
584 # ifdef	POSIX_SIGNALS
585      error You stuffed up config.h signals
586 #define use only one.
587 # endif
588 #undef	HAVE_RELIABLE_SIGNALS
589 #endif
590 #ifdef	POSIX_SIGNALS
591 #define	HAVE_RELIABLE_SIGNALS
592 #endif
593 /*
594  * safety margin so we can always have one spare fd, for motd/authd or
595  * whatever else.  -4 allows "safety" margin of 1 and space reserved.
596  */
597 #define	MAXCLIENTS	(MAXCONNECTIONS-4)
598 #ifdef HAVECURSES
599 # define DOCURSES
600 #else
601 # undef DOCURSES
602 #endif
603 #ifdef HAVETERMCAP
604 # define DOTERMCAP
605 #else
606 # undef DOTERMCAP
607 #endif
608 # define stricmp strcasecmp
609 # define strnicmp strncasecmp
610 #if defined(CLIENT_FLOOD)
611 #    if (CLIENT_FLOOD < 512)
612      error CLIENT_FLOOD needs redefining.
613 #    endif
614 #else
615      error CLIENT_FLOOD undefined
616 #endif
617 #if (NICKNAMEHISTORYLENGTH < 100)
618 #  define NICKNAMEHISTORYLENGTH 100
619 #endif
620 /*
621  * Some ugliness for AIX platforms.
622  */
623 #ifdef AIX
624 # include <sys/machine.h>
625 # if BYTE_ORDER == BIG_ENDIAN
626 #  define BIT_ZERO_ON_LEFT
627 # endif
628 # if BYTE_ORDER == LITTLE_ENDIAN
629 #  define BIT_ZERO_ON_RIGHT
630 # endif
631 /*
632  * this one is used later in sys/types.h (or so i believe). -avalon
633  */
634 # define BSD_INCLUDES
635 #endif
636 /*
637  * This is just to make Solaris porting easier -- codemastr
638  */
639 #if defined(SOL20) || defined(SOL25) || defined(SOL26) || defined(SOL27)
640 #define _SOLARIS
641 #endif
642 /*
643  * Cleaup for WIN32 platform.
644  */
645 #ifdef _WIN32
646 # undef FORCE_CORE
647 #endif
648 #ifdef NEED_BCMP
649 #define bcmp memcmp
650 #endif
651 #ifdef NEED_BCOPY
652 #define bcopy(a,b,c) memcpy(b,a,c)
653 #endif
654 #ifdef NEED_BZERO
655 #define bzero(a,b) memset(a,0,b)
656 #endif
657 #ifdef HAVE_CRYPT
658 #define AUTHENABLE_UNIXCRYPT
659 #endif
660 #if defined(AIX) && defined(_XOPEN_SOURCE_EXTENDED) && _XOPEN_SOURCE_EXTENDED
661 # define SOCK_LEN_TYPE size_t
662 #else
663 # define SOCK_LEN_TYPE int
664 #endif
665 
666 #endif				/* __config_include__ */
667 
668