1 /*	$NetBSD: globals.h,v 1.9 2015/07/08 17:28:55 christos Exp $	*/
2 
3 /*
4  * Copyright (C) 2004-2014  Internet Systems Consortium, Inc. ("ISC")
5  * Copyright (C) 1999-2003  Internet Software Consortium.
6  *
7  * Permission to use, copy, modify, and/or distribute this software for any
8  * purpose with or without fee is hereby granted, provided that the above
9  * copyright notice and this permission notice appear in all copies.
10  *
11  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
12  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
14  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
16  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /* Id: globals.h,v 1.92 2011/11/09 18:44:04 each Exp  */
21 
22 #ifndef NAMED_GLOBALS_H
23 #define NAMED_GLOBALS_H 1
24 
25 /*! \file */
26 
27 #include <isc/rwlock.h>
28 #include <isc/log.h>
29 #include <isc/net.h>
30 
31 #include <isccfg/aclconf.h>
32 #include <isccfg/cfg.h>
33 
34 #include <dns/acl.h>
35 #include <dns/zone.h>
36 
37 #include <dst/dst.h>
38 
39 #include <named/types.h>
40 
41 #undef EXTERN
42 #undef INIT
43 #ifdef NS_MAIN
44 #define EXTERN
45 #define INIT(v)	= (v)
46 #else
47 #define EXTERN extern
48 #define INIT(v)
49 #endif
50 
51 #ifndef NS_RUN_PID_DIR
52 #define NS_RUN_PID_DIR 1
53 #endif
54 
55 EXTERN isc_mem_t *		ns_g_mctx		INIT(NULL);
56 EXTERN unsigned int		ns_g_cpus		INIT(0);
57 EXTERN unsigned int		ns_g_udpdisp		INIT(0);
58 EXTERN isc_taskmgr_t *		ns_g_taskmgr		INIT(NULL);
59 EXTERN dns_dispatchmgr_t *	ns_g_dispatchmgr	INIT(NULL);
60 EXTERN isc_entropy_t *		ns_g_entropy		INIT(NULL);
61 EXTERN isc_entropy_t *		ns_g_fallbackentropy	INIT(NULL);
62 EXTERN unsigned int		ns_g_cpus_detected	INIT(1);
63 
64 /*
65  * XXXRTH  We're going to want multiple timer managers eventually.  One
66  *         for really short timers, another for client timers, and one
67  *         for zone timers.
68  */
69 EXTERN isc_timermgr_t *		ns_g_timermgr		INIT(NULL);
70 EXTERN isc_socketmgr_t *	ns_g_socketmgr		INIT(NULL);
71 EXTERN cfg_parser_t *		ns_g_parser		INIT(NULL);
72 EXTERN const char *		ns_g_version		INIT(VERSION);
73 EXTERN const char *		ns_g_product		INIT(PRODUCT);
74 EXTERN const char *		ns_g_description	INIT(DESCRIPTION);
75 EXTERN const char *		ns_g_srcid		INIT(SRCID);
76 EXTERN const char *		ns_g_configargs		INIT(CONFIGARGS);
77 EXTERN const char *		ns_g_builder		INIT(BUILDER);
78 EXTERN in_port_t		ns_g_port		INIT(0);
79 EXTERN isc_dscp_t		ns_g_dscp		INIT(-1);
80 EXTERN in_port_t		lwresd_g_listenport	INIT(0);
81 
82 EXTERN ns_server_t *		ns_g_server		INIT(NULL);
83 
84 EXTERN isc_boolean_t		ns_g_lwresdonly		INIT(ISC_FALSE);
85 
86 /*
87  * Logging.
88  */
89 EXTERN isc_log_t *		ns_g_lctx		INIT(NULL);
90 EXTERN isc_logcategory_t *	ns_g_categories		INIT(NULL);
91 EXTERN isc_logmodule_t *	ns_g_modules		INIT(NULL);
92 EXTERN unsigned int		ns_g_debuglevel		INIT(0);
93 
94 /*
95  * Current configuration information.
96  */
97 EXTERN cfg_obj_t *		ns_g_config		INIT(NULL);
98 EXTERN const cfg_obj_t *	ns_g_defaults		INIT(NULL);
99 EXTERN const char *		ns_g_conffile		INIT(NS_SYSCONFDIR
100 							     "/named.conf");
101 EXTERN cfg_obj_t *		ns_g_bindkeys		INIT(NULL);
102 EXTERN const char *		ns_g_keyfile		INIT(NS_SYSCONFDIR
103 							     "/rndc.key");
104 
105 EXTERN dns_tsigkey_t *		ns_g_sessionkey		INIT(NULL);
106 EXTERN dns_name_t		ns_g_sessionkeyname;
107 
108 EXTERN const char *		lwresd_g_conffile	INIT(NS_SYSCONFDIR
109 							     "/lwresd.conf");
110 EXTERN const char *		lwresd_g_resolvconffile	INIT("/etc"
111 							     "/resolv.conf");
112 EXTERN isc_boolean_t		ns_g_conffileset	INIT(ISC_FALSE);
113 EXTERN isc_boolean_t		lwresd_g_useresolvconf	INIT(ISC_FALSE);
114 EXTERN isc_uint16_t		ns_g_udpsize		INIT(4096);
115 EXTERN cfg_aclconfctx_t *	ns_g_aclconfctx		INIT(NULL);
116 
117 /*
118  * Initial resource limits.
119  */
120 EXTERN isc_resourcevalue_t	ns_g_initstacksize	INIT(0);
121 EXTERN isc_resourcevalue_t	ns_g_initdatasize	INIT(0);
122 EXTERN isc_resourcevalue_t	ns_g_initcoresize	INIT(0);
123 EXTERN isc_resourcevalue_t	ns_g_initopenfiles	INIT(0);
124 
125 /*
126  * Misc.
127  */
128 EXTERN isc_boolean_t		ns_g_coreok		INIT(ISC_TRUE);
129 EXTERN const char *		ns_g_chrootdir		INIT(NULL);
130 EXTERN isc_boolean_t		ns_g_foreground		INIT(ISC_FALSE);
131 EXTERN isc_boolean_t		ns_g_logstderr		INIT(ISC_FALSE);
132 EXTERN isc_boolean_t		ns_g_nosyslog		INIT(ISC_FALSE);
133 
134 EXTERN const char *		ns_g_defaultsessionkeyfile
135 					INIT(NS_LOCALSTATEDIR "/run/named/"
136 							      "session.key");
137 
138 #if NS_RUN_PID_DIR
139 EXTERN const char *		ns_g_defaultpidfile 	INIT(NS_LOCALSTATEDIR
140 							     "/run/named/"
141 							     "named.pid");
142 EXTERN const char *		lwresd_g_defaultpidfile INIT(NS_LOCALSTATEDIR
143 							     "/run/lwresd/"
144 							     "lwresd.pid");
145 #else
146 EXTERN const char *		ns_g_defaultpidfile 	INIT(NS_LOCALSTATEDIR
147 							     "/run/named.pid");
148 EXTERN const char *		lwresd_g_defaultpidfile INIT(NS_LOCALSTATEDIR
149 							     "/run/lwresd.pid");
150 #endif
151 
152 EXTERN const char *		ns_g_username		INIT(NULL);
153 
154 #if defined(USE_PKCS11)
155 EXTERN const char *		ns_g_engine		INIT(PKCS11_ENGINE);
156 #else
157 EXTERN const char *		ns_g_engine		INIT(NULL);
158 #endif
159 
160 EXTERN int			ns_g_listen		INIT(3);
161 EXTERN isc_time_t		ns_g_boottime;
162 EXTERN isc_time_t		ns_g_configtime;
163 EXTERN isc_boolean_t		ns_g_memstatistics	INIT(ISC_FALSE);
164 EXTERN isc_boolean_t		ns_g_clienttest		INIT(ISC_FALSE);
165 EXTERN isc_boolean_t		ns_g_dropedns		INIT(ISC_FALSE);
166 EXTERN isc_boolean_t		ns_g_noedns		INIT(ISC_FALSE);
167 EXTERN isc_boolean_t		ns_g_nosoa		INIT(ISC_FALSE);
168 EXTERN isc_boolean_t		ns_g_noaa		INIT(ISC_FALSE);
169 EXTERN unsigned int		ns_g_delay		INIT(0);
170 EXTERN isc_boolean_t		ns_g_nonearest		INIT(ISC_FALSE);
171 EXTERN isc_boolean_t		ns_g_notcp		INIT(ISC_FALSE);
172 EXTERN isc_boolean_t		ns_g_disable6		INIT(ISC_FALSE);
173 EXTERN isc_boolean_t		ns_g_disable4		INIT(ISC_FALSE);
174 
175 
176 #ifdef HAVE_GEOIP
177 EXTERN dns_geoip_databases_t	*ns_g_geoip		INIT(NULL);
178 #endif
179 
180 #undef EXTERN
181 #undef INIT
182 
183 #endif /* NAMED_GLOBALS_H */
184