From: Ralph Dolmans Date: Mon, 23 Dec 2019 15:02:43 +0000 (+0100) Subject: Proccess more review feedback X-Git-Tag: release-1.10.0rc1~28^2~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ae4f6a259b8279a720d434585ae42c98a8beb600;p=thirdparty%2Funbound.git Proccess more review feedback --- diff --git a/daemon/stats.c b/daemon/stats.c index 67f89372d..93a85c618 100644 --- a/daemon/stats.c +++ b/daemon/stats.c @@ -271,7 +271,7 @@ server_stats_compile(struct worker* worker, struct ub_stats_info* s, int reset) s->svr.ans_secure += (long long)worker->env.mesh->ans_secure; s->svr.ans_bogus += (long long)worker->env.mesh->ans_bogus; s->svr.ans_rcode_nodata += (long long)worker->env.mesh->ans_nodata; - for(i=0; i<16; i++) + for(i=0; isvr.ans_rcode[i] += (long long)worker->env.mesh->ans_rcode[i]; for(i=0; isvr.rpz_action[i] += (long long)worker->env.mesh->rpz_action[i]; diff --git a/services/authzone.c b/services/authzone.c index b49f7409a..e187ac6bf 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -1176,8 +1176,10 @@ az_insert_rr(struct auth_zone* z, uint8_t* rr, size_t rr_len, return 0; } if(z->rpz) { - rpz_insert_rr(z->rpz, z->namelen, dname, dname_len, rr_type, rr_class, rr_ttl, rdata, - rdatalen, rr, rr_len); + if(!(rpz_insert_rr(z->rpz, z->namelen, dname, dname_len, + rr_type, rr_class, rr_ttl, rdata, rdatalen, rr, + rr_len))) + return 0; } return 1; } diff --git a/services/localzone.c b/services/localzone.c index 33062ea69..bf1043825 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -399,17 +399,18 @@ rrset_insert_rr(struct regional* region, struct packed_rrset_data* pd, int local_rrset_remove_rr(struct packed_rrset_data* pd, size_t index) { + log_assert(pd->count > 0); if(index >= pd->count) { log_warn("Trying to remove RR with out of bound index"); return 0; } - if(index - 1 < pd->count) { + if(index + 1 < pd->count) { /* not removing last element */ size_t nexti = index + 1; size_t num = pd->count - nexti; - memcpy(pd->rr_len+index, pd->rr_len+nexti, sizeof(*pd->rr_len)*num); - memcpy(pd->rr_ttl+index, pd->rr_ttl+nexti, sizeof(*pd->rr_ttl)*num); - memcpy(pd->rr_data+index, pd->rr_data+nexti, sizeof(*pd->rr_data)*num); + memmove(pd->rr_len+index, pd->rr_len+nexti, sizeof(*pd->rr_len)*num); + memmove(pd->rr_ttl+index, pd->rr_ttl+nexti, sizeof(*pd->rr_ttl)*num); + memmove(pd->rr_data+index, pd->rr_data+nexti, sizeof(*pd->rr_data)*num); } pd->count--; return 1; @@ -1354,7 +1355,6 @@ find_tag_datas(struct query_info* qinfo, struct config_strlist* list, return result; } -/** answer local data match */ int local_data_answer(struct local_zone* z, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, diff --git a/services/localzone.h b/services/localzone.h index 10bfab82e..b47c01f57 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -572,6 +572,25 @@ enum respip_action { respip_invalid = local_zone_invalid, }; +/** + * Get local data from local zone and encode answer. + * @param z: local zone to use + * @param env: module env + * @param qinfo: qinfo + * @param edns: edns data, for message encoding + * @param repinfo: reply info, for message encoding + * @param buf: commpoint buffer + * @param temp: scratchpad region + * @param labs: number of labels in qname + * @param ldp: where to store local data + * @param lzt: type of local zone + * @param tag: matching tag index + * @param tag_datas: alc specific tag data list + * @param tag_datas_size: size of tag_datas + * @param tagname: list of names of tags, for logging purpose + * @param num_tags: number of tags + * @return 1 on success + */ int local_data_answer(struct local_zone* z, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, @@ -580,6 +599,20 @@ local_data_answer(struct local_zone* z, struct module_env* env, enum localzone_type lz_type, int tag, struct config_strlist** tag_datas, size_t tag_datas_size, char** tagname, int num_tags); +/** + * Add RR to local zone. + * @param z: local zone to add RR to + * @param nm: dname of RR + * @param nmlen: length of nm + * @param nmlabs: number of labels of nm + * @param rrtype: RR type + * @param rrclass: RR class + * @param ttl: TTL of RR to add + * @param rdata: RDATA of RR to add + * @param rdata_len: length of rdata + * @param rrstr: RR in string format, for logging + * @return: 1 on success + */ int local_zone_enter_rr(struct local_zone* z, uint8_t* nm, size_t nmlen, int nmlabs, uint16_t rrtype, uint16_t rrclass, time_t ttl, diff --git a/services/mesh.c b/services/mesh.c index 5827b93f0..898122df8 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1592,8 +1592,8 @@ mesh_stats_clear(struct mesh_area* mesh) timehist_clear(mesh->histogram); mesh->ans_secure = 0; mesh->ans_bogus = 0; - memset(&mesh->ans_rcode[0], 0, sizeof(size_t)*16); - memset(&mesh->rpz_action[0], 0, sizeof(size_t)*10); + memset(&mesh->ans_rcode[0], 0, sizeof(size_t)*UB_STATS_RCODE_NUM); + memset(&mesh->rpz_action[0], 0, sizeof(size_t)*UB_STATS_RPZ_ACTION_NUM); mesh->ans_nodata = 0; } diff --git a/services/mesh.h b/services/mesh.h index c28176465..9c2b2c97c 100644 --- a/services/mesh.h +++ b/services/mesh.h @@ -52,6 +52,7 @@ #include "util/module.h" #include "services/modstack.h" #include "services/rpz.h" +#include "libunbound/unbound.h" struct sldns_buffer; struct mesh_state; struct mesh_reply; @@ -122,11 +123,11 @@ struct mesh_area { /** (extended stats) bogus replies */ size_t ans_bogus; /** (extended stats) rcodes in replies */ - size_t ans_rcode[16]; + size_t ans_rcode[UB_STATS_RCODE_NUM]; /** (extended stats) rcode nodata in replies */ size_t ans_nodata; /** (extended stats) type of applied RPZ action */ - size_t rpz_action[10]; + size_t rpz_action[UB_STATS_RPZ_ACTION_NUM]; /** backup of query if other operations recurse and need the * network buffers */ diff --git a/services/rpz.c b/services/rpz.c index d36f2268e..92d3b8663 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -51,6 +51,7 @@ #include "util/locks.h" #include "util/regional.h" +/** string for RPZ action enum */ const char* rpz_action_to_string(enum rpz_action a) { @@ -69,6 +70,7 @@ rpz_action_to_string(enum rpz_action a) return "unknown"; } +/** RPZ action enum for config string */ static enum rpz_action rpz_config_to_action(char* a) { @@ -106,19 +108,24 @@ rpz_trigger_to_string(enum rpz_trigger r) /** * Get the label that is just before the root label. * @param dname: dname to work on - * @return: pointer to TLD label + * @param maxdnamelen: maximum length of the dname + * @return: pointer to TLD label, NULL if not found or invalid dname */ static uint8_t* -get_tld_label(uint8_t* dname) +get_tld_label(uint8_t* dname, size_t maxdnamelen) { uint8_t* prevlab = dname; + size_t dnamelen = 0; /* only root label */ if(*dname == 0) return NULL; while(*dname) { - dname = dname+*dname+1; + dnamelen += ((size_t)*dname)+1; + if(dnamelen > maxdnamelen) + return NULL; + dname = dname+((size_t)*dname)+1; if(*dname != 0) prevlab = dname; } @@ -183,7 +190,7 @@ rpz_rr_to_action(uint16_t rr_type, uint8_t* rdatawl, size_t rdatalen) } /* all other TLDs starting with "rpz-" are invalid */ - tldlab = get_tld_label(rdata); + tldlab = get_tld_label(rdata, rdatalen-2); if(tldlab && dname_lab_startswith(tldlab, "rpz-", &endptr)) return RPZ_INVALID_ACTION; @@ -199,13 +206,11 @@ rpz_action_to_localzone_type(enum rpz_action a) case RPZ_NODATA_ACTION: return local_zone_always_nodata; case RPZ_DROP_ACTION: return local_zone_always_deny; case RPZ_PASSTHRU_ACTION: return local_zone_always_transparent; - case RPZ_LOCAL_DATA_ACTION: - case RPZ_CNAME_OVERRIDE_ACTION: - return local_zone_redirect; - case RPZ_INVALID_ACTION: - case RPZ_TCP_ONLY_ACTION: - default: - return local_zone_invalid; + case RPZ_LOCAL_DATA_ACTION: /* fallthrough */ + case RPZ_CNAME_OVERRIDE_ACTION: return local_zone_redirect; + case RPZ_INVALID_ACTION: /* fallthrough */ + case RPZ_TCP_ONLY_ACTION: /* fallthrough */ + default: return local_zone_invalid; } } @@ -217,13 +222,11 @@ rpz_action_to_respip_action(enum rpz_action a) case RPZ_NODATA_ACTION: return respip_always_nodata; case RPZ_DROP_ACTION: return respip_always_deny; case RPZ_PASSTHRU_ACTION: return respip_always_transparent; - case RPZ_LOCAL_DATA_ACTION: - case RPZ_CNAME_OVERRIDE_ACTION: - return respip_redirect; - case RPZ_INVALID_ACTION: - case RPZ_TCP_ONLY_ACTION: - default: - return respip_invalid; + case RPZ_LOCAL_DATA_ACTION: /* fallthrough */ + case RPZ_CNAME_OVERRIDE_ACTION: return respip_redirect; + case RPZ_INVALID_ACTION: /* fallthrough */ + case RPZ_TCP_ONLY_ACTION: /* fallthrough */ + default: return respip_invalid; } } @@ -260,14 +263,19 @@ respip_action_to_rpz_action(enum respip_action a) /** * Get RPZ trigger for dname * @param dname: dname containing RPZ trigger + * @param dname_len: length of the dname * @return: RPZ trigger enum */ static enum rpz_trigger -rpz_dname_to_trigger(uint8_t* dname) +rpz_dname_to_trigger(uint8_t* dname, size_t dname_len) { uint8_t* tldlab; char* endptr; - tldlab = get_tld_label(dname); + + if(dname_valid(dname, dname_len) != dname_len) + return RPZ_INVALID_TRIGGER; + + tldlab = get_tld_label(dname, dname_len); if(!tldlab || !dname_lab_startswith(tldlab, "rpz-", &endptr)) return RPZ_QNAME_TRIGGER; @@ -350,20 +358,21 @@ new_cname_override(struct regional* region, uint8_t* ct, size_t ctlen) return NULL; } pd->rr_len[0] = ctlen+2; - pd->rr_ttl[0] = 3600; /* TODO, what should this be? */ + pd->rr_ttl[0] = 3600; pd->rr_data[0] = regional_alloc_zero(region, 2 /* rdlength */ + ctlen); if(!pd->rr_data[0]) { log_err("out of memory"); return NULL; } - memcpy(pd->rr_data[0], &rdlength, 2); - memcpy(pd->rr_data[0]+2, ct, ctlen); + memmove(pd->rr_data[0], &rdlength, 2); + memmove(pd->rr_data[0]+2, ct, ctlen); rrset->entry.data = pd; rrset->rk.type = htons(LDNS_RR_TYPE_CNAME); rrset->rk.rrset_class = htons(LDNS_RR_CLASS_IN); return rrset; } + struct rpz* rpz_create(struct config_auth* p) { @@ -395,7 +404,7 @@ rpz_create(struct config_auth* p) size_t nmlen = sizeof(nm); if(!p->rpz_cname) { - log_err("RPZ override with cname action found, but not " + log_err("RPZ override with cname action found, but no " "rpz-cname-override configured"); goto err; } @@ -411,8 +420,11 @@ rpz_create(struct config_auth* p) } } r->log = p->rpz_log; - if(p->rpz_log_name) - r->log_name = strdup(p->rpz_log_name); + if(p->rpz_log_name) { + if(!(r->log_name = strdup(p->rpz_log_name))) + log_err("malloc failure on RPZ log_name strdup"); + goto err; + } return r; err: if(r) { @@ -427,16 +439,22 @@ err: return NULL; } -/** Remove RPZ zone name from dname */ +/** + * Remove RPZ zone name from dname + * Copy dname to newdname, without the originlen number of trailing bytes + */ static size_t strip_dname_origin(uint8_t* dname, size_t dnamelen, size_t originlen, - uint8_t* newdname) + uint8_t* newdname, size_t maxnewdnamelen) { size_t newdnamelen; if(dnamelen < originlen) return 0; newdnamelen = dnamelen - originlen; + if(newdnamelen+1 > maxnewdnamelen) + return 0; memmove(newdname, dname, newdnamelen); + memset(newdname+newdnamelen, 0, 1); return newdnamelen + 1; /* + 1 for root label */ } @@ -465,6 +483,13 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, LDNS_RR_CLASS_IN); if(z && a != RPZ_LOCAL_DATA_ACTION) { rrstr = sldns_wire2str_rr(rr, rr_len); + if(!rrstr) { + log_err("malloc error while inserting RPZ qname " + "trigger"); + free(dname); + lock_rw_unlock(&r->local_zones->lock); + return; + } verbose(VERB_ALGO, "RPZ: skipping duplicate record: '%s'", rrstr); free(rrstr); @@ -485,6 +510,13 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, } if(a == RPZ_LOCAL_DATA_ACTION) { rrstr = sldns_wire2str_rr(rr, rr_len); + if(!rrstr) { + log_err("malloc error while inserting RPZ qname " + "trigger"); + free(dname); + lock_rw_unlock(&r->local_zones->lock); + return; + } local_zone_enter_rr(z, dname, dnamelen, dnamelabs, rrtype, rrclass, ttl, rdata, rdata_len, rrstr); free(rrstr); @@ -520,6 +552,11 @@ rpz_insert_response_ip_trigger(struct rpz* r, uint8_t* dname, lock_rw_wrlock(&r->respip_set->lock); rrstr = sldns_wire2str_rr(rr, rr_len); + if(!rrstr) { + log_err("malloc error while inserting RPZ respip trigger"); + lock_rw_unlock(&r->respip_set->lock); + return 0; + } if(!(node=respip_sockaddr_find_or_create(r->respip_set, &addr, addrlen, net, 1, rrstr))) { lock_rw_unlock(&r->respip_set->lock); @@ -540,24 +577,35 @@ rpz_insert_response_ip_trigger(struct rpz* r, uint8_t* dname, return 1; } -void +int rpz_insert_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, size_t dnamelen, uint16_t rr_type, uint16_t rr_class, uint32_t rr_ttl, uint8_t* rdatawl, size_t rdatalen, uint8_t* rr, size_t rr_len) { size_t policydnamelen; /* name is free'd in local_zone delete */ - uint8_t* policydname = calloc(1, LDNS_MAX_DOMAINLEN + 1); enum rpz_trigger t; enum rpz_action a; - + uint8_t* policydname; + + log_assert(dnamelen >= aznamelen); + if(!(policydname = calloc(1, (dnamelen-aznamelen)+1))) + return 0; + a = rpz_rr_to_action(rr_type, rdatawl, rdatalen); if(!(policydnamelen = strip_dname_origin(dname, dnamelen, aznamelen, - policydname))) { + policydname, (dnamelen-aznamelen)+1))) { free(policydname); - return; + return 0; + } + t = rpz_dname_to_trigger(policydname, policydnamelen); + verbose(VERB_OPS, "RPZ: found trigger: %s", + rpz_trigger_to_string(t)); + if(t == RPZ_INVALID_TRIGGER) { + free(policydname); + verbose(VERB_ALGO, "RPZ: skipping invalid trigger"); + return 1; } - t = rpz_dname_to_trigger(policydname); if(t == RPZ_QNAME_TRIGGER) { rpz_insert_qname_trigger(r, policydname, policydnamelen, a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, @@ -574,6 +622,7 @@ rpz_insert_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, verbose(VERB_ALGO, "RPZ: skipping unusupported trigger: %s", rpz_trigger_to_string(t)); } + return 1; } /** @@ -595,10 +644,11 @@ rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, uint8_t wc[LDNS_MAX_DOMAINLEN]; int exact; struct local_zone* z = NULL; - if(wr) + if(wr) { lock_rw_wrlock(&r->local_zones->lock); - else + } else { lock_rw_rdlock(&r->local_zones->lock); + } z = local_zones_find_le(r->local_zones, qname, qname_len, dname_count_labels(qname), LDNS_RR_CLASS_IN, &exact); @@ -606,10 +656,11 @@ rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, lock_rw_unlock(&r->local_zones->lock); return NULL; } - if(wr) + if(wr) { lock_rw_wrlock(&z->lock); - else + } else { lock_rw_rdlock(&z->lock); + } lock_rw_unlock(&r->local_zones->lock); if(exact) @@ -634,20 +685,22 @@ rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, memmove(wc+2, ce, ce_len); lock_rw_unlock(&z->lock); - if(wr) + if(wr) { lock_rw_wrlock(&r->local_zones->lock); - else + } else { lock_rw_rdlock(&r->local_zones->lock); + } z = local_zones_find_le(r->local_zones, wc, ce_len+2, ce_labs+1, qclass, &exact); if(!z || !exact) { lock_rw_unlock(&r->local_zones->lock); return NULL; } - if(wr) + if(wr) { lock_rw_wrlock(&z->lock); - else + } else { lock_rw_rdlock(&z->lock); + } lock_rw_unlock(&r->local_zones->lock); return z; } @@ -815,11 +868,11 @@ rpz_remove_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, size_t dnamelen, return; } if(!(policydnamelen = strip_dname_origin(dname, dnamelen, aznamelen, - policydname))) { + policydname, LDNS_MAX_DOMAINLEN + 1))) { free(policydname); return; } - t = rpz_dname_to_trigger(policydname); + t = rpz_dname_to_trigger(policydname, policydnamelen); if(t == RPZ_QNAME_TRIGGER) { rpz_remove_qname_trigger(r, policydname, policydnamelen, a, rr_type, rr_class, rdatawl, rdatalen); diff --git a/services/rpz.h b/services/rpz.h index 80edad822..676a4f2a8 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -61,6 +61,7 @@ enum rpz_trigger { RPZ_RESPONSE_IP_TRIGGER, /* rpz-ip */ RPZ_NSDNAME_TRIGGER, /* rpz-nsdname */ RPZ_NSIP_TRIGGER, /* rpz-nsip */ + RPZ_INVALID_TRIGGER, /* dname does not contain valid trigger */ }; /** @@ -114,8 +115,9 @@ struct rpz { * @param rdatalen: length if the RR, including the prepended rdata size * @param rr: the complete RR, for logging purposes * @param rr_len: the length of the complete RR + * @return: 0 on error */ -void rpz_insert_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, +int rpz_insert_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, size_t dnamelen, uint16_t rr_type, uint16_t rr_class, uint32_t rr_ttl, uint8_t* rdatawl, size_t rdatalen, uint8_t* rr, size_t rr_len); diff --git a/testdata/rpz_qname.rpl b/testdata/rpz_qname.rpl index 600087ae0..6f93d955a 100644 --- a/testdata/rpz_qname.rpl +++ b/testdata/rpz_qname.rpl @@ -28,7 +28,7 @@ rpz: TEMPFILE_NAME rpz2.example.com TEMPFILE_CONTENTS rpz2.example.com $ORIGIN example.com. -rpz 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( +rpz2 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( 1379078166 28800 7200 604800 7200 ) 3600 IN NS ns1.rpz.example.com. 3600 IN NS ns2.rpz.example.com. diff --git a/util/configparser.c b/util/configparser.c index 6e95077f0..b141a052b 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1051,40 +1051,40 @@ static const yytype_uint16 yyrline[] = 288, 289, 289, 289, 289, 289, 290, 290, 292, 304, 305, 306, 306, 306, 306, 307, 307, 309, 323, 324, 325, 325, 325, 325, 326, 326, 326, 328, 345, 346, - 347, 347, 347, 347, 348, 348, 348, 349, 352, 372, - 389, 397, 407, 415, 432, 433, 434, 434, 434, 434, - 434, 435, 435, 435, 436, 436, 438, 447, 456, 467, - 476, 485, 494, 505, 514, 525, 538, 553, 564, 581, - 598, 615, 632, 647, 662, 675, 690, 699, 708, 717, - 726, 735, 744, 753, 762, 771, 780, 789, 798, 807, - 820, 829, 842, 851, 860, 869, 876, 883, 892, 899, - 908, 916, 923, 930, 938, 947, 956, 970, 979, 988, - 997, 1006, 1015, 1024, 1031, 1038, 1064, 1072, 1079, 1086, - 1093, 1100, 1108, 1116, 1124, 1131, 1142, 1153, 1160, 1169, - 1178, 1187, 1194, 1201, 1209, 1217, 1227, 1237, 1247, 1255, - 1268, 1279, 1287, 1300, 1309, 1318, 1327, 1337, 1347, 1355, - 1368, 1377, 1385, 1394, 1402, 1415, 1424, 1431, 1441, 1451, - 1461, 1471, 1481, 1491, 1501, 1511, 1518, 1525, 1532, 1541, - 1550, 1559, 1568, 1575, 1585, 1605, 1612, 1630, 1643, 1656, - 1665, 1674, 1683, 1692, 1702, 1712, 1723, 1732, 1741, 1750, - 1759, 1772, 1785, 1794, 1801, 1810, 1819, 1828, 1837, 1845, - 1858, 1866, 1907, 1914, 1929, 1939, 1949, 1956, 1963, 1970, - 1979, 1987, 2001, 2022, 2043, 2055, 2067, 2079, 2088, 2109, - 2119, 2128, 2136, 2144, 2157, 2170, 2185, 2200, 2209, 2218, - 2224, 2233, 2242, 2252, 2262, 2275, 2288, 2300, 2314, 2326, - 2340, 2350, 2357, 2364, 2373, 2382, 2392, 2402, 2412, 2419, - 2426, 2435, 2444, 2454, 2464, 2471, 2478, 2485, 2493, 2503, - 2513, 2523, 2533, 2572, 2582, 2590, 2598, 2613, 2622, 2627, - 2628, 2629, 2629, 2629, 2630, 2630, 2630, 2631, 2631, 2633, - 2643, 2652, 2659, 2666, 2673, 2680, 2687, 2694, 2699, 2700, - 2701, 2701, 2702, 2702, 2703, 2703, 2704, 2705, 2706, 2707, - 2708, 2709, 2711, 2720, 2727, 2736, 2745, 2752, 2759, 2769, - 2779, 2789, 2799, 2809, 2819, 2824, 2825, 2826, 2828, 2834, - 2844, 2851, 2860, 2868, 2873, 2874, 2876, 2876, 2876, 2877, - 2877, 2878, 2879, 2880, 2881, 2882, 2884, 2894, 2903, 2910, - 2919, 2926, 2935, 2943, 2956, 2964, 2977, 2982, 2983, 2984, - 2984, 2985, 2985, 2985, 2987, 3002, 3017, 3029, 3044, 3057, - 3068, 3073, 3074, 3075, 3075, 3077, 3092 + 347, 347, 347, 347, 348, 348, 348, 349, 352, 371, + 388, 396, 406, 414, 431, 432, 433, 433, 433, 433, + 433, 434, 434, 434, 435, 435, 437, 446, 455, 466, + 475, 484, 493, 504, 513, 524, 537, 552, 563, 580, + 597, 614, 631, 646, 661, 674, 689, 698, 707, 716, + 725, 734, 743, 752, 761, 770, 779, 788, 797, 806, + 819, 828, 841, 850, 859, 868, 875, 882, 891, 898, + 907, 915, 922, 929, 937, 946, 955, 969, 978, 987, + 996, 1005, 1014, 1023, 1030, 1037, 1063, 1071, 1078, 1085, + 1092, 1099, 1107, 1115, 1123, 1130, 1141, 1152, 1159, 1168, + 1177, 1186, 1193, 1200, 1208, 1216, 1226, 1236, 1246, 1254, + 1267, 1278, 1286, 1299, 1308, 1317, 1326, 1336, 1346, 1354, + 1367, 1376, 1384, 1393, 1401, 1414, 1423, 1430, 1440, 1450, + 1460, 1470, 1480, 1490, 1500, 1510, 1517, 1524, 1531, 1540, + 1549, 1558, 1567, 1574, 1584, 1604, 1611, 1629, 1642, 1655, + 1664, 1673, 1682, 1691, 1701, 1711, 1722, 1731, 1740, 1749, + 1758, 1771, 1784, 1793, 1800, 1809, 1818, 1827, 1836, 1844, + 1857, 1865, 1906, 1913, 1928, 1938, 1948, 1955, 1962, 1969, + 1978, 1986, 2000, 2021, 2042, 2054, 2066, 2078, 2087, 2108, + 2118, 2127, 2135, 2143, 2156, 2169, 2184, 2199, 2208, 2217, + 2223, 2232, 2241, 2251, 2261, 2274, 2287, 2299, 2313, 2325, + 2339, 2349, 2356, 2363, 2372, 2381, 2391, 2401, 2411, 2418, + 2425, 2434, 2443, 2453, 2463, 2470, 2477, 2484, 2492, 2502, + 2512, 2522, 2532, 2571, 2581, 2589, 2597, 2612, 2621, 2626, + 2627, 2628, 2628, 2628, 2629, 2629, 2629, 2630, 2630, 2632, + 2642, 2651, 2658, 2665, 2672, 2679, 2686, 2693, 2698, 2699, + 2700, 2700, 2701, 2701, 2702, 2702, 2703, 2704, 2705, 2706, + 2707, 2708, 2710, 2719, 2726, 2735, 2744, 2751, 2758, 2768, + 2778, 2788, 2798, 2808, 2818, 2823, 2824, 2825, 2827, 2833, + 2843, 2850, 2859, 2867, 2872, 2873, 2875, 2875, 2875, 2876, + 2876, 2877, 2878, 2879, 2880, 2881, 2883, 2893, 2902, 2909, + 2918, 2925, 2934, 2942, 2955, 2963, 2976, 2981, 2982, 2983, + 2983, 2984, 2984, 2984, 2986, 3001, 3016, 3028, 3043, 3056, + 3067, 3072, 3073, 3074, 3074, 3076, 3091 }; #endif @@ -2717,10 +2717,9 @@ yyreduce: case 248: #line 353 "./util/configparser.y" /* yacc.c:1646 */ { - size_t len; uint8_t* bitlist; + size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); - len = 0; bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); free((yyvsp[0].str)); @@ -2733,18 +2732,18 @@ yyreduce: } } -#line 2737 "util/configparser.c" /* yacc.c:1646 */ +#line 2736 "util/configparser.c" /* yacc.c:1646 */ break; case 249: -#line 373 "./util/configparser.y" /* yacc.c:1646 */ +#line 372 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) { yyerror("rpz-action-override action: expected nxdomain, " - "nodata, passthru, drop cname or disabled"); + "nodata, passthru, drop, cname or disabled"); free((yyvsp[0].str)); cfg_parser->cfg->auths->rpz_action_override = NULL; } @@ -2752,21 +2751,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2756 "util/configparser.c" /* yacc.c:1646 */ +#line 2755 "util/configparser.c" /* yacc.c:1646 */ break; case 250: -#line 390 "./util/configparser.y" /* yacc.c:1646 */ +#line 389 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2766 "util/configparser.c" /* yacc.c:1646 */ +#line 2765 "util/configparser.c" /* yacc.c:1646 */ break; case 251: -#line 398 "./util/configparser.y" /* yacc.c:1646 */ +#line 397 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2774,21 +2773,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2778 "util/configparser.c" /* yacc.c:1646 */ +#line 2777 "util/configparser.c" /* yacc.c:1646 */ break; case 252: -#line 408 "./util/configparser.y" /* yacc.c:1646 */ +#line 407 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2788 "util/configparser.c" /* yacc.c:1646 */ +#line 2787 "util/configparser.c" /* yacc.c:1646 */ break; case 253: -#line 416 "./util/configparser.y" /* yacc.c:1646 */ +#line 415 "./util/configparser.y" /* yacc.c:1646 */ { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2804,11 +2803,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2808 "util/configparser.c" /* yacc.c:1646 */ +#line 2807 "util/configparser.c" /* yacc.c:1646 */ break; case 266: -#line 439 "./util/configparser.y" /* yacc.c:1646 */ +#line 438 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2816,11 +2815,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2820 "util/configparser.c" /* yacc.c:1646 */ +#line 2819 "util/configparser.c" /* yacc.c:1646 */ break; case 267: -#line 448 "./util/configparser.y" /* yacc.c:1646 */ +#line 447 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2828,11 +2827,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2832 "util/configparser.c" /* yacc.c:1646 */ +#line 2831 "util/configparser.c" /* yacc.c:1646 */ break; case 268: -#line 457 "./util/configparser.y" /* yacc.c:1646 */ +#line 456 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2842,11 +2841,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2846 "util/configparser.c" /* yacc.c:1646 */ +#line 2845 "util/configparser.c" /* yacc.c:1646 */ break; case 269: -#line 468 "./util/configparser.y" /* yacc.c:1646 */ +#line 467 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2854,11 +2853,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2858 "util/configparser.c" /* yacc.c:1646 */ +#line 2857 "util/configparser.c" /* yacc.c:1646 */ break; case 270: -#line 477 "./util/configparser.y" /* yacc.c:1646 */ +#line 476 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2866,11 +2865,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2870 "util/configparser.c" /* yacc.c:1646 */ +#line 2869 "util/configparser.c" /* yacc.c:1646 */ break; case 271: -#line 486 "./util/configparser.y" /* yacc.c:1646 */ +#line 485 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2878,11 +2877,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2882 "util/configparser.c" /* yacc.c:1646 */ +#line 2881 "util/configparser.c" /* yacc.c:1646 */ break; case 272: -#line 495 "./util/configparser.y" /* yacc.c:1646 */ +#line 494 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2892,11 +2891,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2896 "util/configparser.c" /* yacc.c:1646 */ +#line 2895 "util/configparser.c" /* yacc.c:1646 */ break; case 273: -#line 506 "./util/configparser.y" /* yacc.c:1646 */ +#line 505 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2904,11 +2903,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2908 "util/configparser.c" /* yacc.c:1646 */ +#line 2907 "util/configparser.c" /* yacc.c:1646 */ break; case 274: -#line 515 "./util/configparser.y" /* yacc.c:1646 */ +#line 514 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2918,11 +2917,11 @@ yyreduce: OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2922 "util/configparser.c" /* yacc.c:1646 */ +#line 2921 "util/configparser.c" /* yacc.c:1646 */ break; case 275: -#line 526 "./util/configparser.y" /* yacc.c:1646 */ +#line 525 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -2933,11 +2932,11 @@ yyreduce: OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2937 "util/configparser.c" /* yacc.c:1646 */ +#line 2936 "util/configparser.c" /* yacc.c:1646 */ break; case 276: -#line 539 "./util/configparser.y" /* yacc.c:1646 */ +#line 538 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -2951,11 +2950,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2955 "util/configparser.c" /* yacc.c:1646 */ +#line 2954 "util/configparser.c" /* yacc.c:1646 */ break; case 277: -#line 554 "./util/configparser.y" /* yacc.c:1646 */ +#line 553 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -2965,11 +2964,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2969 "util/configparser.c" /* yacc.c:1646 */ +#line 2968 "util/configparser.c" /* yacc.c:1646 */ break; case 278: -#line 565 "./util/configparser.y" /* yacc.c:1646 */ +#line 564 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -2985,11 +2984,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2989 "util/configparser.c" /* yacc.c:1646 */ +#line 2988 "util/configparser.c" /* yacc.c:1646 */ break; case 279: -#line 582 "./util/configparser.y" /* yacc.c:1646 */ +#line 581 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3005,11 +3004,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3009 "util/configparser.c" /* yacc.c:1646 */ +#line 3008 "util/configparser.c" /* yacc.c:1646 */ break; case 280: -#line 599 "./util/configparser.y" /* yacc.c:1646 */ +#line 598 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3025,11 +3024,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3029 "util/configparser.c" /* yacc.c:1646 */ +#line 3028 "util/configparser.c" /* yacc.c:1646 */ break; case 281: -#line 616 "./util/configparser.y" /* yacc.c:1646 */ +#line 615 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3045,11 +3044,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3049 "util/configparser.c" /* yacc.c:1646 */ +#line 3048 "util/configparser.c" /* yacc.c:1646 */ break; case 282: -#line 633 "./util/configparser.y" /* yacc.c:1646 */ +#line 632 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3063,11 +3062,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3067 "util/configparser.c" /* yacc.c:1646 */ +#line 3066 "util/configparser.c" /* yacc.c:1646 */ break; case 283: -#line 648 "./util/configparser.y" /* yacc.c:1646 */ +#line 647 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3081,11 +3080,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3085 "util/configparser.c" /* yacc.c:1646 */ +#line 3084 "util/configparser.c" /* yacc.c:1646 */ break; case 284: -#line 663 "./util/configparser.y" /* yacc.c:1646 */ +#line 662 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3097,11 +3096,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3101 "util/configparser.c" /* yacc.c:1646 */ +#line 3100 "util/configparser.c" /* yacc.c:1646 */ break; case 285: -#line 676 "./util/configparser.y" /* yacc.c:1646 */ +#line 675 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3115,11 +3114,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3119 "util/configparser.c" /* yacc.c:1646 */ +#line 3118 "util/configparser.c" /* yacc.c:1646 */ break; case 286: -#line 691 "./util/configparser.y" /* yacc.c:1646 */ +#line 690 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3127,11 +3126,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3131 "util/configparser.c" /* yacc.c:1646 */ +#line 3130 "util/configparser.c" /* yacc.c:1646 */ break; case 287: -#line 700 "./util/configparser.y" /* yacc.c:1646 */ +#line 699 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3139,11 +3138,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3143 "util/configparser.c" /* yacc.c:1646 */ +#line 3142 "util/configparser.c" /* yacc.c:1646 */ break; case 288: -#line 709 "./util/configparser.y" /* yacc.c:1646 */ +#line 708 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3151,11 +3150,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3155 "util/configparser.c" /* yacc.c:1646 */ +#line 3154 "util/configparser.c" /* yacc.c:1646 */ break; case 289: -#line 718 "./util/configparser.y" /* yacc.c:1646 */ +#line 717 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3163,11 +3162,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3167 "util/configparser.c" /* yacc.c:1646 */ +#line 3166 "util/configparser.c" /* yacc.c:1646 */ break; case 290: -#line 727 "./util/configparser.y" /* yacc.c:1646 */ +#line 726 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3175,11 +3174,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3179 "util/configparser.c" /* yacc.c:1646 */ +#line 3178 "util/configparser.c" /* yacc.c:1646 */ break; case 291: -#line 736 "./util/configparser.y" /* yacc.c:1646 */ +#line 735 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3187,11 +3186,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3191 "util/configparser.c" /* yacc.c:1646 */ +#line 3190 "util/configparser.c" /* yacc.c:1646 */ break; case 292: -#line 745 "./util/configparser.y" /* yacc.c:1646 */ +#line 744 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3199,11 +3198,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3203 "util/configparser.c" /* yacc.c:1646 */ +#line 3202 "util/configparser.c" /* yacc.c:1646 */ break; case 293: -#line 754 "./util/configparser.y" /* yacc.c:1646 */ +#line 753 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3211,11 +3210,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3215 "util/configparser.c" /* yacc.c:1646 */ +#line 3214 "util/configparser.c" /* yacc.c:1646 */ break; case 294: -#line 763 "./util/configparser.y" /* yacc.c:1646 */ +#line 762 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3223,11 +3222,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3227 "util/configparser.c" /* yacc.c:1646 */ +#line 3226 "util/configparser.c" /* yacc.c:1646 */ break; case 295: -#line 772 "./util/configparser.y" /* yacc.c:1646 */ +#line 771 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3235,11 +3234,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3239 "util/configparser.c" /* yacc.c:1646 */ +#line 3238 "util/configparser.c" /* yacc.c:1646 */ break; case 296: -#line 781 "./util/configparser.y" /* yacc.c:1646 */ +#line 780 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3247,11 +3246,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3251 "util/configparser.c" /* yacc.c:1646 */ +#line 3250 "util/configparser.c" /* yacc.c:1646 */ break; case 297: -#line 790 "./util/configparser.y" /* yacc.c:1646 */ +#line 789 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3259,11 +3258,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3263 "util/configparser.c" /* yacc.c:1646 */ +#line 3262 "util/configparser.c" /* yacc.c:1646 */ break; case 298: -#line 799 "./util/configparser.y" /* yacc.c:1646 */ +#line 798 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3271,11 +3270,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3275 "util/configparser.c" /* yacc.c:1646 */ +#line 3274 "util/configparser.c" /* yacc.c:1646 */ break; case 299: -#line 808 "./util/configparser.y" /* yacc.c:1646 */ +#line 807 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3287,11 +3286,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3291 "util/configparser.c" /* yacc.c:1646 */ +#line 3290 "util/configparser.c" /* yacc.c:1646 */ break; case 300: -#line 821 "./util/configparser.y" /* yacc.c:1646 */ +#line 820 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3299,11 +3298,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3303 "util/configparser.c" /* yacc.c:1646 */ +#line 3302 "util/configparser.c" /* yacc.c:1646 */ break; case 301: -#line 830 "./util/configparser.y" /* yacc.c:1646 */ +#line 829 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3315,11 +3314,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3319 "util/configparser.c" /* yacc.c:1646 */ +#line 3318 "util/configparser.c" /* yacc.c:1646 */ break; case 302: -#line 843 "./util/configparser.y" /* yacc.c:1646 */ +#line 842 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3327,11 +3326,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3331 "util/configparser.c" /* yacc.c:1646 */ +#line 3330 "util/configparser.c" /* yacc.c:1646 */ break; case 303: -#line 852 "./util/configparser.y" /* yacc.c:1646 */ +#line 851 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3339,11 +3338,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3343 "util/configparser.c" /* yacc.c:1646 */ +#line 3342 "util/configparser.c" /* yacc.c:1646 */ break; case 304: -#line 861 "./util/configparser.y" /* yacc.c:1646 */ +#line 860 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3351,31 +3350,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3355 "util/configparser.c" /* yacc.c:1646 */ +#line 3354 "util/configparser.c" /* yacc.c:1646 */ break; case 305: -#line 870 "./util/configparser.y" /* yacc.c:1646 */ +#line 869 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3365 "util/configparser.c" /* yacc.c:1646 */ +#line 3364 "util/configparser.c" /* yacc.c:1646 */ break; case 306: -#line 877 "./util/configparser.y" /* yacc.c:1646 */ +#line 876 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3375 "util/configparser.c" /* yacc.c:1646 */ +#line 3374 "util/configparser.c" /* yacc.c:1646 */ break; case 307: -#line 884 "./util/configparser.y" /* yacc.c:1646 */ +#line 883 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3383,21 +3382,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3387 "util/configparser.c" /* yacc.c:1646 */ +#line 3386 "util/configparser.c" /* yacc.c:1646 */ break; case 308: -#line 893 "./util/configparser.y" /* yacc.c:1646 */ +#line 892 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3397 "util/configparser.c" /* yacc.c:1646 */ +#line 3396 "util/configparser.c" /* yacc.c:1646 */ break; case 309: -#line 900 "./util/configparser.y" /* yacc.c:1646 */ +#line 899 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3405,53 +3404,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3409 "util/configparser.c" /* yacc.c:1646 */ +#line 3408 "util/configparser.c" /* yacc.c:1646 */ break; case 310: -#line 909 "./util/configparser.y" /* yacc.c:1646 */ +#line 908 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3420 "util/configparser.c" /* yacc.c:1646 */ +#line 3419 "util/configparser.c" /* yacc.c:1646 */ break; case 311: -#line 917 "./util/configparser.y" /* yacc.c:1646 */ +#line 916 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3430 "util/configparser.c" /* yacc.c:1646 */ +#line 3429 "util/configparser.c" /* yacc.c:1646 */ break; case 312: -#line 924 "./util/configparser.y" /* yacc.c:1646 */ +#line 923 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3440 "util/configparser.c" /* yacc.c:1646 */ +#line 3439 "util/configparser.c" /* yacc.c:1646 */ break; case 313: -#line 931 "./util/configparser.y" /* yacc.c:1646 */ +#line 930 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3451 "util/configparser.c" /* yacc.c:1646 */ +#line 3450 "util/configparser.c" /* yacc.c:1646 */ break; case 314: -#line 939 "./util/configparser.y" /* yacc.c:1646 */ +#line 938 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3459,11 +3458,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3463 "util/configparser.c" /* yacc.c:1646 */ +#line 3462 "util/configparser.c" /* yacc.c:1646 */ break; case 315: -#line 948 "./util/configparser.y" /* yacc.c:1646 */ +#line 947 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3471,11 +3470,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3475 "util/configparser.c" /* yacc.c:1646 */ +#line 3474 "util/configparser.c" /* yacc.c:1646 */ break; case 316: -#line 957 "./util/configparser.y" /* yacc.c:1646 */ +#line 956 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3488,11 +3487,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3492 "util/configparser.c" /* yacc.c:1646 */ +#line 3491 "util/configparser.c" /* yacc.c:1646 */ break; case 317: -#line 971 "./util/configparser.y" /* yacc.c:1646 */ +#line 970 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3500,11 +3499,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3504 "util/configparser.c" /* yacc.c:1646 */ +#line 3503 "util/configparser.c" /* yacc.c:1646 */ break; case 318: -#line 980 "./util/configparser.y" /* yacc.c:1646 */ +#line 979 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3512,11 +3511,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3516 "util/configparser.c" /* yacc.c:1646 */ +#line 3515 "util/configparser.c" /* yacc.c:1646 */ break; case 319: -#line 989 "./util/configparser.y" /* yacc.c:1646 */ +#line 988 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3524,11 +3523,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3528 "util/configparser.c" /* yacc.c:1646 */ +#line 3527 "util/configparser.c" /* yacc.c:1646 */ break; case 320: -#line 998 "./util/configparser.y" /* yacc.c:1646 */ +#line 997 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3536,11 +3535,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3540 "util/configparser.c" /* yacc.c:1646 */ +#line 3539 "util/configparser.c" /* yacc.c:1646 */ break; case 321: -#line 1007 "./util/configparser.y" /* yacc.c:1646 */ +#line 1006 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3548,11 +3547,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3552 "util/configparser.c" /* yacc.c:1646 */ +#line 3551 "util/configparser.c" /* yacc.c:1646 */ break; case 322: -#line 1016 "./util/configparser.y" /* yacc.c:1646 */ +#line 1015 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3560,31 +3559,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3564 "util/configparser.c" /* yacc.c:1646 */ +#line 3563 "util/configparser.c" /* yacc.c:1646 */ break; case 323: -#line 1025 "./util/configparser.y" /* yacc.c:1646 */ +#line 1024 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3574 "util/configparser.c" /* yacc.c:1646 */ +#line 3573 "util/configparser.c" /* yacc.c:1646 */ break; case 324: -#line 1032 "./util/configparser.y" /* yacc.c:1646 */ +#line 1031 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3584 "util/configparser.c" /* yacc.c:1646 */ +#line 3583 "util/configparser.c" /* yacc.c:1646 */ break; case 325: -#line 1039 "./util/configparser.y" /* yacc.c:1646 */ +#line 1038 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3609,105 +3608,105 @@ yyreduce: } } } -#line 3613 "util/configparser.c" /* yacc.c:1646 */ +#line 3612 "util/configparser.c" /* yacc.c:1646 */ break; case 326: -#line 1065 "./util/configparser.y" /* yacc.c:1646 */ +#line 1064 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3624 "util/configparser.c" /* yacc.c:1646 */ +#line 3623 "util/configparser.c" /* yacc.c:1646 */ break; case 327: -#line 1073 "./util/configparser.y" /* yacc.c:1646 */ +#line 1072 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3634 "util/configparser.c" /* yacc.c:1646 */ +#line 3633 "util/configparser.c" /* yacc.c:1646 */ break; case 328: -#line 1080 "./util/configparser.y" /* yacc.c:1646 */ +#line 1079 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3644 "util/configparser.c" /* yacc.c:1646 */ +#line 3643 "util/configparser.c" /* yacc.c:1646 */ break; case 329: -#line 1087 "./util/configparser.y" /* yacc.c:1646 */ +#line 1086 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3654 "util/configparser.c" /* yacc.c:1646 */ +#line 3653 "util/configparser.c" /* yacc.c:1646 */ break; case 330: -#line 1094 "./util/configparser.y" /* yacc.c:1646 */ +#line 1093 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3664 "util/configparser.c" /* yacc.c:1646 */ +#line 3663 "util/configparser.c" /* yacc.c:1646 */ break; case 331: -#line 1101 "./util/configparser.y" /* yacc.c:1646 */ +#line 1100 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3675 "util/configparser.c" /* yacc.c:1646 */ +#line 3674 "util/configparser.c" /* yacc.c:1646 */ break; case 332: -#line 1109 "./util/configparser.y" /* yacc.c:1646 */ +#line 1108 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3686 "util/configparser.c" /* yacc.c:1646 */ +#line 3685 "util/configparser.c" /* yacc.c:1646 */ break; case 333: -#line 1117 "./util/configparser.y" /* yacc.c:1646 */ +#line 1116 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3697 "util/configparser.c" /* yacc.c:1646 */ +#line 3696 "util/configparser.c" /* yacc.c:1646 */ break; case 334: -#line 1125 "./util/configparser.y" /* yacc.c:1646 */ +#line 1124 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3707 "util/configparser.c" /* yacc.c:1646 */ +#line 3706 "util/configparser.c" /* yacc.c:1646 */ break; case 335: -#line 1132 "./util/configparser.y" /* yacc.c:1646 */ +#line 1131 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3717,11 +3716,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3721 "util/configparser.c" /* yacc.c:1646 */ +#line 3720 "util/configparser.c" /* yacc.c:1646 */ break; case 336: -#line 1143 "./util/configparser.y" /* yacc.c:1646 */ +#line 1142 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3731,21 +3730,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3735 "util/configparser.c" /* yacc.c:1646 */ +#line 3734 "util/configparser.c" /* yacc.c:1646 */ break; case 337: -#line 1154 "./util/configparser.y" /* yacc.c:1646 */ +#line 1153 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3745 "util/configparser.c" /* yacc.c:1646 */ +#line 3744 "util/configparser.c" /* yacc.c:1646 */ break; case 338: -#line 1161 "./util/configparser.y" /* yacc.c:1646 */ +#line 1160 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3753,11 +3752,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3757 "util/configparser.c" /* yacc.c:1646 */ +#line 3756 "util/configparser.c" /* yacc.c:1646 */ break; case 339: -#line 1170 "./util/configparser.y" /* yacc.c:1646 */ +#line 1169 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3765,11 +3764,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3769 "util/configparser.c" /* yacc.c:1646 */ +#line 3768 "util/configparser.c" /* yacc.c:1646 */ break; case 340: -#line 1179 "./util/configparser.y" /* yacc.c:1646 */ +#line 1178 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3777,53 +3776,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3781 "util/configparser.c" /* yacc.c:1646 */ +#line 3780 "util/configparser.c" /* yacc.c:1646 */ break; case 341: -#line 1188 "./util/configparser.y" /* yacc.c:1646 */ +#line 1187 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3791 "util/configparser.c" /* yacc.c:1646 */ +#line 3790 "util/configparser.c" /* yacc.c:1646 */ break; case 342: -#line 1195 "./util/configparser.y" /* yacc.c:1646 */ +#line 1194 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3801 "util/configparser.c" /* yacc.c:1646 */ +#line 3800 "util/configparser.c" /* yacc.c:1646 */ break; case 343: -#line 1202 "./util/configparser.y" /* yacc.c:1646 */ +#line 1201 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3812 "util/configparser.c" /* yacc.c:1646 */ +#line 3811 "util/configparser.c" /* yacc.c:1646 */ break; case 344: -#line 1210 "./util/configparser.y" /* yacc.c:1646 */ +#line 1209 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3823 "util/configparser.c" /* yacc.c:1646 */ +#line 3822 "util/configparser.c" /* yacc.c:1646 */ break; case 345: -#line 1218 "./util/configparser.y" /* yacc.c:1646 */ +#line 1217 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3832,11 +3831,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3836 "util/configparser.c" /* yacc.c:1646 */ +#line 3835 "util/configparser.c" /* yacc.c:1646 */ break; case 346: -#line 1228 "./util/configparser.y" /* yacc.c:1646 */ +#line 1227 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3845,11 +3844,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3849 "util/configparser.c" /* yacc.c:1646 */ +#line 3848 "util/configparser.c" /* yacc.c:1646 */ break; case 347: -#line 1238 "./util/configparser.y" /* yacc.c:1646 */ +#line 1237 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3858,22 +3857,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3862 "util/configparser.c" /* yacc.c:1646 */ +#line 3861 "util/configparser.c" /* yacc.c:1646 */ break; case 348: -#line 1248 "./util/configparser.y" /* yacc.c:1646 */ +#line 1247 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3873 "util/configparser.c" /* yacc.c:1646 */ +#line 3872 "util/configparser.c" /* yacc.c:1646 */ break; case 349: -#line 1256 "./util/configparser.y" /* yacc.c:1646 */ +#line 1255 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3885,11 +3884,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3889 "util/configparser.c" /* yacc.c:1646 */ +#line 3888 "util/configparser.c" /* yacc.c:1646 */ break; case 350: -#line 1269 "./util/configparser.y" /* yacc.c:1646 */ +#line 1268 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3899,22 +3898,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3903 "util/configparser.c" /* yacc.c:1646 */ +#line 3902 "util/configparser.c" /* yacc.c:1646 */ break; case 351: -#line 1280 "./util/configparser.y" /* yacc.c:1646 */ +#line 1279 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3914 "util/configparser.c" /* yacc.c:1646 */ +#line 3913 "util/configparser.c" /* yacc.c:1646 */ break; case 352: -#line 1288 "./util/configparser.y" /* yacc.c:1646 */ +#line 1287 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3926,11 +3925,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3930 "util/configparser.c" /* yacc.c:1646 */ +#line 3929 "util/configparser.c" /* yacc.c:1646 */ break; case 353: -#line 1301 "./util/configparser.y" /* yacc.c:1646 */ +#line 1300 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3938,11 +3937,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3942 "util/configparser.c" /* yacc.c:1646 */ +#line 3941 "util/configparser.c" /* yacc.c:1646 */ break; case 354: -#line 1310 "./util/configparser.y" /* yacc.c:1646 */ +#line 1309 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3950,11 +3949,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3954 "util/configparser.c" /* yacc.c:1646 */ +#line 3953 "util/configparser.c" /* yacc.c:1646 */ break; case 355: -#line 1319 "./util/configparser.y" /* yacc.c:1646 */ +#line 1318 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3962,11 +3961,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3966 "util/configparser.c" /* yacc.c:1646 */ +#line 3965 "util/configparser.c" /* yacc.c:1646 */ break; case 356: -#line 1328 "./util/configparser.y" /* yacc.c:1646 */ +#line 1327 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3975,11 +3974,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3979 "util/configparser.c" /* yacc.c:1646 */ +#line 3978 "util/configparser.c" /* yacc.c:1646 */ break; case 357: -#line 1338 "./util/configparser.y" /* yacc.c:1646 */ +#line 1337 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3988,22 +3987,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3992 "util/configparser.c" /* yacc.c:1646 */ +#line 3991 "util/configparser.c" /* yacc.c:1646 */ break; case 358: -#line 1348 "./util/configparser.y" /* yacc.c:1646 */ +#line 1347 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4003 "util/configparser.c" /* yacc.c:1646 */ +#line 4002 "util/configparser.c" /* yacc.c:1646 */ break; case 359: -#line 1356 "./util/configparser.y" /* yacc.c:1646 */ +#line 1355 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4015,11 +4014,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4019 "util/configparser.c" /* yacc.c:1646 */ +#line 4018 "util/configparser.c" /* yacc.c:1646 */ break; case 360: -#line 1369 "./util/configparser.y" /* yacc.c:1646 */ +#line 1368 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4027,22 +4026,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4031 "util/configparser.c" /* yacc.c:1646 */ +#line 4030 "util/configparser.c" /* yacc.c:1646 */ break; case 361: -#line 1378 "./util/configparser.y" /* yacc.c:1646 */ +#line 1377 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4042 "util/configparser.c" /* yacc.c:1646 */ +#line 4041 "util/configparser.c" /* yacc.c:1646 */ break; case 362: -#line 1386 "./util/configparser.y" /* yacc.c:1646 */ +#line 1385 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4050,22 +4049,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4054 "util/configparser.c" /* yacc.c:1646 */ +#line 4053 "util/configparser.c" /* yacc.c:1646 */ break; case 363: -#line 1395 "./util/configparser.y" /* yacc.c:1646 */ +#line 1394 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4065 "util/configparser.c" /* yacc.c:1646 */ +#line 4064 "util/configparser.c" /* yacc.c:1646 */ break; case 364: -#line 1403 "./util/configparser.y" /* yacc.c:1646 */ +#line 1402 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4077,11 +4076,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4081 "util/configparser.c" /* yacc.c:1646 */ +#line 4080 "util/configparser.c" /* yacc.c:1646 */ break; case 365: -#line 1416 "./util/configparser.y" /* yacc.c:1646 */ +#line 1415 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4089,21 +4088,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4093 "util/configparser.c" /* yacc.c:1646 */ +#line 4092 "util/configparser.c" /* yacc.c:1646 */ break; case 366: -#line 1425 "./util/configparser.y" /* yacc.c:1646 */ +#line 1424 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4103 "util/configparser.c" /* yacc.c:1646 */ +#line 4102 "util/configparser.c" /* yacc.c:1646 */ break; case 367: -#line 1432 "./util/configparser.y" /* yacc.c:1646 */ +#line 1431 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4112,11 +4111,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4116 "util/configparser.c" /* yacc.c:1646 */ +#line 4115 "util/configparser.c" /* yacc.c:1646 */ break; case 368: -#line 1442 "./util/configparser.y" /* yacc.c:1646 */ +#line 1441 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4125,11 +4124,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4129 "util/configparser.c" /* yacc.c:1646 */ +#line 4128 "util/configparser.c" /* yacc.c:1646 */ break; case 369: -#line 1452 "./util/configparser.y" /* yacc.c:1646 */ +#line 1451 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4138,11 +4137,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4142 "util/configparser.c" /* yacc.c:1646 */ +#line 4141 "util/configparser.c" /* yacc.c:1646 */ break; case 370: -#line 1462 "./util/configparser.y" /* yacc.c:1646 */ +#line 1461 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4151,11 +4150,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4155 "util/configparser.c" /* yacc.c:1646 */ +#line 4154 "util/configparser.c" /* yacc.c:1646 */ break; case 371: -#line 1472 "./util/configparser.y" /* yacc.c:1646 */ +#line 1471 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4164,11 +4163,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4168 "util/configparser.c" /* yacc.c:1646 */ +#line 4167 "util/configparser.c" /* yacc.c:1646 */ break; case 372: -#line 1482 "./util/configparser.y" /* yacc.c:1646 */ +#line 1481 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4177,11 +4176,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4181 "util/configparser.c" /* yacc.c:1646 */ +#line 4180 "util/configparser.c" /* yacc.c:1646 */ break; case 373: -#line 1492 "./util/configparser.y" /* yacc.c:1646 */ +#line 1491 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4190,11 +4189,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4194 "util/configparser.c" /* yacc.c:1646 */ +#line 4193 "util/configparser.c" /* yacc.c:1646 */ break; case 374: -#line 1502 "./util/configparser.y" /* yacc.c:1646 */ +#line 1501 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4203,41 +4202,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4207 "util/configparser.c" /* yacc.c:1646 */ +#line 4206 "util/configparser.c" /* yacc.c:1646 */ break; case 375: -#line 1512 "./util/configparser.y" /* yacc.c:1646 */ +#line 1511 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4217 "util/configparser.c" /* yacc.c:1646 */ +#line 4216 "util/configparser.c" /* yacc.c:1646 */ break; case 376: -#line 1519 "./util/configparser.y" /* yacc.c:1646 */ +#line 1518 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4227 "util/configparser.c" /* yacc.c:1646 */ +#line 4226 "util/configparser.c" /* yacc.c:1646 */ break; case 377: -#line 1526 "./util/configparser.y" /* yacc.c:1646 */ +#line 1525 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4237 "util/configparser.c" /* yacc.c:1646 */ +#line 4236 "util/configparser.c" /* yacc.c:1646 */ break; case 378: -#line 1533 "./util/configparser.y" /* yacc.c:1646 */ +#line 1532 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4245,11 +4244,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4249 "util/configparser.c" /* yacc.c:1646 */ +#line 4248 "util/configparser.c" /* yacc.c:1646 */ break; case 379: -#line 1542 "./util/configparser.y" /* yacc.c:1646 */ +#line 1541 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4257,11 +4256,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4261 "util/configparser.c" /* yacc.c:1646 */ +#line 4260 "util/configparser.c" /* yacc.c:1646 */ break; case 380: -#line 1551 "./util/configparser.y" /* yacc.c:1646 */ +#line 1550 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4269,11 +4268,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4273 "util/configparser.c" /* yacc.c:1646 */ +#line 4272 "util/configparser.c" /* yacc.c:1646 */ break; case 381: -#line 1560 "./util/configparser.y" /* yacc.c:1646 */ +#line 1559 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4281,21 +4280,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4285 "util/configparser.c" /* yacc.c:1646 */ +#line 4284 "util/configparser.c" /* yacc.c:1646 */ break; case 382: -#line 1569 "./util/configparser.y" /* yacc.c:1646 */ +#line 1568 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4295 "util/configparser.c" /* yacc.c:1646 */ +#line 4294 "util/configparser.c" /* yacc.c:1646 */ break; case 383: -#line 1576 "./util/configparser.y" /* yacc.c:1646 */ +#line 1575 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4304,11 +4303,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4308 "util/configparser.c" /* yacc.c:1646 */ +#line 4307 "util/configparser.c" /* yacc.c:1646 */ break; case 384: -#line 1586 "./util/configparser.y" /* yacc.c:1646 */ +#line 1585 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -4327,21 +4326,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4331 "util/configparser.c" /* yacc.c:1646 */ +#line 4330 "util/configparser.c" /* yacc.c:1646 */ break; case 385: -#line 1606 "./util/configparser.y" /* yacc.c:1646 */ +#line 1605 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4341 "util/configparser.c" /* yacc.c:1646 */ +#line 4340 "util/configparser.c" /* yacc.c:1646 */ break; case 386: -#line 1613 "./util/configparser.y" /* yacc.c:1646 */ +#line 1612 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4358,11 +4357,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4362 "util/configparser.c" /* yacc.c:1646 */ +#line 4361 "util/configparser.c" /* yacc.c:1646 */ break; case 387: -#line 1631 "./util/configparser.y" /* yacc.c:1646 */ +#line 1630 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4374,11 +4373,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4378 "util/configparser.c" /* yacc.c:1646 */ +#line 4377 "util/configparser.c" /* yacc.c:1646 */ break; case 388: -#line 1644 "./util/configparser.y" /* yacc.c:1646 */ +#line 1643 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4390,11 +4389,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4394 "util/configparser.c" /* yacc.c:1646 */ +#line 4393 "util/configparser.c" /* yacc.c:1646 */ break; case 389: -#line 1657 "./util/configparser.y" /* yacc.c:1646 */ +#line 1656 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4402,11 +4401,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4406 "util/configparser.c" /* yacc.c:1646 */ +#line 4405 "util/configparser.c" /* yacc.c:1646 */ break; case 390: -#line 1666 "./util/configparser.y" /* yacc.c:1646 */ +#line 1665 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4414,11 +4413,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4418 "util/configparser.c" /* yacc.c:1646 */ +#line 4417 "util/configparser.c" /* yacc.c:1646 */ break; case 391: -#line 1675 "./util/configparser.y" /* yacc.c:1646 */ +#line 1674 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4426,11 +4425,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4430 "util/configparser.c" /* yacc.c:1646 */ +#line 4429 "util/configparser.c" /* yacc.c:1646 */ break; case 392: -#line 1684 "./util/configparser.y" /* yacc.c:1646 */ +#line 1683 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4438,11 +4437,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4442 "util/configparser.c" /* yacc.c:1646 */ +#line 4441 "util/configparser.c" /* yacc.c:1646 */ break; case 393: -#line 1693 "./util/configparser.y" /* yacc.c:1646 */ +#line 1692 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4451,11 +4450,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4455 "util/configparser.c" /* yacc.c:1646 */ +#line 4454 "util/configparser.c" /* yacc.c:1646 */ break; case 394: -#line 1703 "./util/configparser.y" /* yacc.c:1646 */ +#line 1702 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4464,11 +4463,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4468 "util/configparser.c" /* yacc.c:1646 */ +#line 4467 "util/configparser.c" /* yacc.c:1646 */ break; case 395: -#line 1713 "./util/configparser.y" /* yacc.c:1646 */ +#line 1712 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4478,11 +4477,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4482 "util/configparser.c" /* yacc.c:1646 */ +#line 4481 "util/configparser.c" /* yacc.c:1646 */ break; case 396: -#line 1724 "./util/configparser.y" /* yacc.c:1646 */ +#line 1723 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4490,11 +4489,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4494 "util/configparser.c" /* yacc.c:1646 */ +#line 4493 "util/configparser.c" /* yacc.c:1646 */ break; case 397: -#line 1733 "./util/configparser.y" /* yacc.c:1646 */ +#line 1732 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4502,11 +4501,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4506 "util/configparser.c" /* yacc.c:1646 */ +#line 4505 "util/configparser.c" /* yacc.c:1646 */ break; case 398: -#line 1742 "./util/configparser.y" /* yacc.c:1646 */ +#line 1741 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4514,11 +4513,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4518 "util/configparser.c" /* yacc.c:1646 */ +#line 4517 "util/configparser.c" /* yacc.c:1646 */ break; case 399: -#line 1751 "./util/configparser.y" /* yacc.c:1646 */ +#line 1750 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4526,11 +4525,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4530 "util/configparser.c" /* yacc.c:1646 */ +#line 4529 "util/configparser.c" /* yacc.c:1646 */ break; case 400: -#line 1760 "./util/configparser.y" /* yacc.c:1646 */ +#line 1759 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4542,11 +4541,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4546 "util/configparser.c" /* yacc.c:1646 */ +#line 4545 "util/configparser.c" /* yacc.c:1646 */ break; case 401: -#line 1773 "./util/configparser.y" /* yacc.c:1646 */ +#line 1772 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4558,11 +4557,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4562 "util/configparser.c" /* yacc.c:1646 */ +#line 4561 "util/configparser.c" /* yacc.c:1646 */ break; case 402: -#line 1786 "./util/configparser.y" /* yacc.c:1646 */ +#line 1785 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4570,21 +4569,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4574 "util/configparser.c" /* yacc.c:1646 */ +#line 4573 "util/configparser.c" /* yacc.c:1646 */ break; case 403: -#line 1795 "./util/configparser.y" /* yacc.c:1646 */ +#line 1794 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4584 "util/configparser.c" /* yacc.c:1646 */ +#line 4583 "util/configparser.c" /* yacc.c:1646 */ break; case 404: -#line 1802 "./util/configparser.y" /* yacc.c:1646 */ +#line 1801 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4592,11 +4591,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4596 "util/configparser.c" /* yacc.c:1646 */ +#line 4595 "util/configparser.c" /* yacc.c:1646 */ break; case 405: -#line 1811 "./util/configparser.y" /* yacc.c:1646 */ +#line 1810 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4604,11 +4603,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4608 "util/configparser.c" /* yacc.c:1646 */ +#line 4607 "util/configparser.c" /* yacc.c:1646 */ break; case 406: -#line 1820 "./util/configparser.y" /* yacc.c:1646 */ +#line 1819 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4616,11 +4615,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4620 "util/configparser.c" /* yacc.c:1646 */ +#line 4619 "util/configparser.c" /* yacc.c:1646 */ break; case 407: -#line 1829 "./util/configparser.y" /* yacc.c:1646 */ +#line 1828 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4629,22 +4628,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4633 "util/configparser.c" /* yacc.c:1646 */ +#line 4632 "util/configparser.c" /* yacc.c:1646 */ break; case 408: -#line 1838 "./util/configparser.y" /* yacc.c:1646 */ +#line 1837 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4644 "util/configparser.c" /* yacc.c:1646 */ +#line 4643 "util/configparser.c" /* yacc.c:1646 */ break; case 409: -#line 1846 "./util/configparser.y" /* yacc.c:1646 */ +#line 1845 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4656,22 +4655,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4660 "util/configparser.c" /* yacc.c:1646 */ +#line 4659 "util/configparser.c" /* yacc.c:1646 */ break; case 410: -#line 1859 "./util/configparser.y" /* yacc.c:1646 */ +#line 1858 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4671 "util/configparser.c" /* yacc.c:1646 */ +#line 4670 "util/configparser.c" /* yacc.c:1646 */ break; case 411: -#line 1867 "./util/configparser.y" /* yacc.c:1646 */ +#line 1866 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -4711,21 +4710,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4715 "util/configparser.c" /* yacc.c:1646 */ +#line 4714 "util/configparser.c" /* yacc.c:1646 */ break; case 412: -#line 1908 "./util/configparser.y" /* yacc.c:1646 */ +#line 1907 "./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 4725 "util/configparser.c" /* yacc.c:1646 */ +#line 4724 "util/configparser.c" /* yacc.c:1646 */ break; case 413: -#line 1915 "./util/configparser.y" /* yacc.c:1646 */ +#line 1914 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4739,11 +4738,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4743 "util/configparser.c" /* yacc.c:1646 */ +#line 4742 "util/configparser.c" /* yacc.c:1646 */ break; case 414: -#line 1930 "./util/configparser.y" /* yacc.c:1646 */ +#line 1929 "./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) @@ -4752,11 +4751,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4756 "util/configparser.c" /* yacc.c:1646 */ +#line 4755 "util/configparser.c" /* yacc.c:1646 */ break; case 415: -#line 1940 "./util/configparser.y" /* yacc.c:1646 */ +#line 1939 "./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) @@ -4765,41 +4764,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4769 "util/configparser.c" /* yacc.c:1646 */ +#line 4768 "util/configparser.c" /* yacc.c:1646 */ break; case 416: -#line 1950 "./util/configparser.y" /* yacc.c:1646 */ +#line 1949 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4779 "util/configparser.c" /* yacc.c:1646 */ +#line 4778 "util/configparser.c" /* yacc.c:1646 */ break; case 417: -#line 1957 "./util/configparser.y" /* yacc.c:1646 */ +#line 1956 "./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 4789 "util/configparser.c" /* yacc.c:1646 */ +#line 4788 "util/configparser.c" /* yacc.c:1646 */ break; case 418: -#line 1964 "./util/configparser.y" /* yacc.c:1646 */ +#line 1963 "./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 4799 "util/configparser.c" /* yacc.c:1646 */ +#line 4798 "util/configparser.c" /* yacc.c:1646 */ break; case 419: -#line 1971 "./util/configparser.y" /* yacc.c:1646 */ +#line 1970 "./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) @@ -4807,22 +4806,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4811 "util/configparser.c" /* yacc.c:1646 */ +#line 4810 "util/configparser.c" /* yacc.c:1646 */ break; case 420: -#line 1980 "./util/configparser.y" /* yacc.c:1646 */ +#line 1979 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 4822 "util/configparser.c" /* yacc.c:1646 */ +#line 4821 "util/configparser.c" /* yacc.c:1646 */ break; case 421: -#line 1988 "./util/configparser.y" /* yacc.c:1646 */ +#line 1987 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4835,11 +4834,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4839 "util/configparser.c" /* yacc.c:1646 */ +#line 4838 "util/configparser.c" /* yacc.c:1646 */ break; case 422: -#line 2002 "./util/configparser.y" /* yacc.c:1646 */ +#line 2001 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4859,11 +4858,11 @@ yyreduce: } } } -#line 4863 "util/configparser.c" /* yacc.c:1646 */ +#line 4862 "util/configparser.c" /* yacc.c:1646 */ break; case 423: -#line 2023 "./util/configparser.y" /* yacc.c:1646 */ +#line 2022 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4883,11 +4882,11 @@ yyreduce: } } } -#line 4887 "util/configparser.c" /* yacc.c:1646 */ +#line 4886 "util/configparser.c" /* yacc.c:1646 */ break; case 424: -#line 2044 "./util/configparser.y" /* yacc.c:1646 */ +#line 2043 "./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, @@ -4898,11 +4897,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4902 "util/configparser.c" /* yacc.c:1646 */ +#line 4901 "util/configparser.c" /* yacc.c:1646 */ break; case 425: -#line 2056 "./util/configparser.y" /* yacc.c:1646 */ +#line 2055 "./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, @@ -4913,11 +4912,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4917 "util/configparser.c" /* yacc.c:1646 */ +#line 4916 "util/configparser.c" /* yacc.c:1646 */ break; case 426: -#line 2068 "./util/configparser.y" /* yacc.c:1646 */ +#line 2067 "./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, @@ -4928,11 +4927,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4932 "util/configparser.c" /* yacc.c:1646 */ +#line 4931 "util/configparser.c" /* yacc.c:1646 */ break; case 427: -#line 2080 "./util/configparser.y" /* yacc.c:1646 */ +#line 2079 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -4940,11 +4939,11 @@ yyreduce: yyerror("out of memory"); } } -#line 4944 "util/configparser.c" /* yacc.c:1646 */ +#line 4943 "util/configparser.c" /* yacc.c:1646 */ break; case 428: -#line 2089 "./util/configparser.y" /* yacc.c:1646 */ +#line 2088 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4964,11 +4963,11 @@ yyreduce: } } } -#line 4968 "util/configparser.c" /* yacc.c:1646 */ +#line 4967 "util/configparser.c" /* yacc.c:1646 */ break; case 429: -#line 2110 "./util/configparser.y" /* yacc.c:1646 */ +#line 2109 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4976,11 +4975,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4980 "util/configparser.c" /* yacc.c:1646 */ +#line 4979 "util/configparser.c" /* yacc.c:1646 */ break; case 430: -#line 2120 "./util/configparser.y" /* yacc.c:1646 */ +#line 2119 "./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) @@ -4988,33 +4987,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4992 "util/configparser.c" /* yacc.c:1646 */ +#line 4991 "util/configparser.c" /* yacc.c:1646 */ break; case 431: -#line 2129 "./util/configparser.y" /* yacc.c:1646 */ +#line 2128 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5003 "util/configparser.c" /* yacc.c:1646 */ +#line 5002 "util/configparser.c" /* yacc.c:1646 */ break; case 432: -#line 2137 "./util/configparser.y" /* yacc.c:1646 */ +#line 2136 "./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 5014 "util/configparser.c" /* yacc.c:1646 */ +#line 5013 "util/configparser.c" /* yacc.c:1646 */ break; case 433: -#line 2145 "./util/configparser.y" /* yacc.c:1646 */ +#line 2144 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5026,11 +5025,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5030 "util/configparser.c" /* yacc.c:1646 */ +#line 5029 "util/configparser.c" /* yacc.c:1646 */ break; case 434: -#line 2158 "./util/configparser.y" /* yacc.c:1646 */ +#line 2157 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5042,11 +5041,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5046 "util/configparser.c" /* yacc.c:1646 */ +#line 5045 "util/configparser.c" /* yacc.c:1646 */ break; case 435: -#line 2171 "./util/configparser.y" /* yacc.c:1646 */ +#line 2170 "./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) { @@ -5060,11 +5059,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5064 "util/configparser.c" /* yacc.c:1646 */ +#line 5063 "util/configparser.c" /* yacc.c:1646 */ break; case 436: -#line 2186 "./util/configparser.y" /* yacc.c:1646 */ +#line 2185 "./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) { @@ -5078,11 +5077,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5082 "util/configparser.c" /* yacc.c:1646 */ +#line 5081 "util/configparser.c" /* yacc.c:1646 */ break; case 437: -#line 2201 "./util/configparser.y" /* yacc.c:1646 */ +#line 2200 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5090,11 +5089,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5094 "util/configparser.c" /* yacc.c:1646 */ +#line 5093 "util/configparser.c" /* yacc.c:1646 */ break; case 438: -#line 2210 "./util/configparser.y" /* yacc.c:1646 */ +#line 2209 "./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) @@ -5102,20 +5101,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5106 "util/configparser.c" /* yacc.c:1646 */ +#line 5105 "util/configparser.c" /* yacc.c:1646 */ break; case 439: -#line 2219 "./util/configparser.y" /* yacc.c:1646 */ +#line 2218 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5115 "util/configparser.c" /* yacc.c:1646 */ +#line 5114 "util/configparser.c" /* yacc.c:1646 */ break; case 440: -#line 2225 "./util/configparser.y" /* yacc.c:1646 */ +#line 2224 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5123,11 +5122,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5127 "util/configparser.c" /* yacc.c:1646 */ +#line 5126 "util/configparser.c" /* yacc.c:1646 */ break; case 441: -#line 2234 "./util/configparser.y" /* yacc.c:1646 */ +#line 2233 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5135,11 +5134,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5139 "util/configparser.c" /* yacc.c:1646 */ +#line 5138 "util/configparser.c" /* yacc.c:1646 */ break; case 442: -#line 2243 "./util/configparser.y" /* yacc.c:1646 */ +#line 2242 "./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) @@ -5148,11 +5147,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5152 "util/configparser.c" /* yacc.c:1646 */ +#line 5151 "util/configparser.c" /* yacc.c:1646 */ break; case 443: -#line 2253 "./util/configparser.y" /* yacc.c:1646 */ +#line 2252 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5161,11 +5160,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5165 "util/configparser.c" /* yacc.c:1646 */ +#line 5164 "util/configparser.c" /* yacc.c:1646 */ break; case 444: -#line 2263 "./util/configparser.y" /* yacc.c:1646 */ +#line 2262 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5177,11 +5176,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5181 "util/configparser.c" /* yacc.c:1646 */ +#line 5180 "util/configparser.c" /* yacc.c:1646 */ break; case 445: -#line 2276 "./util/configparser.y" /* yacc.c:1646 */ +#line 2275 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5193,11 +5192,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5197 "util/configparser.c" /* yacc.c:1646 */ +#line 5196 "util/configparser.c" /* yacc.c:1646 */ break; case 446: -#line 2289 "./util/configparser.y" /* yacc.c:1646 */ +#line 2288 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5208,11 +5207,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5212 "util/configparser.c" /* yacc.c:1646 */ +#line 5211 "util/configparser.c" /* yacc.c:1646 */ break; case 447: -#line 2301 "./util/configparser.y" /* yacc.c:1646 */ +#line 2300 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5225,11 +5224,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5229 "util/configparser.c" /* yacc.c:1646 */ +#line 5228 "util/configparser.c" /* yacc.c:1646 */ break; case 448: -#line 2315 "./util/configparser.y" /* yacc.c:1646 */ +#line 2314 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5240,11 +5239,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5244 "util/configparser.c" /* yacc.c:1646 */ +#line 5243 "util/configparser.c" /* yacc.c:1646 */ break; case 449: -#line 2327 "./util/configparser.y" /* yacc.c:1646 */ +#line 2326 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5257,11 +5256,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5261 "util/configparser.c" /* yacc.c:1646 */ +#line 5260 "util/configparser.c" /* yacc.c:1646 */ break; case 450: -#line 2341 "./util/configparser.y" /* yacc.c:1646 */ +#line 2340 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5270,31 +5269,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5274 "util/configparser.c" /* yacc.c:1646 */ +#line 5273 "util/configparser.c" /* yacc.c:1646 */ break; case 451: -#line 2351 "./util/configparser.y" /* yacc.c:1646 */ +#line 2350 "./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 5284 "util/configparser.c" /* yacc.c:1646 */ +#line 5283 "util/configparser.c" /* yacc.c:1646 */ break; case 452: -#line 2358 "./util/configparser.y" /* yacc.c:1646 */ +#line 2357 "./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 5294 "util/configparser.c" /* yacc.c:1646 */ +#line 5293 "util/configparser.c" /* yacc.c:1646 */ break; case 453: -#line 2365 "./util/configparser.y" /* yacc.c:1646 */ +#line 2364 "./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) @@ -5302,11 +5301,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5306 "util/configparser.c" /* yacc.c:1646 */ +#line 5305 "util/configparser.c" /* yacc.c:1646 */ break; case 454: -#line 2374 "./util/configparser.y" /* yacc.c:1646 */ +#line 2373 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5314,11 +5313,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5318 "util/configparser.c" /* yacc.c:1646 */ +#line 5317 "util/configparser.c" /* yacc.c:1646 */ break; case 455: -#line 2383 "./util/configparser.y" /* yacc.c:1646 */ +#line 2382 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5327,11 +5326,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5331 "util/configparser.c" /* yacc.c:1646 */ +#line 5330 "util/configparser.c" /* yacc.c:1646 */ break; case 456: -#line 2393 "./util/configparser.y" /* yacc.c:1646 */ +#line 2392 "./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) @@ -5340,11 +5339,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5344 "util/configparser.c" /* yacc.c:1646 */ +#line 5343 "util/configparser.c" /* yacc.c:1646 */ break; case 457: -#line 2403 "./util/configparser.y" /* yacc.c:1646 */ +#line 2402 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5353,31 +5352,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5357 "util/configparser.c" /* yacc.c:1646 */ +#line 5356 "util/configparser.c" /* yacc.c:1646 */ break; case 458: -#line 2413 "./util/configparser.y" /* yacc.c:1646 */ +#line 2412 "./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 5367 "util/configparser.c" /* yacc.c:1646 */ +#line 5366 "util/configparser.c" /* yacc.c:1646 */ break; case 459: -#line 2420 "./util/configparser.y" /* yacc.c:1646 */ +#line 2419 "./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 5377 "util/configparser.c" /* yacc.c:1646 */ +#line 5376 "util/configparser.c" /* yacc.c:1646 */ break; case 460: -#line 2427 "./util/configparser.y" /* yacc.c:1646 */ +#line 2426 "./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) @@ -5385,11 +5384,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5389 "util/configparser.c" /* yacc.c:1646 */ +#line 5388 "util/configparser.c" /* yacc.c:1646 */ break; case 461: -#line 2436 "./util/configparser.y" /* yacc.c:1646 */ +#line 2435 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5397,11 +5396,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5401 "util/configparser.c" /* yacc.c:1646 */ +#line 5400 "util/configparser.c" /* yacc.c:1646 */ break; case 462: -#line 2445 "./util/configparser.y" /* yacc.c:1646 */ +#line 2444 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5410,11 +5409,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5414 "util/configparser.c" /* yacc.c:1646 */ +#line 5413 "util/configparser.c" /* yacc.c:1646 */ break; case 463: -#line 2455 "./util/configparser.y" /* yacc.c:1646 */ +#line 2454 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5423,52 +5422,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5427 "util/configparser.c" /* yacc.c:1646 */ +#line 5426 "util/configparser.c" /* yacc.c:1646 */ break; case 464: -#line 2465 "./util/configparser.y" /* yacc.c:1646 */ +#line 2464 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5437 "util/configparser.c" /* yacc.c:1646 */ +#line 5436 "util/configparser.c" /* yacc.c:1646 */ break; case 465: -#line 2472 "./util/configparser.y" /* yacc.c:1646 */ +#line 2471 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5447 "util/configparser.c" /* yacc.c:1646 */ +#line 5446 "util/configparser.c" /* yacc.c:1646 */ break; case 466: -#line 2479 "./util/configparser.y" /* yacc.c:1646 */ +#line 2478 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5457 "util/configparser.c" /* yacc.c:1646 */ +#line 5456 "util/configparser.c" /* yacc.c:1646 */ break; case 467: -#line 2486 "./util/configparser.y" /* yacc.c:1646 */ +#line 2485 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5468 "util/configparser.c" /* yacc.c:1646 */ +#line 5467 "util/configparser.c" /* yacc.c:1646 */ break; case 468: -#line 2494 "./util/configparser.y" /* yacc.c:1646 */ +#line 2493 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5477,11 +5476,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5481 "util/configparser.c" /* yacc.c:1646 */ +#line 5480 "util/configparser.c" /* yacc.c:1646 */ break; case 469: -#line 2504 "./util/configparser.y" /* yacc.c:1646 */ +#line 2503 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5490,11 +5489,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5494 "util/configparser.c" /* yacc.c:1646 */ +#line 5493 "util/configparser.c" /* yacc.c:1646 */ break; case 470: -#line 2514 "./util/configparser.y" /* yacc.c:1646 */ +#line 2513 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5503,11 +5502,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5507 "util/configparser.c" /* yacc.c:1646 */ +#line 5506 "util/configparser.c" /* yacc.c:1646 */ break; case 471: -#line 2524 "./util/configparser.y" /* yacc.c:1646 */ +#line 2523 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5516,11 +5515,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5520 "util/configparser.c" /* yacc.c:1646 */ +#line 5519 "util/configparser.c" /* yacc.c:1646 */ break; case 472: -#line 2534 "./util/configparser.y" /* yacc.c:1646 */ +#line 2533 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5558,11 +5557,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5562 "util/configparser.c" /* yacc.c:1646 */ +#line 5561 "util/configparser.c" /* yacc.c:1646 */ break; case 473: -#line 2573 "./util/configparser.y" /* yacc.c:1646 */ +#line 2572 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5571,33 +5570,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5575 "util/configparser.c" /* yacc.c:1646 */ +#line 5574 "util/configparser.c" /* yacc.c:1646 */ break; case 474: -#line 2583 "./util/configparser.y" /* yacc.c:1646 */ +#line 2582 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5586 "util/configparser.c" /* yacc.c:1646 */ +#line 5585 "util/configparser.c" /* yacc.c:1646 */ break; case 475: -#line 2591 "./util/configparser.y" /* yacc.c:1646 */ +#line 2590 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 5597 "util/configparser.c" /* yacc.c:1646 */ +#line 5596 "util/configparser.c" /* yacc.c:1646 */ break; case 476: -#line 2599 "./util/configparser.y" /* yacc.c:1646 */ +#line 2598 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5611,11 +5610,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5615 "util/configparser.c" /* yacc.c:1646 */ +#line 5614 "util/configparser.c" /* yacc.c:1646 */ break; case 477: -#line 2614 "./util/configparser.y" /* yacc.c:1646 */ +#line 2613 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5623,19 +5622,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5627 "util/configparser.c" /* yacc.c:1646 */ +#line 5626 "util/configparser.c" /* yacc.c:1646 */ break; case 478: -#line 2623 "./util/configparser.y" /* yacc.c:1646 */ +#line 2622 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 5635 "util/configparser.c" /* yacc.c:1646 */ +#line 5634 "util/configparser.c" /* yacc.c:1646 */ break; case 489: -#line 2634 "./util/configparser.y" /* yacc.c:1646 */ +#line 2633 "./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) @@ -5644,11 +5643,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5648 "util/configparser.c" /* yacc.c:1646 */ +#line 5647 "util/configparser.c" /* yacc.c:1646 */ break; case 490: -#line 2644 "./util/configparser.y" /* yacc.c:1646 */ +#line 2643 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5656,79 +5655,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5660 "util/configparser.c" /* yacc.c:1646 */ +#line 5659 "util/configparser.c" /* yacc.c:1646 */ break; case 491: -#line 2653 "./util/configparser.y" /* yacc.c:1646 */ +#line 2652 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5670 "util/configparser.c" /* yacc.c:1646 */ +#line 5669 "util/configparser.c" /* yacc.c:1646 */ break; case 492: -#line 2660 "./util/configparser.y" /* yacc.c:1646 */ +#line 2659 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5680 "util/configparser.c" /* yacc.c:1646 */ +#line 5679 "util/configparser.c" /* yacc.c:1646 */ break; case 493: -#line 2667 "./util/configparser.y" /* yacc.c:1646 */ +#line 2666 "./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 5690 "util/configparser.c" /* yacc.c:1646 */ +#line 5689 "util/configparser.c" /* yacc.c:1646 */ break; case 494: -#line 2674 "./util/configparser.y" /* yacc.c:1646 */ +#line 2673 "./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 5700 "util/configparser.c" /* yacc.c:1646 */ +#line 5699 "util/configparser.c" /* yacc.c:1646 */ break; case 495: -#line 2681 "./util/configparser.y" /* yacc.c:1646 */ +#line 2680 "./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 5710 "util/configparser.c" /* yacc.c:1646 */ +#line 5709 "util/configparser.c" /* yacc.c:1646 */ break; case 496: -#line 2688 "./util/configparser.y" /* yacc.c:1646 */ +#line 2687 "./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 5720 "util/configparser.c" /* yacc.c:1646 */ +#line 5719 "util/configparser.c" /* yacc.c:1646 */ break; case 497: -#line 2695 "./util/configparser.y" /* yacc.c:1646 */ +#line 2694 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 5728 "util/configparser.c" /* yacc.c:1646 */ +#line 5727 "util/configparser.c" /* yacc.c:1646 */ break; case 512: -#line 2712 "./util/configparser.y" /* yacc.c:1646 */ +#line 2711 "./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) @@ -5736,21 +5735,21 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5740 "util/configparser.c" /* yacc.c:1646 */ +#line 5739 "util/configparser.c" /* yacc.c:1646 */ break; case 513: -#line 2721 "./util/configparser.y" /* yacc.c:1646 */ +#line 2720 "./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 5750 "util/configparser.c" /* yacc.c:1646 */ +#line 5749 "util/configparser.c" /* yacc.c:1646 */ break; case 514: -#line 2728 "./util/configparser.y" /* yacc.c:1646 */ +#line 2727 "./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) @@ -5758,11 +5757,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5762 "util/configparser.c" /* yacc.c:1646 */ +#line 5761 "util/configparser.c" /* yacc.c:1646 */ break; case 515: -#line 2737 "./util/configparser.y" /* yacc.c:1646 */ +#line 2736 "./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) @@ -5770,31 +5769,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5774 "util/configparser.c" /* yacc.c:1646 */ +#line 5773 "util/configparser.c" /* yacc.c:1646 */ break; case 516: -#line 2746 "./util/configparser.y" /* yacc.c:1646 */ +#line 2745 "./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 5784 "util/configparser.c" /* yacc.c:1646 */ +#line 5783 "util/configparser.c" /* yacc.c:1646 */ break; case 517: -#line 2753 "./util/configparser.y" /* yacc.c:1646 */ +#line 2752 "./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 5794 "util/configparser.c" /* yacc.c:1646 */ +#line 5793 "util/configparser.c" /* yacc.c:1646 */ break; case 518: -#line 2760 "./util/configparser.y" /* yacc.c:1646 */ +#line 2759 "./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) @@ -5803,11 +5802,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5807 "util/configparser.c" /* yacc.c:1646 */ +#line 5806 "util/configparser.c" /* yacc.c:1646 */ break; case 519: -#line 2770 "./util/configparser.y" /* yacc.c:1646 */ +#line 2769 "./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) @@ -5816,11 +5815,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5820 "util/configparser.c" /* yacc.c:1646 */ +#line 5819 "util/configparser.c" /* yacc.c:1646 */ break; case 520: -#line 2780 "./util/configparser.y" /* yacc.c:1646 */ +#line 2779 "./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) @@ -5829,11 +5828,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5833 "util/configparser.c" /* yacc.c:1646 */ +#line 5832 "util/configparser.c" /* yacc.c:1646 */ break; case 521: -#line 2790 "./util/configparser.y" /* yacc.c:1646 */ +#line 2789 "./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) @@ -5842,11 +5841,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5846 "util/configparser.c" /* yacc.c:1646 */ +#line 5845 "util/configparser.c" /* yacc.c:1646 */ break; case 522: -#line 2800 "./util/configparser.y" /* yacc.c:1646 */ +#line 2799 "./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) @@ -5855,11 +5854,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5859 "util/configparser.c" /* yacc.c:1646 */ +#line 5858 "util/configparser.c" /* yacc.c:1646 */ break; case 523: -#line 2810 "./util/configparser.y" /* yacc.c:1646 */ +#line 2809 "./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) @@ -5868,29 +5867,29 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5872 "util/configparser.c" /* yacc.c:1646 */ +#line 5871 "util/configparser.c" /* yacc.c:1646 */ break; case 524: -#line 2820 "./util/configparser.y" /* yacc.c:1646 */ +#line 2819 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 5880 "util/configparser.c" /* yacc.c:1646 */ +#line 5879 "util/configparser.c" /* yacc.c:1646 */ break; case 528: -#line 2829 "./util/configparser.y" /* yacc.c:1646 */ +#line 2828 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5890 "util/configparser.c" /* yacc.c:1646 */ +#line 5889 "util/configparser.c" /* yacc.c:1646 */ break; case 529: -#line 2835 "./util/configparser.y" /* yacc.c:1646 */ +#line 2834 "./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) @@ -5899,21 +5898,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5903 "util/configparser.c" /* yacc.c:1646 */ +#line 5902 "util/configparser.c" /* yacc.c:1646 */ break; case 530: -#line 2845 "./util/configparser.y" /* yacc.c:1646 */ +#line 2844 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 5913 "util/configparser.c" /* yacc.c:1646 */ +#line 5912 "util/configparser.c" /* yacc.c:1646 */ break; case 531: -#line 2852 "./util/configparser.y" /* yacc.c:1646 */ +#line 2851 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5921,30 +5920,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 5925 "util/configparser.c" /* yacc.c:1646 */ +#line 5924 "util/configparser.c" /* yacc.c:1646 */ break; case 532: -#line 2861 "./util/configparser.y" /* yacc.c:1646 */ +#line 2860 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5936 "util/configparser.c" /* yacc.c:1646 */ +#line 5935 "util/configparser.c" /* yacc.c:1646 */ break; case 533: -#line 2869 "./util/configparser.y" /* yacc.c:1646 */ +#line 2868 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnscrypt:)\n")); } -#line 5944 "util/configparser.c" /* yacc.c:1646 */ +#line 5943 "util/configparser.c" /* yacc.c:1646 */ break; case 546: -#line 2885 "./util/configparser.y" /* yacc.c:1646 */ +#line 2884 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5952,11 +5951,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5956 "util/configparser.c" /* yacc.c:1646 */ +#line 5955 "util/configparser.c" /* yacc.c:1646 */ break; case 547: -#line 2895 "./util/configparser.y" /* yacc.c:1646 */ +#line 2894 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5964,21 +5963,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5968 "util/configparser.c" /* yacc.c:1646 */ +#line 5967 "util/configparser.c" /* yacc.c:1646 */ break; case 548: -#line 2904 "./util/configparser.y" /* yacc.c:1646 */ +#line 2903 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 5978 "util/configparser.c" /* yacc.c:1646 */ +#line 5977 "util/configparser.c" /* yacc.c:1646 */ break; case 549: -#line 2911 "./util/configparser.y" /* yacc.c:1646 */ +#line 2910 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -5986,21 +5985,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 5990 "util/configparser.c" /* yacc.c:1646 */ +#line 5989 "util/configparser.c" /* yacc.c:1646 */ break; case 550: -#line 2920 "./util/configparser.y" /* yacc.c:1646 */ +#line 2919 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6000 "util/configparser.c" /* yacc.c:1646 */ +#line 5999 "util/configparser.c" /* yacc.c:1646 */ break; case 551: -#line 2927 "./util/configparser.y" /* yacc.c:1646 */ +#line 2926 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6008,22 +6007,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6012 "util/configparser.c" /* yacc.c:1646 */ +#line 6011 "util/configparser.c" /* yacc.c:1646 */ break; case 552: -#line 2936 "./util/configparser.y" /* yacc.c:1646 */ +#line 2935 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6023 "util/configparser.c" /* yacc.c:1646 */ +#line 6022 "util/configparser.c" /* yacc.c:1646 */ break; case 553: -#line 2944 "./util/configparser.y" /* yacc.c:1646 */ +#line 2943 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6035,22 +6034,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6039 "util/configparser.c" /* yacc.c:1646 */ +#line 6038 "util/configparser.c" /* yacc.c:1646 */ break; case 554: -#line 2957 "./util/configparser.y" /* yacc.c:1646 */ +#line 2956 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6050 "util/configparser.c" /* yacc.c:1646 */ +#line 6049 "util/configparser.c" /* yacc.c:1646 */ break; case 555: -#line 2965 "./util/configparser.y" /* yacc.c:1646 */ +#line 2964 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6062,19 +6061,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6066 "util/configparser.c" /* yacc.c:1646 */ +#line 6065 "util/configparser.c" /* yacc.c:1646 */ break; case 556: -#line 2978 "./util/configparser.y" /* yacc.c:1646 */ +#line 2977 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(cachedb:)\n")); } -#line 6074 "util/configparser.c" /* yacc.c:1646 */ +#line 6073 "util/configparser.c" /* yacc.c:1646 */ break; case 564: -#line 2988 "./util/configparser.y" /* yacc.c:1646 */ +#line 2987 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6088,11 +6087,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6092 "util/configparser.c" /* yacc.c:1646 */ +#line 6091 "util/configparser.c" /* yacc.c:1646 */ break; case 565: -#line 3003 "./util/configparser.y" /* yacc.c:1646 */ +#line 3002 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6106,11 +6105,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6110 "util/configparser.c" /* yacc.c:1646 */ +#line 6109 "util/configparser.c" /* yacc.c:1646 */ break; case 566: -#line 3018 "./util/configparser.y" /* yacc.c:1646 */ +#line 3017 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6121,11 +6120,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6125 "util/configparser.c" /* yacc.c:1646 */ +#line 6124 "util/configparser.c" /* yacc.c:1646 */ break; case 567: -#line 3030 "./util/configparser.y" /* yacc.c:1646 */ +#line 3029 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6139,11 +6138,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6143 "util/configparser.c" /* yacc.c:1646 */ +#line 6142 "util/configparser.c" /* yacc.c:1646 */ break; case 568: -#line 3045 "./util/configparser.y" /* yacc.c:1646 */ +#line 3044 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6155,11 +6154,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6159 "util/configparser.c" /* yacc.c:1646 */ +#line 6158 "util/configparser.c" /* yacc.c:1646 */ break; case 569: -#line 3058 "./util/configparser.y" /* yacc.c:1646 */ +#line 3057 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6169,19 +6168,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6173 "util/configparser.c" /* yacc.c:1646 */ +#line 6172 "util/configparser.c" /* yacc.c:1646 */ break; case 570: -#line 3069 "./util/configparser.y" /* yacc.c:1646 */ +#line 3068 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(ipset:)\n")); } -#line 6181 "util/configparser.c" /* yacc.c:1646 */ +#line 6180 "util/configparser.c" /* yacc.c:1646 */ break; case 575: -#line 3078 "./util/configparser.y" /* yacc.c:1646 */ +#line 3077 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6195,11 +6194,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6199 "util/configparser.c" /* yacc.c:1646 */ +#line 6198 "util/configparser.c" /* yacc.c:1646 */ break; case 576: -#line 3093 "./util/configparser.y" /* yacc.c:1646 */ +#line 3092 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6213,11 +6212,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6217 "util/configparser.c" /* yacc.c:1646 */ +#line 6216 "util/configparser.c" /* yacc.c:1646 */ break; -#line 6221 "util/configparser.c" /* yacc.c:1646 */ +#line 6220 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -6445,7 +6444,7 @@ yyreturn: #endif return yyresult; } -#line 3107 "./util/configparser.y" /* yacc.c:1906 */ +#line 3106 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.y b/util/configparser.y index b64147ed4..589caa195 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -351,10 +351,9 @@ content_auth: auth_name | auth_zonefile | auth_master | auth_url | rpz_tag: VAR_TAGS STRING_ARG { - size_t len; uint8_t* bitlist; + size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", $2)); - len = 0; bitlist = config_parse_taglist(cfg_parser->cfg, $2, &len); free($2); @@ -376,7 +375,7 @@ rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG strcmp($2, "passthru")!=0 && strcmp($2, "drop")!=0 && strcmp($2, "cname")!=0 && strcmp($2, "disabled")!=0) { yyerror("rpz-action-override action: expected nxdomain, " - "nodata, passthru, drop cname or disabled"); + "nodata, passthru, drop, cname or disabled"); free($2); cfg_parser->cfg->auths->rpz_action_override = NULL; } diff --git a/util/data/dname.c b/util/data/dname.c index f025bf699..366d7a3f5 100644 --- a/util/data/dname.c +++ b/util/data/dname.c @@ -550,12 +550,8 @@ int dname_has_label(uint8_t* dname, uint8_t* label) { uint8_t lablen = *dname++; - while(lablen) { - if(*label == lablen && memcmp(dname, label+1, lablen) == 0) - return 1; - dname += lablen; - lablen = *dname++; - } + if(memlowercmp(dname, label, lablen) == 0) + return 1; return 0; } diff --git a/util/net_help.h b/util/net_help.h index 7a7437757..c7216817f 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -473,6 +473,9 @@ void listen_sslctx_delete_ticket_keys(void); /** * RPZ format netblock to network byte order address and netblock + * example RPZ netblock format dnames: + * - 24.10.100.51.198.rpz-ip -> 198.51.100.10/24 + * - 32.10.zz.db8.2001.rpz-ip -> 2001:db8:0:0:0:0:0:10/32 * @param dname: the dname containing RPZ format netblock * @param addr: where to store sockaddr. * @param addrlen: length of stored sockaddr is returned.