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