From 54b820773c9013f95d34d4c6a0d628b6138b63fb Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 24 Jun 2016 19:08:58 +0000 Subject: [PATCH] - Possibility to specify local-zone types for an acl/tag pair - Possibility to specify (override) local-zone types for a source address block git-svn-id: file:///svn/unbound/trunk@3797 be551aaa-1e26-0410-a405-d3ace91eadb9 --- daemon/worker.c | 3 +- doc/Changelog | 4 + libunbound/libworker.c | 6 +- services/localzone.c | 90 ++++- services/localzone.h | 13 +- testdata/local_acl_override.rpl | 93 +++++ testdata/local_acl_taglist_action.rpl | 125 +++++++ util/configlexer.c | 167 ++++----- util/configparser.c | 482 +++++++++++++------------- util/configparser.h | 8 +- util/configparser.y | 12 +- 11 files changed, 642 insertions(+), 361 deletions(-) create mode 100644 testdata/local_acl_override.rpl create mode 100644 testdata/local_acl_taglist_action.rpl diff --git a/daemon/worker.c b/daemon/worker.c index fb4f73c6d..89c074f51 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -944,7 +944,8 @@ worker_handle_request(struct comm_point* c, void* arg, int error, } if(local_zones_answer(worker->daemon->local_zones, &qinfo, &edns, c->buffer, worker->scratchpad, repinfo, - acladdr->taglist, acladdr->taglen)) { + acladdr->taglist, acladdr->taglen, acladdr->tag_actions, + acladdr->tag_actions_size)) { regional_free_all(worker->scratchpad); if(sldns_buffer_limit(c->buffer) == 0) { comm_point_drop_reply(repinfo); diff --git a/doc/Changelog b/doc/Changelog index 7ca856a83..65f5ef608 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +24 June 2016: Ralph + - Possibility to specify local-zone type for an acl/tag pair + - Possibility to specify (override) local-zone type for a source address + block 16 June 2016: Ralph - Decrease dp attempts at each QNAME minimisation iteration diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 899210978..7321072af 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -608,7 +608,7 @@ int libworker_fg(struct ub_ctx* ctx, struct ctx_query* q) sldns_buffer_write_u16_at(w->back->udp_buff, 0, qid); sldns_buffer_write_u16_at(w->back->udp_buff, 2, qflags); if(local_zones_answer(ctx->local_zones, &qinfo, &edns, - w->back->udp_buff, w->env->scratch, NULL, NULL, 0)) { + w->back->udp_buff, w->env->scratch, NULL, NULL, 0, NULL, 0)) { regional_free_all(w->env->scratch); libworker_fillup_fg(q, LDNS_RCODE_NOERROR, w->back->udp_buff, sec_status_insecure, NULL); @@ -678,7 +678,7 @@ int libworker_attach_mesh(struct ub_ctx* ctx, struct ctx_query* q, sldns_buffer_write_u16_at(w->back->udp_buff, 0, qid); sldns_buffer_write_u16_at(w->back->udp_buff, 2, qflags); if(local_zones_answer(ctx->local_zones, &qinfo, &edns, - w->back->udp_buff, w->env->scratch, NULL, NULL, 0)) { + w->back->udp_buff, w->env->scratch, NULL, NULL, 0, NULL, 0)) { regional_free_all(w->env->scratch); free(qinfo.qname); libworker_event_done_cb(q, LDNS_RCODE_NOERROR, @@ -798,7 +798,7 @@ handle_newq(struct libworker* w, uint8_t* buf, uint32_t len) sldns_buffer_write_u16_at(w->back->udp_buff, 0, qid); sldns_buffer_write_u16_at(w->back->udp_buff, 2, qflags); if(local_zones_answer(w->ctx->local_zones, &qinfo, &edns, - w->back->udp_buff, w->env->scratch, NULL, NULL, 0)) { + w->back->udp_buff, w->env->scratch, NULL, NULL, 0, NULL, 0)) { regional_free_all(w->env->scratch); q->msg_security = sec_status_insecure; add_bg_result(w, q, w->back->udp_buff, UB_NOERROR, NULL); diff --git a/services/localzone.c b/services/localzone.c index 6875b78f9..b877b7e39 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1120,6 +1120,18 @@ void local_zones_print(struct local_zones* zones) log_nametypeclass(0, "inform_deny zone", z->name, 0, z->dclass); break; + case local_zone_always_transparent: + log_nametypeclass(0, "always_transparent zone", + z->name, 0, z->dclass); + break; + case local_zone_always_refuse: + log_nametypeclass(0, "always_refuse zone", + z->name, 0, z->dclass); + break; + case local_zone_always_nxdomain: + log_nametypeclass(0, "always_nxdomain zone", + z->name, 0, z->dclass); + break; default: log_nametypeclass(0, "badtyped zone", z->name, 0, z->dclass); @@ -1169,7 +1181,7 @@ local_encode(struct query_info* qinfo, struct edns_data* edns, static int local_data_answer(struct local_zone* z, struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, struct regional* temp, - int labs, struct local_data** ldp) + int labs, struct local_data** ldp, enum localzone_type lz_type) { struct local_data key; struct local_data* ld; @@ -1178,7 +1190,7 @@ local_data_answer(struct local_zone* z, struct query_info* qinfo, key.name = qinfo->qname; key.namelen = qinfo->qname_len; key.namelabs = labs; - if(z->type == local_zone_redirect) { + if(lz_type == local_zone_redirect) { key.name = z->name; key.namelen = z->namelen; key.namelabs = z->namelabs; @@ -1191,7 +1203,7 @@ local_data_answer(struct local_zone* z, struct query_info* qinfo, lr = local_data_find_type(ld, qinfo->qtype); if(!lr) return 0; - if(z->type == local_zone_redirect) { + if(lz_type == local_zone_redirect) { /* convert rrset name to query name; like a wildcard */ struct ub_packed_rrset_key r = *lr->rrset; r.rk.dname = qinfo->qname; @@ -1211,25 +1223,28 @@ local_data_answer(struct local_zone* z, struct query_info* qinfo, * @param buf: buffer for answer. * @param temp: temp region for encoding * @param ld: local data, if NULL, no such name exists in localdata. + * @param lz_type: type of the local zone * @return 1 if a reply is to be sent, 0 if not. */ static int lz_zone_answer(struct local_zone* z, struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, struct regional* temp, - struct local_data* ld) + struct local_data* ld, enum localzone_type lz_type) { - if(z->type == local_zone_deny || z->type == local_zone_inform_deny) { + if(lz_type == local_zone_deny || lz_type == local_zone_inform_deny) { /** no reply at all, signal caller by clearing buffer. */ sldns_buffer_clear(buf); sldns_buffer_flip(buf); return 1; - } else if(z->type == local_zone_refuse) { + } else if(lz_type == local_zone_refuse + || lz_type == local_zone_always_refuse) { error_encode(buf, (LDNS_RCODE_REFUSED|BIT_AA), qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); return 1; - } else if(z->type == local_zone_static || - z->type == local_zone_redirect) { + } else if(lz_type == local_zone_static || + lz_type == local_zone_redirect || + lz_type == local_zone_always_nxdomain) { /* for static, reply nodata or nxdomain * for redirect, reply nodata */ /* no additional section processing, @@ -1245,11 +1260,12 @@ lz_zone_answer(struct local_zone* z, struct query_info* qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); return 1; - } else if(z->type == local_zone_typetransparent) { + } else if(lz_type == local_zone_typetransparent + || lz_type == local_zone_always_transparent) { /* no NODATA or NXDOMAINS for this zone type */ return 0; } - /* else z->type == local_zone_transparent */ + /* else lz_type == local_zone_transparent */ /* if the zone is transparent and the name exists, but the type * does not, then we should make this noerror/nodata */ @@ -1283,17 +1299,47 @@ lz_inform_print(struct local_zone* z, struct query_info* qinfo, log_nametypeclass(0, txt, qinfo->qname, qinfo->qtype, qinfo->qclass); } +enum localzone_type +lz_type(uint8_t *taglist, size_t taglen, uint8_t *taglist2, size_t taglen2, + uint8_t *tagactions, size_t tagactionssize, enum localzone_type lzt, + struct comm_reply* repinfo, struct rbtree_t* override_tree) +{ + size_t i, j; + uint8_t tagmatch; + struct local_zone_override* lzo; + if(repinfo && override_tree) { + lzo = (struct local_zone_override*)addr_tree_lookup( + override_tree, &repinfo->addr, repinfo->addrlen); + if(lzo && lzo->type) + return lzo->type; + } + if(!taglist || !taglist2 || !tagactions) + return lzt; + for(i=0; i0; j++) { + if((tagmatch & 0x1) && i*8+j < tagactionssize + && tagactions[i*8+j] != 0) + return (enum localzone_type)tagactions[i*8+j]; + tagmatch >>= 1; + } + } + return lzt; +} + int local_zones_answer(struct local_zones* zones, struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, struct regional* temp, - struct comm_reply* repinfo, uint8_t* taglist, size_t taglen) + struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, + uint8_t* tagactions, size_t tagactionssize) { /* see if query is covered by a zone, * if so: - try to match (exact) local data * - look at zone type for negative response. */ int labs = dname_count_labels(qinfo->qname); - struct local_data* ld; + struct local_data* ld = NULL;; struct local_zone* z; + enum localzone_type lzt; int r; lock_rw_rdlock(&zones->lock); z = local_zones_tags_lookup(zones, qinfo->qname, @@ -1305,15 +1351,20 @@ local_zones_answer(struct local_zones* zones, struct query_info* qinfo, lock_rw_rdlock(&z->lock); lock_rw_unlock(&zones->lock); - if((z->type == local_zone_inform || z->type == local_zone_inform_deny) + lzt = lz_type(taglist, taglen, z->taglist, z->taglen, tagactions, + tagactionssize, z->type, repinfo, z->override_tree); + + if((lzt == local_zone_inform || lzt == local_zone_inform_deny) && repinfo) lz_inform_print(z, qinfo, repinfo); - if(local_data_answer(z, qinfo, edns, buf, temp, labs, &ld)) { + if(lzt != local_zone_always_refuse && lzt != local_zone_always_transparent + && lzt != local_zone_always_nxdomain + && local_data_answer(z, qinfo, edns, buf, temp, labs, &ld, lzt)) { lock_rw_unlock(&z->lock); return 1; } - r = lz_zone_answer(z, qinfo, edns, buf, temp, ld); + r = lz_zone_answer(z, qinfo, edns, buf, temp, ld, lzt); lock_rw_unlock(&z->lock); return r; } @@ -1330,6 +1381,9 @@ const char* local_zone_type2str(enum localzone_type t) case local_zone_nodefault: return "nodefault"; case local_zone_inform: return "inform"; case local_zone_inform_deny: return "inform_deny"; + case local_zone_always_transparent: return "always_transparent"; + case local_zone_always_refuse: return "always_refuse"; + case local_zone_always_nxdomain: return "always_nxdomain"; } return "badtyped"; } @@ -1352,6 +1406,12 @@ int local_zone_str2type(const char* type, enum localzone_type* t) *t = local_zone_inform; else if(strcmp(type, "inform_deny") == 0) *t = local_zone_inform_deny; + else if(strcmp(type, "always_transparent") == 0) + *t = local_zone_always_transparent; + else if(strcmp(type, "always_refuse") == 0) + *t = local_zone_always_refuse; + else if(strcmp(type, "always_nxdomain") == 0) + *t = local_zone_always_nxdomain; else return 0; return 1; } diff --git a/services/localzone.h b/services/localzone.h index 1d1f35141..ead231d62 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -76,7 +76,13 @@ enum localzone_type { /** log client address, but no block (transparent) */ local_zone_inform, /** log client address, and block (drop) */ - local_zone_inform_deny + local_zone_inform_deny, + /** resolve normally, even when there is local data */ + local_zone_always_transparent, + /** answer with error, even when there is local data */ + local_zone_always_refuse, + /** answer with nxdomain, even when there is local data */ + local_zone_always_nxdomain }; /** @@ -264,13 +270,16 @@ void local_zones_print(struct local_zones* zones); * @param repinfo: source address for checks. may be NULL. * @param taglist: taglist for checks. May be NULL. * @param taglen: length of the taglist. + * @param tagactions: local zone actions for tags. May be NULL. + * @param tagactionssize: length of the tagactions. * @return true if answer is in buffer. false if query is not answered * by authority data. If the reply should be dropped altogether, the return * value is true, but the buffer is cleared (empty). */ int local_zones_answer(struct local_zones* zones, struct query_info* qinfo, struct edns_data* edns, struct sldns_buffer* buf, struct regional* temp, - struct comm_reply* repinfo, uint8_t* taglist, size_t taglen); + struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, + uint8_t* tagactions, size_t tagactionssize); /** * Parse the string into localzone type. diff --git a/testdata/local_acl_override.rpl b/testdata/local_acl_override.rpl new file mode 100644 index 000000000..b72afe6b0 --- /dev/null +++ b/testdata/local_acl_override.rpl @@ -0,0 +1,93 @@ +; config options +server: + local-zone: "1.example." transparent + local-zone: "2.example." transparent + access-control: 10.10.10.0/24 allow + + local-zone-override: "1.example." 10.10.10.20/32 refuse + local-zone-override: "2.example." 10.10.10.30/32 refuse + local-zone-override: "2.example." 10.10.10.40/32 always_nxdomain + +forward-zone: + name: "example." + forward-addr: 1.2.3.4 + +CONFIG_END +SCENARIO_BEGIN Test local data queries + +RANGE_BEGIN 0 100 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +1.example. IN TXT +SECTION ANSWER +1.example. IN TXT "data 1" +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +2.example. IN TXT +SECTION ANSWER +2.example. IN TXT "data 2" +ENTRY_END +RANGE_END + +STEP 1 QUERY ADDRESS 10.10.10.10 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +1.example. IN TXT +ENTRY_END +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +1.example. IN TXT +SECTION ANSWER +1.example. IN TXT "data 1" +ENTRY_END + +STEP 3 QUERY ADDRESS 10.10.10.20 +ENTRY_BEGIN +SECTION QUESTION +1.example. IN TXT +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA REFUSED +SECTION QUESTION +1.example. IN TXT +ENTRY_END + +STEP 5 QUERY ADDRESS 10.10.10.30 +ENTRY_BEGIN +SECTION QUESTION +2.example. IN TXT +ENTRY_END +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA REFUSED +SECTION QUESTION +2.example. IN TXT +ENTRY_END + +STEP 7 QUERY ADDRESS 10.10.10.40 +ENTRY_BEGIN +SECTION QUESTION +2.example. IN TXT +ENTRY_END +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NXDOMAIN +SECTION QUESTION +2.example. IN TXT +ENTRY_END +SCENARIO_END diff --git a/testdata/local_acl_taglist_action.rpl b/testdata/local_acl_taglist_action.rpl new file mode 100644 index 000000000..77b3ac31b --- /dev/null +++ b/testdata/local_acl_taglist_action.rpl @@ -0,0 +1,125 @@ +; config options +server: + define-tag: "tag1 tag2 tag3" + local-zone: "example." static + local-data: 'example. IN TXT "data 0"' + + local-zone-tag: "example." "tag1 tag2 tag3" + + access-control: 10.10.10.0/24 allow + access-control-tag: 10.10.10.10/32 "tag1" + access-control-tag: 10.10.10.20/32 "tag2 tag3" + access-control-tag: 10.10.10.30/32 "tag2 tag3" + access-control-tag: 10.10.10.40/32 "tag3" + access-control-tag: 10.10.10.50/32 "tag3" + + access-control-tag-action: 10.10.10.10/32 tag1 always_refuse + access-control-tag-action: 10.10.10.20/32 tag2 always_nxdomain + access-control-tag-action: 10.10.10.30/32 tag3 always_refuse + access-control-tag-action: 10.10.10.50/32 tag3 always_transparent + +forward-zone: + name: "example." + forward-addr: 1.2.3.4 + +CONFIG_END +SCENARIO_BEGIN Test local data queries + +RANGE_BEGIN 0 100 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN TXT +SECTION ANSWER +example. IN TXT "data 1" +ENTRY_END +RANGE_END + +STEP 1 QUERY ADDRESS 10.10.10.10 +ENTRY_BEGIN +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA REFUSED +SECTION QUESTION +example. IN TXT +ENTRY_END + +STEP 3 QUERY ADDRESS 10.10.10.20 +ENTRY_BEGIN +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NXDOMAIN +SECTION QUESTION +example. IN TXT +ENTRY_END + +STEP 5 QUERY ADDRESS 10.10.10.30 +ENTRY_BEGIN +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA REFUSED +SECTION QUESTION +example. IN TXT +ENTRY_END + +STEP 7 QUERY ADDRESS 10.10.10.40 +ENTRY_BEGIN +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +example. IN TXT +SECTION ANSWER +example. IN TXT "data 0" +ENTRY_END + +STEP 9 QUERY ADDRESS 10.10.10.50 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +example. IN TXT +SECTION ANSWER +example. IN TXT "data 1" +ENTRY_END + +STEP 11 QUERY ADDRESS 10.10.10.60 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +example. IN TXT +SECTION ANSWER +example. IN TXT "data 1" +ENTRY_END +SCENARIO_END diff --git a/util/configlexer.c b/util/configlexer.c index bef608070..d109454a8 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -9,8 +9,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 0 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -163,12 +163,7 @@ typedef unsigned int flex_uint32_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern yy_size_t yyleng; +extern int yyleng; extern FILE *yyin, *yyout; @@ -177,14 +172,13 @@ extern FILE *yyin, *yyout; #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ - yy_size_t yyless_macro_arg = (n); \ + int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ @@ -195,6 +189,11 @@ extern FILE *yyin, *yyout; #define unput(c) yyunput( c, (yytext_ptr) ) +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -212,7 +211,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -282,8 +281,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t yyleng; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; @@ -311,7 +310,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); @@ -354,17 +353,11 @@ extern int yylineno; int yylineno = 1; extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif #define yytext_ptr yytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); -#if defined(__GNUC__) && __GNUC__ >= 3 -__attribute__((__noreturn__)) -#endif static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the @@ -597,7 +590,7 @@ static yyconst flex_int16_t yy_accept[1874] = 155, 159, 0 } ; -static yyconst YY_CHAR yy_ec[256] = +static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, @@ -629,7 +622,7 @@ static yyconst YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst YY_CHAR yy_meta[40] = +static yyconst flex_int32_t yy_meta[40] = { 0, 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, @@ -637,7 +630,7 @@ static yyconst YY_CHAR yy_meta[40] = 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_uint16_t yy_base[1888] = +static yyconst flex_int16_t yy_base[1888] = { 0, 0, 0, 37, 40, 44, 51, 63, 75, 56, 68, 87, 108, 2327, 2209, 50, 3703, 3703, 3703, 129, 94, @@ -1059,7 +1052,7 @@ static yyconst flex_int16_t yy_def[1888] = 1873, 1873, 1873, 1873, 1873, 1873, 1873 } ; -static yyconst flex_uint16_t yy_nxt[3743] = +static yyconst flex_int16_t yy_nxt[3743] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 18, 20, 21, 14, 22, 23, 24, 25, 14, @@ -2093,7 +2086,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 2095 "" +#line 2088 "" #define INITIAL 0 #define quotedstring 1 @@ -2131,19 +2124,19 @@ void yyset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyget_in (void ); -void yyset_in (FILE * _in_str ); +void yyset_in (FILE * in_str ); FILE *yyget_out (void ); -void yyset_out (FILE * _out_str ); +void yyset_out (FILE * out_str ); -yy_size_t yyget_leng (void ); +int yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); -void yyset_lineno (int _line_number ); +void yyset_lineno (int line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -2157,10 +2150,6 @@ extern int yywrap (void ); #endif #endif -#ifndef YY_NO_UNPUT - -#endif - #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif @@ -2273,7 +2262,7 @@ extern int yylex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; +#define YY_BREAK break; #endif #define YY_RULE_SETUP \ @@ -2283,10 +2272,14 @@ extern int yylex (void); */ YY_DECL { - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; +#line 201 "./util/configlexer.lex" + +#line 2280 "" + if ( !(yy_init) ) { (yy_init) = 1; @@ -2313,12 +2306,7 @@ YY_DECL yy_load_buffer_state( ); } - { -#line 201 "./util/configlexer.lex" - -#line 2318 "" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + while ( 1 ) /* loops until end-of-file is reached */ { (yy_more_len) = 0; if ( (yy_more_flag) ) @@ -2340,7 +2328,7 @@ YY_DECL yy_match: do { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -3413,7 +3401,7 @@ YY_RULE_SETUP #line 473 "./util/configlexer.lex" ECHO; YY_BREAK -#line 3415 "" +#line 3403 "" case YY_END_OF_BUFFER: { @@ -3542,7 +3530,6 @@ ECHO; "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -3554,9 +3541,9 @@ ECHO; */ static int yy_get_next_buffer (void) { - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - yy_size_t number_to_move, i; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -3585,7 +3572,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -3598,21 +3585,21 @@ static int yy_get_next_buffer (void) else { - yy_size_t num_to_read = + int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - yy_size_t new_size = b->yy_buf_size * 2; + int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -3643,7 +3630,7 @@ static int yy_get_next_buffer (void) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); + (yy_n_chars), (size_t) num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } @@ -3688,14 +3675,14 @@ static int yy_get_next_buffer (void) static yy_state_type yy_get_previous_state (void) { - yy_state_type yy_current_state; - char *yy_cp; + register yy_state_type yy_current_state; + register char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -3720,10 +3707,10 @@ static int yy_get_next_buffer (void) */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { - int yy_is_jam; - char *yy_cp = (yy_c_buf_p); + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); - YY_CHAR yy_c = 1; + register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -3738,13 +3725,9 @@ static int yy_get_next_buffer (void) yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 1873); - return yy_is_jam ? 0 : yy_current_state; + return yy_is_jam ? 0 : yy_current_state; } -#ifndef YY_NO_UNPUT - -#endif - #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) @@ -3769,7 +3752,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -3894,7 +3877,7 @@ static void yy_load_buffer_state (void) if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - b->yy_buf_size = (yy_size_t)size; + b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. @@ -3929,6 +3912,10 @@ static void yy_load_buffer_state (void) yyfree((void *) b ); } +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. @@ -4041,7 +4028,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - yy_size_t num_to_alloc; + int num_to_alloc; if (!(yy_buffer_stack)) { @@ -4049,7 +4036,7 @@ static void yyensure_buffer_stack (void) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; // After all that talk, this was set to 1 anyways... + num_to_alloc = 1; (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); @@ -4066,7 +4053,7 @@ static void yyensure_buffer_stack (void) if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; + int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc @@ -4138,12 +4125,12 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - yy_size_t i; + int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -4174,7 +4161,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len static void yy_fatal_error (yyconst char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -4185,7 +4172,7 @@ static void yy_fatal_error (yyconst char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - yy_size_t yyless_macro_arg = (n); \ + int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -4225,7 +4212,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -yy_size_t yyget_leng (void) +int yyget_leng (void) { return yyleng; } @@ -4240,29 +4227,29 @@ char *yyget_text (void) } /** Set the current line number. - * @param _line_number line number + * @param line_number * */ -void yyset_lineno (int _line_number ) +void yyset_lineno (int line_number ) { - yylineno = _line_number; + yylineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param _in_str A readable stream. + * @param in_str A readable stream. * * @see yy_switch_to_buffer */ -void yyset_in (FILE * _in_str ) +void yyset_in (FILE * in_str ) { - yyin = _in_str ; + yyin = in_str ; } -void yyset_out (FILE * _out_str ) +void yyset_out (FILE * out_str ) { - yyout = _out_str ; + yyout = out_str ; } int yyget_debug (void) @@ -4270,9 +4257,9 @@ int yyget_debug (void) return yy_flex_debug; } -void yyset_debug (int _bdebug ) +void yyset_debug (int bdebug ) { - yy_flex_debug = _bdebug ; + yy_flex_debug = bdebug ; } static int yy_init_globals (void) @@ -4332,8 +4319,7 @@ int yylex_destroy (void) #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - - int i; + register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } @@ -4342,7 +4328,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { - int n; + register int n; for ( n = 0; s[n]; ++n ) ; @@ -4352,12 +4338,11 @@ static int yy_flex_strlen (yyconst char * s ) void *yyalloc (yy_size_t size ) { - return (void *) malloc( size ); + return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size ) { - /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -4370,7 +4355,7 @@ void *yyrealloc (void * ptr, yy_size_t size ) void yyfree (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" diff --git a/util/configparser.c b/util/configparser.c index 124d49d94..04efaf78e 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "3.0.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -472,7 +472,7 @@ extern int yydebug; /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - +typedef union YYSTYPE YYSTYPE; union YYSTYPE { #line 64 "./util/configparser.y" /* yacc.c:355 */ @@ -481,8 +481,6 @@ union YYSTYPE #line 483 "util/configparser.c" /* yacc.c:355 */ }; - -typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif @@ -496,7 +494,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 500 "util/configparser.c" /* yacc.c:358 */ +#line 498 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -836,15 +834,15 @@ static const yytype_uint16 yyrline[] = 925, 935, 945, 955, 962, 969, 976, 985, 994, 1003, 1010, 1020, 1037, 1044, 1062, 1075, 1088, 1097, 1106, 1115, 1124, 1134, 1144, 1153, 1162, 1169, 1178, 1187, 1196, 1205, - 1213, 1226, 1234, 1258, 1265, 1280, 1290, 1300, 1307, 1314, - 1323, 1337, 1356, 1375, 1387, 1399, 1411, 1420, 1428, 1441, - 1454, 1467, 1476, 1486, 1496, 1503, 1510, 1519, 1529, 1539, - 1546, 1553, 1562, 1567, 1568, 1569, 1569, 1569, 1570, 1570, - 1570, 1571, 1571, 1573, 1583, 1592, 1599, 1609, 1616, 1623, - 1630, 1637, 1642, 1643, 1644, 1644, 1645, 1645, 1646, 1646, - 1647, 1648, 1649, 1650, 1651, 1652, 1654, 1662, 1669, 1677, - 1685, 1692, 1699, 1708, 1717, 1726, 1735, 1744, 1753, 1758, - 1759, 1760, 1762, 1768 + 1213, 1226, 1234, 1262, 1269, 1284, 1294, 1304, 1311, 1318, + 1327, 1341, 1360, 1379, 1391, 1403, 1415, 1424, 1432, 1445, + 1458, 1471, 1480, 1490, 1500, 1507, 1514, 1523, 1533, 1543, + 1550, 1557, 1566, 1571, 1572, 1573, 1573, 1573, 1574, 1574, + 1574, 1575, 1575, 1577, 1587, 1596, 1603, 1613, 1620, 1627, + 1634, 1641, 1646, 1647, 1648, 1648, 1649, 1649, 1650, 1650, + 1651, 1652, 1653, 1654, 1655, 1656, 1658, 1666, 1673, 1681, + 1689, 1696, 1703, 1712, 1721, 1730, 1739, 1748, 1757, 1762, + 1763, 1764, 1766, 1772 }; #endif @@ -2084,7 +2082,7 @@ yyreduce: { OUTYY(("\nP(server:)\n")); } -#line 2088 "util/configparser.c" /* yacc.c:1646 */ +#line 2086 "util/configparser.c" /* yacc.c:1646 */ break; case 141: @@ -2099,7 +2097,7 @@ yyreduce: } else yyerror("out of memory"); } -#line 2103 "util/configparser.c" /* yacc.c:1646 */ +#line 2101 "util/configparser.c" /* yacc.c:1646 */ break; case 149: @@ -2114,7 +2112,7 @@ yyreduce: } else yyerror("out of memory"); } -#line 2118 "util/configparser.c" /* yacc.c:1646 */ +#line 2116 "util/configparser.c" /* yacc.c:1646 */ break; case 156: @@ -2126,7 +2124,7 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2130 "util/configparser.c" /* yacc.c:1646 */ +#line 2128 "util/configparser.c" /* yacc.c:1646 */ break; case 157: @@ -2138,7 +2136,7 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2142 "util/configparser.c" /* yacc.c:1646 */ +#line 2140 "util/configparser.c" /* yacc.c:1646 */ break; case 158: @@ -2152,7 +2150,7 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2156 "util/configparser.c" /* yacc.c:1646 */ +#line 2154 "util/configparser.c" /* yacc.c:1646 */ break; case 159: @@ -2164,7 +2162,7 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2168 "util/configparser.c" /* yacc.c:1646 */ +#line 2166 "util/configparser.c" /* yacc.c:1646 */ break; case 160: @@ -2176,7 +2174,7 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2180 "util/configparser.c" /* yacc.c:1646 */ +#line 2178 "util/configparser.c" /* yacc.c:1646 */ break; case 161: @@ -2188,7 +2186,7 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2192 "util/configparser.c" /* yacc.c:1646 */ +#line 2190 "util/configparser.c" /* yacc.c:1646 */ break; case 162: @@ -2204,7 +2202,7 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 2208 "util/configparser.c" /* yacc.c:1646 */ +#line 2206 "util/configparser.c" /* yacc.c:1646 */ break; case 163: @@ -2222,7 +2220,7 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 2226 "util/configparser.c" /* yacc.c:1646 */ +#line 2224 "util/configparser.c" /* yacc.c:1646 */ break; case 164: @@ -2234,7 +2232,7 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2238 "util/configparser.c" /* yacc.c:1646 */ +#line 2236 "util/configparser.c" /* yacc.c:1646 */ break; case 165: @@ -2246,7 +2244,7 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2250 "util/configparser.c" /* yacc.c:1646 */ +#line 2248 "util/configparser.c" /* yacc.c:1646 */ break; case 166: @@ -2258,7 +2256,7 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2262 "util/configparser.c" /* yacc.c:1646 */ +#line 2260 "util/configparser.c" /* yacc.c:1646 */ break; case 167: @@ -2270,7 +2268,7 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2274 "util/configparser.c" /* yacc.c:1646 */ +#line 2272 "util/configparser.c" /* yacc.c:1646 */ break; case 168: @@ -2282,7 +2280,7 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2286 "util/configparser.c" /* yacc.c:1646 */ +#line 2284 "util/configparser.c" /* yacc.c:1646 */ break; case 169: @@ -2294,7 +2292,7 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2298 "util/configparser.c" /* yacc.c:1646 */ +#line 2296 "util/configparser.c" /* yacc.c:1646 */ break; case 170: @@ -2306,7 +2304,7 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2310 "util/configparser.c" /* yacc.c:1646 */ +#line 2308 "util/configparser.c" /* yacc.c:1646 */ break; case 171: @@ -2318,7 +2316,7 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2322 "util/configparser.c" /* yacc.c:1646 */ +#line 2320 "util/configparser.c" /* yacc.c:1646 */ break; case 172: @@ -2330,7 +2328,7 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2334 "util/configparser.c" /* yacc.c:1646 */ +#line 2332 "util/configparser.c" /* yacc.c:1646 */ break; case 173: @@ -2342,7 +2340,7 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2346 "util/configparser.c" /* yacc.c:1646 */ +#line 2344 "util/configparser.c" /* yacc.c:1646 */ break; case 174: @@ -2354,7 +2352,7 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2358 "util/configparser.c" /* yacc.c:1646 */ +#line 2356 "util/configparser.c" /* yacc.c:1646 */ break; case 175: @@ -2366,7 +2364,7 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2370 "util/configparser.c" /* yacc.c:1646 */ +#line 2368 "util/configparser.c" /* yacc.c:1646 */ break; case 176: @@ -2378,7 +2376,7 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2382 "util/configparser.c" /* yacc.c:1646 */ +#line 2380 "util/configparser.c" /* yacc.c:1646 */ break; case 177: @@ -2390,7 +2388,7 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2394 "util/configparser.c" /* yacc.c:1646 */ +#line 2392 "util/configparser.c" /* yacc.c:1646 */ break; case 178: @@ -2400,7 +2398,7 @@ yyreduce: free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 2404 "util/configparser.c" /* yacc.c:1646 */ +#line 2402 "util/configparser.c" /* yacc.c:1646 */ break; case 179: @@ -2410,7 +2408,7 @@ yyreduce: free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 2414 "util/configparser.c" /* yacc.c:1646 */ +#line 2412 "util/configparser.c" /* yacc.c:1646 */ break; case 180: @@ -2422,7 +2420,7 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2426 "util/configparser.c" /* yacc.c:1646 */ +#line 2424 "util/configparser.c" /* yacc.c:1646 */ break; case 181: @@ -2434,7 +2432,7 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2438 "util/configparser.c" /* yacc.c:1646 */ +#line 2436 "util/configparser.c" /* yacc.c:1646 */ break; case 182: @@ -2451,7 +2449,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2455 "util/configparser.c" /* yacc.c:1646 */ +#line 2453 "util/configparser.c" /* yacc.c:1646 */ break; case 183: @@ -2463,7 +2461,7 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2467 "util/configparser.c" /* yacc.c:1646 */ +#line 2465 "util/configparser.c" /* yacc.c:1646 */ break; case 184: @@ -2475,7 +2473,7 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2479 "util/configparser.c" /* yacc.c:1646 */ +#line 2477 "util/configparser.c" /* yacc.c:1646 */ break; case 185: @@ -2485,7 +2483,7 @@ yyreduce: free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 2489 "util/configparser.c" /* yacc.c:1646 */ +#line 2487 "util/configparser.c" /* yacc.c:1646 */ break; case 186: @@ -2495,7 +2493,7 @@ yyreduce: free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 2499 "util/configparser.c" /* yacc.c:1646 */ +#line 2497 "util/configparser.c" /* yacc.c:1646 */ break; case 187: @@ -2522,7 +2520,7 @@ yyreduce: d, strerror(errno)); } } -#line 2526 "util/configparser.c" /* yacc.c:1646 */ +#line 2524 "util/configparser.c" /* yacc.c:1646 */ break; case 188: @@ -2533,7 +2531,7 @@ yyreduce: cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 2537 "util/configparser.c" /* yacc.c:1646 */ +#line 2535 "util/configparser.c" /* yacc.c:1646 */ break; case 189: @@ -2543,7 +2541,7 @@ yyreduce: free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 2547 "util/configparser.c" /* yacc.c:1646 */ +#line 2545 "util/configparser.c" /* yacc.c:1646 */ break; case 190: @@ -2553,7 +2551,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2557 "util/configparser.c" /* yacc.c:1646 */ +#line 2555 "util/configparser.c" /* yacc.c:1646 */ break; case 191: @@ -2563,7 +2561,7 @@ yyreduce: free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 2567 "util/configparser.c" /* yacc.c:1646 */ +#line 2565 "util/configparser.c" /* yacc.c:1646 */ break; case 192: @@ -2573,7 +2571,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2577 "util/configparser.c" /* yacc.c:1646 */ +#line 2575 "util/configparser.c" /* yacc.c:1646 */ break; case 193: @@ -2584,7 +2582,7 @@ yyreduce: auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2588 "util/configparser.c" /* yacc.c:1646 */ +#line 2586 "util/configparser.c" /* yacc.c:1646 */ break; case 194: @@ -2595,7 +2593,7 @@ yyreduce: trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2599 "util/configparser.c" /* yacc.c:1646 */ +#line 2597 "util/configparser.c" /* yacc.c:1646 */ break; case 195: @@ -2606,7 +2604,7 @@ yyreduce: trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2610 "util/configparser.c" /* yacc.c:1646 */ +#line 2608 "util/configparser.c" /* yacc.c:1646 */ break; case 196: @@ -2616,7 +2614,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2620 "util/configparser.c" /* yacc.c:1646 */ +#line 2618 "util/configparser.c" /* yacc.c:1646 */ break; case 197: @@ -2626,7 +2624,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2630 "util/configparser.c" /* yacc.c:1646 */ +#line 2628 "util/configparser.c" /* yacc.c:1646 */ break; case 198: @@ -2638,7 +2636,7 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2642 "util/configparser.c" /* yacc.c:1646 */ +#line 2640 "util/configparser.c" /* yacc.c:1646 */ break; case 199: @@ -2650,7 +2648,7 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2654 "util/configparser.c" /* yacc.c:1646 */ +#line 2652 "util/configparser.c" /* yacc.c:1646 */ break; case 200: @@ -2660,7 +2658,7 @@ yyreduce: free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 2664 "util/configparser.c" /* yacc.c:1646 */ +#line 2662 "util/configparser.c" /* yacc.c:1646 */ break; case 201: @@ -2670,7 +2668,7 @@ yyreduce: free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 2674 "util/configparser.c" /* yacc.c:1646 */ +#line 2672 "util/configparser.c" /* yacc.c:1646 */ break; case 202: @@ -2681,7 +2679,7 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 2685 "util/configparser.c" /* yacc.c:1646 */ +#line 2683 "util/configparser.c" /* yacc.c:1646 */ break; case 203: @@ -2692,7 +2690,7 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 2696 "util/configparser.c" /* yacc.c:1646 */ +#line 2694 "util/configparser.c" /* yacc.c:1646 */ break; case 204: @@ -2705,7 +2703,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2709 "util/configparser.c" /* yacc.c:1646 */ +#line 2707 "util/configparser.c" /* yacc.c:1646 */ break; case 205: @@ -2718,7 +2716,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2722 "util/configparser.c" /* yacc.c:1646 */ +#line 2720 "util/configparser.c" /* yacc.c:1646 */ break; case 206: @@ -2731,7 +2729,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2735 "util/configparser.c" /* yacc.c:1646 */ +#line 2733 "util/configparser.c" /* yacc.c:1646 */ break; case 207: @@ -2747,7 +2745,7 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2751 "util/configparser.c" /* yacc.c:1646 */ +#line 2749 "util/configparser.c" /* yacc.c:1646 */ break; case 208: @@ -2761,7 +2759,7 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2765 "util/configparser.c" /* yacc.c:1646 */ +#line 2763 "util/configparser.c" /* yacc.c:1646 */ break; case 209: @@ -2772,7 +2770,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 2776 "util/configparser.c" /* yacc.c:1646 */ +#line 2774 "util/configparser.c" /* yacc.c:1646 */ break; case 210: @@ -2788,7 +2786,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2792 "util/configparser.c" /* yacc.c:1646 */ +#line 2790 "util/configparser.c" /* yacc.c:1646 */ break; case 211: @@ -2800,7 +2798,7 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2804 "util/configparser.c" /* yacc.c:1646 */ +#line 2802 "util/configparser.c" /* yacc.c:1646 */ break; case 212: @@ -2812,7 +2810,7 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2816 "util/configparser.c" /* yacc.c:1646 */ +#line 2814 "util/configparser.c" /* yacc.c:1646 */ break; case 213: @@ -2824,7 +2822,7 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2828 "util/configparser.c" /* yacc.c:1646 */ +#line 2826 "util/configparser.c" /* yacc.c:1646 */ break; case 214: @@ -2837,7 +2835,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2841 "util/configparser.c" /* yacc.c:1646 */ +#line 2839 "util/configparser.c" /* yacc.c:1646 */ break; case 215: @@ -2850,7 +2848,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2854 "util/configparser.c" /* yacc.c:1646 */ +#line 2852 "util/configparser.c" /* yacc.c:1646 */ break; case 216: @@ -2861,7 +2859,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 2865 "util/configparser.c" /* yacc.c:1646 */ +#line 2863 "util/configparser.c" /* yacc.c:1646 */ break; case 217: @@ -2877,7 +2875,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2881 "util/configparser.c" /* yacc.c:1646 */ +#line 2879 "util/configparser.c" /* yacc.c:1646 */ break; case 218: @@ -2889,7 +2887,7 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2893 "util/configparser.c" /* yacc.c:1646 */ +#line 2891 "util/configparser.c" /* yacc.c:1646 */ break; case 219: @@ -2900,7 +2898,7 @@ yyreduce: "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2904 "util/configparser.c" /* yacc.c:1646 */ +#line 2902 "util/configparser.c" /* yacc.c:1646 */ break; case 220: @@ -2912,7 +2910,7 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2916 "util/configparser.c" /* yacc.c:1646 */ +#line 2914 "util/configparser.c" /* yacc.c:1646 */ break; case 221: @@ -2923,7 +2921,7 @@ yyreduce: "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2927 "util/configparser.c" /* yacc.c:1646 */ +#line 2925 "util/configparser.c" /* yacc.c:1646 */ break; case 222: @@ -2939,7 +2937,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2943 "util/configparser.c" /* yacc.c:1646 */ +#line 2941 "util/configparser.c" /* yacc.c:1646 */ break; case 223: @@ -2951,7 +2949,7 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2955 "util/configparser.c" /* yacc.c:1646 */ +#line 2953 "util/configparser.c" /* yacc.c:1646 */ break; case 224: @@ -2961,7 +2959,7 @@ yyreduce: free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 2965 "util/configparser.c" /* yacc.c:1646 */ +#line 2963 "util/configparser.c" /* yacc.c:1646 */ break; case 225: @@ -2974,7 +2972,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2978 "util/configparser.c" /* yacc.c:1646 */ +#line 2976 "util/configparser.c" /* yacc.c:1646 */ break; case 226: @@ -2987,7 +2985,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2991 "util/configparser.c" /* yacc.c:1646 */ +#line 2989 "util/configparser.c" /* yacc.c:1646 */ break; case 227: @@ -3000,7 +2998,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3004 "util/configparser.c" /* yacc.c:1646 */ +#line 3002 "util/configparser.c" /* yacc.c:1646 */ break; case 228: @@ -3013,7 +3011,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3017 "util/configparser.c" /* yacc.c:1646 */ +#line 3015 "util/configparser.c" /* yacc.c:1646 */ break; case 229: @@ -3026,7 +3024,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3030 "util/configparser.c" /* yacc.c:1646 */ +#line 3028 "util/configparser.c" /* yacc.c:1646 */ break; case 230: @@ -3039,7 +3037,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3043 "util/configparser.c" /* yacc.c:1646 */ +#line 3041 "util/configparser.c" /* yacc.c:1646 */ break; case 231: @@ -3052,7 +3050,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3056 "util/configparser.c" /* yacc.c:1646 */ +#line 3054 "util/configparser.c" /* yacc.c:1646 */ break; case 232: @@ -3065,7 +3063,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3069 "util/configparser.c" /* yacc.c:1646 */ +#line 3067 "util/configparser.c" /* yacc.c:1646 */ break; case 233: @@ -3075,7 +3073,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3079 "util/configparser.c" /* yacc.c:1646 */ +#line 3077 "util/configparser.c" /* yacc.c:1646 */ break; case 234: @@ -3085,7 +3083,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3089 "util/configparser.c" /* yacc.c:1646 */ +#line 3087 "util/configparser.c" /* yacc.c:1646 */ break; case 235: @@ -3095,7 +3093,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3099 "util/configparser.c" /* yacc.c:1646 */ +#line 3097 "util/configparser.c" /* yacc.c:1646 */ break; case 236: @@ -3107,7 +3105,7 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3111 "util/configparser.c" /* yacc.c:1646 */ +#line 3109 "util/configparser.c" /* yacc.c:1646 */ break; case 237: @@ -3119,7 +3117,7 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3123 "util/configparser.c" /* yacc.c:1646 */ +#line 3121 "util/configparser.c" /* yacc.c:1646 */ break; case 238: @@ -3131,7 +3129,7 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3135 "util/configparser.c" /* yacc.c:1646 */ +#line 3133 "util/configparser.c" /* yacc.c:1646 */ break; case 239: @@ -3141,7 +3139,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3145 "util/configparser.c" /* yacc.c:1646 */ +#line 3143 "util/configparser.c" /* yacc.c:1646 */ break; case 240: @@ -3154,7 +3152,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3158 "util/configparser.c" /* yacc.c:1646 */ +#line 3156 "util/configparser.c" /* yacc.c:1646 */ break; case 241: @@ -3174,7 +3172,7 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 3178 "util/configparser.c" /* yacc.c:1646 */ +#line 3176 "util/configparser.c" /* yacc.c:1646 */ break; case 242: @@ -3184,7 +3182,7 @@ yyreduce: free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 3188 "util/configparser.c" /* yacc.c:1646 */ +#line 3186 "util/configparser.c" /* yacc.c:1646 */ break; case 243: @@ -3205,7 +3203,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3209 "util/configparser.c" /* yacc.c:1646 */ +#line 3207 "util/configparser.c" /* yacc.c:1646 */ break; case 244: @@ -3221,7 +3219,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3225 "util/configparser.c" /* yacc.c:1646 */ +#line 3223 "util/configparser.c" /* yacc.c:1646 */ break; case 245: @@ -3237,7 +3235,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3241 "util/configparser.c" /* yacc.c:1646 */ +#line 3239 "util/configparser.c" /* yacc.c:1646 */ break; case 246: @@ -3249,7 +3247,7 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3253 "util/configparser.c" /* yacc.c:1646 */ +#line 3251 "util/configparser.c" /* yacc.c:1646 */ break; case 247: @@ -3261,7 +3259,7 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3265 "util/configparser.c" /* yacc.c:1646 */ +#line 3263 "util/configparser.c" /* yacc.c:1646 */ break; case 248: @@ -3273,7 +3271,7 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3277 "util/configparser.c" /* yacc.c:1646 */ +#line 3275 "util/configparser.c" /* yacc.c:1646 */ break; case 249: @@ -3285,7 +3283,7 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3289 "util/configparser.c" /* yacc.c:1646 */ +#line 3287 "util/configparser.c" /* yacc.c:1646 */ break; case 250: @@ -3298,7 +3296,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3302 "util/configparser.c" /* yacc.c:1646 */ +#line 3300 "util/configparser.c" /* yacc.c:1646 */ break; case 251: @@ -3311,7 +3309,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3315 "util/configparser.c" /* yacc.c:1646 */ +#line 3313 "util/configparser.c" /* yacc.c:1646 */ break; case 252: @@ -3323,7 +3321,7 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3327 "util/configparser.c" /* yacc.c:1646 */ +#line 3325 "util/configparser.c" /* yacc.c:1646 */ break; case 253: @@ -3335,7 +3333,7 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3339 "util/configparser.c" /* yacc.c:1646 */ +#line 3337 "util/configparser.c" /* yacc.c:1646 */ break; case 254: @@ -3345,7 +3343,7 @@ yyreduce: free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 3349 "util/configparser.c" /* yacc.c:1646 */ +#line 3347 "util/configparser.c" /* yacc.c:1646 */ break; case 255: @@ -3357,7 +3355,7 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3361 "util/configparser.c" /* yacc.c:1646 */ +#line 3359 "util/configparser.c" /* yacc.c:1646 */ break; case 256: @@ -3369,7 +3367,7 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3373 "util/configparser.c" /* yacc.c:1646 */ +#line 3371 "util/configparser.c" /* yacc.c:1646 */ break; case 257: @@ -3381,7 +3379,7 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3385 "util/configparser.c" /* yacc.c:1646 */ +#line 3383 "util/configparser.c" /* yacc.c:1646 */ break; case 258: @@ -3394,7 +3392,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3398 "util/configparser.c" /* yacc.c:1646 */ +#line 3396 "util/configparser.c" /* yacc.c:1646 */ break; case 259: @@ -3405,7 +3403,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3409 "util/configparser.c" /* yacc.c:1646 */ +#line 3407 "util/configparser.c" /* yacc.c:1646 */ break; case 260: @@ -3421,7 +3419,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3425 "util/configparser.c" /* yacc.c:1646 */ +#line 3423 "util/configparser.c" /* yacc.c:1646 */ break; case 261: @@ -3432,7 +3430,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3436 "util/configparser.c" /* yacc.c:1646 */ +#line 3434 "util/configparser.c" /* yacc.c:1646 */ break; case 262: @@ -3442,12 +3440,16 @@ yyreduce: if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 - && strcmp((yyvsp[0].str), "typetransparent")!=0 && - strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0) + && strcmp((yyvsp[0].str), "typetransparent")!=0 + && strcmp((yyvsp[0].str), "always_transparent")!=0 + && strcmp((yyvsp[0].str), "always_refuse")!=0 + && strcmp((yyvsp[0].str), "always_nxdomain")!=0 + && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0) yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " - "typetransparent, inform, inform_deny " - "or nodefault"); + "typetransparent, inform, inform_deny, " + "always_transparent, always_refuse, " + "always_nxdomain or nodefault"); else if(strcmp((yyvsp[0].str), "nodefault")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg-> local_zones_nodefault, (yyvsp[-1].str))) @@ -3459,21 +3461,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 3463 "util/configparser.c" /* yacc.c:1646 */ +#line 3465 "util/configparser.c" /* yacc.c:1646 */ break; case 263: -#line 1259 "./util/configparser.y" /* yacc.c:1646 */ +#line 1263 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 3473 "util/configparser.c" /* yacc.c:1646 */ +#line 3475 "util/configparser.c" /* yacc.c:1646 */ break; case 264: -#line 1266 "./util/configparser.y" /* yacc.c:1646 */ +#line 1270 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -3487,11 +3489,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 3491 "util/configparser.c" /* yacc.c:1646 */ +#line 3493 "util/configparser.c" /* yacc.c:1646 */ break; case 265: -#line 1281 "./util/configparser.y" /* yacc.c:1646 */ +#line 1285 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3500,11 +3502,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3504 "util/configparser.c" /* yacc.c:1646 */ +#line 3506 "util/configparser.c" /* yacc.c:1646 */ break; case 266: -#line 1291 "./util/configparser.y" /* yacc.c:1646 */ +#line 1295 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3513,31 +3515,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3517 "util/configparser.c" /* yacc.c:1646 */ +#line 3519 "util/configparser.c" /* yacc.c:1646 */ break; case 267: -#line 1301 "./util/configparser.y" /* yacc.c:1646 */ +#line 1305 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3527 "util/configparser.c" /* yacc.c:1646 */ +#line 3529 "util/configparser.c" /* yacc.c:1646 */ break; case 268: -#line 1308 "./util/configparser.y" /* yacc.c:1646 */ +#line 1312 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 3537 "util/configparser.c" /* yacc.c:1646 */ +#line 3539 "util/configparser.c" /* yacc.c:1646 */ break; case 269: -#line 1315 "./util/configparser.y" /* yacc.c:1646 */ +#line 1319 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3545,11 +3547,11 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3549 "util/configparser.c" /* yacc.c:1646 */ +#line 3551 "util/configparser.c" /* yacc.c:1646 */ break; case 270: -#line 1324 "./util/configparser.y" /* yacc.c:1646 */ +#line 1328 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -3562,11 +3564,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3566 "util/configparser.c" /* yacc.c:1646 */ +#line 3568 "util/configparser.c" /* yacc.c:1646 */ break; case 271: -#line 1338 "./util/configparser.y" /* yacc.c:1646 */ +#line 1342 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -3584,11 +3586,11 @@ yyreduce: } } } -#line 3588 "util/configparser.c" /* yacc.c:1646 */ +#line 3590 "util/configparser.c" /* yacc.c:1646 */ break; case 272: -#line 1357 "./util/configparser.y" /* yacc.c:1646 */ +#line 1361 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -3606,11 +3608,11 @@ yyreduce: } } } -#line 3610 "util/configparser.c" /* yacc.c:1646 */ +#line 3612 "util/configparser.c" /* yacc.c:1646 */ break; case 273: -#line 1376 "./util/configparser.y" /* yacc.c:1646 */ +#line 1380 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -3621,11 +3623,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 3625 "util/configparser.c" /* yacc.c:1646 */ +#line 3627 "util/configparser.c" /* yacc.c:1646 */ break; case 274: -#line 1388 "./util/configparser.y" /* yacc.c:1646 */ +#line 1392 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -3636,11 +3638,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 3640 "util/configparser.c" /* yacc.c:1646 */ +#line 3642 "util/configparser.c" /* yacc.c:1646 */ break; case 275: -#line 1400 "./util/configparser.y" /* yacc.c:1646 */ +#line 1404 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -3651,11 +3653,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 3655 "util/configparser.c" /* yacc.c:1646 */ +#line 3657 "util/configparser.c" /* yacc.c:1646 */ break; case 276: -#line 1412 "./util/configparser.y" /* yacc.c:1646 */ +#line 1416 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3663,22 +3665,22 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3667 "util/configparser.c" /* yacc.c:1646 */ +#line 3669 "util/configparser.c" /* yacc.c:1646 */ break; case 277: -#line 1421 "./util/configparser.y" /* yacc.c:1646 */ +#line 1425 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3678 "util/configparser.c" /* yacc.c:1646 */ +#line 3680 "util/configparser.c" /* yacc.c:1646 */ break; case 278: -#line 1429 "./util/configparser.y" /* yacc.c:1646 */ +#line 1433 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3690,11 +3692,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3694 "util/configparser.c" /* yacc.c:1646 */ +#line 3696 "util/configparser.c" /* yacc.c:1646 */ break; case 279: -#line 1442 "./util/configparser.y" /* yacc.c:1646 */ +#line 1446 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -3706,11 +3708,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 3710 "util/configparser.c" /* yacc.c:1646 */ +#line 3712 "util/configparser.c" /* yacc.c:1646 */ break; case 280: -#line 1455 "./util/configparser.y" /* yacc.c:1646 */ +#line 1459 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -3722,11 +3724,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 3726 "util/configparser.c" /* yacc.c:1646 */ +#line 3728 "util/configparser.c" /* yacc.c:1646 */ break; case 281: -#line 1468 "./util/configparser.y" /* yacc.c:1646 */ +#line 1472 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3734,11 +3736,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3738 "util/configparser.c" /* yacc.c:1646 */ +#line 3740 "util/configparser.c" /* yacc.c:1646 */ break; case 282: -#line 1477 "./util/configparser.y" /* yacc.c:1646 */ +#line 1481 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3747,11 +3749,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3751 "util/configparser.c" /* yacc.c:1646 */ +#line 3753 "util/configparser.c" /* yacc.c:1646 */ break; case 283: -#line 1487 "./util/configparser.y" /* yacc.c:1646 */ +#line 1491 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -3760,31 +3762,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 3764 "util/configparser.c" /* yacc.c:1646 */ +#line 3766 "util/configparser.c" /* yacc.c:1646 */ break; case 284: -#line 1497 "./util/configparser.y" /* yacc.c:1646 */ +#line 1501 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3774 "util/configparser.c" /* yacc.c:1646 */ +#line 3776 "util/configparser.c" /* yacc.c:1646 */ break; case 285: -#line 1504 "./util/configparser.y" /* yacc.c:1646 */ +#line 1508 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3784 "util/configparser.c" /* yacc.c:1646 */ +#line 3786 "util/configparser.c" /* yacc.c:1646 */ break; case 286: -#line 1511 "./util/configparser.y" /* yacc.c:1646 */ +#line 1515 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3792,11 +3794,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3796 "util/configparser.c" /* yacc.c:1646 */ +#line 3798 "util/configparser.c" /* yacc.c:1646 */ break; case 287: -#line 1520 "./util/configparser.y" /* yacc.c:1646 */ +#line 1524 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3805,11 +3807,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3809 "util/configparser.c" /* yacc.c:1646 */ +#line 3811 "util/configparser.c" /* yacc.c:1646 */ break; case 288: -#line 1530 "./util/configparser.y" /* yacc.c:1646 */ +#line 1534 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -3818,31 +3820,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 3822 "util/configparser.c" /* yacc.c:1646 */ +#line 3824 "util/configparser.c" /* yacc.c:1646 */ break; case 289: -#line 1540 "./util/configparser.y" /* yacc.c:1646 */ +#line 1544 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3832 "util/configparser.c" /* yacc.c:1646 */ +#line 3834 "util/configparser.c" /* yacc.c:1646 */ break; case 290: -#line 1547 "./util/configparser.y" /* yacc.c:1646 */ +#line 1551 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3842 "util/configparser.c" /* yacc.c:1646 */ +#line 3844 "util/configparser.c" /* yacc.c:1646 */ break; case 291: -#line 1554 "./util/configparser.y" /* yacc.c:1646 */ +#line 1558 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3850,19 +3852,19 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3854 "util/configparser.c" /* yacc.c:1646 */ +#line 3856 "util/configparser.c" /* yacc.c:1646 */ break; case 292: -#line 1563 "./util/configparser.y" /* yacc.c:1646 */ +#line 1567 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 3862 "util/configparser.c" /* yacc.c:1646 */ +#line 3864 "util/configparser.c" /* yacc.c:1646 */ break; case 303: -#line 1574 "./util/configparser.y" /* yacc.c:1646 */ +#line 1578 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3871,11 +3873,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3875 "util/configparser.c" /* yacc.c:1646 */ +#line 3877 "util/configparser.c" /* yacc.c:1646 */ break; case 304: -#line 1584 "./util/configparser.y" /* yacc.c:1646 */ +#line 1588 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3883,21 +3885,21 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3887 "util/configparser.c" /* yacc.c:1646 */ +#line 3889 "util/configparser.c" /* yacc.c:1646 */ break; case 305: -#line 1593 "./util/configparser.y" /* yacc.c:1646 */ +#line 1597 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3897 "util/configparser.c" /* yacc.c:1646 */ +#line 3899 "util/configparser.c" /* yacc.c:1646 */ break; case 306: -#line 1600 "./util/configparser.y" /* yacc.c:1646 */ +#line 1604 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3906,122 +3908,122 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3910 "util/configparser.c" /* yacc.c:1646 */ +#line 3912 "util/configparser.c" /* yacc.c:1646 */ break; case 307: -#line 1610 "./util/configparser.y" /* yacc.c:1646 */ +#line 1614 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 3920 "util/configparser.c" /* yacc.c:1646 */ +#line 3922 "util/configparser.c" /* yacc.c:1646 */ break; case 308: -#line 1617 "./util/configparser.y" /* yacc.c:1646 */ +#line 1621 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 3930 "util/configparser.c" /* yacc.c:1646 */ +#line 3932 "util/configparser.c" /* yacc.c:1646 */ break; case 309: -#line 1624 "./util/configparser.y" /* yacc.c:1646 */ +#line 1628 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 3940 "util/configparser.c" /* yacc.c:1646 */ +#line 3942 "util/configparser.c" /* yacc.c:1646 */ break; case 310: -#line 1631 "./util/configparser.y" /* yacc.c:1646 */ +#line 1635 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 3950 "util/configparser.c" /* yacc.c:1646 */ +#line 3952 "util/configparser.c" /* yacc.c:1646 */ break; case 311: -#line 1638 "./util/configparser.y" /* yacc.c:1646 */ +#line 1642 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 3958 "util/configparser.c" /* yacc.c:1646 */ +#line 3960 "util/configparser.c" /* yacc.c:1646 */ break; case 326: -#line 1655 "./util/configparser.y" /* yacc.c:1646 */ +#line 1659 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); } -#line 3969 "util/configparser.c" /* yacc.c:1646 */ +#line 3971 "util/configparser.c" /* yacc.c:1646 */ break; case 327: -#line 1663 "./util/configparser.y" /* yacc.c:1646 */ +#line 1667 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 3979 "util/configparser.c" /* yacc.c:1646 */ +#line 3981 "util/configparser.c" /* yacc.c:1646 */ break; case 328: -#line 1670 "./util/configparser.y" /* yacc.c:1646 */ +#line 1674 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); } -#line 3990 "util/configparser.c" /* yacc.c:1646 */ +#line 3992 "util/configparser.c" /* yacc.c:1646 */ break; case 329: -#line 1678 "./util/configparser.y" /* yacc.c:1646 */ +#line 1682 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4001 "util/configparser.c" /* yacc.c:1646 */ +#line 4003 "util/configparser.c" /* yacc.c:1646 */ break; case 330: -#line 1686 "./util/configparser.y" /* yacc.c:1646 */ +#line 1690 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 4011 "util/configparser.c" /* yacc.c:1646 */ +#line 4013 "util/configparser.c" /* yacc.c:1646 */ break; case 331: -#line 1693 "./util/configparser.y" /* yacc.c:1646 */ +#line 1697 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 4021 "util/configparser.c" /* yacc.c:1646 */ +#line 4023 "util/configparser.c" /* yacc.c:1646 */ break; case 332: -#line 1700 "./util/configparser.y" /* yacc.c:1646 */ +#line 1704 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4029,11 +4031,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_resolver_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4033 "util/configparser.c" /* yacc.c:1646 */ +#line 4035 "util/configparser.c" /* yacc.c:1646 */ break; case 333: -#line 1709 "./util/configparser.y" /* yacc.c:1646 */ +#line 1713 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4041,11 +4043,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_resolver_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4045 "util/configparser.c" /* yacc.c:1646 */ +#line 4047 "util/configparser.c" /* yacc.c:1646 */ break; case 334: -#line 1718 "./util/configparser.y" /* yacc.c:1646 */ +#line 1722 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4053,11 +4055,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_client_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4057 "util/configparser.c" /* yacc.c:1646 */ +#line 4059 "util/configparser.c" /* yacc.c:1646 */ break; case 335: -#line 1727 "./util/configparser.y" /* yacc.c:1646 */ +#line 1731 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4065,11 +4067,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_client_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4069 "util/configparser.c" /* yacc.c:1646 */ +#line 4071 "util/configparser.c" /* yacc.c:1646 */ break; case 336: -#line 1736 "./util/configparser.y" /* yacc.c:1646 */ +#line 1740 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4077,11 +4079,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_forwarder_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4081 "util/configparser.c" /* yacc.c:1646 */ +#line 4083 "util/configparser.c" /* yacc.c:1646 */ break; case 337: -#line 1745 "./util/configparser.y" /* yacc.c:1646 */ +#line 1749 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4089,29 +4091,29 @@ yyreduce: else cfg_parser->cfg->dnstap_log_forwarder_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4093 "util/configparser.c" /* yacc.c:1646 */ +#line 4095 "util/configparser.c" /* yacc.c:1646 */ break; case 338: -#line 1754 "./util/configparser.y" /* yacc.c:1646 */ +#line 1758 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 4101 "util/configparser.c" /* yacc.c:1646 */ +#line 4103 "util/configparser.c" /* yacc.c:1646 */ break; case 342: -#line 1763 "./util/configparser.y" /* yacc.c:1646 */ +#line 1767 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->python_script); cfg_parser->cfg->python_script = (yyvsp[0].str); } -#line 4111 "util/configparser.c" /* yacc.c:1646 */ +#line 4113 "util/configparser.c" /* yacc.c:1646 */ break; case 343: -#line 1769 "./util/configparser.y" /* yacc.c:1646 */ +#line 1773 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4120,11 +4122,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4124 "util/configparser.c" /* yacc.c:1646 */ +#line 4126 "util/configparser.c" /* yacc.c:1646 */ break; -#line 4128 "util/configparser.c" /* yacc.c:1646 */ +#line 4130 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4352,7 +4354,7 @@ yyreturn: #endif return yyresult; } -#line 1777 "./util/configparser.y" /* yacc.c:1906 */ +#line 1781 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 4417869f1..bbc7a0998 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -393,7 +393,7 @@ extern int yydebug; /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - +typedef union YYSTYPE YYSTYPE; union YYSTYPE { #line 64 "./util/configparser.y" /* yacc.c:1909 */ @@ -402,8 +402,6 @@ union YYSTYPE #line 404 "util/configparser.h" /* yacc.c:1909 */ }; - -typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif diff --git a/util/configparser.y b/util/configparser.y index b9bc97946..224f98408 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -1237,12 +1237,16 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG if(strcmp($3, "static")!=0 && strcmp($3, "deny")!=0 && strcmp($3, "refuse")!=0 && strcmp($3, "redirect")!=0 && strcmp($3, "transparent")!=0 && strcmp($3, "nodefault")!=0 - && strcmp($3, "typetransparent")!=0 && - strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0) + && strcmp($3, "typetransparent")!=0 + && strcmp($3, "always_transparent")!=0 + && strcmp($3, "always_refuse")!=0 + && strcmp($3, "always_nxdomain")!=0 + && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0) yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " - "typetransparent, inform, inform_deny " - "or nodefault"); + "typetransparent, inform, inform_deny, " + "always_transparent, always_refuse, " + "always_nxdomain or nodefault"); else if(strcmp($3, "nodefault")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg-> local_zones_nodefault, $2)) -- 2.47.3