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