1 /* 2 * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 3 * Use is subject to license terms. 4 */ 5 6 #pragma ident "%Z%%M% %I% %E% SMI" 7 8 /* 9 * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 15 * 1. Redistributions of source code must retain the above copyright 16 * notice, this list of conditions and the following disclaimer. 17 * 18 * 2. Redistributions in binary form must reproduce the above copyright 19 * notice, this list of conditions and the following disclaimer in 20 * the documentation and/or other materials provided with the 21 * distribution. 22 * 23 * 3. The name "Carnegie Mellon University" must not be used to 24 * endorse or promote products derived from this software without 25 * prior written permission. For permission or any other legal 26 * details, please contact 27 * Office of Technology Transfer 28 * Carnegie Mellon University 29 * 5000 Forbes Avenue 30 * Pittsburgh, PA 15213-3890 31 * (412) 268-4387, fax: (412) 268-7395 32 * tech-transfer@andrew.cmu.edu 33 * 34 * 4. Redistributions of any form whatsoever must retain the following 35 * acknowledgment: 36 * "This product includes software developed by Computing Services 37 * at Carnegie Mellon University (http://www.cmu.edu/computing/)." 38 * 39 * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO 40 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 41 * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE 42 * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 43 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 44 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING 45 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 46 */ 47 48 #ifndef CONFIG_H 49 #define CONFIG_H 50 51 #include <sys/types.h> 52 53 /* Define to empty if the keyword does not work. */ 54 /* #undef const */ 55 56 /* Define if you have <sys/wait.h> that is POSIX.1 compatible. */ 57 #define HAVE_SYS_WAIT_H 1 58 59 /* Define as __inline if that's what the C compiler calls it. */ 60 /* #undef inline */ 61 62 /* Define to `int' if <sys/types.h> doesn't define. */ 63 /* #undef mode_t */ 64 65 /* Define to `int' if <sys/types.h> doesn't define. */ 66 /* #undef pid_t */ 67 68 /* Define as the return type of signal handlers (int or void). */ 69 #define RETSIGTYPE void 70 71 /* Define if you have the ANSI C header files. */ 72 #define STDC_HEADERS 1 73 74 /* Define if you can safely include both <sys/time.h> and <time.h>. */ 75 #define TIME_WITH_SYS_TIME 1 76 77 /* Set to the database name you want SASL to use for 78 * username->secret lookups */ 79 /* #undef SASL_DB_PATH */ 80 81 /* what db package are we using? */ 82 /* #undef SASL_GDBM */ 83 /* #undef SASL_NDBM */ 84 /* #undef SASL_BERKELEYDB */ 85 86 /* which mechs can we link staticly? */ 87 /* #undef STATIC_ANONYMOUS */ 88 /* #undef STATIC_CRAMMD5 */ 89 /* #undef STATIC_DIGESTMD5 */ 90 /* #undef STATIC_GSSAPIV2 */ 91 /* #undef STATIC_KERBEROS4 */ 92 /* #undef STATIC_LOGIN */ 93 /* #undef STATIC_MYSQL */ 94 /* #undef STATIC_NTLM */ 95 /* #undef STATIC_OTP */ 96 /* #undef STATIC_PLAIN */ 97 /* #undef STATIC_SASLDB */ 98 /* #undef STATIC_SRP */ 99 100 /* This is where plugins will live at runtime */ 101 #ifdef _LP64 102 #if defined(__sparcv9) 103 #define PLUGINDIR "/usr/lib/sasl/sparcv9" 104 #elif defined(__amd64) 105 #define PLUGINDIR "/usr/lib/sasl/amd64" 106 #else 107 #error Unsupported 64-bit architecture! 108 #endif 109 #else 110 #define PLUGINDIR "/usr/lib/sasl" 111 #endif 112 113 #define SASL_CONFDIR "/etc/sasl" 114 115 /* should we use the internal rc4 library? */ 116 /* This may be defined in digestmd5 makefile */ 117 /* #undef WITH_RC4 */ 118 119 /* do we have des available? */ 120 /* This may be defined in digestmd5 makefile */ 121 /* #undef WITH_DES */ 122 /* #undef WITH_SSL_DES */ 123 124 /* what about OpenSSL? */ 125 /* #undef HAVE_OPENSSL */ 126 127 /* should we support srp_setpass */ 128 /* #undef DO_SRP_SETPASS */ 129 130 /* do we have OPIE for server-side OTP support? */ 131 /* #undef HAVE_OPIE */ 132 133 /* Do we have kerberos for plaintext password checking? */ 134 /* #undef HAVE_KRB */ 135 136 /* do we have PAM for plaintext password checking? */ 137 #define HAVE_PAM 1 138 139 /* do we have getsubopt()? */ 140 #define HAVE_GETSUBOPT 1 141 142 /* Does your system have the snprintf() call? */ 143 #define HAVE_SNPRINTF 1 144 145 /* Does your system have the vsnprintf() call? */ 146 #define HAVE_VSNPRINTF 1 147 148 /* should we include support for the pwcheck daemon? */ 149 /* #undef HAVE_PWCHECK */ 150 151 /* where do we look for the pwcheck daemon? */ 152 /* #undef PWCHECKDIR */ 153 154 /* should we include support for the saslauth daemon? */ 155 /* #undef HAVE_SASLAUTHD */ 156 157 /* where does saslauthd look for the communication socket? */ 158 /* #undef PATH_SASLAUTHD_RUNDIR */ 159 160 /* do we want alwaystrue (discouraged)? */ 161 /* #undef HAVE_ALWAYSTRUE */ 162 163 /* are we linking against DMALLOC? */ 164 /* #undef WITH_DMALLOC */ 165 166 /* should we support sasl_checkapop */ 167 #define DO_SASL_CHECKAPOP 1 168 169 /* do we pay attention to IP addresses in the kerberos 4 tickets? */ 170 /* #undef KRB4_IGNORE_IP_ADDRESS */ 171 172 /* do we have a preferred mechanism, or should we just pick the highest ssf? */ 173 /* #undef PREFER_MECH */ 174 175 /* Do we need a leading _ for dlsym? */ 176 /* #undef DLSYM_NEEDS_UNDERSCORE */ 177 178 /* Does libtool support shared libs on this system? */ 179 #define HAVE_DLFCN_H 1 180 #define DO_DLOPEN 1 181 182 /* Should we try to dlopen stuff when we are staticly compiled? */ 183 /* #undef TRY_DLOPEN_WHEN_STATIC */ 184 185 /* define if your system has getaddrinfo() */ 186 #define HAVE_GETADDRINFO 1 187 #define HAVE_INET_ATON 1 188 189 /* define if your system has getnameinfo() */ 190 #define HAVE_GETNAMEINFO 1 191 192 /* define if your system has struct sockaddr_storage */ 193 #define HAVE_STRUCT_SOCKADDR_STORAGE 1 194 195 /* Define if you have ss_family in struct sockaddr_storage. */ 196 #define HAVE_SS_FAMILY 1 197 198 /* do we have socklen_t? */ 199 #define HAVE_SOCKLEN_T 1 200 201 /* #undef HAVE_SOCKADDR_SA_LEN */ 202 203 /* do we use doors for IPC? */ 204 /* #undef USE_DOORS */ 205 206 /* Define if you have the dn_expand function. */ 207 #define HAVE_DN_EXPAND 1 208 209 /* Define if you have the dns_lookup function. */ 210 /* #undef HAVE_DNS_LOOKUP */ 211 212 /* Define if you have the getdomainname function. */ 213 /* #undef HAVE_GETDOMAINNAME */ 214 215 /* Define if you have the gethostname function. */ 216 #define HAVE_GETHOSTNAME 1 217 218 /* Define if you have the getpwnam function. */ 219 #define HAVE_GETPWNAM 1 220 221 /* Define if you have the getspnam function. */ 222 #define HAVE_GETSPNAM 1 223 224 /* Define if you have the gettimeofday function. */ 225 #define HAVE_GETTIMEOFDAY 1 226 227 /* Define if you have the gsskrb5_register_acceptor_identity function. */ 228 /* #undef HAVE_GSSKRB5_REGISTER_ACCEPTOR_IDENTITY */ 229 230 /* Define if you have the jrand48 function. */ 231 #define HAVE_JRAND48 1 232 233 /* Define if you have the krb_get_err_text function. */ 234 /* #undef HAVE_KRB_GET_ERR_TEXT */ 235 236 /* Define if you have the memcpy function. */ 237 #define HAVE_MEMCPY 1 238 239 /* Define if you have the mkdir function. */ 240 #define HAVE_MKDIR 1 241 242 /* Define if you have the select function. */ 243 #define HAVE_SELECT 1 244 245 /* Define if you have the socket function. */ 246 #define HAVE_SOCKET 1 247 248 /* Define if you have the strchr function. */ 249 #define HAVE_STRCHR 1 250 251 /* Define if you have the strdup function. */ 252 #define HAVE_STRDUP 1 253 254 /* Define if you have the strerror function. */ 255 #define HAVE_STRERROR 1 256 257 /* Define if you have the strspn function. */ 258 #define HAVE_STRSPN 1 259 260 /* Define if you have the strstr function. */ 261 #define HAVE_STRSTR 1 262 263 /* Define if you have the strtol function. */ 264 #define HAVE_STRTOL 1 265 266 /* Define if you have the syslog function. */ 267 #define HAVE_SYSLOG 1 268 269 /* Define if you have the <dirent.h> header file. */ 270 #define HAVE_DIRENT_H 1 271 272 /* Define if you have the <dlfcn.h> header file. */ 273 #define HAVE_DLFCN_H 1 274 275 /* Define if you have the <fcntl.h> header file. */ 276 #define HAVE_FCNTL_H 1 277 278 /* Define if you have the <inttypes.h> header file. */ 279 #define HAVE_INTTYPES_H 1 280 281 /* Define if you have the <limits.h> header file. */ 282 #define HAVE_LIMITS_H 1 283 284 /* Define if you have the <malloc.h> header file. */ 285 #define HAVE_MALLOC_H 1 286 287 /* Define if you have the <ndir.h> header file. */ 288 /* #undef HAVE_NDIR_H */ 289 290 /* Define if you have the <paths.h> header file. */ 291 /* #undef HAVE_PATHS_H */ 292 293 /* Define if you have the <stdarg.h> header file. */ 294 #define HAVE_STDARG_H 1 295 296 /* Define if you have the <strings.h> header file. */ 297 #define HAVE_STRINGS_H 1 298 299 /* Define if you have the <sys/dir.h> header file. */ 300 /* #undef HAVE_SYS_DIR_H */ 301 302 /* Define if you have the <sys/file.h> header file. */ 303 #define HAVE_SYS_FILE_H 1 304 305 /* Define if you have the <sys/ndir.h> header file. */ 306 /* #undef HAVE_SYS_NDIR_H */ 307 308 /* Define if you have the <sys/param.h> header file. */ 309 #define HAVE_SYS_PARAM_H 1 310 311 /* Define if you have the <sys/time.h> header file. */ 312 #define HAVE_SYS_TIME_H 1 313 314 /* Define if you have the <sys/uio.h> header file. */ 315 #define HAVE_SYS_UIO_H 1 316 317 /* Define if you have the <sysexits.h> header file. */ 318 #define HAVE_SYSEXITS_H 1 319 320 /* Define if you have the <syslog.h> header file. */ 321 #define HAVE_SYSLOG_H 1 322 323 /* Define if you have the <unistd.h> header file. */ 324 #define HAVE_UNISTD_H 1 325 326 /* Define if you have the <varargs.h> header file. */ 327 #define HAVE_VARARGS_H 1 328 329 /* Define if you have the db library (-ldb). */ 330 /* #undef HAVE_LIBDB */ 331 332 /* Define if you have the resolv library (-lresolv). */ 333 #define HAVE_LIBRESOLV 1 334 335 /* Name of package */ 336 /* #define PACKAGE "cyrus-sasl" */ 337 338 /* Version number of package */ 339 /* #undef VERSION */ 340 341 /* define if your compiler has __attribute__ */ 342 /* #undef HAVE___ATTRIBUTE__ */ 343 344 /* Define if you have the gssapi.h header file */ 345 /* #undef HAVE_GSSAPI_H */ 346 347 /* Define if your GSSAPI implimentation defines GSS_C_NT_HOSTBASED_SERVICE */ 348 #define HAVE_GSS_C_NT_HOSTBASED_SERVICE 349 350 351 /* Create a struct iovec if we need one */ 352 #if !defined(_WIN32) && !defined(HAVE_SYS_UIO_H) 353 /* (win32 is handled in sasl.h) */ 354 struct iovec { 355 char *iov_base; 356 long iov_len; 357 }; 358 #else 359 #include <sys/uio.h> 360 #endif 361 362 /* location of the random number generator */ 363 #ifndef DEV_RANDOM 364 #define DEV_RANDOM "/dev/urandom" 365 #endif 366 #define _DEV_URANDOM "/dev/urandom" 367 368 /* if we've got krb_get_err_txt, we might as well use it; 369 especially since krb_err_txt isn't in some newer distributions 370 (MIT Kerb for Mac 4 being a notable example). If we don't have 371 it, we fall back to the krb_err_txt array */ 372 #ifdef HAVE_KRB_GET_ERR_TEXT 373 #define get_krb_err_txt krb_get_err_text 374 #else 375 #define get_krb_err_txt(X) (krb_err_txt[(X)]) 376 #endif 377 378 /* Make Solaris happy... */ 379 #ifndef __EXTENSIONS__ 380 #define __EXTENSIONS__ 381 #endif 382 383 /* Make Linux happy... */ 384 #ifndef _GNU_SOURCE 385 #define _GNU_SOURCE 386 #endif 387 388 #ifndef HAVE___ATTRIBUTE__ 389 /* Can't use attributes... */ 390 #define __attribute__(foo) 391 #endif 392 393 #define SASL_PATH_ENV_VAR "SASL_PATH" 394 395 #include <stdlib.h> 396 #include <sys/socket.h> 397 #ifndef WIN32 398 # include <netdb.h> 399 # ifdef HAVE_SYS_PARAM_H 400 # include <sys/param.h> 401 # endif 402 #else /* WIN32 */ 403 # include <winsock.h> 404 #endif /* WIN32 */ 405 406 #include <string.h> 407 408 #include <netinet/in.h> 409 410 #ifndef HAVE_STRUCT_SOCKADDR_STORAGE 411 #define _SS_MAXSIZE 128 /* Implementation specific max size */ 412 #define _SS_PADSIZE (_SS_MAXSIZE - sizeof (struct sockaddr)) 413 414 struct sockaddr_storage { 415 struct sockaddr ss_sa; 416 char __ss_pad2[_SS_PADSIZE]; 417 }; 418 # define ss_family ss_sa.sa_family 419 #endif /* !HAVE_STRUCT_SOCKADDR_STORAGE */ 420 421 #ifndef AF_INET6 422 /* Define it to something that should never appear */ 423 #define AF_INET6 AF_MAX 424 #endif 425 426 #ifndef HAVE_GETADDRINFO 427 #define getaddrinfo sasl_getaddrinfo 428 #define freeaddrinfo sasl_freeaddrinfo 429 #define getnameinfo sasl_getnameinfo 430 #define gai_strerror sasl_gai_strerror 431 #include "gai.h" 432 #endif 433 434 /* Defined in RFC 1035. max strlen is only 253 due to length bytes. */ 435 #ifndef MAXHOSTNAMELEN 436 #define MAXHOSTNAMELEN 255 437 #endif 438 439 #ifndef HAVE_SYSEXITS_H 440 #include "exits.h" 441 #else 442 #include "sysexits.h" 443 #endif 444 445 #ifndef NI_WITHSCOPEID 446 #define NI_WITHSCOPEID 0 447 #endif 448 449 /* Get the correct time.h */ 450 #if TIME_WITH_SYS_TIME 451 # include <sys/time.h> 452 # include <time.h> 453 #else 454 # if HAVE_SYS_TIME_H 455 # include <sys/time.h> 456 # else 457 # include <time.h> 458 # endif 459 #endif 460 461 #include <libintl.h> 462 /* 463 * We use gettext() so that xgettext will build msg database. libsasl and 464 * plugins will actually use dgettext in the appropriate subroutine - 465 * depending on SASL_CB_LANGUAGE or the specified language. 466 */ 467 #define gettext(x) (x) 468 469 #define USE_PTHREADS 1 470 #include <pthread.h> 471 #define DEFINE_STATIC_MUTEX(x) \ 472 static pthread_mutex_t x = PTHREAD_MUTEX_INITIALIZER 473 474 #define LOCK_MUTEX(x) pthread_mutex_lock(x) 475 #define UNLOCK_MUTEX(x) pthread_mutex_unlock(x) 476 477 #define DO_DLOPEN 1 478 #define TRY_DLOPEN_WHEN_STATIC 1 479 #define HAVE_DLFCN_H 1 480 481 /* HAVE_GSS_C_NT_USER_NAME is not needed for Solaris 10 since libgss has been 482 * updated. 483 */ 484 #undef HAVE_GSS_C_NT_USER_NAME 485 486 #define HAVE_RPC_GSS_MECH_TO_OID 1 487 488 #define _SUN_SDK_ 1 489 490 #define _INTEGRATED_SOLARIS_ 1 491 #define _HAVE_LIB_MD5 1 492 493 #include "md5global.h" 494 #include "md5_private.h" 495 496 #endif /* CONFIG_H */ 497