Default extensions settings via config file

This commit is contained in:
Willem Toorop 2016-05-23 12:22:23 +02:00
parent 584193eb39
commit acad529654
1 changed files with 43 additions and 1 deletions

View File

@ -997,7 +997,11 @@ static int _jsmn_get_dict(char *js, jsmntok_t *t, size_t count,
return 0; return 0;
} }
key = js + t[j].start; key = js + t[j].start;
js[t[j].type == JSMN_STRING ? t[j].end : t[j].end - 1] = '\0'; if (t[j].type== JSMN_PRIMITIVE) {
js[t[j].end - 1] = '\0';
i++;
} else
js[t[j].end] = '\0';
j += 1; j += 1;
switch (t[j].type) { switch (t[j].type) {
case JSMN_OBJECT: case JSMN_OBJECT:
@ -1124,6 +1128,20 @@ static getdns_return_t _get_list_or_read_file(const getdns_dict *config,
return r; return r;
} }
#define EXTENSION_SETTING_INT(X) \
} else if (_streq(setting, #X )) { \
if ((r = getdns_dict_get_int(config, #X , &n))) \
fprintf(stderr, "Could not get \"" #X "\""); \
else if ((r = getdns_dict_set_int(extensions, #X , n))) \
fprintf(stderr,"Error setting \"" #X "\"");
#define EXTENSION_SETTING_DICT(X) \
} else if (_streq(setting, #X )) { \
if ((r = getdns_dict_get_dict(config, #X , &dict))) \
fprintf(stderr, "Could not get \"" #X "\""); \
else if ((r = getdns_dict_set_dict(extensions, #X , dict))) \
fprintf(stderr,"Error setting \"" #X "\"");
static getdns_return_t configure_with_config_dict(const getdns_dict *config); static getdns_return_t configure_with_config_dict(const getdns_dict *config);
static getdns_return_t configure_setting_with_config_dict( static getdns_return_t configure_setting_with_config_dict(
const getdns_dict *config, const getdns_bindata *setting) const getdns_dict *config, const getdns_bindata *setting)
@ -1395,6 +1413,30 @@ static getdns_return_t configure_setting_with_config_dict(
fprintf(stderr, "Could not get listen_count"); fprintf(stderr, "Could not get listen_count");
} }
/**************************************/
/**** ****/
/**** Default extensions setting ****/
/**** ****/
/**************************************/
EXTENSION_SETTING_DICT(add_opt_parameters)
EXTENSION_SETTING_INT(add_warning_for_bad_dns)
EXTENSION_SETTING_INT(dnssec_return_all_statuses)
EXTENSION_SETTING_INT(dnssec_return_full_validation_chain)
EXTENSION_SETTING_INT(dnssec_return_only_secure)
EXTENSION_SETTING_INT(dnssec_return_status)
EXTENSION_SETTING_INT(dnssec_return_validation_chain)
#if defined(DNSSEC_ROADBLOCK_AVOIDANCE) && defined(HAVE_LIBUNBOUND)
EXTENSION_SETTING_INT(dnssec_roadblock_avoidance)
#endif
#ifdef EDNS_COOKIES
EXTENSION_SETTING_INT(edns_cookies)
#endif
EXTENSION_SETTING_DICT(header)
EXTENSION_SETTING_INT(return_api_information)
EXTENSION_SETTING_INT(return_both_v4_and_v6)
EXTENSION_SETTING_INT(return_call_reporting)
EXTENSION_SETTING_INT(specify_class)
/************************************/ /************************************/
/**** ****/ /**** ****/
/**** Ignored context settings ****/ /**** Ignored context settings ****/