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