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