7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley/*
8a99b24dbe8e0e713f226f4696bfa215b38ad3c6Tinderbox User * Copyright (C) 1999-2017 Internet Systems Consortium, Inc. ("ISC")
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence *
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley */
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence#ifndef NAMED_GLOBALS_H
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence#define NAMED_GLOBALS_H 1
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein/*! \file */
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#include <isc/rwlock.h>
6c6894f0a0b7ae9683b2f279952a13920d22feb4Andreas Gustafsson#include <isc/log.h>
a252c2771f59409d38b12d076513aeef89c3aeb1David Lawrence#include <isc/net.h>
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley
e7220c9b841bbd3d16736726f786a86fec3c0e18Evan Hunt#include <isccfg/aclconf.h>
90c099e88e9f16bfee9edee3ac1a51fc98843772Brian Wellington#include <isccfg/cfg.h>
90c099e88e9f16bfee9edee3ac1a51fc98843772Brian Wellington
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt#include <dns/acl.h>
a3a11c4f3fc9ba972802b811c4d95a9884d6ff4aMichael Sawyer#include <dns/zone.h>
a3a11c4f3fc9ba972802b811c4d95a9884d6ff4aMichael Sawyer
351b62535d4c4f89883bfdba025999dd32490266Evan Hunt#include <dst/dst.h>
351b62535d4c4f89883bfdba025999dd32490266Evan Hunt
6017f424ee3c02d7f22132c77576ea38542fa949Andreas Gustafsson#include <named/types.h>
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki#include <named/fuzz.h>
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#undef EXTERN
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#undef INIT
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#ifdef NS_MAIN
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#define EXTERN
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#define INIT(v) = (v)
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#else
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#define EXTERN extern
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#define INIT(v)
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#endif
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley
f6f1672b4e460571c418e43ae3bd0fae97e4c149Mark Andrews#ifndef NS_RUN_PID_DIR
f6f1672b4e460571c418e43ae3bd0fae97e4c149Mark Andrews#define NS_RUN_PID_DIR 1
f6f1672b4e460571c418e43ae3bd0fae97e4c149Mark Andrews#endif
f6f1672b4e460571c418e43ae3bd0fae97e4c149Mark Andrews
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob HalleyEXTERN isc_mem_t * ns_g_mctx INIT(NULL);
bc9515e5a2a1618c9b7927de50be4d3ee87c77f2Brian WellingtonEXTERN unsigned int ns_g_cpus INIT(0);
5d23a6ac8392b1eeec8effdee47fb725ace1e759Evan HuntEXTERN unsigned int ns_g_udpdisp INIT(0);
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob HalleyEXTERN isc_taskmgr_t * ns_g_taskmgr INIT(NULL);
ca9739800f045cd4d39014f98b920d4354b5bd14Michael GraffEXTERN dns_dispatchmgr_t * ns_g_dispatchmgr INIT(NULL);
165250c40336857867bbfc29023d3d06fc823b97Brian WellingtonEXTERN isc_entropy_t * ns_g_entropy INIT(NULL);
f8dfdef682c54f61cacebfb31260f3d6ba4ea54aMark AndrewsEXTERN isc_entropy_t * ns_g_fallbackentropy INIT(NULL);
7ca0cdd7ecff4c0396970ed957df7d5d8c639abfMark AndrewsEXTERN unsigned int ns_g_cpus_detected INIT(1);
f8dfdef682c54f61cacebfb31260f3d6ba4ea54aMark Andrews
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki#ifdef ENABLE_AFL
19d80ce5844e00a021643759adcbe27c11b485a0Witold KrecickiEXTERN isc_boolean_t ns_g_run_done INIT(ISC_FALSE);
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki#endif
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley/*
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley * XXXRTH We're going to want multiple timer managers eventually. One
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley * for really short timers, another for client timers, and one
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley * for zone timers.
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley */
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob HalleyEXTERN isc_timermgr_t * ns_g_timermgr INIT(NULL);
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob HalleyEXTERN isc_socketmgr_t * ns_g_socketmgr INIT(NULL);
90c099e88e9f16bfee9edee3ac1a51fc98843772Brian WellingtonEXTERN cfg_parser_t * ns_g_parser INIT(NULL);
74eb2f5cbc98d9646bcd13ffcb17688f0db5ab8dEvan HuntEXTERN cfg_parser_t * ns_g_addparser INIT(NULL);
7efc8c3f692fc3226c00ce8bdc1b90eb06562352David LawrenceEXTERN const char * ns_g_version INIT(VERSION);
53a4e18582ae0c50f3742d2f6b684231a50be038Curtis BlackburnEXTERN const char * ns_g_product INIT(PRODUCT);
af9f195c9e128fc9cc5912498b8f7f26f07887c3Evan HuntEXTERN const char * ns_g_description INIT(DESCRIPTION);
bcf966e6146943ebcac1603a52468f5292612b18Evan HuntEXTERN const char * ns_g_srcid INIT(SRCID);
eeaa2277ead6df7253a8958ee2d786f73e05b8beTatuya JINMEI 神明達哉EXTERN const char * ns_g_configargs INIT(CONFIGARGS);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEXTERN const char * ns_g_builder INIT(BUILDER);
f1f2f8bd47370a231c5c700ef918bd6ad6c7d042Andreas GustafssonEXTERN in_port_t ns_g_port INIT(0);
67adc03ef81fb610f8df093b17f55275ee816754Evan HuntEXTERN isc_dscp_t ns_g_dscp INIT(-1);
8a23742754e4640a298acb0d6bd7ed4da0c11798Brian WellingtonEXTERN in_port_t lwresd_g_listenport INIT(0);
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley
6017f424ee3c02d7f22132c77576ea38542fa949Andreas GustafssonEXTERN ns_server_t * ns_g_server INIT(NULL);
8a23742754e4640a298acb0d6bd7ed4da0c11798Brian Wellington
8a23742754e4640a298acb0d6bd7ed4da0c11798Brian WellingtonEXTERN isc_boolean_t ns_g_lwresdonly INIT(ISC_FALSE);
6017f424ee3c02d7f22132c77576ea38542fa949Andreas Gustafsson
a4b6a1622b1b6672a6e0c7186167bbe3997568c6Bob Halley/*
a4b6a1622b1b6672a6e0c7186167bbe3997568c6Bob Halley * Logging.
a4b6a1622b1b6672a6e0c7186167bbe3997568c6Bob Halley */
a4b6a1622b1b6672a6e0c7186167bbe3997568c6Bob HalleyEXTERN isc_log_t * ns_g_lctx INIT(NULL);
a4b6a1622b1b6672a6e0c7186167bbe3997568c6Bob HalleyEXTERN isc_logcategory_t * ns_g_categories INIT(NULL);
a4b6a1622b1b6672a6e0c7186167bbe3997568c6Bob HalleyEXTERN isc_logmodule_t * ns_g_modules INIT(NULL);
a4b6a1622b1b6672a6e0c7186167bbe3997568c6Bob HalleyEXTERN unsigned int ns_g_debuglevel INIT(0);
253f25f7ffaad40238f4d96ce29b6aee7e3ddbd8James Brister
253f25f7ffaad40238f4d96ce29b6aee7e3ddbd8James Brister/*
2c02438f8481eb3f64b713244df5442ae61955a3David Lawrence * Current configuration information.
253f25f7ffaad40238f4d96ce29b6aee7e3ddbd8James Brister */
90c099e88e9f16bfee9edee3ac1a51fc98843772Brian WellingtonEXTERN cfg_obj_t * ns_g_config INIT(NULL);
45e1bd63587102c3bb361eaca42ee7b714fb3542Mark AndrewsEXTERN const cfg_obj_t * ns_g_defaults INIT(NULL);
ae4cbb69eef32ced103fe4561e8d2031ee4c3497David LawrenceEXTERN const char * ns_g_conffile INIT(NS_SYSCONFDIR
ae4cbb69eef32ced103fe4561e8d2031ee4c3497David Lawrence "/named.conf");
3a30493983df83a3184dd1ecd39cf31ccdac3badEvan HuntEXTERN cfg_obj_t * ns_g_bindkeys INIT(NULL);
326bcfa0e2a6b924cb829a0bcc3bf9590ce21ad6Mark AndrewsEXTERN const char * ns_g_keyfile INIT(NS_SYSCONFDIR
326bcfa0e2a6b924cb829a0bcc3bf9590ce21ad6Mark Andrews "/rndc.key");
351b62535d4c4f89883bfdba025999dd32490266Evan Hunt
08f860f800d32007a0c9bf456f6c35fbb2ecbc81Evan HuntEXTERN dns_tsigkey_t * ns_g_sessionkey INIT(NULL);
08f860f800d32007a0c9bf456f6c35fbb2ecbc81Evan HuntEXTERN dns_name_t ns_g_sessionkeyname;
351b62535d4c4f89883bfdba025999dd32490266Evan Hunt
8a23742754e4640a298acb0d6bd7ed4da0c11798Brian WellingtonEXTERN const char * lwresd_g_conffile INIT(NS_SYSCONFDIR
8a23742754e4640a298acb0d6bd7ed4da0c11798Brian Wellington "/lwresd.conf");
8a23742754e4640a298acb0d6bd7ed4da0c11798Brian WellingtonEXTERN const char * lwresd_g_resolvconffile INIT("/etc"
8a23742754e4640a298acb0d6bd7ed4da0c11798Brian Wellington "/resolv.conf");
4587a7c3df4a8921b2df5c0d65fcb76f29c7e032Brian WellingtonEXTERN isc_boolean_t ns_g_conffileset INIT(ISC_FALSE);
0df9b6e53baf826722b9690643ea21f890e260f7Brian WellingtonEXTERN isc_boolean_t lwresd_g_useresolvconf INIT(ISC_FALSE);
e2fb08b85de8158fe6b71008311e3d98104b92a6Mark AndrewsEXTERN isc_uint16_t ns_g_udpsize INIT(4096);
e7220c9b841bbd3d16736726f786a86fec3c0e18Evan HuntEXTERN cfg_aclconfctx_t * ns_g_aclconfctx INIT(NULL);
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley
2c02438f8481eb3f64b713244df5442ae61955a3David Lawrence/*
2c02438f8481eb3f64b713244df5442ae61955a3David Lawrence * Initial resource limits.
2c02438f8481eb3f64b713244df5442ae61955a3David Lawrence */
2c02438f8481eb3f64b713244df5442ae61955a3David LawrenceEXTERN isc_resourcevalue_t ns_g_initstacksize INIT(0);
2c02438f8481eb3f64b713244df5442ae61955a3David LawrenceEXTERN isc_resourcevalue_t ns_g_initdatasize INIT(0);
2c02438f8481eb3f64b713244df5442ae61955a3David LawrenceEXTERN isc_resourcevalue_t ns_g_initcoresize INIT(0);
2c02438f8481eb3f64b713244df5442ae61955a3David LawrenceEXTERN isc_resourcevalue_t ns_g_initopenfiles INIT(0);
2c02438f8481eb3f64b713244df5442ae61955a3David Lawrence
b8257bd2d872546e7cc358fdf32331ce8850bca4Bob Halley/*
b8257bd2d872546e7cc358fdf32331ce8850bca4Bob Halley * Misc.
b8257bd2d872546e7cc358fdf32331ce8850bca4Bob Halley */
b8257bd2d872546e7cc358fdf32331ce8850bca4Bob HalleyEXTERN isc_boolean_t ns_g_coreok INIT(ISC_TRUE);
44fee668021c7ceef4ee1c848031d883a508b359James BristerEXTERN const char * ns_g_chrootdir INIT(NULL);
44fee668021c7ceef4ee1c848031d883a508b359James BristerEXTERN isc_boolean_t ns_g_foreground INIT(ISC_FALSE);
f30f2b279c63fd2f6b5d781a03f48d7e87ac3855Andreas GustafssonEXTERN isc_boolean_t ns_g_logstderr INIT(ISC_FALSE);
25b95d31ce658326510bef979cf2909c6eddc428Mark AndrewsEXTERN isc_boolean_t ns_g_nosyslog INIT(ISC_FALSE);
44613d4d868ed5e73a1132280880f0699af56733Evan HuntEXTERN const char * ns_g_logfile INIT(NULL);
44fee668021c7ceef4ee1c848031d883a508b359James Brister
08f860f800d32007a0c9bf456f6c35fbb2ecbc81Evan HuntEXTERN const char * ns_g_defaultsessionkeyfile
3e12c54de2238dc90bae06a2e083e4976120bad5Automatic Updater INIT(NS_LOCALSTATEDIR "/run/named/"
08f860f800d32007a0c9bf456f6c35fbb2ecbc81Evan Hunt "session.key");
7ae96d882326357448f8f440c52f47ac1b1fa455Evan HuntEXTERN const char * ns_g_defaultlockfile INIT(NS_LOCALSTATEDIR
47d837a49967a6a1b290024f5efb0669276013b1Mukund Sivaraman "/run/named/"
47d837a49967a6a1b290024f5efb0669276013b1Mukund Sivaraman "named.lock");
7ae96d882326357448f8f440c52f47ac1b1fa455Evan HuntEXTERN isc_boolean_t ns_g_forcelock INIT(ISC_FALSE);
351b62535d4c4f89883bfdba025999dd32490266Evan Hunt
f6f1672b4e460571c418e43ae3bd0fae97e4c149Mark Andrews#if NS_RUN_PID_DIR
a435080fb8fd31cebc976f1b0af52fcc869dc8aaMark AndrewsEXTERN const char * ns_g_defaultpidfile INIT(NS_LOCALSTATEDIR
a435080fb8fd31cebc976f1b0af52fcc869dc8aaMark Andrews "/run/named/"
7f950d7cb71c8816168654f5a28edbb67ee27553Automatic Updater "named.pid");
208e3e410dc49b8740f958f6e7e3b7151b2773e9Brian WellingtonEXTERN const char * lwresd_g_defaultpidfile INIT(NS_LOCALSTATEDIR
a435080fb8fd31cebc976f1b0af52fcc869dc8aaMark Andrews "/run/lwresd/"
f6f1672b4e460571c418e43ae3bd0fae97e4c149Mark Andrews "lwresd.pid");
a435080fb8fd31cebc976f1b0af52fcc869dc8aaMark Andrews#else
a435080fb8fd31cebc976f1b0af52fcc869dc8aaMark AndrewsEXTERN const char * ns_g_defaultpidfile INIT(NS_LOCALSTATEDIR
a435080fb8fd31cebc976f1b0af52fcc869dc8aaMark Andrews "/run/named.pid");
a435080fb8fd31cebc976f1b0af52fcc869dc8aaMark AndrewsEXTERN const char * lwresd_g_defaultpidfile INIT(NS_LOCALSTATEDIR
a435080fb8fd31cebc976f1b0af52fcc869dc8aaMark Andrews "/run/lwresd.pid");
a435080fb8fd31cebc976f1b0af52fcc869dc8aaMark Andrews#endif
a435080fb8fd31cebc976f1b0af52fcc869dc8aaMark Andrews
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt#ifdef HAVE_DNSTAP
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntEXTERN const char * ns_g_defaultdnstap
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt INIT(NS_LOCALSTATEDIR "/run/named/"
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt "dnstap.sock");
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt#else
b66b333f59cf51ef87f973084a5023acd9317fb2Evan HuntEXTERN const char * ns_g_defaultdnstap INIT(NULL);
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt#endif /* HAVE_DNSTAP */
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt
d7a26a32f8812551ea6b62d88bde55fba9f85932Bob HalleyEXTERN const char * ns_g_username INIT(NULL);
b8257bd2d872546e7cc358fdf32331ce8850bca4Bob Halley
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt#if defined(USE_PKCS11)
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan HuntEXTERN const char * ns_g_engine INIT(PKCS11_ENGINE);
8b78c993cb475cc94e88560941b28c37684789d9Francis Dupont#else
8b78c993cb475cc94e88560941b28c37684789d9Francis DupontEXTERN const char * ns_g_engine INIT(NULL);
8b78c993cb475cc94e88560941b28c37684789d9Francis Dupont#endif
8b78c993cb475cc94e88560941b28c37684789d9Francis Dupont
43ee20a821c490fa5bb43df924e9970705c22ecfMichael GraffEXTERN int ns_g_listen INIT(3);
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark AndrewsEXTERN isc_time_t ns_g_boottime;
4f9f8fa0528ce843a3bdf7993e94463508d8320eEvan HuntEXTERN isc_time_t ns_g_configtime;
a1e2170ad5c5018fbe8f7b8449d8885d5d298e88Mark AndrewsEXTERN isc_boolean_t ns_g_memstatistics INIT(ISC_FALSE);
f5d0f495847eb4eb9f0058e73051f855800bee0bMark AndrewsEXTERN isc_boolean_t ns_g_clienttest INIT(ISC_FALSE);
4b17401c9c916ed01dff1fe552ccc9e7e411edeaMark AndrewsEXTERN isc_boolean_t ns_g_dropedns INIT(ISC_FALSE);
4b17401c9c916ed01dff1fe552ccc9e7e411edeaMark AndrewsEXTERN isc_boolean_t ns_g_noedns INIT(ISC_FALSE);
810656a187f2c358323bbf679f792f19a46a7973Mark AndrewsEXTERN isc_boolean_t ns_g_nosoa INIT(ISC_FALSE);
082f42dcf2f38509a8c842013548f680a6ad06f3Mark AndrewsEXTERN isc_boolean_t ns_g_noaa INIT(ISC_FALSE);
52254f75267c734acf1f1fb982b6a3be05e93507Mark AndrewsEXTERN isc_boolean_t ns_g_keepstderr INIT(ISC_FALSE);
cc0a2f0283ffd7c7aaed368832bf157b09136525Mark AndrewsEXTERN unsigned int ns_g_delay INIT(0);
48019314431389cca5f8eba7ee9aa5bc08a67f4eMark AndrewsEXTERN isc_boolean_t ns_g_nonearest INIT(ISC_FALSE);
693d70f96fc2b3c1830580edcc29146afd6a9f61Mark AndrewsEXTERN isc_boolean_t ns_g_notcp INIT(ISC_FALSE);
6979ebf549b9c0ccd115bbf8c0d905600086f292Mark AndrewsEXTERN isc_boolean_t ns_g_disable6 INIT(ISC_FALSE);
6979ebf549b9c0ccd115bbf8c0d905600086f292Mark AndrewsEXTERN isc_boolean_t ns_g_disable4 INIT(ISC_FALSE);
b7161f9898405faee05ba72a63ad10e4541f1346Mark AndrewsEXTERN unsigned int ns_g_tat_interval INIT(24*3600);
f592d2f76cac7115038124c510d2ba3050334b4dEvan HuntEXTERN isc_boolean_t ns_g_fixedlocal INIT(ISC_FALSE);
6979ebf549b9c0ccd115bbf8c0d905600086f292Mark Andrews
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt#ifdef HAVE_GEOIP
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan HuntEXTERN dns_geoip_databases_t *ns_g_geoip INIT(NULL);
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt#endif
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt
19d80ce5844e00a021643759adcbe27c11b485a0Witold KrecickiEXTERN const char * ns_g_fuzz_named_addr INIT(NULL);
19d80ce5844e00a021643759adcbe27c11b485a0Witold KrecickiEXTERN ns_fuzz_t ns_g_fuzz_type INIT(ns_fuzz_none);
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki
4d8940486ca555f8308c503eef3bd479c0095eb8Mark AndrewsEXTERN dns_acl_t * ns_g_mapped INIT(NULL);
4d8940486ca555f8308c503eef3bd479c0095eb8Mark Andrews
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#undef EXTERN
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley#undef INIT
7e6c9a9a733f7a57ace98e4692573f42a2cad0edBob Halley
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence#endif /* NAMED_GLOBALS_H */