* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: config.c,v 1.48 2004/04/19 23:09:51 marka Exp $ */
+/* $Id: config.c,v 1.49 2004/04/20 14:11:46 marka Exp $ */
#include <config.h>
}
isc_result_t
-ns_config_get(cfg_obj_t **maps, const char* name, cfg_obj_t **obj) {
+ns_config_get(cfg_obj_t **maps, const char *name, cfg_obj_t **obj) {
int i;
for (i = 0;; i++) {
}
}
+isc_result_t
+ns_checknames_get(cfg_obj_t **maps, const char *which, cfg_obj_t **obj) {
+ cfg_listelt_t *element;
+ cfg_obj_t *checknames;
+ cfg_obj_t *type;
+ cfg_obj_t *value;
+ int i;
+
+ for (i = 0;; i++) {
+ if (maps[i] == NULL)
+ return (ISC_R_NOTFOUND);
+ checknames = NULL;
+ if (cfg_map_get(maps[i], "check-names", &checknames) == ISC_R_SUCCESS) {
+ /*
+ * Zone map entry is not a list.
+ */
+ if (checknames != NULL && !cfg_obj_islist(checknames)) {
+ *obj = checknames;
+ return (ISC_R_SUCCESS);
+ }
+ for (element = cfg_list_first(checknames);
+ element != NULL;
+ element = cfg_list_next(element)) {
+ value = cfg_listelt_value(element);
+ type = cfg_tuple_get(value, "type");
+ if (strcasecmp(cfg_obj_asstring(type), which) == 0) {
+ *obj = cfg_tuple_get(value, "mode");
+ return (ISC_R_SUCCESS);
+ }
+ }
+
+ }
+ }
+}
+
int
ns_config_listcount(cfg_obj_t *list) {
cfg_listelt_t *e;
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: server.c,v 1.424 2004/04/20 07:16:23 marka Exp $ */
+/* $Id: server.c,v 1.425 2004/04/20 14:11:46 marka Exp $ */
#include <config.h>
isc_buffer_init(&b, str, strlen(str));
isc_buffer_add(&b, strlen(str));
CHECK(dns_name_fromtext(name, &b, dns_rootname,
- ISC_FALSE, NULL));
+ ISC_FALSE, NULL));
value = cfg_obj_asboolean(cfg_tuple_get(obj, "value"));
CHECK(dns_resolver_setmustbesecure(resolver, name, value));
}
* Check-names.
*/
obj = NULL;
- str = "";
- result = ns_config_get(maps, "check-names", &obj);
+ result = ns_checknames_get(maps, "response", &obj);
INSIST(result == ISC_R_SUCCESS);
- for (element = cfg_list_first(obj);
- element != NULL;
- element = cfg_list_next(element)) {
- cfg_obj_t *value, *type;
- value = cfg_listelt_value(element);
- type = cfg_tuple_get(value, "type");
- if (strcasecmp(cfg_obj_asstring(type), "response") == 0) {
- str = cfg_obj_asstring(cfg_tuple_get(value, "mode"));
- break;
- }
- }
- if (strcasecmp(str, "fail") == 0) {
- check = DNS_RESOLVER_CHECKNAMES |
+ str = cfg_obj_asstring(obj);
+ if (strcasecmp(str, "fail") == 0) {
+ check = DNS_RESOLVER_CHECKNAMES |
DNS_RESOLVER_CHECKNAMESFAIL;
view->checknames = ISC_TRUE;
- } else if (strcasecmp(str, "warn") == 0) {
- check = DNS_RESOLVER_CHECKNAMES;
+ } else if (strcasecmp(str, "warn") == 0) {
+ check = DNS_RESOLVER_CHECKNAMES;
view->checknames = ISC_FALSE;
- } else if (strcasecmp(str, "ignore") == 0) {
+ } else if (strcasecmp(str, "ignore") == 0) {
check = 0;
view->checknames = ISC_FALSE;
} else
- INSIST(0);
+ INSIST(0);
/*
* Resolver.
*/
if (view->enablednssec) {
CHECK(configure_view_dnsseckeys(vconfig, config, mctx,
- &view->secroots));
+ &view->secroots));
dns_resolver_resetmustbesecure(view->resolver);
obj = NULL;
result = ns_config_get(maps, "dnssec-must-be-secure", &obj);
view->preferred_glue = dns_rdatatype_aaaa;
else
view->preferred_glue = 0;
- } else
+ } else
view->preferred_glue = 0;
obj = NULL;
*/
static void
interface_timer_tick(isc_task_t *task, isc_event_t *event) {
- isc_result_t result;
+ isc_result_t result;
ns_server_t *server = (ns_server_t *) event->ev_arg;
INSIST(task == server->task);
UNUSED(task);
* option where the above parsing failed, parse resolv.conf.
*/
if (ns_g_lwresdonly &&
- (lwresd_g_useresolvconf ||
+ (lwresd_g_useresolvconf ||
(!ns_g_conffileset && result == ISC_R_FILENOTFOUND)))
{
isc_log_write(ns_g_lctx,
dispatch->dispatchgen = server->dispatchgen;
dispatch->dispatch = NULL;
- attrs = 0;
- attrs |= DNS_DISPATCHATTR_UDP;
- switch (isc_sockaddr_pf(addr)) {
- case AF_INET:
- attrs |= DNS_DISPATCHATTR_IPV4;
- break;
- case AF_INET6:
- attrs |= DNS_DISPATCHATTR_IPV6;
- break;
+ attrs = 0;
+ attrs |= DNS_DISPATCHATTR_UDP;
+ switch (isc_sockaddr_pf(addr)) {
+ case AF_INET:
+ attrs |= DNS_DISPATCHATTR_IPV4;
+ break;
+ case AF_INET6:
+ attrs |= DNS_DISPATCHATTR_IPV6;
+ break;
default:
result = ISC_R_NOTIMPLEMENTED;
goto cleanup;
- }
- attrmask = 0;
- attrmask |= DNS_DISPATCHATTR_UDP;
- attrmask |= DNS_DISPATCHATTR_TCP;
- attrmask |= DNS_DISPATCHATTR_IPV4;
- attrmask |= DNS_DISPATCHATTR_IPV6;
+ }
+ attrmask = 0;
+ attrmask |= DNS_DISPATCHATTR_UDP;
+ attrmask |= DNS_DISPATCHATTR_TCP;
+ attrmask |= DNS_DISPATCHATTR_IPV4;
+ attrmask |= DNS_DISPATCHATTR_IPV6;
result = dns_dispatch_getudp(ns_g_dispatchmgr, ns_g_socketmgr,
- ns_g_taskmgr, &dispatch->addr, 4096,
- 1000, 32768, 16411, 16433,
- attrs, attrmask, &dispatch->dispatch);
+ ns_g_taskmgr, &dispatch->addr, 4096,
+ 1000, 32768, 16411, 16433,
+ attrs, attrmask, &dispatch->dispatch);
if (result != ISC_R_SUCCESS)
goto cleanup;
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: zoneconf.c,v 1.111 2004/03/30 02:13:43 marka Exp $ */
+/* $Id: zoneconf.c,v 1.112 2004/04/20 14:11:46 marka Exp $ */
#include <config.h>
static void
checknames(dns_zonetype_t ztype, cfg_obj_t **maps, cfg_obj_t **objp) {
const char *zone = NULL;
- cfg_listelt_t *element;
- cfg_obj_t *type;
- cfg_obj_t *value;
- cfg_obj_t *check;
- int i;
+ isc_result_t result;
switch (ztype) {
case dns_zone_slave: zone = "slave"; break;
default:
INSIST(0);
}
- for (i = 0; maps[i] != NULL; i++) {
- check = NULL;
- cfg_map_get(maps[i], "check-names", &check);
- if (check != NULL && !cfg_obj_islist(check)) {
- *objp = check;
- return;
- }
- for (element = cfg_list_first(check);
- element != NULL;
- element = cfg_list_next(element)) {
- value = cfg_listelt_value(element);
- type = cfg_tuple_get(value, "type");
- if (strcasecmp(cfg_obj_asstring(type), zone) == 0) {
- *objp = cfg_tuple_get(value, "mode");
- return;
- }
- }
- }
+ result = ns_checknames_get(maps, zone, objp);
+ INSIST(result == ISC_R_SUCCESS);
}
isc_result_t