1 /* $NetBSD: globals.h,v 1.11 2025/01/26 16:24:34 christos Exp $ */ 2 3 /* 4 * Copyright (C) Internet Systems Consortium, Inc. ("ISC") 5 * 6 * SPDX-License-Identifier: MPL-2.0 7 * 8 * This Source Code Form is subject to the terms of the Mozilla Public 9 * License, v. 2.0. If a copy of the MPL was not distributed with this 10 * file, you can obtain one at https://mozilla.org/MPL/2.0/. 11 * 12 * See the COPYRIGHT file distributed with this work for additional 13 * information regarding copyright ownership. 14 */ 15 16 #pragma once 17 18 /*! \file */ 19 20 #include <stdbool.h> 21 22 #include <isc/log.h> 23 #include <isc/loop.h> 24 #include <isc/net.h> 25 #include <isc/netmgr.h> 26 #include <isc/rwlock.h> 27 28 #include <dns/acl.h> 29 #include <dns/zone.h> 30 31 #include <dst/dst.h> 32 33 #include <isccfg/aclconf.h> 34 #include <isccfg/cfg.h> 35 36 #include <named/fuzz.h> 37 #include <named/types.h> 38 39 #undef EXTERN 40 #undef INIT 41 #ifdef NAMED_MAIN 42 #define EXTERN 43 #define INIT(v) = (v) 44 #else /* ifdef NAMED_MAIN */ 45 #define EXTERN extern 46 #define INIT(v) 47 #endif /* ifdef NAMED_MAIN */ 48 49 #ifndef NAMED_RUN_PID_DIR 50 #define NAMED_RUN_PID_DIR 1 51 #endif /* ifndef NAMED_RUN_PID_DIR */ 52 53 EXTERN isc_mem_t *named_g_mctx INIT(NULL); 54 EXTERN unsigned int named_g_cpus INIT(0); 55 EXTERN isc_loop_t *named_g_mainloop INIT(NULL); 56 EXTERN isc_loopmgr_t *named_g_loopmgr INIT(NULL); 57 EXTERN bool named_g_loopmgr_running INIT(false); 58 EXTERN dns_dispatchmgr_t *named_g_dispatchmgr INIT(NULL); 59 EXTERN unsigned int named_g_cpus_detected INIT(1); 60 61 #ifdef ENABLE_AFL 62 EXTERN bool named_g_run_done INIT(false); 63 #endif /* ifdef ENABLE_AFL */ 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_nm_t *named_g_netmgr INIT(NULL); 70 EXTERN cfg_parser_t *named_g_parser INIT(NULL); 71 EXTERN cfg_parser_t *named_g_addparser INIT(NULL); 72 EXTERN const char *named_g_version INIT(PACKAGE_VERSION); 73 EXTERN const char *named_g_product INIT(PACKAGE_NAME); 74 EXTERN const char *named_g_description INIT(PACKAGE_DESCRIPTION); 75 EXTERN const char *named_g_srcid INIT(PACKAGE_SRCID); 76 EXTERN const char *named_g_configargs INIT(PACKAGE_CONFIGARGS); 77 EXTERN const char *named_g_builder INIT(PACKAGE_BUILDER); 78 EXTERN in_port_t named_g_port INIT(0); 79 EXTERN in_port_t named_g_tlsport INIT(0); 80 EXTERN in_port_t named_g_httpsport INIT(0); 81 EXTERN in_port_t named_g_httpport INIT(0); 82 83 EXTERN in_port_t named_g_http_listener_clients INIT(0); 84 EXTERN in_port_t named_g_http_streams_per_conn INIT(0); 85 86 EXTERN named_server_t *named_g_server INIT(NULL); 87 88 /* 89 * Logging. 90 */ 91 EXTERN isc_log_t *named_g_lctx INIT(NULL); 92 EXTERN isc_logcategory_t *named_g_categories INIT(NULL); 93 EXTERN isc_logmodule_t *named_g_modules INIT(NULL); 94 EXTERN unsigned int named_g_debuglevel INIT(0); 95 96 /* 97 * Current configuration information. 98 */ 99 EXTERN cfg_obj_t *named_g_config INIT(NULL); 100 EXTERN const cfg_obj_t *named_g_defaults INIT(NULL); 101 EXTERN const char *named_g_conffile INIT(NAMED_SYSCONFDIR "/named.conf"); 102 EXTERN const char *named_g_defaultbindkeys INIT(NULL); 103 EXTERN const char *named_g_keyfile INIT(NAMED_SYSCONFDIR "/rndc.key"); 104 105 EXTERN bool named_g_conffileset INIT(false); 106 EXTERN cfg_aclconfctx_t *named_g_aclconfctx INIT(NULL); 107 108 /* 109 * Misc. 110 */ 111 EXTERN bool named_g_coreok INIT(true); 112 EXTERN const char *named_g_chrootdir INIT(NULL); 113 EXTERN bool named_g_foreground INIT(false); 114 EXTERN bool named_g_logstderr INIT(false); 115 EXTERN bool named_g_nosyslog INIT(false); 116 EXTERN const char *named_g_logfile INIT(NULL); 117 118 EXTERN const char *named_g_defaultsessionkeyfile INIT(NAMED_LOCALSTATEDIR 119 "/run/named/" 120 "session.key"); 121 122 #if NAMED_RUN_PID_DIR 123 EXTERN const char *named_g_defaultpidfile INIT(NAMED_LOCALSTATEDIR "/run/named/" 124 "named.pid"); 125 #else /* if NAMED_RUN_PID_DIR */ 126 EXTERN const char *named_g_defaultpidfile INIT(NAMED_LOCALSTATEDIR "/run/" 127 "named.pid"); 128 #endif /* if NAMED_RUN_PID_DIR */ 129 130 EXTERN const char *named_g_username INIT(NULL); 131 132 EXTERN const char *named_g_engine INIT(NULL); 133 134 EXTERN isc_time_t named_g_boottime; 135 EXTERN isc_time_t named_g_configtime; 136 EXTERN bool named_g_memstatistics INIT(false); 137 EXTERN bool named_g_keepstderr INIT(false); 138 139 EXTERN unsigned int named_g_tat_interval INIT(24 * 3600); 140 EXTERN unsigned int named_g_maxcachesize INIT(0); 141 142 #if defined(HAVE_GEOIP2) 143 EXTERN dns_geoip_databases_t *named_g_geoip INIT(NULL); 144 #endif /* if defined(HAVE_GEOIP2) */ 145 146 EXTERN const char *named_g_fuzz_addr INIT(NULL); 147 EXTERN isc_fuzztype_t named_g_fuzz_type INIT(isc_fuzz_none); 148 149 EXTERN dns_acl_t *named_g_mapped INIT(NULL); 150 151 #undef EXTERN 152 #undef INIT 153