1 /*
2  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
3  *
4  * This Source Code Form is subject to the terms of the Mozilla Public
5  * License, v. 2.0. If a copy of the MPL was not distributed with this
6  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7  *
8  * See the COPYRIGHT file distributed with this work for additional
9  * information regarding copyright ownership.
10  */
11 
12 #ifndef NAMED_GLOBALS_H
13 #define NAMED_GLOBALS_H 1
14 
15 /*! \file */
16 
17 #include <stdbool.h>
18 
19 #include <isc/log.h>
20 #include <isc/net.h>
21 #include <isc/netmgr.h>
22 #include <isc/rwlock.h>
23 
24 #include <dns/acl.h>
25 #include <dns/zone.h>
26 
27 #include <isccfg/aclconf.h>
28 #include <isccfg/cfg.h>
29 
30 #include <dst/dst.h>
31 #include <named/fuzz.h>
32 #include <named/types.h>
33 
34 #undef EXTERN
35 #undef INIT
36 #ifdef NAMED_MAIN
37 #define EXTERN
38 #define INIT(v) = (v)
39 #else /* ifdef NAMED_MAIN */
40 #define EXTERN extern
41 #define INIT(v)
42 #endif /* ifdef NAMED_MAIN */
43 
44 #ifndef NAMED_RUN_PID_DIR
45 #define NAMED_RUN_PID_DIR 1
46 #endif /* ifndef NAMED_RUN_PID_DIR */
47 
48 EXTERN isc_mem_t *named_g_mctx	    INIT(NULL);
49 EXTERN unsigned int named_g_cpus    INIT(0);
50 EXTERN unsigned int named_g_udpdisp INIT(0);
51 EXTERN isc_taskmgr_t *named_g_taskmgr INIT(NULL);
52 EXTERN dns_dispatchmgr_t *named_g_dispatchmgr INIT(NULL);
53 EXTERN unsigned int named_g_cpus_detected     INIT(1);
54 
55 #ifdef ENABLE_AFL
56 EXTERN bool named_g_run_done INIT(false);
57 #endif /* ifdef ENABLE_AFL */
58 /*
59  * XXXRTH  We're going to want multiple timer managers eventually.  One
60  *         for really short timers, another for client timers, and one
61  *         for zone timers.
62  */
63 EXTERN isc_timermgr_t *named_g_timermgr INIT(NULL);
64 EXTERN isc_socketmgr_t *named_g_socketmgr INIT(NULL);
65 EXTERN isc_nm_t *named_g_nm INIT(NULL);
66 EXTERN cfg_parser_t *named_g_parser INIT(NULL);
67 EXTERN cfg_parser_t *named_g_addparser INIT(NULL);
68 EXTERN const char *named_g_version     INIT(VERSION);
69 EXTERN const char *named_g_product     INIT(PRODUCT);
70 EXTERN const char *named_g_description INIT(DESCRIPTION);
71 EXTERN const char *named_g_srcid       INIT(SRCID);
72 EXTERN const char *named_g_configargs  INIT(CONFIGARGS);
73 EXTERN const char *named_g_builder     INIT(BUILDER);
74 EXTERN in_port_t named_g_port	       INIT(0);
75 EXTERN isc_dscp_t named_g_dscp	       INIT(-1);
76 
77 EXTERN named_server_t *named_g_server INIT(NULL);
78 
79 /*
80  * Logging.
81  */
82 EXTERN isc_log_t *named_g_lctx INIT(NULL);
83 EXTERN isc_logcategory_t *named_g_categories INIT(NULL);
84 EXTERN isc_logmodule_t *named_g_modules INIT(NULL);
85 EXTERN unsigned int named_g_debuglevel	INIT(0);
86 
87 /*
88  * Current configuration information.
89  */
90 EXTERN cfg_obj_t *named_g_config INIT(NULL);
91 EXTERN const cfg_obj_t *named_g_defaults   INIT(NULL);
92 EXTERN const char *named_g_conffile	   INIT(NAMED_SYSCONFDIR "/named.conf");
93 EXTERN const char *named_g_defaultbindkeys INIT(NAMED_SYSCONFDIR "/bind.keys");
94 EXTERN const char *named_g_keyfile	   INIT(NAMED_SYSCONFDIR "/rndc.key");
95 
96 EXTERN dns_tsigkey_t *named_g_sessionkey INIT(NULL);
97 EXTERN dns_name_t			 named_g_sessionkeyname;
98 EXTERN bool named_g_conffileset		 INIT(false);
99 EXTERN cfg_aclconfctx_t *named_g_aclconfctx INIT(NULL);
100 
101 /*
102  * Initial resource limits.
103  */
104 EXTERN isc_resourcevalue_t named_g_initstacksize INIT(0);
105 EXTERN isc_resourcevalue_t named_g_initdatasize	 INIT(0);
106 EXTERN isc_resourcevalue_t named_g_initcoresize	 INIT(0);
107 EXTERN isc_resourcevalue_t named_g_initopenfiles INIT(0);
108 
109 /*
110  * Misc.
111  */
112 EXTERN bool named_g_coreok	     INIT(true);
113 EXTERN const char *named_g_chrootdir INIT(NULL);
114 EXTERN bool named_g_foreground	     INIT(false);
115 EXTERN bool named_g_logstderr	     INIT(false);
116 EXTERN bool named_g_nosyslog	     INIT(false);
117 EXTERN const char *named_g_logfile   INIT(NULL);
118 
119 EXTERN const char *named_g_defaultsessionkeyfile INIT(NAMED_LOCALSTATEDIR
120 						      "/run/named/"
121 						      "session.key");
122 EXTERN const char *named_g_defaultlockfile INIT(NAMED_LOCALSTATEDIR "/run/"
123 								    "named/"
124 								    "named."
125 								    "lock");
126 EXTERN bool named_g_forcelock		   INIT(false);
127 
128 #if NAMED_RUN_PID_DIR
129 EXTERN const char *named_g_defaultpidfile INIT(NAMED_LOCALSTATEDIR "/run/named/"
130 								   "pid");
131 #else  /* if NAMED_RUN_PID_DIR */
132 EXTERN const char *named_g_defaultpidfile INIT(NAMED_LOCALSTATEDIR "/run/"
133 								   "named.pid");
134 #endif /* if NAMED_RUN_PID_DIR */
135 
136 EXTERN const char *named_g_username INIT(NULL);
137 
138 EXTERN const char *named_g_engine INIT(NULL);
139 
140 EXTERN isc_time_t		  named_g_boottime;
141 EXTERN isc_time_t		  named_g_configtime;
142 EXTERN bool named_g_memstatistics INIT(false);
143 EXTERN bool named_g_keepstderr	  INIT(false);
144 
145 EXTERN unsigned int named_g_tat_interval INIT(24 * 3600);
146 
147 #if defined(HAVE_GEOIP2)
148 EXTERN dns_geoip_databases_t *named_g_geoip INIT(NULL);
149 #endif /* if defined(HAVE_GEOIP2) */
150 
151 EXTERN const char *named_g_fuzz_addr	INIT(NULL);
152 EXTERN isc_fuzztype_t named_g_fuzz_type INIT(isc_fuzz_none);
153 
154 EXTERN dns_acl_t *named_g_mapped INIT(NULL);
155 
156 #undef EXTERN
157 #undef INIT
158 
159 #endif /* NAMED_GLOBALS_H */
160