From: Ralph Dolmans Date: Thu, 25 Apr 2019 12:46:45 +0000 (+0200) Subject: - IXFR/AXFR support for RPZ X-Git-Tag: release-1.10.0rc1~28^2~28^2~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ba67920f9ac18c06f60a0952b933801105f3f4e6;p=thirdparty%2Funbound.git - IXFR/AXFR support for RPZ --- diff --git a/services/authzone.c b/services/authzone.c index aad6028e6..ae21f3f72 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -674,23 +674,6 @@ domain_remove_rrset(struct auth_data* node, uint16_t rr_type) } } -/** find an rr index in the rrset. returns true if found */ -static int -az_rrset_find_rr(struct packed_rrset_data* d, uint8_t* rdata, size_t len, - size_t* index) -{ - size_t i; - for(i=0; icount; i++) { - if(d->rr_len[i] != len) - continue; - if(memcmp(d->rr_data[i], rdata, len) == 0) { - *index = i; - return 1; - } - } - return 0; -} - /** find an rrsig index in the rrset. returns true if found */ static int az_rrset_find_rrsig(struct packed_rrset_data* d, uint8_t* rdata, size_t len, @@ -740,58 +723,10 @@ rrsig_rdata_get_type_covered(uint8_t* rdata, size_t rdatalen) static int rrset_remove_rr(struct auth_rrset* rrset, size_t index) { - struct packed_rrset_data* d, *old = rrset->data; - size_t i; - if(index >= old->count + old->rrsig_count) - return 0; /* index out of bounds */ - d = (struct packed_rrset_data*)calloc(1, packed_rrset_sizeof(old) - ( - sizeof(size_t) + sizeof(uint8_t*) + sizeof(time_t) + - old->rr_len[index])); - if(!d) { - log_err("malloc failure"); + struct packed_rrset_data* d = + packed_rrset_remove_rr(rrset->data, index, NULL); + if(!d) return 0; - } - d->ttl = old->ttl; - d->count = old->count; - d->rrsig_count = old->rrsig_count; - if(index < d->count) d->count--; - else d->rrsig_count--; - d->trust = old->trust; - d->security = old->security; - - /* set rr_len, needed for ptr_fixup */ - d->rr_len = (size_t*)((uint8_t*)d + - sizeof(struct packed_rrset_data)); - if(index > 0) - memmove(d->rr_len, old->rr_len, (index)*sizeof(size_t)); - if(index+1 < old->count+old->rrsig_count) - memmove(&d->rr_len[index], &old->rr_len[index+1], - (old->count+old->rrsig_count - (index+1))*sizeof(size_t)); - packed_rrset_ptr_fixup(d); - - /* move over ttls */ - if(index > 0) - memmove(d->rr_ttl, old->rr_ttl, (index)*sizeof(time_t)); - if(index+1 < old->count+old->rrsig_count) - memmove(&d->rr_ttl[index], &old->rr_ttl[index+1], - (old->count+old->rrsig_count - (index+1))*sizeof(time_t)); - - /* move over rr_data */ - for(i=0; icount+d->rrsig_count; i++) { - size_t oldi; - if(i < index) oldi = i; - else oldi = i+1; - memmove(d->rr_data[i], old->rr_data[oldi], d->rr_len[i]); - } - - /* recalc ttl (lowest of remaining RR ttls) */ - if(d->count + d->rrsig_count > 0) - d->ttl = d->rr_ttl[0]; - for(i=0; icount+d->rrsig_count; i++) { - if(d->rr_ttl[i] < d->ttl) - d->ttl = d->rr_ttl[i]; - } - free(rrset->data); rrset->data = d; return 1; @@ -1210,7 +1145,7 @@ az_domain_remove_rr(struct auth_data* node, uint16_t rr_type, /* find the plain RR of the given type */ if((rrset=az_domain_rrset(node, rr_type))!= NULL) { - if(az_rrset_find_rr(rrset->data, rdata, rdatalen, &index)) { + if(packed_rrset_find_rr(rrset->data, rdata, rdatalen, &index)) { if(rrset->data->count == 1 && rrset->data->rrsig_count == 0) { /* last RR, delete the rrset */ diff --git a/services/localzone.c b/services/localzone.c index 337dcb4d6..fda2b31eb 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -394,9 +394,8 @@ rrset_insert_rr(struct regional* region, struct packed_rrset_data* pd, return 1; } -/** find a data node by exact name */ -static struct local_data* -lz_find_node(struct local_zone* z, uint8_t* nm, size_t nmlen, int nmlabs) +struct local_data* +local_zone_find_data(struct local_zone* z, uint8_t* nm, size_t nmlen, int nmlabs) { struct local_data key; key.node.key = &key; @@ -411,7 +410,7 @@ static int lz_find_create_node(struct local_zone* z, uint8_t* nm, size_t nmlen, int nmlabs, struct local_data** res) { - struct local_data* ld = lz_find_node(z, nm, nmlen, nmlabs); + struct local_data* ld = local_zone_find_data(z, nm, nmlen, nmlabs); if(!ld) { /* create a domain name to store rr. */ ld = (struct local_data*)regional_alloc_zero(z->region, @@ -1395,6 +1394,7 @@ local_data_answer(struct local_zone* z, struct module_env* env, regional_alloc_init(temp, lr->rrset, sizeof(*lr->rrset)); if(!qinfo->local_alias->rrset) return 0; /* out of memory */ + /* TODO local_alias->rrset change cnam etarget */ qinfo->local_alias->rrset->rk.dname = qinfo->qname; qinfo->local_alias->rrset->rk.dname_len = qinfo->qname_len; return 1; @@ -1861,7 +1861,7 @@ del_empty_term(struct local_zone* z, struct local_data* d, return; dname_remove_label(&name, &len); labs--; - d = lz_find_node(z, name, len, labs); + d = local_zone_find_data(z, name, len, labs); } } @@ -1894,7 +1894,7 @@ void local_zones_del_data(struct local_zones* zones, z = local_zones_lookup(zones, name, len, labs, dclass, LDNS_RR_TYPE_DS); if(z) { lock_rw_wrlock(&z->lock); - d = lz_find_node(z, name, len, labs); + d = local_zone_find_data(z, name, len, labs); if(d) { del_local_rrset(d, LDNS_RR_TYPE_DS); del_empty_term(z, d, name, len, labs); @@ -1915,7 +1915,7 @@ void local_zones_del_data(struct local_zones* zones, lock_rw_unlock(&zones->lock); /* find the domain */ - d = lz_find_node(z, name, len, labs); + d = local_zone_find_data(z, name, len, labs); if(d) { /* no memory recycling for zone deletions ... */ d->rrsets = NULL; diff --git a/services/localzone.h b/services/localzone.h index 96d67dbf3..d8dfa0145 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -567,4 +567,15 @@ 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, uint8_t* rdata, size_t rdata_len, const char* rrstr); + +/** + * Find a data node by exact name for a local zone + * @param z: local_zone containing data tree + * @param nm: name of local-data element to find + * @param nmlen: length of nm + * @param nmlabs: labs of nm + * @return local_data on exact match, NULL otherwise. + */ +struct local_data* +local_zone_find_data(struct local_zone* z, uint8_t* nm, size_t nmlen, int nmlabs); #endif /* SERVICES_LOCALZONE_H */ diff --git a/services/rpz.c b/services/rpz.c index 0b6c8df0d..ff9cf7e41 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -295,6 +295,8 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, /* insert data. TODO synth wildcard cname target on * lookup */ rrstr = sldns_wire2str_rr(rr, rr_len); + /* TODO non region alloc so rrs can be free after IXFR deletion? + * */ local_zone_enter_rr(z, dname, dnamelen, dnamelabs, rrtype, rrclass, ttl, rdata, rdata_len, rrstr); free(rrstr); @@ -333,33 +335,17 @@ rpz_insert_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, } } -void -rpz_remove_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, - size_t dnamelen, uint16_t rr_type, uint16_t rr_class, uint8_t* rdatawl, - size_t rdatalen, uint8_t* rr, size_t rr_len) -{ - /* TODO: remove RR, used for IXFR */ - /* void cast all to prevent compiler warning */ - (void)r; - (void)aznamelen; - (void)dname; - (void)dnamelen; - (void)rr_type; - (void)rr_class; - (void)rdatawl; - (void)rdatalen; - (void)rr; - (void)rr_len; -} - /** * Find RPZ local-zone by qname. * @param r: rpz containing local-zone tree * @param qinfo: qinfo struct - * @return: NULL or local-zone holding rd lock + * @param only_exact: if 1 only excact (non wildcard) matches are returned + * @param wr: get write lock for local-zone if 1, read lock if 0 + * @return: NULL or local-zone holding rd or wr lock */ static struct local_zone* -rpz_find_zone(struct rpz* r, struct query_info* qinfo) +rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, + int only_exact, int wr) { uint8_t* ce; size_t ce_len, ce_labs; @@ -367,14 +353,17 @@ rpz_find_zone(struct rpz* r, struct query_info* qinfo) int exact; struct local_zone* z = NULL; lock_rw_rdlock(&r->local_zones->lock); - z = local_zones_find_le(r->local_zones, qinfo->qname, - qinfo->qname_len, dname_count_labels(qinfo->qname), + z = local_zones_find_le(r->local_zones, qname, qname_len, + dname_count_labels(qname), LDNS_RR_CLASS_IN, &exact); - if(!z) { + if(!z || (only_exact && !exact)) { lock_rw_unlock(&r->local_zones->lock); return NULL; } - lock_rw_rdlock(&z->lock); + if(wr) + lock_rw_wrlock(&z->lock); + else + lock_rw_rdlock(&z->lock); lock_rw_unlock(&r->local_zones->lock); if(exact) @@ -384,7 +373,7 @@ rpz_find_zone(struct rpz* r, struct query_info* qinfo) * be the shared parent between the qname and the best local * zone match, append '*' to that and do another lookup. */ - ce = dname_get_shared_topdomain(z->name, qinfo->qname); + ce = dname_get_shared_topdomain(z->name, qname); if(!ce /* should not happen */ || !*ce /* root */) { lock_rw_unlock(&z->lock); return NULL; @@ -401,16 +390,117 @@ rpz_find_zone(struct rpz* r, struct query_info* qinfo) lock_rw_rdlock(&r->local_zones->lock); z = local_zones_find_le(r->local_zones, wc, - ce_len+2, ce_labs+1, qinfo->qclass, &exact); + ce_len+2, ce_labs+1, qclass, &exact); if(!z || !exact) { lock_rw_unlock(&r->local_zones->lock); return NULL; } - lock_rw_rdlock(&z->lock); + if(wr) + lock_rw_wrlock(&z->lock); + else + lock_rw_rdlock(&z->lock); lock_rw_unlock(&r->local_zones->lock); return z; } +/** + * Remove RR from RPZ's local-data + * @param z: local-zone for RPZ, holding write lock + * @param policydname: dname of RR to remove + * @param policydnamelen: lenth of policydname + * @param rr_type: RR type of RR to remove + * @param rdata: rdata of RR to remove + * @param rdatalen: length of rdata + * @return: 1 if zone must be removed after RR deletion + */ +static int +rpz_data_delete_rr(struct local_zone* z, uint8_t* policydname, + size_t policydnamelen, uint16_t rr_type, uint8_t* rdata, + size_t rdatalen) +{ + struct local_data* ld; + struct packed_rrset_data* d; + size_t index; + ld = local_zone_find_data(z, policydname, policydnamelen, + dname_count_labels(policydname)); + if(ld) { + struct local_rrset* prev=NULL, *p=ld->rrsets; + while(p && ntohs(p->rrset->rk.type) != rr_type) { + prev = p; + p = p->next; + } + if(!p) + return 0; + d = (struct packed_rrset_data*)p->rrset->entry.data; + if(packed_rrset_find_rr(d, rdata, rdatalen, &index)) { + if(d->count == 1) { + /* no memory recycling for zone deletions ... */ + if(prev) prev->next = p->next; + else ld->rrsets = p->next; + + } + if(d->count > 1) { + struct packed_rrset_data* new; + new = packed_rrset_remove_rr(d, index, z->region); + if(!new) + return 0; + p->rrset->entry.data = new; + } + } + } + if(ld && ld->rrsets) + return 0; + return 1; +} + +void +rpz_remove_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, + size_t dnamelen, uint16_t rr_type, uint16_t rr_class, uint8_t* rdatawl, + size_t rdatalen, uint8_t* rr, size_t rr_len) +{ + struct local_zone* z; + 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; + int delete_zone = 1; + + (void)rr; + (void)rr_len; + + a = rpz_rr_to_action(rr_type, rdatawl, rdatalen); + if(!(policydnamelen = strip_dname_origin(dname, dnamelen, aznamelen, + policydname))) { + free(policydname); + return; + } + t = rpz_dname_to_trigger(policydname); + if(t == RPZ_QNAME_TRIGGER) { + z = rpz_find_zone(r, policydname, policydnamelen, rr_class, + 1 /* only exact */, 1 /* wr lock */); + if(!z) { + verbose(VERB_ALGO, "RPZ: cannot remove RR from IXFR, " + "RPZ domain not found"); + free(policydname); + return; + } + if(a == RPZ_LOCAL_DATA_ACTION) + delete_zone = rpz_data_delete_rr(z, policydname, + policydnamelen, rr_type, rdatawl, rdatalen); + lock_rw_unlock(&z->lock); + if(delete_zone) { + local_zones_del_zone(r->local_zones, z); + } + } + else { + verbose(VERB_ALGO, "RPZ: skipping unusupported trigger: %s " + "while removing RPZ RRs", + rpz_trigger_to_string(t)); + } + free(policydname); +} + /** print log information for an applied RPZ policy. Based on local-zone's * lz_inform_print(). */ @@ -442,7 +532,8 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, for(r = az->rpz_first; r && !z; r = r->next) { if(!r->taglist || taglist_intersect(r->taglist, r->taglistlen, taglist, taglen)) - z = rpz_find_zone(r, qinfo); + z = rpz_find_zone(r, qinfo->qname, qinfo->qname_len, + qinfo->qclass, 0, 0); } lock_rw_unlock(&az->rpz_lock); if(!z) @@ -457,9 +548,8 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, ret = local_zones_zone_answer(z, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, z->type); + rpz_inform_print(z, qinfo, repinfo); lock_rw_unlock(&z->lock); - if(ret) - rpz_inform_print(z, qinfo, repinfo); return ret; } diff --git a/util/configparser.c b/util/configparser.c index e19e3f8e8..e380c9639 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -930,16 +930,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 565 +#define YYLAST 571 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 269 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 290 /* YYNRULES -- Number of rules. */ -#define YYNRULES 557 +#define YYNRULES 560 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 832 +#define YYNSTATES 835 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -1037,37 +1037,38 @@ static const yytype_uint16 yyrline[] = 303, 303, 303, 303, 304, 304, 306, 320, 321, 322, 322, 322, 322, 323, 323, 323, 325, 342, 343, 344, 344, 344, 344, 345, 345, 345, 346, 349, 368, 385, - 386, 387, 387, 387, 389, 398, 407, 418, 427, 436, - 445, 456, 465, 476, 489, 504, 515, 532, 549, 566, - 583, 598, 613, 626, 641, 650, 659, 668, 677, 686, - 695, 704, 713, 722, 731, 740, 749, 758, 771, 780, - 793, 802, 811, 820, 827, 834, 843, 850, 859, 867, - 874, 881, 889, 898, 907, 921, 930, 939, 948, 957, - 966, 975, 982, 989, 1015, 1023, 1030, 1037, 1044, 1051, - 1059, 1067, 1075, 1082, 1093, 1104, 1111, 1120, 1129, 1138, - 1145, 1152, 1160, 1168, 1178, 1188, 1198, 1206, 1219, 1230, - 1238, 1251, 1260, 1269, 1278, 1288, 1298, 1306, 1319, 1328, - 1336, 1345, 1353, 1366, 1375, 1382, 1392, 1402, 1412, 1422, - 1432, 1442, 1452, 1462, 1469, 1476, 1483, 1492, 1501, 1510, - 1519, 1526, 1536, 1556, 1563, 1581, 1594, 1607, 1616, 1625, - 1634, 1643, 1653, 1663, 1674, 1683, 1692, 1701, 1710, 1723, - 1736, 1745, 1752, 1761, 1770, 1779, 1788, 1796, 1809, 1817, - 1850, 1857, 1872, 1882, 1892, 1899, 1906, 1913, 1922, 1930, - 1944, 1965, 1986, 1998, 2010, 2022, 2031, 2052, 2062, 2071, - 2079, 2087, 2100, 2113, 2128, 2143, 2152, 2161, 2167, 2176, - 2185, 2195, 2205, 2218, 2231, 2243, 2257, 2269, 2283, 2293, - 2300, 2307, 2316, 2325, 2335, 2345, 2355, 2362, 2369, 2378, - 2387, 2397, 2407, 2414, 2421, 2428, 2436, 2446, 2456, 2466, - 2476, 2508, 2518, 2526, 2534, 2549, 2558, 2563, 2564, 2565, - 2565, 2565, 2566, 2566, 2566, 2567, 2567, 2569, 2579, 2588, - 2595, 2602, 2609, 2616, 2623, 2630, 2635, 2636, 2637, 2637, - 2638, 2638, 2639, 2639, 2640, 2641, 2642, 2643, 2644, 2645, - 2647, 2656, 2663, 2672, 2681, 2688, 2695, 2705, 2715, 2725, - 2735, 2745, 2755, 2760, 2761, 2762, 2764, 2770, 2780, 2787, - 2796, 2804, 2809, 2810, 2812, 2812, 2812, 2813, 2813, 2814, - 2815, 2816, 2817, 2818, 2820, 2830, 2839, 2846, 2855, 2862, - 2871, 2879, 2892, 2900, 2913, 2918, 2919, 2920, 2920, 2921, - 2921, 2921, 2923, 2938, 2953, 2965, 2980, 2993 + 386, 387, 387, 387, 387, 387, 388, 390, 399, 408, + 419, 428, 437, 446, 457, 466, 477, 490, 505, 516, + 533, 550, 567, 584, 599, 614, 627, 642, 651, 660, + 669, 678, 687, 696, 705, 714, 723, 732, 741, 750, + 759, 772, 781, 794, 803, 812, 821, 828, 835, 844, + 851, 860, 868, 875, 882, 890, 899, 908, 922, 931, + 940, 949, 958, 967, 976, 983, 990, 1016, 1024, 1031, + 1038, 1045, 1052, 1060, 1068, 1076, 1083, 1094, 1105, 1112, + 1121, 1130, 1139, 1146, 1153, 1161, 1169, 1179, 1189, 1199, + 1207, 1220, 1231, 1239, 1252, 1261, 1270, 1279, 1289, 1299, + 1307, 1320, 1329, 1337, 1346, 1354, 1367, 1376, 1383, 1393, + 1403, 1413, 1423, 1433, 1443, 1453, 1463, 1470, 1477, 1484, + 1493, 1502, 1511, 1520, 1527, 1537, 1557, 1564, 1582, 1595, + 1608, 1617, 1626, 1635, 1644, 1654, 1664, 1675, 1684, 1693, + 1702, 1711, 1724, 1737, 1746, 1753, 1762, 1771, 1780, 1789, + 1797, 1810, 1818, 1851, 1858, 1873, 1883, 1893, 1900, 1907, + 1914, 1923, 1931, 1945, 1966, 1987, 1999, 2011, 2023, 2032, + 2053, 2063, 2072, 2080, 2088, 2101, 2114, 2129, 2144, 2153, + 2162, 2168, 2177, 2186, 2196, 2206, 2219, 2232, 2244, 2258, + 2270, 2284, 2294, 2301, 2308, 2317, 2326, 2336, 2346, 2356, + 2363, 2370, 2379, 2388, 2398, 2408, 2415, 2422, 2429, 2437, + 2447, 2457, 2467, 2477, 2509, 2519, 2527, 2535, 2550, 2559, + 2564, 2565, 2566, 2566, 2566, 2567, 2567, 2567, 2568, 2568, + 2570, 2580, 2589, 2596, 2603, 2610, 2617, 2624, 2631, 2636, + 2637, 2638, 2638, 2639, 2639, 2640, 2640, 2641, 2642, 2643, + 2644, 2645, 2646, 2648, 2657, 2664, 2673, 2682, 2689, 2696, + 2706, 2716, 2726, 2736, 2746, 2756, 2761, 2762, 2763, 2765, + 2771, 2781, 2788, 2797, 2805, 2810, 2811, 2813, 2813, 2813, + 2814, 2814, 2815, 2816, 2817, 2818, 2819, 2821, 2831, 2840, + 2847, 2856, 2863, 2872, 2880, 2893, 2901, 2914, 2919, 2920, + 2921, 2921, 2922, 2922, 2922, 2924, 2939, 2954, 2966, 2981, + 2994 }; #endif @@ -1347,8 +1348,8 @@ static const yytype_int16 yypact[] = -192, 0, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, 256, -42, -37, -38, - -35, -41, -44, -136, -104, -191, -177, -1, 2, 3, - 28, 29, 30, 33, 35, 36, 37, 38, 39, 55, + -23, -41, -62, -131, -104, -168, -191, -2, -1, 2, + 3, 6, 7, 8, 9, 33, 51, 52, 53, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 90, @@ -1361,12 +1362,12 @@ static const yytype_int16 yypact[] = 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 194, 195, 196, 198, 204, - 205, 207, 211, 212, 213, 214, 215, 216, 218, 219, - 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, - 231, 232, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 289, 290, -192, -192, -192, -192, + 187, 188, 189, 190, 191, 196, 197, 198, 199, 200, + 201, 202, 204, 205, 207, 216, 218, 219, 220, 222, + 223, 224, 226, 227, 228, 229, 230, 231, 232, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 289, 290, 291, 292, 296, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, @@ -1385,49 +1386,49 @@ static const yytype_int16 yypact[] = -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, -192, -192, -192, -192, -192, 291, 292, 296, 297, - 298, 340, 341, -192, -192, -192, -192, -192, -192, -192, - -192, 342, 343, 344, 345, 346, 347, -192, -192, -192, - -192, -192, -192, -192, 348, 352, 356, 357, 382, 383, - 384, -192, -192, -192, -192, -192, -192, -192, -192, 386, - 397, 398, 399, 400, 401, 402, 403, -192, -192, -192, - -192, -192, -192, -192, -192, -192, 404, -192, -192, -192, - -192, 405, 406, 407, 408, 409, 448, 450, 464, -192, - -192, -192, -192, -192, -192, -192, -192, -192, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 474, 481, 482, + -192, -192, -192, -192, -192, -192, 297, 298, 340, 341, + 342, 343, 344, -192, -192, -192, -192, -192, -192, -192, + -192, 345, 346, 347, 348, 352, 356, -192, -192, -192, + -192, -192, -192, -192, 357, 382, 383, 384, 386, 397, + 398, -192, -192, -192, -192, -192, -192, -192, -192, 399, + 400, 401, 402, 403, 404, 405, 406, -192, -192, -192, + -192, -192, -192, -192, -192, -192, 407, -192, -192, -192, + -192, -192, -192, -192, 408, 409, 448, 450, 464, 465, + 466, 467, -192, -192, -192, -192, -192, -192, -192, -192, + -192, 468, 469, 470, 471, 472, 473, 474, 481, 482, + 483, 484, 485, -192, -192, -192, -192, -192, -192, -192, + -192, -192, -192, -192, -192, -192, 486, -192, -192, 488, + 489, 490, 491, 492, 493, 494, 497, 500, 503, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, -192, -192, 483, -192, -192, 484, 485, 486, 488, - 489, 490, 491, 492, 493, 494, -192, -192, -192, -192, - -192, -192, -192, -192, -192, -192, -192, 497, 500, 503, - 504, 513, -192, -192, -192, -192, -192, -192, -192, -192, + 504, 513, 514, 515, 516, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, -192, -192, -192, -192, -192, -192, 514, 515, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, + 517, 518, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, -192, -192, -192, 516, 517, 518, -192, -192, -192, - -192, -192, -192, -192, -192, -192, 519, 520, -192, -192, + -192, -192, -192, -192, -192, -192, -192, 519, 520, 521, + -192, -192, -192, -192, -192, -192, -192, -192, -192, 522, + 523, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, -192, -192, -192, -192, -192, -192, 521, 522, 523, - 524, 525, 526, -192, -192, -192, -192, -192, -192, -192, + 524, 525, 526, 527, 528, 529, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, -192, -192, -192, -192, -192, -192, -192, 527, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, + -192, 530, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, 528, -192, -192, 529, 530, -192, -192, -192, -192, + -192, -192, -192, -192, 531, -192, -192, 532, 533, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, 531, 532, 533, -192, -192, -192, -192, -192, -192, - -192, -192 + -192, -192, -192, -192, 534, 535, 536, -192, -192, -192, + -192, -192, -192, -192, -192 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1435,9 +1436,9 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 15, 207, 217, 466, 512, 485, 226, - 521, 544, 236, 248, 3, 17, 209, 219, 228, 238, - 250, 468, 487, 514, 523, 546, 4, 5, 6, 10, + 2, 0, 1, 15, 207, 217, 469, 515, 488, 226, + 524, 547, 236, 248, 3, 17, 209, 219, 228, 238, + 250, 471, 490, 517, 526, 549, 4, 5, 6, 10, 13, 14, 8, 9, 7, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1483,42 +1484,42 @@ static const yytype_uint16 yydefact[] = 0, 227, 229, 230, 233, 234, 231, 235, 232, 0, 0, 0, 0, 0, 0, 0, 0, 237, 239, 240, 241, 242, 246, 243, 244, 245, 0, 253, 249, 251, - 252, 0, 0, 0, 0, 0, 0, 0, 0, 467, - 469, 471, 470, 476, 472, 473, 474, 475, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 486, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 0, 513, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 522, 524, 525, 526, - 528, 529, 527, 530, 531, 532, 533, 0, 0, 0, - 0, 0, 545, 547, 548, 549, 550, 551, 255, 254, - 261, 274, 272, 280, 281, 284, 282, 283, 285, 286, - 287, 288, 289, 311, 312, 313, 314, 315, 339, 340, - 341, 346, 347, 277, 348, 349, 352, 350, 351, 354, - 355, 356, 370, 326, 327, 329, 330, 357, 373, 320, - 322, 374, 380, 381, 382, 278, 338, 396, 397, 321, - 391, 304, 273, 316, 371, 377, 358, 0, 0, 400, - 279, 256, 303, 362, 257, 275, 276, 317, 318, 398, - 360, 364, 365, 258, 401, 342, 369, 305, 325, 375, - 376, 379, 390, 319, 394, 392, 393, 331, 337, 366, - 367, 332, 333, 359, 384, 306, 307, 310, 290, 292, - 293, 294, 295, 296, 402, 403, 405, 343, 344, 345, - 353, 406, 407, 408, 0, 0, 0, 361, 334, 517, - 417, 421, 419, 418, 422, 420, 0, 0, 425, 426, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 363, 378, 395, 430, 431, 335, 409, 0, 0, 0, - 0, 0, 0, 385, 386, 387, 388, 389, 518, 328, - 323, 383, 302, 259, 260, 324, 432, 434, 433, 435, - 436, 437, 291, 298, 427, 429, 428, 297, 0, 309, - 368, 404, 308, 336, 299, 300, 301, 438, 439, 440, - 444, 443, 441, 442, 445, 446, 447, 448, 450, 449, - 459, 0, 463, 464, 0, 0, 465, 451, 457, 452, - 453, 454, 456, 458, 455, 247, 477, 479, 478, 481, - 482, 483, 484, 480, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 516, 534, 535, 536, - 539, 537, 538, 540, 541, 542, 543, 552, 553, 554, - 555, 556, 372, 399, 416, 519, 520, 423, 424, 410, - 411, 0, 0, 0, 415, 557, 460, 461, 462, 414, - 412, 413 + 252, 254, 255, 256, 0, 0, 0, 0, 0, 0, + 0, 0, 470, 472, 474, 473, 479, 475, 476, 477, + 478, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 489, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 0, 516, 518, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 525, + 527, 528, 529, 531, 532, 530, 533, 534, 535, 536, + 0, 0, 0, 0, 0, 548, 550, 551, 552, 553, + 554, 258, 257, 264, 277, 275, 283, 284, 287, 285, + 286, 288, 289, 290, 291, 292, 314, 315, 316, 317, + 318, 342, 343, 344, 349, 350, 280, 351, 352, 355, + 353, 354, 357, 358, 359, 373, 329, 330, 332, 333, + 360, 376, 323, 325, 377, 383, 384, 385, 281, 341, + 399, 400, 324, 394, 307, 276, 319, 374, 380, 361, + 0, 0, 403, 282, 259, 306, 365, 260, 278, 279, + 320, 321, 401, 363, 367, 368, 261, 404, 345, 372, + 308, 328, 378, 379, 382, 393, 322, 397, 395, 396, + 334, 340, 369, 370, 335, 336, 362, 387, 309, 310, + 313, 293, 295, 296, 297, 298, 299, 405, 406, 408, + 346, 347, 348, 356, 409, 410, 411, 0, 0, 0, + 364, 337, 520, 420, 424, 422, 421, 425, 423, 0, + 0, 428, 429, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 366, 381, 398, 433, 434, 338, 412, + 0, 0, 0, 0, 0, 0, 388, 389, 390, 391, + 392, 521, 331, 326, 386, 305, 262, 263, 327, 435, + 437, 436, 438, 439, 440, 294, 301, 430, 432, 431, + 300, 0, 312, 371, 407, 311, 339, 302, 303, 304, + 441, 442, 443, 447, 446, 444, 445, 448, 449, 450, + 451, 453, 452, 462, 0, 466, 467, 0, 0, 468, + 454, 460, 455, 456, 457, 459, 461, 458, 247, 480, + 482, 481, 484, 485, 486, 487, 483, 503, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 519, + 537, 538, 539, 542, 540, 541, 543, 544, 545, 546, + 555, 556, 557, 558, 559, 375, 402, 419, 522, 523, + 426, 427, 413, 414, 0, 0, 0, 418, 560, 463, + 464, 465, 417, 415, 416 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1546,7 +1547,7 @@ static const yytype_int16 yypgoto[] = -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -21, - 534, -192, -192, -192, -192, -192, -192, -192, -192, -192, + 537, 538, 539, 540, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, @@ -1581,12 +1582,12 @@ static const yytype_int16 yydefgoto[] = 405, 406, 407, 408, 409, 410, 424, 425, 426, 427, 428, 429, 430, 438, 439, 440, 441, 442, 443, 468, 469, 470, 471, 472, 473, 474, 475, 452, 453, 454, - 455, 456, 457, 458, 21, 32, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 22, 33, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 23, 34, 524, 525, 411, 412, 413, 414, 24, 35, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 25, 36, 552, 553, 554, 555, 556, 557, 415 + 455, 456, 457, 458, 21, 32, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 22, 33, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, + 23, 34, 527, 528, 411, 412, 413, 414, 24, 35, + 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, + 549, 25, 36, 555, 556, 557, 558, 559, 560, 415 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1594,30 +1595,30 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 416, 459, 417, 418, 444, 431, 523, 459, 558, - 479, 3, 559, 560, 432, 433, 498, 499, 500, 501, - 502, 503, 504, 505, 506, 507, 508, 509, 526, 527, - 528, 529, 530, 531, 532, 533, 534, 535, 561, 562, - 563, 445, 446, 564, 4, 565, 566, 567, 568, 569, - 5, 481, 482, 483, 484, 485, 486, 487, 488, 547, - 548, 549, 550, 551, 419, 570, 447, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, - 594, 595, 596, 597, 6, 420, 598, 599, 421, 434, - 600, 435, 601, 602, 603, 604, 605, 606, 607, 608, - 7, 609, 610, 611, 612, 613, 614, 615, 616, 617, - 618, 619, 620, 621, 622, 623, 624, 448, 449, 625, - 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, - 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, - 646, 8, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 450, 661, 662, 663, - 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, - 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, - 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, - 694, 695, 9, 461, 696, 697, 698, 460, 699, 461, - 462, 463, 464, 465, 700, 701, 422, 702, 10, 466, - 436, 703, 704, 705, 706, 707, 708, 476, 709, 710, - 711, 712, 713, 714, 715, 11, 716, 717, 718, 719, + 2, 416, 459, 417, 418, 444, 431, 526, 561, 562, + 479, 3, 563, 564, 432, 433, 565, 566, 567, 568, + 459, 501, 502, 503, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 484, 485, 486, 487, 488, 489, 490, + 491, 445, 446, 569, 4, 550, 551, 552, 553, 554, + 5, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 538, 570, 571, 572, 419, 573, 447, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 6, 420, 601, 602, 421, 434, + 603, 435, 604, 605, 606, 607, 608, 609, 610, 611, + 7, 612, 613, 614, 615, 616, 617, 618, 619, 620, + 621, 622, 623, 624, 625, 626, 627, 448, 449, 628, + 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, + 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, + 649, 8, 650, 651, 652, 653, 654, 655, 656, 657, + 658, 659, 660, 661, 662, 663, 450, 664, 665, 666, + 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, + 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, + 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, + 697, 698, 9, 461, 462, 463, 699, 700, 701, 702, + 703, 704, 705, 466, 706, 707, 422, 708, 10, 460, + 436, 461, 462, 463, 464, 465, 709, 476, 710, 711, + 712, 466, 713, 714, 715, 11, 716, 717, 718, 719, 720, 721, 722, 12, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 0, 13, 37, 38, @@ -1648,20 +1649,21 @@ static const yytype_uint16 yytable[] = 808, 216, 217, 809, 810, 218, 219, 220, 221, 222, 223, 224, 225, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, - 828, 829, 830, 831, 0, 0, 0, 0, 0, 0, + 828, 829, 830, 831, 832, 833, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 480 + 0, 0, 0, 0, 0, 0, 0, 0, 480, 481, + 482, 483 }; static const yytype_int16 yycheck[] = { - 0, 43, 43, 45, 46, 43, 43, 111, 43, 10, - 31, 11, 10, 10, 51, 52, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 10, 10, - 10, 79, 80, 10, 44, 10, 10, 10, 10, 10, - 50, 95, 96, 97, 98, 99, 100, 101, 102, 236, - 237, 238, 239, 240, 106, 10, 104, 10, 10, 10, + 0, 43, 43, 45, 46, 43, 43, 111, 10, 10, + 31, 11, 10, 10, 51, 52, 10, 10, 10, 10, + 43, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 95, 96, 97, 98, 99, 100, 101, + 102, 79, 80, 10, 44, 236, 237, 238, 239, 240, + 50, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 10, 10, 10, 106, 10, 104, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 94, 137, 10, 10, 140, 136, @@ -1675,10 +1677,10 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 202, 244, 10, 10, 10, 242, 10, 244, - 245, 246, 247, 248, 10, 10, 258, 10, 218, 254, - 257, 10, 10, 10, 10, 10, 10, 268, 10, 10, - 10, 10, 10, 10, 10, 235, 10, 10, 10, 10, + 10, 10, 202, 244, 245, 246, 10, 10, 10, 10, + 10, 10, 10, 254, 10, 10, 258, 10, 218, 242, + 257, 244, 245, 246, 247, 248, 10, 268, 10, 10, + 10, 254, 10, 10, 10, 235, 10, 10, 10, 10, 10, 10, 10, 243, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, -1, 267, 12, 13, @@ -1709,9 +1711,10 @@ static const yytype_int16 yycheck[] = 10, 255, 256, 10, 10, 259, 260, 261, 262, 263, 264, 265, 266, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, + 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 31 + -1, -1, -1, -1, -1, -1, -1, -1, 31, 31, + 31, 31 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1766,15 +1769,15 @@ static const yytype_uint16 yystos[] = 204, 283, 496, 497, 498, 499, 500, 501, 502, 43, 242, 244, 245, 246, 247, 248, 254, 286, 488, 489, 490, 491, 492, 493, 494, 495, 268, 287, 290, 488, - 489, 95, 96, 97, 98, 99, 100, 101, 102, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 526, 527, 528, 111, 531, 532, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 236, 237, 238, - 239, 240, 552, 553, 554, 555, 556, 557, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 489, 490, 491, 492, 95, 96, 97, 98, 99, 100, + 101, 102, 505, 506, 507, 508, 509, 510, 511, 512, + 513, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 516, 517, 518, 519, 520, 521, 522, + 523, 524, 525, 526, 527, 528, 111, 531, 532, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 236, 237, 238, 239, 240, 552, 553, 554, 555, 556, + 557, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1801,7 +1804,7 @@ static const yytype_uint16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10 + 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1832,37 +1835,38 @@ static const yytype_uint16 yyr1[] = 280, 280, 280, 280, 280, 280, 281, 282, 282, 283, 283, 283, 283, 283, 283, 283, 284, 285, 285, 286, 286, 286, 286, 286, 286, 286, 286, 287, 288, 289, - 289, 290, 290, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 504, 505, - 505, 505, 505, 505, 505, 505, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 515, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 528, 529, 530, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 538, 539, 539, 539, 539, 539, 539, - 539, 539, 539, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 551, 552, 552, 552, - 552, 552, 553, 554, 555, 556, 557, 558 + 289, 290, 290, 290, 290, 290, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 504, 505, 505, 505, 505, 505, 505, 505, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 515, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 525, 526, 527, 528, 529, 530, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 538, 539, 539, 539, + 539, 539, 539, 539, 539, 539, 539, 540, 541, 542, + 543, 544, 545, 546, 547, 548, 549, 550, 551, 551, + 552, 552, 552, 552, 552, 553, 554, 555, 556, 557, + 558 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1893,7 +1897,7 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, - 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1905,25 +1909,26 @@ static const yytype_uint8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 4, 4, 4, 3, 3, 2, 2, 2, - 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 3, 4, 4, 4, 3, 3, + 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 3, 2, 2, 2, 1, 2, 0, 1, + 2, 2, 2, 3, 3, 3, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 2, 0, 1, 2, + 2, 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 2, 2, 2, 3, - 3, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 3 + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 3 }; @@ -2604,7 +2609,7 @@ yyreduce: { OUTYY(("\nP(server:)\n")); } -#line 2608 "util/configparser.c" /* yacc.c:1646 */ +#line 2613 "util/configparser.c" /* yacc.c:1646 */ break; case 207: @@ -2619,7 +2624,7 @@ yyreduce: } else yyerror("out of memory"); } -#line 2623 "util/configparser.c" /* yacc.c:1646 */ +#line 2628 "util/configparser.c" /* yacc.c:1646 */ break; case 217: @@ -2634,7 +2639,7 @@ yyreduce: } else yyerror("out of memory"); } -#line 2638 "util/configparser.c" /* yacc.c:1646 */ +#line 2643 "util/configparser.c" /* yacc.c:1646 */ break; case 226: @@ -2651,7 +2656,7 @@ yyreduce: } else yyerror("out of memory"); } -#line 2655 "util/configparser.c" /* yacc.c:1646 */ +#line 2660 "util/configparser.c" /* yacc.c:1646 */ break; case 236: @@ -2671,7 +2676,7 @@ yyreduce: } else yyerror("out of memory"); } -#line 2675 "util/configparser.c" /* yacc.c:1646 */ +#line 2680 "util/configparser.c" /* yacc.c:1646 */ break; case 247: @@ -2693,7 +2698,7 @@ yyreduce: } } -#line 2697 "util/configparser.c" /* yacc.c:1646 */ +#line 2702 "util/configparser.c" /* yacc.c:1646 */ break; case 248: @@ -2713,11 +2718,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2717 "util/configparser.c" /* yacc.c:1646 */ +#line 2722 "util/configparser.c" /* yacc.c:1646 */ break; - case 254: -#line 390 "./util/configparser.y" /* yacc.c:1646 */ + case 257: +#line 391 "./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) @@ -2725,11 +2730,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2729 "util/configparser.c" /* yacc.c:1646 */ +#line 2734 "util/configparser.c" /* yacc.c:1646 */ break; - case 255: -#line 399 "./util/configparser.y" /* yacc.c:1646 */ + case 258: +#line 400 "./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) @@ -2737,11 +2742,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2741 "util/configparser.c" /* yacc.c:1646 */ +#line 2746 "util/configparser.c" /* yacc.c:1646 */ break; - case 256: -#line 408 "./util/configparser.y" /* yacc.c:1646 */ + case 259: +#line 409 "./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) @@ -2751,11 +2756,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2755 "util/configparser.c" /* yacc.c:1646 */ +#line 2760 "util/configparser.c" /* yacc.c:1646 */ break; - case 257: -#line 419 "./util/configparser.y" /* yacc.c:1646 */ + case 260: +#line 420 "./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) @@ -2763,11 +2768,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2767 "util/configparser.c" /* yacc.c:1646 */ +#line 2772 "util/configparser.c" /* yacc.c:1646 */ break; - case 258: -#line 428 "./util/configparser.y" /* yacc.c:1646 */ + case 261: +#line 429 "./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) @@ -2775,11 +2780,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2779 "util/configparser.c" /* yacc.c:1646 */ +#line 2784 "util/configparser.c" /* yacc.c:1646 */ break; - case 259: -#line 437 "./util/configparser.y" /* yacc.c:1646 */ + case 262: +#line 438 "./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) @@ -2787,11 +2792,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2791 "util/configparser.c" /* yacc.c:1646 */ +#line 2796 "util/configparser.c" /* yacc.c:1646 */ break; - case 260: -#line 446 "./util/configparser.y" /* yacc.c:1646 */ + case 263: +#line 447 "./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) @@ -2801,11 +2806,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2805 "util/configparser.c" /* yacc.c:1646 */ +#line 2810 "util/configparser.c" /* yacc.c:1646 */ break; - case 261: -#line 457 "./util/configparser.y" /* yacc.c:1646 */ + case 264: +#line 458 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2813,11 +2818,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2817 "util/configparser.c" /* yacc.c:1646 */ +#line 2822 "util/configparser.c" /* yacc.c:1646 */ break; - case 262: -#line 466 "./util/configparser.y" /* yacc.c:1646 */ + case 265: +#line 467 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2827,11 +2832,11 @@ yyreduce: OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2831 "util/configparser.c" /* yacc.c:1646 */ +#line 2836 "util/configparser.c" /* yacc.c:1646 */ break; - case 263: -#line 477 "./util/configparser.y" /* yacc.c:1646 */ + case 266: +#line 478 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -2842,11 +2847,11 @@ yyreduce: OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2846 "util/configparser.c" /* yacc.c:1646 */ +#line 2851 "util/configparser.c" /* yacc.c:1646 */ break; - case 264: -#line 490 "./util/configparser.y" /* yacc.c:1646 */ + case 267: +#line 491 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -2860,11 +2865,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2864 "util/configparser.c" /* yacc.c:1646 */ +#line 2869 "util/configparser.c" /* yacc.c:1646 */ break; - case 265: -#line 505 "./util/configparser.y" /* yacc.c:1646 */ + case 268: +#line 506 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -2874,11 +2879,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2878 "util/configparser.c" /* yacc.c:1646 */ +#line 2883 "util/configparser.c" /* yacc.c:1646 */ break; - case 266: -#line 516 "./util/configparser.y" /* yacc.c:1646 */ + case 269: +#line 517 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -2894,11 +2899,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2898 "util/configparser.c" /* yacc.c:1646 */ +#line 2903 "util/configparser.c" /* yacc.c:1646 */ break; - case 267: -#line 533 "./util/configparser.y" /* yacc.c:1646 */ + case 270: +#line 534 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -2914,11 +2919,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2918 "util/configparser.c" /* yacc.c:1646 */ +#line 2923 "util/configparser.c" /* yacc.c:1646 */ break; - case 268: -#line 550 "./util/configparser.y" /* yacc.c:1646 */ + case 271: +#line 551 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -2934,11 +2939,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2938 "util/configparser.c" /* yacc.c:1646 */ +#line 2943 "util/configparser.c" /* yacc.c:1646 */ break; - case 269: -#line 567 "./util/configparser.y" /* yacc.c:1646 */ + case 272: +#line 568 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -2954,11 +2959,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2958 "util/configparser.c" /* yacc.c:1646 */ +#line 2963 "util/configparser.c" /* yacc.c:1646 */ break; - case 270: -#line 584 "./util/configparser.y" /* yacc.c:1646 */ + case 273: +#line 585 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -2972,11 +2977,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2976 "util/configparser.c" /* yacc.c:1646 */ +#line 2981 "util/configparser.c" /* yacc.c:1646 */ break; - case 271: -#line 599 "./util/configparser.y" /* yacc.c:1646 */ + case 274: +#line 600 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -2990,11 +2995,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2994 "util/configparser.c" /* yacc.c:1646 */ +#line 2999 "util/configparser.c" /* yacc.c:1646 */ break; - case 272: -#line 614 "./util/configparser.y" /* yacc.c:1646 */ + case 275: +#line 615 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3006,11 +3011,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3010 "util/configparser.c" /* yacc.c:1646 */ +#line 3015 "util/configparser.c" /* yacc.c:1646 */ break; - case 273: -#line 627 "./util/configparser.y" /* yacc.c:1646 */ + case 276: +#line 628 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3024,11 +3029,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3028 "util/configparser.c" /* yacc.c:1646 */ +#line 3033 "util/configparser.c" /* yacc.c:1646 */ break; - case 274: -#line 642 "./util/configparser.y" /* yacc.c:1646 */ + case 277: +#line 643 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3036,11 +3041,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3040 "util/configparser.c" /* yacc.c:1646 */ +#line 3045 "util/configparser.c" /* yacc.c:1646 */ break; - case 275: -#line 651 "./util/configparser.y" /* yacc.c:1646 */ + case 278: +#line 652 "./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, @@ -3048,11 +3053,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3052 "util/configparser.c" /* yacc.c:1646 */ +#line 3057 "util/configparser.c" /* yacc.c:1646 */ break; - case 276: -#line 660 "./util/configparser.y" /* yacc.c:1646 */ + case 279: +#line 661 "./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, @@ -3060,11 +3065,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3064 "util/configparser.c" /* yacc.c:1646 */ +#line 3069 "util/configparser.c" /* yacc.c:1646 */ break; - case 277: -#line 669 "./util/configparser.y" /* yacc.c:1646 */ + case 280: +#line 670 "./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) @@ -3072,11 +3077,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3076 "util/configparser.c" /* yacc.c:1646 */ +#line 3081 "util/configparser.c" /* yacc.c:1646 */ break; - case 278: -#line 678 "./util/configparser.y" /* yacc.c:1646 */ + case 281: +#line 679 "./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) @@ -3084,11 +3089,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3088 "util/configparser.c" /* yacc.c:1646 */ +#line 3093 "util/configparser.c" /* yacc.c:1646 */ break; - case 279: -#line 687 "./util/configparser.y" /* yacc.c:1646 */ + case 282: +#line 688 "./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) @@ -3096,11 +3101,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3100 "util/configparser.c" /* yacc.c:1646 */ +#line 3105 "util/configparser.c" /* yacc.c:1646 */ break; - case 280: -#line 696 "./util/configparser.y" /* yacc.c:1646 */ + case 283: +#line 697 "./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) @@ -3108,11 +3113,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3112 "util/configparser.c" /* yacc.c:1646 */ +#line 3117 "util/configparser.c" /* yacc.c:1646 */ break; - case 281: -#line 705 "./util/configparser.y" /* yacc.c:1646 */ + case 284: +#line 706 "./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) @@ -3120,11 +3125,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3124 "util/configparser.c" /* yacc.c:1646 */ +#line 3129 "util/configparser.c" /* yacc.c:1646 */ break; - case 282: -#line 714 "./util/configparser.y" /* yacc.c:1646 */ + case 285: +#line 715 "./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) @@ -3132,11 +3137,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3136 "util/configparser.c" /* yacc.c:1646 */ +#line 3141 "util/configparser.c" /* yacc.c:1646 */ break; - case 283: -#line 723 "./util/configparser.y" /* yacc.c:1646 */ + case 286: +#line 724 "./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) @@ -3144,11 +3149,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3148 "util/configparser.c" /* yacc.c:1646 */ +#line 3153 "util/configparser.c" /* yacc.c:1646 */ break; - case 284: -#line 732 "./util/configparser.y" /* yacc.c:1646 */ + case 287: +#line 733 "./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) @@ -3156,11 +3161,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3160 "util/configparser.c" /* yacc.c:1646 */ +#line 3165 "util/configparser.c" /* yacc.c:1646 */ break; - case 285: -#line 741 "./util/configparser.y" /* yacc.c:1646 */ + case 288: +#line 742 "./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) @@ -3168,11 +3173,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3172 "util/configparser.c" /* yacc.c:1646 */ +#line 3177 "util/configparser.c" /* yacc.c:1646 */ break; - case 286: -#line 750 "./util/configparser.y" /* yacc.c:1646 */ + case 289: +#line 751 "./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) @@ -3180,11 +3185,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3184 "util/configparser.c" /* yacc.c:1646 */ +#line 3189 "util/configparser.c" /* yacc.c:1646 */ break; - case 287: -#line 759 "./util/configparser.y" /* yacc.c:1646 */ + case 290: +#line 760 "./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) @@ -3196,11 +3201,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3200 "util/configparser.c" /* yacc.c:1646 */ +#line 3205 "util/configparser.c" /* yacc.c:1646 */ break; - case 288: -#line 772 "./util/configparser.y" /* yacc.c:1646 */ + case 291: +#line 773 "./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) @@ -3208,11 +3213,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3212 "util/configparser.c" /* yacc.c:1646 */ +#line 3217 "util/configparser.c" /* yacc.c:1646 */ break; - case 289: -#line 781 "./util/configparser.y" /* yacc.c:1646 */ + case 292: +#line 782 "./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) @@ -3224,11 +3229,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3228 "util/configparser.c" /* yacc.c:1646 */ +#line 3233 "util/configparser.c" /* yacc.c:1646 */ break; - case 290: -#line 794 "./util/configparser.y" /* yacc.c:1646 */ + case 293: +#line 795 "./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) @@ -3236,11 +3241,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3240 "util/configparser.c" /* yacc.c:1646 */ +#line 3245 "util/configparser.c" /* yacc.c:1646 */ break; - case 291: -#line 803 "./util/configparser.y" /* yacc.c:1646 */ + case 294: +#line 804 "./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) @@ -3248,11 +3253,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3252 "util/configparser.c" /* yacc.c:1646 */ +#line 3257 "util/configparser.c" /* yacc.c:1646 */ break; - case 292: -#line 812 "./util/configparser.y" /* yacc.c:1646 */ + case 295: +#line 813 "./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) @@ -3260,31 +3265,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3264 "util/configparser.c" /* yacc.c:1646 */ +#line 3269 "util/configparser.c" /* yacc.c:1646 */ break; - case 293: -#line 821 "./util/configparser.y" /* yacc.c:1646 */ + case 296: +#line 822 "./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 3274 "util/configparser.c" /* yacc.c:1646 */ +#line 3279 "util/configparser.c" /* yacc.c:1646 */ break; - case 294: -#line 828 "./util/configparser.y" /* yacc.c:1646 */ + case 297: +#line 829 "./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 3284 "util/configparser.c" /* yacc.c:1646 */ +#line 3289 "util/configparser.c" /* yacc.c:1646 */ break; - case 295: -#line 835 "./util/configparser.y" /* yacc.c:1646 */ + case 298: +#line 836 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3292,21 +3297,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3296 "util/configparser.c" /* yacc.c:1646 */ +#line 3301 "util/configparser.c" /* yacc.c:1646 */ break; - case 296: -#line 844 "./util/configparser.y" /* yacc.c:1646 */ + case 299: +#line 845 "./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 3306 "util/configparser.c" /* yacc.c:1646 */ +#line 3311 "util/configparser.c" /* yacc.c:1646 */ break; - case 297: -#line 851 "./util/configparser.y" /* yacc.c:1646 */ + case 300: +#line 852 "./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) @@ -3314,53 +3319,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3318 "util/configparser.c" /* yacc.c:1646 */ +#line 3323 "util/configparser.c" /* yacc.c:1646 */ break; - case 298: -#line 860 "./util/configparser.y" /* yacc.c:1646 */ + case 301: +#line 861 "./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 3329 "util/configparser.c" /* yacc.c:1646 */ +#line 3334 "util/configparser.c" /* yacc.c:1646 */ break; - case 299: -#line 868 "./util/configparser.y" /* yacc.c:1646 */ + case 302: +#line 869 "./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 3339 "util/configparser.c" /* yacc.c:1646 */ +#line 3344 "util/configparser.c" /* yacc.c:1646 */ break; - case 300: -#line 875 "./util/configparser.y" /* yacc.c:1646 */ + case 303: +#line 876 "./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 3349 "util/configparser.c" /* yacc.c:1646 */ +#line 3354 "util/configparser.c" /* yacc.c:1646 */ break; - case 301: -#line 882 "./util/configparser.y" /* yacc.c:1646 */ + case 304: +#line 883 "./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 3360 "util/configparser.c" /* yacc.c:1646 */ +#line 3365 "util/configparser.c" /* yacc.c:1646 */ break; - case 302: -#line 890 "./util/configparser.y" /* yacc.c:1646 */ + case 305: +#line 891 "./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) @@ -3368,11 +3373,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3372 "util/configparser.c" /* yacc.c:1646 */ +#line 3377 "util/configparser.c" /* yacc.c:1646 */ break; - case 303: -#line 899 "./util/configparser.y" /* yacc.c:1646 */ + case 306: +#line 900 "./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) @@ -3380,11 +3385,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3384 "util/configparser.c" /* yacc.c:1646 */ +#line 3389 "util/configparser.c" /* yacc.c:1646 */ break; - case 304: -#line 908 "./util/configparser.y" /* yacc.c:1646 */ + case 307: +#line 909 "./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) @@ -3397,11 +3402,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3401 "util/configparser.c" /* yacc.c:1646 */ +#line 3406 "util/configparser.c" /* yacc.c:1646 */ break; - case 305: -#line 922 "./util/configparser.y" /* yacc.c:1646 */ + case 308: +#line 923 "./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) @@ -3409,11 +3414,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3413 "util/configparser.c" /* yacc.c:1646 */ +#line 3418 "util/configparser.c" /* yacc.c:1646 */ break; - case 306: -#line 931 "./util/configparser.y" /* yacc.c:1646 */ + case 309: +#line 932 "./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) @@ -3421,11 +3426,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3425 "util/configparser.c" /* yacc.c:1646 */ +#line 3430 "util/configparser.c" /* yacc.c:1646 */ break; - case 307: -#line 940 "./util/configparser.y" /* yacc.c:1646 */ + case 310: +#line 941 "./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) @@ -3433,11 +3438,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3437 "util/configparser.c" /* yacc.c:1646 */ +#line 3442 "util/configparser.c" /* yacc.c:1646 */ break; - case 308: -#line 949 "./util/configparser.y" /* yacc.c:1646 */ + case 311: +#line 950 "./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) @@ -3445,11 +3450,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3449 "util/configparser.c" /* yacc.c:1646 */ +#line 3454 "util/configparser.c" /* yacc.c:1646 */ break; - case 309: -#line 958 "./util/configparser.y" /* yacc.c:1646 */ + case 312: +#line 959 "./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) @@ -3457,11 +3462,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3461 "util/configparser.c" /* yacc.c:1646 */ +#line 3466 "util/configparser.c" /* yacc.c:1646 */ break; - case 310: -#line 967 "./util/configparser.y" /* yacc.c:1646 */ + case 313: +#line 968 "./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) @@ -3469,31 +3474,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3473 "util/configparser.c" /* yacc.c:1646 */ +#line 3478 "util/configparser.c" /* yacc.c:1646 */ break; - case 311: -#line 976 "./util/configparser.y" /* yacc.c:1646 */ + case 314: +#line 977 "./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 3483 "util/configparser.c" /* yacc.c:1646 */ +#line 3488 "util/configparser.c" /* yacc.c:1646 */ break; - case 312: -#line 983 "./util/configparser.y" /* yacc.c:1646 */ + case 315: +#line 984 "./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 3493 "util/configparser.c" /* yacc.c:1646 */ +#line 3498 "util/configparser.c" /* yacc.c:1646 */ break; - case 313: -#line 990 "./util/configparser.y" /* yacc.c:1646 */ + case 316: +#line 991 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3518,105 +3523,105 @@ yyreduce: } } } -#line 3522 "util/configparser.c" /* yacc.c:1646 */ +#line 3527 "util/configparser.c" /* yacc.c:1646 */ break; - case 314: -#line 1016 "./util/configparser.y" /* yacc.c:1646 */ + case 317: +#line 1017 "./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 3533 "util/configparser.c" /* yacc.c:1646 */ +#line 3538 "util/configparser.c" /* yacc.c:1646 */ break; - case 315: -#line 1024 "./util/configparser.y" /* yacc.c:1646 */ + case 318: +#line 1025 "./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 3543 "util/configparser.c" /* yacc.c:1646 */ +#line 3548 "util/configparser.c" /* yacc.c:1646 */ break; - case 316: -#line 1031 "./util/configparser.y" /* yacc.c:1646 */ + case 319: +#line 1032 "./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 3553 "util/configparser.c" /* yacc.c:1646 */ +#line 3558 "util/configparser.c" /* yacc.c:1646 */ break; - case 317: -#line 1038 "./util/configparser.y" /* yacc.c:1646 */ + case 320: +#line 1039 "./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 3563 "util/configparser.c" /* yacc.c:1646 */ +#line 3568 "util/configparser.c" /* yacc.c:1646 */ break; - case 318: -#line 1045 "./util/configparser.y" /* yacc.c:1646 */ + case 321: +#line 1046 "./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 3573 "util/configparser.c" /* yacc.c:1646 */ +#line 3578 "util/configparser.c" /* yacc.c:1646 */ break; - case 319: -#line 1052 "./util/configparser.y" /* yacc.c:1646 */ + case 322: +#line 1053 "./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 3584 "util/configparser.c" /* yacc.c:1646 */ +#line 3589 "util/configparser.c" /* yacc.c:1646 */ break; - case 320: -#line 1060 "./util/configparser.y" /* yacc.c:1646 */ + case 323: +#line 1061 "./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 3595 "util/configparser.c" /* yacc.c:1646 */ +#line 3600 "util/configparser.c" /* yacc.c:1646 */ break; - case 321: -#line 1068 "./util/configparser.y" /* yacc.c:1646 */ + case 324: +#line 1069 "./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 3606 "util/configparser.c" /* yacc.c:1646 */ +#line 3611 "util/configparser.c" /* yacc.c:1646 */ break; - case 322: -#line 1076 "./util/configparser.y" /* yacc.c:1646 */ + case 325: +#line 1077 "./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 3616 "util/configparser.c" /* yacc.c:1646 */ +#line 3621 "util/configparser.c" /* yacc.c:1646 */ break; - case 323: -#line 1083 "./util/configparser.y" /* yacc.c:1646 */ + case 326: +#line 1084 "./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) @@ -3626,11 +3631,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3630 "util/configparser.c" /* yacc.c:1646 */ +#line 3635 "util/configparser.c" /* yacc.c:1646 */ break; - case 324: -#line 1094 "./util/configparser.y" /* yacc.c:1646 */ + case 327: +#line 1095 "./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) @@ -3640,21 +3645,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3644 "util/configparser.c" /* yacc.c:1646 */ +#line 3649 "util/configparser.c" /* yacc.c:1646 */ break; - case 325: -#line 1105 "./util/configparser.y" /* yacc.c:1646 */ + case 328: +#line 1106 "./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 3654 "util/configparser.c" /* yacc.c:1646 */ +#line 3659 "util/configparser.c" /* yacc.c:1646 */ break; - case 326: -#line 1112 "./util/configparser.y" /* yacc.c:1646 */ + case 329: +#line 1113 "./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) @@ -3662,11 +3667,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3666 "util/configparser.c" /* yacc.c:1646 */ +#line 3671 "util/configparser.c" /* yacc.c:1646 */ break; - case 327: -#line 1121 "./util/configparser.y" /* yacc.c:1646 */ + case 330: +#line 1122 "./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) @@ -3674,11 +3679,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3678 "util/configparser.c" /* yacc.c:1646 */ +#line 3683 "util/configparser.c" /* yacc.c:1646 */ break; - case 328: -#line 1130 "./util/configparser.y" /* yacc.c:1646 */ + case 331: +#line 1131 "./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) @@ -3686,53 +3691,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3690 "util/configparser.c" /* yacc.c:1646 */ +#line 3695 "util/configparser.c" /* yacc.c:1646 */ break; - case 329: -#line 1139 "./util/configparser.y" /* yacc.c:1646 */ + case 332: +#line 1140 "./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 3700 "util/configparser.c" /* yacc.c:1646 */ +#line 3705 "util/configparser.c" /* yacc.c:1646 */ break; - case 330: -#line 1146 "./util/configparser.y" /* yacc.c:1646 */ + case 333: +#line 1147 "./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 3710 "util/configparser.c" /* yacc.c:1646 */ +#line 3715 "util/configparser.c" /* yacc.c:1646 */ break; - case 331: -#line 1153 "./util/configparser.y" /* yacc.c:1646 */ + case 334: +#line 1154 "./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 3721 "util/configparser.c" /* yacc.c:1646 */ +#line 3726 "util/configparser.c" /* yacc.c:1646 */ break; - case 332: -#line 1161 "./util/configparser.y" /* yacc.c:1646 */ + case 335: +#line 1162 "./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 3732 "util/configparser.c" /* yacc.c:1646 */ +#line 3737 "util/configparser.c" /* yacc.c:1646 */ break; - case 333: -#line 1169 "./util/configparser.y" /* yacc.c:1646 */ + case 336: +#line 1170 "./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) @@ -3741,11 +3746,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3745 "util/configparser.c" /* yacc.c:1646 */ +#line 3750 "util/configparser.c" /* yacc.c:1646 */ break; - case 334: -#line 1179 "./util/configparser.y" /* yacc.c:1646 */ + case 337: +#line 1180 "./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) @@ -3754,11 +3759,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3758 "util/configparser.c" /* yacc.c:1646 */ +#line 3763 "util/configparser.c" /* yacc.c:1646 */ break; - case 335: -#line 1189 "./util/configparser.y" /* yacc.c:1646 */ + case 338: +#line 1190 "./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) @@ -3767,22 +3772,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3771 "util/configparser.c" /* yacc.c:1646 */ +#line 3776 "util/configparser.c" /* yacc.c:1646 */ break; - case 336: -#line 1199 "./util/configparser.y" /* yacc.c:1646 */ + case 339: +#line 1200 "./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 3782 "util/configparser.c" /* yacc.c:1646 */ +#line 3787 "util/configparser.c" /* yacc.c:1646 */ break; - case 337: -#line 1207 "./util/configparser.y" /* yacc.c:1646 */ + case 340: +#line 1208 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3794,11 +3799,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3798 "util/configparser.c" /* yacc.c:1646 */ +#line 3803 "util/configparser.c" /* yacc.c:1646 */ break; - case 338: -#line 1220 "./util/configparser.y" /* yacc.c:1646 */ + case 341: +#line 1221 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3808,22 +3813,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3812 "util/configparser.c" /* yacc.c:1646 */ +#line 3817 "util/configparser.c" /* yacc.c:1646 */ break; - case 339: -#line 1231 "./util/configparser.y" /* yacc.c:1646 */ + case 342: +#line 1232 "./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 3823 "util/configparser.c" /* yacc.c:1646 */ +#line 3828 "util/configparser.c" /* yacc.c:1646 */ break; - case 340: -#line 1239 "./util/configparser.y" /* yacc.c:1646 */ + case 343: +#line 1240 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3835,11 +3840,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3839 "util/configparser.c" /* yacc.c:1646 */ +#line 3844 "util/configparser.c" /* yacc.c:1646 */ break; - case 341: -#line 1252 "./util/configparser.y" /* yacc.c:1646 */ + case 344: +#line 1253 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3847,11 +3852,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3851 "util/configparser.c" /* yacc.c:1646 */ +#line 3856 "util/configparser.c" /* yacc.c:1646 */ break; - case 342: -#line 1261 "./util/configparser.y" /* yacc.c:1646 */ + case 345: +#line 1262 "./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) @@ -3859,11 +3864,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3863 "util/configparser.c" /* yacc.c:1646 */ +#line 3868 "util/configparser.c" /* yacc.c:1646 */ break; - case 343: -#line 1270 "./util/configparser.y" /* yacc.c:1646 */ + case 346: +#line 1271 "./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) @@ -3871,11 +3876,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3875 "util/configparser.c" /* yacc.c:1646 */ +#line 3880 "util/configparser.c" /* yacc.c:1646 */ break; - case 344: -#line 1279 "./util/configparser.y" /* yacc.c:1646 */ + case 347: +#line 1280 "./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) @@ -3884,11 +3889,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3888 "util/configparser.c" /* yacc.c:1646 */ +#line 3893 "util/configparser.c" /* yacc.c:1646 */ break; - case 345: -#line 1289 "./util/configparser.y" /* yacc.c:1646 */ + case 348: +#line 1290 "./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) @@ -3897,22 +3902,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3901 "util/configparser.c" /* yacc.c:1646 */ +#line 3906 "util/configparser.c" /* yacc.c:1646 */ break; - case 346: -#line 1299 "./util/configparser.y" /* yacc.c:1646 */ + case 349: +#line 1300 "./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 3912 "util/configparser.c" /* yacc.c:1646 */ +#line 3917 "util/configparser.c" /* yacc.c:1646 */ break; - case 347: -#line 1307 "./util/configparser.y" /* yacc.c:1646 */ + case 350: +#line 1308 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3924,11 +3929,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3928 "util/configparser.c" /* yacc.c:1646 */ +#line 3933 "util/configparser.c" /* yacc.c:1646 */ break; - case 348: -#line 1320 "./util/configparser.y" /* yacc.c:1646 */ + case 351: +#line 1321 "./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) @@ -3936,22 +3941,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3940 "util/configparser.c" /* yacc.c:1646 */ +#line 3945 "util/configparser.c" /* yacc.c:1646 */ break; - case 349: -#line 1329 "./util/configparser.y" /* yacc.c:1646 */ + case 352: +#line 1330 "./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 3951 "util/configparser.c" /* yacc.c:1646 */ +#line 3956 "util/configparser.c" /* yacc.c:1646 */ break; - case 350: -#line 1337 "./util/configparser.y" /* yacc.c:1646 */ + case 353: +#line 1338 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3959,22 +3964,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3963 "util/configparser.c" /* yacc.c:1646 */ +#line 3968 "util/configparser.c" /* yacc.c:1646 */ break; - case 351: -#line 1346 "./util/configparser.y" /* yacc.c:1646 */ + case 354: +#line 1347 "./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 3974 "util/configparser.c" /* yacc.c:1646 */ +#line 3979 "util/configparser.c" /* yacc.c:1646 */ break; - case 352: -#line 1354 "./util/configparser.y" /* yacc.c:1646 */ + case 355: +#line 1355 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3986,11 +3991,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3990 "util/configparser.c" /* yacc.c:1646 */ +#line 3995 "util/configparser.c" /* yacc.c:1646 */ break; - case 353: -#line 1367 "./util/configparser.y" /* yacc.c:1646 */ + case 356: +#line 1368 "./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) @@ -3998,21 +4003,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4002 "util/configparser.c" /* yacc.c:1646 */ +#line 4007 "util/configparser.c" /* yacc.c:1646 */ break; - case 354: -#line 1376 "./util/configparser.y" /* yacc.c:1646 */ + case 357: +#line 1377 "./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 4012 "util/configparser.c" /* yacc.c:1646 */ +#line 4017 "util/configparser.c" /* yacc.c:1646 */ break; - case 355: -#line 1383 "./util/configparser.y" /* yacc.c:1646 */ + case 358: +#line 1384 "./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) @@ -4021,11 +4026,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4025 "util/configparser.c" /* yacc.c:1646 */ +#line 4030 "util/configparser.c" /* yacc.c:1646 */ break; - case 356: -#line 1393 "./util/configparser.y" /* yacc.c:1646 */ + case 359: +#line 1394 "./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) @@ -4034,11 +4039,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4038 "util/configparser.c" /* yacc.c:1646 */ +#line 4043 "util/configparser.c" /* yacc.c:1646 */ break; - case 357: -#line 1403 "./util/configparser.y" /* yacc.c:1646 */ + case 360: +#line 1404 "./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) @@ -4047,11 +4052,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4051 "util/configparser.c" /* yacc.c:1646 */ +#line 4056 "util/configparser.c" /* yacc.c:1646 */ break; - case 358: -#line 1413 "./util/configparser.y" /* yacc.c:1646 */ + case 361: +#line 1414 "./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) @@ -4060,11 +4065,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4064 "util/configparser.c" /* yacc.c:1646 */ +#line 4069 "util/configparser.c" /* yacc.c:1646 */ break; - case 359: -#line 1423 "./util/configparser.y" /* yacc.c:1646 */ + case 362: +#line 1424 "./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) @@ -4073,11 +4078,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4077 "util/configparser.c" /* yacc.c:1646 */ +#line 4082 "util/configparser.c" /* yacc.c:1646 */ break; - case 360: -#line 1433 "./util/configparser.y" /* yacc.c:1646 */ + case 363: +#line 1434 "./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) @@ -4086,11 +4091,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4090 "util/configparser.c" /* yacc.c:1646 */ +#line 4095 "util/configparser.c" /* yacc.c:1646 */ break; - case 361: -#line 1443 "./util/configparser.y" /* yacc.c:1646 */ + case 364: +#line 1444 "./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) @@ -4099,11 +4104,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4103 "util/configparser.c" /* yacc.c:1646 */ +#line 4108 "util/configparser.c" /* yacc.c:1646 */ break; - case 362: -#line 1453 "./util/configparser.y" /* yacc.c:1646 */ + case 365: +#line 1454 "./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) @@ -4112,41 +4117,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4116 "util/configparser.c" /* yacc.c:1646 */ +#line 4121 "util/configparser.c" /* yacc.c:1646 */ break; - case 363: -#line 1463 "./util/configparser.y" /* yacc.c:1646 */ + case 366: +#line 1464 "./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 4126 "util/configparser.c" /* yacc.c:1646 */ +#line 4131 "util/configparser.c" /* yacc.c:1646 */ break; - case 364: -#line 1470 "./util/configparser.y" /* yacc.c:1646 */ + case 367: +#line 1471 "./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 4136 "util/configparser.c" /* yacc.c:1646 */ +#line 4141 "util/configparser.c" /* yacc.c:1646 */ break; - case 365: -#line 1477 "./util/configparser.y" /* yacc.c:1646 */ + case 368: +#line 1478 "./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 4146 "util/configparser.c" /* yacc.c:1646 */ +#line 4151 "util/configparser.c" /* yacc.c:1646 */ break; - case 366: -#line 1484 "./util/configparser.y" /* yacc.c:1646 */ + case 369: +#line 1485 "./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) @@ -4154,11 +4159,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4158 "util/configparser.c" /* yacc.c:1646 */ +#line 4163 "util/configparser.c" /* yacc.c:1646 */ break; - case 367: -#line 1493 "./util/configparser.y" /* yacc.c:1646 */ + case 370: +#line 1494 "./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) @@ -4166,11 +4171,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4170 "util/configparser.c" /* yacc.c:1646 */ +#line 4175 "util/configparser.c" /* yacc.c:1646 */ break; - case 368: -#line 1502 "./util/configparser.y" /* yacc.c:1646 */ + case 371: +#line 1503 "./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) @@ -4178,11 +4183,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4182 "util/configparser.c" /* yacc.c:1646 */ +#line 4187 "util/configparser.c" /* yacc.c:1646 */ break; - case 369: -#line 1511 "./util/configparser.y" /* yacc.c:1646 */ + case 372: +#line 1512 "./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) @@ -4190,21 +4195,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4194 "util/configparser.c" /* yacc.c:1646 */ +#line 4199 "util/configparser.c" /* yacc.c:1646 */ break; - case 370: -#line 1520 "./util/configparser.y" /* yacc.c:1646 */ + case 373: +#line 1521 "./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 4204 "util/configparser.c" /* yacc.c:1646 */ +#line 4209 "util/configparser.c" /* yacc.c:1646 */ break; - case 371: -#line 1527 "./util/configparser.y" /* yacc.c:1646 */ + case 374: +#line 1528 "./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) @@ -4213,11 +4218,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4217 "util/configparser.c" /* yacc.c:1646 */ +#line 4222 "util/configparser.c" /* yacc.c:1646 */ break; - case 372: -#line 1537 "./util/configparser.y" /* yacc.c:1646 */ + case 375: +#line 1538 "./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 && @@ -4236,21 +4241,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4240 "util/configparser.c" /* yacc.c:1646 */ +#line 4245 "util/configparser.c" /* yacc.c:1646 */ break; - case 373: -#line 1557 "./util/configparser.y" /* yacc.c:1646 */ + case 376: +#line 1558 "./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 4250 "util/configparser.c" /* yacc.c:1646 */ +#line 4255 "util/configparser.c" /* yacc.c:1646 */ break; - case 374: -#line 1564 "./util/configparser.y" /* yacc.c:1646 */ + case 377: +#line 1565 "./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) { @@ -4267,11 +4272,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4271 "util/configparser.c" /* yacc.c:1646 */ +#line 4276 "util/configparser.c" /* yacc.c:1646 */ break; - case 375: -#line 1582 "./util/configparser.y" /* yacc.c:1646 */ + case 378: +#line 1583 "./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) { @@ -4283,11 +4288,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4287 "util/configparser.c" /* yacc.c:1646 */ +#line 4292 "util/configparser.c" /* yacc.c:1646 */ break; - case 376: -#line 1595 "./util/configparser.y" /* yacc.c:1646 */ + case 379: +#line 1596 "./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) { @@ -4299,11 +4304,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4303 "util/configparser.c" /* yacc.c:1646 */ +#line 4308 "util/configparser.c" /* yacc.c:1646 */ break; - case 377: -#line 1608 "./util/configparser.y" /* yacc.c:1646 */ + case 380: +#line 1609 "./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) @@ -4311,11 +4316,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4315 "util/configparser.c" /* yacc.c:1646 */ +#line 4320 "util/configparser.c" /* yacc.c:1646 */ break; - case 378: -#line 1617 "./util/configparser.y" /* yacc.c:1646 */ + case 381: +#line 1618 "./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) @@ -4323,11 +4328,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4327 "util/configparser.c" /* yacc.c:1646 */ +#line 4332 "util/configparser.c" /* yacc.c:1646 */ break; - case 379: -#line 1626 "./util/configparser.y" /* yacc.c:1646 */ + case 382: +#line 1627 "./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) @@ -4335,11 +4340,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4339 "util/configparser.c" /* yacc.c:1646 */ +#line 4344 "util/configparser.c" /* yacc.c:1646 */ break; - case 380: -#line 1635 "./util/configparser.y" /* yacc.c:1646 */ + case 383: +#line 1636 "./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) @@ -4347,11 +4352,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4351 "util/configparser.c" /* yacc.c:1646 */ +#line 4356 "util/configparser.c" /* yacc.c:1646 */ break; - case 381: -#line 1644 "./util/configparser.y" /* yacc.c:1646 */ + case 384: +#line 1645 "./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) @@ -4360,11 +4365,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4364 "util/configparser.c" /* yacc.c:1646 */ +#line 4369 "util/configparser.c" /* yacc.c:1646 */ break; - case 382: -#line 1654 "./util/configparser.y" /* yacc.c:1646 */ + case 385: +#line 1655 "./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) @@ -4373,11 +4378,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4377 "util/configparser.c" /* yacc.c:1646 */ +#line 4382 "util/configparser.c" /* yacc.c:1646 */ break; - case 383: -#line 1664 "./util/configparser.y" /* yacc.c:1646 */ + case 386: +#line 1665 "./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) @@ -4387,11 +4392,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4391 "util/configparser.c" /* yacc.c:1646 */ +#line 4396 "util/configparser.c" /* yacc.c:1646 */ break; - case 384: -#line 1675 "./util/configparser.y" /* yacc.c:1646 */ + case 387: +#line 1676 "./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) @@ -4399,11 +4404,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4403 "util/configparser.c" /* yacc.c:1646 */ +#line 4408 "util/configparser.c" /* yacc.c:1646 */ break; - case 385: -#line 1684 "./util/configparser.y" /* yacc.c:1646 */ + case 388: +#line 1685 "./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) @@ -4411,11 +4416,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4415 "util/configparser.c" /* yacc.c:1646 */ +#line 4420 "util/configparser.c" /* yacc.c:1646 */ break; - case 386: -#line 1693 "./util/configparser.y" /* yacc.c:1646 */ + case 389: +#line 1694 "./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) @@ -4423,11 +4428,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4427 "util/configparser.c" /* yacc.c:1646 */ +#line 4432 "util/configparser.c" /* yacc.c:1646 */ break; - case 387: -#line 1702 "./util/configparser.y" /* yacc.c:1646 */ + case 390: +#line 1703 "./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) @@ -4435,11 +4440,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4439 "util/configparser.c" /* yacc.c:1646 */ +#line 4444 "util/configparser.c" /* yacc.c:1646 */ break; - case 388: -#line 1711 "./util/configparser.y" /* yacc.c:1646 */ + case 391: +#line 1712 "./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) @@ -4451,11 +4456,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4455 "util/configparser.c" /* yacc.c:1646 */ +#line 4460 "util/configparser.c" /* yacc.c:1646 */ break; - case 389: -#line 1724 "./util/configparser.y" /* yacc.c:1646 */ + case 392: +#line 1725 "./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) @@ -4467,11 +4472,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4471 "util/configparser.c" /* yacc.c:1646 */ +#line 4476 "util/configparser.c" /* yacc.c:1646 */ break; - case 390: -#line 1737 "./util/configparser.y" /* yacc.c:1646 */ + case 393: +#line 1738 "./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) @@ -4479,21 +4484,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4483 "util/configparser.c" /* yacc.c:1646 */ +#line 4488 "util/configparser.c" /* yacc.c:1646 */ break; - case 391: -#line 1746 "./util/configparser.y" /* yacc.c:1646 */ + case 394: +#line 1747 "./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 4493 "util/configparser.c" /* yacc.c:1646 */ +#line 4498 "util/configparser.c" /* yacc.c:1646 */ break; - case 392: -#line 1753 "./util/configparser.y" /* yacc.c:1646 */ + case 395: +#line 1754 "./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) @@ -4501,11 +4506,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4505 "util/configparser.c" /* yacc.c:1646 */ +#line 4510 "util/configparser.c" /* yacc.c:1646 */ break; - case 393: -#line 1762 "./util/configparser.y" /* yacc.c:1646 */ + case 396: +#line 1763 "./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) @@ -4513,11 +4518,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4517 "util/configparser.c" /* yacc.c:1646 */ +#line 4522 "util/configparser.c" /* yacc.c:1646 */ break; - case 394: -#line 1771 "./util/configparser.y" /* yacc.c:1646 */ + case 397: +#line 1772 "./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) @@ -4525,11 +4530,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4529 "util/configparser.c" /* yacc.c:1646 */ +#line 4534 "util/configparser.c" /* yacc.c:1646 */ break; - case 395: -#line 1780 "./util/configparser.y" /* yacc.c:1646 */ + case 398: +#line 1781 "./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) @@ -4538,22 +4543,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4542 "util/configparser.c" /* yacc.c:1646 */ +#line 4547 "util/configparser.c" /* yacc.c:1646 */ break; - case 396: -#line 1789 "./util/configparser.y" /* yacc.c:1646 */ + case 399: +#line 1790 "./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 4553 "util/configparser.c" /* yacc.c:1646 */ +#line 4558 "util/configparser.c" /* yacc.c:1646 */ break; - case 397: -#line 1797 "./util/configparser.y" /* yacc.c:1646 */ + case 400: +#line 1798 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4565,22 +4570,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4569 "util/configparser.c" /* yacc.c:1646 */ +#line 4574 "util/configparser.c" /* yacc.c:1646 */ break; - case 398: -#line 1810 "./util/configparser.y" /* yacc.c:1646 */ + case 401: +#line 1811 "./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 4580 "util/configparser.c" /* yacc.c:1646 */ +#line 4585 "util/configparser.c" /* yacc.c:1646 */ break; - case 399: -#line 1818 "./util/configparser.y" /* yacc.c:1646 */ + case 402: +#line 1819 "./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 && @@ -4612,21 +4617,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4616 "util/configparser.c" /* yacc.c:1646 */ +#line 4621 "util/configparser.c" /* yacc.c:1646 */ break; - case 400: -#line 1851 "./util/configparser.y" /* yacc.c:1646 */ + case 403: +#line 1852 "./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 4626 "util/configparser.c" /* yacc.c:1646 */ +#line 4631 "util/configparser.c" /* yacc.c:1646 */ break; - case 401: -#line 1858 "./util/configparser.y" /* yacc.c:1646 */ + case 404: +#line 1859 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4640,11 +4645,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4644 "util/configparser.c" /* yacc.c:1646 */ +#line 4649 "util/configparser.c" /* yacc.c:1646 */ break; - case 402: -#line 1873 "./util/configparser.y" /* yacc.c:1646 */ + case 405: +#line 1874 "./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) @@ -4653,11 +4658,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4657 "util/configparser.c" /* yacc.c:1646 */ +#line 4662 "util/configparser.c" /* yacc.c:1646 */ break; - case 403: -#line 1883 "./util/configparser.y" /* yacc.c:1646 */ + case 406: +#line 1884 "./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) @@ -4666,41 +4671,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4670 "util/configparser.c" /* yacc.c:1646 */ +#line 4675 "util/configparser.c" /* yacc.c:1646 */ break; - case 404: -#line 1893 "./util/configparser.y" /* yacc.c:1646 */ + case 407: +#line 1894 "./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 4680 "util/configparser.c" /* yacc.c:1646 */ +#line 4685 "util/configparser.c" /* yacc.c:1646 */ break; - case 405: -#line 1900 "./util/configparser.y" /* yacc.c:1646 */ + case 408: +#line 1901 "./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 4690 "util/configparser.c" /* yacc.c:1646 */ +#line 4695 "util/configparser.c" /* yacc.c:1646 */ break; - case 406: -#line 1907 "./util/configparser.y" /* yacc.c:1646 */ + case 409: +#line 1908 "./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 4700 "util/configparser.c" /* yacc.c:1646 */ +#line 4705 "util/configparser.c" /* yacc.c:1646 */ break; - case 407: -#line 1914 "./util/configparser.y" /* yacc.c:1646 */ + case 410: +#line 1915 "./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) @@ -4708,22 +4713,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4712 "util/configparser.c" /* yacc.c:1646 */ +#line 4717 "util/configparser.c" /* yacc.c:1646 */ break; - case 408: -#line 1923 "./util/configparser.y" /* yacc.c:1646 */ + case 411: +#line 1924 "./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 4723 "util/configparser.c" /* yacc.c:1646 */ +#line 4728 "util/configparser.c" /* yacc.c:1646 */ break; - case 409: -#line 1931 "./util/configparser.y" /* yacc.c:1646 */ + case 412: +#line 1932 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4736,11 +4741,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4740 "util/configparser.c" /* yacc.c:1646 */ +#line 4745 "util/configparser.c" /* yacc.c:1646 */ break; - case 410: -#line 1945 "./util/configparser.y" /* yacc.c:1646 */ + case 413: +#line 1946 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4760,11 +4765,11 @@ yyreduce: } } } -#line 4764 "util/configparser.c" /* yacc.c:1646 */ +#line 4769 "util/configparser.c" /* yacc.c:1646 */ break; - case 411: -#line 1966 "./util/configparser.y" /* yacc.c:1646 */ + case 414: +#line 1967 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4784,11 +4789,11 @@ yyreduce: } } } -#line 4788 "util/configparser.c" /* yacc.c:1646 */ +#line 4793 "util/configparser.c" /* yacc.c:1646 */ break; - case 412: -#line 1987 "./util/configparser.y" /* yacc.c:1646 */ + case 415: +#line 1988 "./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, @@ -4799,11 +4804,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4803 "util/configparser.c" /* yacc.c:1646 */ +#line 4808 "util/configparser.c" /* yacc.c:1646 */ break; - case 413: -#line 1999 "./util/configparser.y" /* yacc.c:1646 */ + case 416: +#line 2000 "./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, @@ -4814,11 +4819,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4818 "util/configparser.c" /* yacc.c:1646 */ +#line 4823 "util/configparser.c" /* yacc.c:1646 */ break; - case 414: -#line 2011 "./util/configparser.y" /* yacc.c:1646 */ + case 417: +#line 2012 "./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, @@ -4829,11 +4834,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4833 "util/configparser.c" /* yacc.c:1646 */ +#line 4838 "util/configparser.c" /* yacc.c:1646 */ break; - case 415: -#line 2023 "./util/configparser.y" /* yacc.c:1646 */ + case 418: +#line 2024 "./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, @@ -4841,11 +4846,11 @@ yyreduce: yyerror("out of memory"); } } -#line 4845 "util/configparser.c" /* yacc.c:1646 */ +#line 4850 "util/configparser.c" /* yacc.c:1646 */ break; - case 416: -#line 2032 "./util/configparser.y" /* yacc.c:1646 */ + case 419: +#line 2033 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4865,11 +4870,11 @@ yyreduce: } } } -#line 4869 "util/configparser.c" /* yacc.c:1646 */ +#line 4874 "util/configparser.c" /* yacc.c:1646 */ break; - case 417: -#line 2053 "./util/configparser.y" /* yacc.c:1646 */ + case 420: +#line 2054 "./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) @@ -4877,11 +4882,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4881 "util/configparser.c" /* yacc.c:1646 */ +#line 4886 "util/configparser.c" /* yacc.c:1646 */ break; - case 418: -#line 2063 "./util/configparser.y" /* yacc.c:1646 */ + case 421: +#line 2064 "./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) @@ -4889,33 +4894,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4893 "util/configparser.c" /* yacc.c:1646 */ +#line 4898 "util/configparser.c" /* yacc.c:1646 */ break; - case 419: -#line 2072 "./util/configparser.y" /* yacc.c:1646 */ + case 422: +#line 2073 "./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 4904 "util/configparser.c" /* yacc.c:1646 */ +#line 4909 "util/configparser.c" /* yacc.c:1646 */ break; - case 420: -#line 2080 "./util/configparser.y" /* yacc.c:1646 */ + case 423: +#line 2081 "./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 4915 "util/configparser.c" /* yacc.c:1646 */ +#line 4920 "util/configparser.c" /* yacc.c:1646 */ break; - case 421: -#line 2088 "./util/configparser.y" /* yacc.c:1646 */ + case 424: +#line 2089 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4927,11 +4932,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4931 "util/configparser.c" /* yacc.c:1646 */ +#line 4936 "util/configparser.c" /* yacc.c:1646 */ break; - case 422: -#line 2101 "./util/configparser.y" /* yacc.c:1646 */ + case 425: +#line 2102 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4943,11 +4948,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4947 "util/configparser.c" /* yacc.c:1646 */ +#line 4952 "util/configparser.c" /* yacc.c:1646 */ break; - case 423: -#line 2114 "./util/configparser.y" /* yacc.c:1646 */ + case 426: +#line 2115 "./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) { @@ -4961,11 +4966,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 4965 "util/configparser.c" /* yacc.c:1646 */ +#line 4970 "util/configparser.c" /* yacc.c:1646 */ break; - case 424: -#line 2129 "./util/configparser.y" /* yacc.c:1646 */ + case 427: +#line 2130 "./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) { @@ -4979,11 +4984,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 4983 "util/configparser.c" /* yacc.c:1646 */ +#line 4988 "util/configparser.c" /* yacc.c:1646 */ break; - case 425: -#line 2144 "./util/configparser.y" /* yacc.c:1646 */ + case 428: +#line 2145 "./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) @@ -4991,11 +4996,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4995 "util/configparser.c" /* yacc.c:1646 */ +#line 5000 "util/configparser.c" /* yacc.c:1646 */ break; - case 426: -#line 2153 "./util/configparser.y" /* yacc.c:1646 */ + case 429: +#line 2154 "./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) @@ -5003,20 +5008,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5007 "util/configparser.c" /* yacc.c:1646 */ +#line 5012 "util/configparser.c" /* yacc.c:1646 */ break; - case 427: -#line 2162 "./util/configparser.y" /* yacc.c:1646 */ + case 430: +#line 2163 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5016 "util/configparser.c" /* yacc.c:1646 */ +#line 5021 "util/configparser.c" /* yacc.c:1646 */ break; - case 428: -#line 2168 "./util/configparser.y" /* yacc.c:1646 */ + case 431: +#line 2169 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5024,11 +5029,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5028 "util/configparser.c" /* yacc.c:1646 */ +#line 5033 "util/configparser.c" /* yacc.c:1646 */ break; - case 429: -#line 2177 "./util/configparser.y" /* yacc.c:1646 */ + case 432: +#line 2178 "./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) @@ -5036,11 +5041,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5040 "util/configparser.c" /* yacc.c:1646 */ +#line 5045 "util/configparser.c" /* yacc.c:1646 */ break; - case 430: -#line 2186 "./util/configparser.y" /* yacc.c:1646 */ + case 433: +#line 2187 "./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) @@ -5049,11 +5054,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5053 "util/configparser.c" /* yacc.c:1646 */ +#line 5058 "util/configparser.c" /* yacc.c:1646 */ break; - case 431: -#line 2196 "./util/configparser.y" /* yacc.c:1646 */ + case 434: +#line 2197 "./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) @@ -5062,11 +5067,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5066 "util/configparser.c" /* yacc.c:1646 */ +#line 5071 "util/configparser.c" /* yacc.c:1646 */ break; - case 432: -#line 2206 "./util/configparser.y" /* yacc.c:1646 */ + case 435: +#line 2207 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5078,11 +5083,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5082 "util/configparser.c" /* yacc.c:1646 */ +#line 5087 "util/configparser.c" /* yacc.c:1646 */ break; - case 433: -#line 2219 "./util/configparser.y" /* yacc.c:1646 */ + case 436: +#line 2220 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5094,11 +5099,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5098 "util/configparser.c" /* yacc.c:1646 */ +#line 5103 "util/configparser.c" /* yacc.c:1646 */ break; - case 434: -#line 2232 "./util/configparser.y" /* yacc.c:1646 */ + case 437: +#line 2233 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5109,11 +5114,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5113 "util/configparser.c" /* yacc.c:1646 */ +#line 5118 "util/configparser.c" /* yacc.c:1646 */ break; - case 435: -#line 2244 "./util/configparser.y" /* yacc.c:1646 */ + case 438: +#line 2245 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5126,11 +5131,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5130 "util/configparser.c" /* yacc.c:1646 */ +#line 5135 "util/configparser.c" /* yacc.c:1646 */ break; - case 436: -#line 2258 "./util/configparser.y" /* yacc.c:1646 */ + case 439: +#line 2259 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5141,11 +5146,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5145 "util/configparser.c" /* yacc.c:1646 */ +#line 5150 "util/configparser.c" /* yacc.c:1646 */ break; - case 437: -#line 2270 "./util/configparser.y" /* yacc.c:1646 */ + case 440: +#line 2271 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5158,11 +5163,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5162 "util/configparser.c" /* yacc.c:1646 */ +#line 5167 "util/configparser.c" /* yacc.c:1646 */ break; - case 438: -#line 2284 "./util/configparser.y" /* yacc.c:1646 */ + case 441: +#line 2285 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5171,31 +5176,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5175 "util/configparser.c" /* yacc.c:1646 */ +#line 5180 "util/configparser.c" /* yacc.c:1646 */ break; - case 439: -#line 2294 "./util/configparser.y" /* yacc.c:1646 */ + case 442: +#line 2295 "./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 5185 "util/configparser.c" /* yacc.c:1646 */ +#line 5190 "util/configparser.c" /* yacc.c:1646 */ break; - case 440: -#line 2301 "./util/configparser.y" /* yacc.c:1646 */ + case 443: +#line 2302 "./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 5195 "util/configparser.c" /* yacc.c:1646 */ +#line 5200 "util/configparser.c" /* yacc.c:1646 */ break; - case 441: -#line 2308 "./util/configparser.y" /* yacc.c:1646 */ + case 444: +#line 2309 "./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) @@ -5203,11 +5208,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5207 "util/configparser.c" /* yacc.c:1646 */ +#line 5212 "util/configparser.c" /* yacc.c:1646 */ break; - case 442: -#line 2317 "./util/configparser.y" /* yacc.c:1646 */ + case 445: +#line 2318 "./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) @@ -5215,11 +5220,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5219 "util/configparser.c" /* yacc.c:1646 */ +#line 5224 "util/configparser.c" /* yacc.c:1646 */ break; - case 443: -#line 2326 "./util/configparser.y" /* yacc.c:1646 */ + case 446: +#line 2327 "./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) @@ -5228,11 +5233,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5232 "util/configparser.c" /* yacc.c:1646 */ +#line 5237 "util/configparser.c" /* yacc.c:1646 */ break; - case 444: -#line 2336 "./util/configparser.y" /* yacc.c:1646 */ + case 447: +#line 2337 "./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) @@ -5241,11 +5246,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5245 "util/configparser.c" /* yacc.c:1646 */ +#line 5250 "util/configparser.c" /* yacc.c:1646 */ break; - case 445: -#line 2346 "./util/configparser.y" /* yacc.c:1646 */ + case 448: +#line 2347 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5254,31 +5259,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5258 "util/configparser.c" /* yacc.c:1646 */ +#line 5263 "util/configparser.c" /* yacc.c:1646 */ break; - case 446: -#line 2356 "./util/configparser.y" /* yacc.c:1646 */ + case 449: +#line 2357 "./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 5268 "util/configparser.c" /* yacc.c:1646 */ +#line 5273 "util/configparser.c" /* yacc.c:1646 */ break; - case 447: -#line 2363 "./util/configparser.y" /* yacc.c:1646 */ + case 450: +#line 2364 "./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 5278 "util/configparser.c" /* yacc.c:1646 */ +#line 5283 "util/configparser.c" /* yacc.c:1646 */ break; - case 448: -#line 2370 "./util/configparser.y" /* yacc.c:1646 */ + case 451: +#line 2371 "./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) @@ -5286,11 +5291,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5290 "util/configparser.c" /* yacc.c:1646 */ +#line 5295 "util/configparser.c" /* yacc.c:1646 */ break; - case 449: -#line 2379 "./util/configparser.y" /* yacc.c:1646 */ + case 452: +#line 2380 "./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) @@ -5298,11 +5303,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5302 "util/configparser.c" /* yacc.c:1646 */ +#line 5307 "util/configparser.c" /* yacc.c:1646 */ break; - case 450: -#line 2388 "./util/configparser.y" /* yacc.c:1646 */ + case 453: +#line 2389 "./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) @@ -5311,11 +5316,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5315 "util/configparser.c" /* yacc.c:1646 */ +#line 5320 "util/configparser.c" /* yacc.c:1646 */ break; - case 451: -#line 2398 "./util/configparser.y" /* yacc.c:1646 */ + case 454: +#line 2399 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5324,52 +5329,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5328 "util/configparser.c" /* yacc.c:1646 */ +#line 5333 "util/configparser.c" /* yacc.c:1646 */ break; - case 452: -#line 2408 "./util/configparser.y" /* yacc.c:1646 */ + case 455: +#line 2409 "./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 5338 "util/configparser.c" /* yacc.c:1646 */ +#line 5343 "util/configparser.c" /* yacc.c:1646 */ break; - case 453: -#line 2415 "./util/configparser.y" /* yacc.c:1646 */ + case 456: +#line 2416 "./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 5348 "util/configparser.c" /* yacc.c:1646 */ +#line 5353 "util/configparser.c" /* yacc.c:1646 */ break; - case 454: -#line 2422 "./util/configparser.y" /* yacc.c:1646 */ + case 457: +#line 2423 "./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 5358 "util/configparser.c" /* yacc.c:1646 */ +#line 5363 "util/configparser.c" /* yacc.c:1646 */ break; - case 455: -#line 2429 "./util/configparser.y" /* yacc.c:1646 */ + case 458: +#line 2430 "./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 5369 "util/configparser.c" /* yacc.c:1646 */ +#line 5374 "util/configparser.c" /* yacc.c:1646 */ break; - case 456: -#line 2437 "./util/configparser.y" /* yacc.c:1646 */ + case 459: +#line 2438 "./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) @@ -5378,11 +5383,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5382 "util/configparser.c" /* yacc.c:1646 */ +#line 5387 "util/configparser.c" /* yacc.c:1646 */ break; - case 457: -#line 2447 "./util/configparser.y" /* yacc.c:1646 */ + case 460: +#line 2448 "./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) @@ -5391,11 +5396,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5395 "util/configparser.c" /* yacc.c:1646 */ +#line 5400 "util/configparser.c" /* yacc.c:1646 */ break; - case 458: -#line 2457 "./util/configparser.y" /* yacc.c:1646 */ + case 461: +#line 2458 "./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) @@ -5404,11 +5409,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5408 "util/configparser.c" /* yacc.c:1646 */ +#line 5413 "util/configparser.c" /* yacc.c:1646 */ break; - case 459: -#line 2467 "./util/configparser.y" /* yacc.c:1646 */ + case 462: +#line 2468 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5417,11 +5422,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5421 "util/configparser.c" /* yacc.c:1646 */ +#line 5426 "util/configparser.c" /* yacc.c:1646 */ break; - case 460: -#line 2477 "./util/configparser.y" /* yacc.c:1646 */ + case 463: +#line 2478 "./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 && @@ -5452,11 +5457,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5456 "util/configparser.c" /* yacc.c:1646 */ +#line 5461 "util/configparser.c" /* yacc.c:1646 */ break; - case 461: -#line 2509 "./util/configparser.y" /* yacc.c:1646 */ + case 464: +#line 2510 "./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)); @@ -5465,33 +5470,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5469 "util/configparser.c" /* yacc.c:1646 */ +#line 5474 "util/configparser.c" /* yacc.c:1646 */ break; - case 462: -#line 2519 "./util/configparser.y" /* yacc.c:1646 */ + case 465: +#line 2520 "./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 5480 "util/configparser.c" /* yacc.c:1646 */ +#line 5485 "util/configparser.c" /* yacc.c:1646 */ break; - case 463: -#line 2527 "./util/configparser.y" /* yacc.c:1646 */ + case 466: +#line 2528 "./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 5491 "util/configparser.c" /* yacc.c:1646 */ +#line 5496 "util/configparser.c" /* yacc.c:1646 */ break; - case 464: -#line 2535 "./util/configparser.y" /* yacc.c:1646 */ + case 467: +#line 2536 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5505,11 +5510,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5509 "util/configparser.c" /* yacc.c:1646 */ +#line 5514 "util/configparser.c" /* yacc.c:1646 */ break; - case 465: -#line 2550 "./util/configparser.y" /* yacc.c:1646 */ + case 468: +#line 2551 "./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) @@ -5517,19 +5522,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5521 "util/configparser.c" /* yacc.c:1646 */ +#line 5526 "util/configparser.c" /* yacc.c:1646 */ break; - case 466: -#line 2559 "./util/configparser.y" /* yacc.c:1646 */ + case 469: +#line 2560 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 5529 "util/configparser.c" /* yacc.c:1646 */ +#line 5534 "util/configparser.c" /* yacc.c:1646 */ break; - case 477: -#line 2570 "./util/configparser.y" /* yacc.c:1646 */ + case 480: +#line 2571 "./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) @@ -5538,11 +5543,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5542 "util/configparser.c" /* yacc.c:1646 */ +#line 5547 "util/configparser.c" /* yacc.c:1646 */ break; - case 478: -#line 2580 "./util/configparser.y" /* yacc.c:1646 */ + case 481: +#line 2581 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5550,79 +5555,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5554 "util/configparser.c" /* yacc.c:1646 */ +#line 5559 "util/configparser.c" /* yacc.c:1646 */ break; - case 479: -#line 2589 "./util/configparser.y" /* yacc.c:1646 */ + case 482: +#line 2590 "./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 5564 "util/configparser.c" /* yacc.c:1646 */ +#line 5569 "util/configparser.c" /* yacc.c:1646 */ break; - case 480: -#line 2596 "./util/configparser.y" /* yacc.c:1646 */ + case 483: +#line 2597 "./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 5574 "util/configparser.c" /* yacc.c:1646 */ +#line 5579 "util/configparser.c" /* yacc.c:1646 */ break; - case 481: -#line 2603 "./util/configparser.y" /* yacc.c:1646 */ + case 484: +#line 2604 "./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 5584 "util/configparser.c" /* yacc.c:1646 */ +#line 5589 "util/configparser.c" /* yacc.c:1646 */ break; - case 482: -#line 2610 "./util/configparser.y" /* yacc.c:1646 */ + case 485: +#line 2611 "./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 5594 "util/configparser.c" /* yacc.c:1646 */ +#line 5599 "util/configparser.c" /* yacc.c:1646 */ break; - case 483: -#line 2617 "./util/configparser.y" /* yacc.c:1646 */ + case 486: +#line 2618 "./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 5604 "util/configparser.c" /* yacc.c:1646 */ +#line 5609 "util/configparser.c" /* yacc.c:1646 */ break; - case 484: -#line 2624 "./util/configparser.y" /* yacc.c:1646 */ + case 487: +#line 2625 "./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 5614 "util/configparser.c" /* yacc.c:1646 */ +#line 5619 "util/configparser.c" /* yacc.c:1646 */ break; - case 485: -#line 2631 "./util/configparser.y" /* yacc.c:1646 */ + case 488: +#line 2632 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 5622 "util/configparser.c" /* yacc.c:1646 */ +#line 5627 "util/configparser.c" /* yacc.c:1646 */ break; - case 500: -#line 2648 "./util/configparser.y" /* yacc.c:1646 */ + case 503: +#line 2649 "./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) @@ -5630,21 +5635,21 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5634 "util/configparser.c" /* yacc.c:1646 */ +#line 5639 "util/configparser.c" /* yacc.c:1646 */ break; - case 501: -#line 2657 "./util/configparser.y" /* yacc.c:1646 */ + case 504: +#line 2658 "./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 5644 "util/configparser.c" /* yacc.c:1646 */ +#line 5649 "util/configparser.c" /* yacc.c:1646 */ break; - case 502: -#line 2664 "./util/configparser.y" /* yacc.c:1646 */ + case 505: +#line 2665 "./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) @@ -5652,11 +5657,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5656 "util/configparser.c" /* yacc.c:1646 */ +#line 5661 "util/configparser.c" /* yacc.c:1646 */ break; - case 503: -#line 2673 "./util/configparser.y" /* yacc.c:1646 */ + case 506: +#line 2674 "./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) @@ -5664,31 +5669,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5668 "util/configparser.c" /* yacc.c:1646 */ +#line 5673 "util/configparser.c" /* yacc.c:1646 */ break; - case 504: -#line 2682 "./util/configparser.y" /* yacc.c:1646 */ + case 507: +#line 2683 "./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 5678 "util/configparser.c" /* yacc.c:1646 */ +#line 5683 "util/configparser.c" /* yacc.c:1646 */ break; - case 505: -#line 2689 "./util/configparser.y" /* yacc.c:1646 */ + case 508: +#line 2690 "./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 5688 "util/configparser.c" /* yacc.c:1646 */ +#line 5693 "util/configparser.c" /* yacc.c:1646 */ break; - case 506: -#line 2696 "./util/configparser.y" /* yacc.c:1646 */ + case 509: +#line 2697 "./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) @@ -5697,11 +5702,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5701 "util/configparser.c" /* yacc.c:1646 */ +#line 5706 "util/configparser.c" /* yacc.c:1646 */ break; - case 507: -#line 2706 "./util/configparser.y" /* yacc.c:1646 */ + case 510: +#line 2707 "./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) @@ -5710,11 +5715,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5714 "util/configparser.c" /* yacc.c:1646 */ +#line 5719 "util/configparser.c" /* yacc.c:1646 */ break; - case 508: -#line 2716 "./util/configparser.y" /* yacc.c:1646 */ + case 511: +#line 2717 "./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) @@ -5723,11 +5728,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5727 "util/configparser.c" /* yacc.c:1646 */ +#line 5732 "util/configparser.c" /* yacc.c:1646 */ break; - case 509: -#line 2726 "./util/configparser.y" /* yacc.c:1646 */ + case 512: +#line 2727 "./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) @@ -5736,11 +5741,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5740 "util/configparser.c" /* yacc.c:1646 */ +#line 5745 "util/configparser.c" /* yacc.c:1646 */ break; - case 510: -#line 2736 "./util/configparser.y" /* yacc.c:1646 */ + case 513: +#line 2737 "./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) @@ -5749,11 +5754,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5753 "util/configparser.c" /* yacc.c:1646 */ +#line 5758 "util/configparser.c" /* yacc.c:1646 */ break; - case 511: -#line 2746 "./util/configparser.y" /* yacc.c:1646 */ + case 514: +#line 2747 "./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) @@ -5762,29 +5767,29 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5766 "util/configparser.c" /* yacc.c:1646 */ +#line 5771 "util/configparser.c" /* yacc.c:1646 */ break; - case 512: -#line 2756 "./util/configparser.y" /* yacc.c:1646 */ + case 515: +#line 2757 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 5774 "util/configparser.c" /* yacc.c:1646 */ +#line 5779 "util/configparser.c" /* yacc.c:1646 */ break; - case 516: -#line 2765 "./util/configparser.y" /* yacc.c:1646 */ + case 519: +#line 2766 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->python_script); cfg_parser->cfg->python_script = (yyvsp[0].str); } -#line 5784 "util/configparser.c" /* yacc.c:1646 */ +#line 5789 "util/configparser.c" /* yacc.c:1646 */ break; - case 517: -#line 2771 "./util/configparser.y" /* yacc.c:1646 */ + case 520: +#line 2772 "./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) @@ -5793,21 +5798,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5797 "util/configparser.c" /* yacc.c:1646 */ +#line 5802 "util/configparser.c" /* yacc.c:1646 */ break; - case 518: -#line 2781 "./util/configparser.y" /* yacc.c:1646 */ + case 521: +#line 2782 "./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 5807 "util/configparser.c" /* yacc.c:1646 */ +#line 5812 "util/configparser.c" /* yacc.c:1646 */ break; - case 519: -#line 2788 "./util/configparser.y" /* yacc.c:1646 */ + case 522: +#line 2789 "./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)); @@ -5815,30 +5820,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 5819 "util/configparser.c" /* yacc.c:1646 */ +#line 5824 "util/configparser.c" /* yacc.c:1646 */ break; - case 520: -#line 2797 "./util/configparser.y" /* yacc.c:1646 */ + case 523: +#line 2798 "./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 5830 "util/configparser.c" /* yacc.c:1646 */ +#line 5835 "util/configparser.c" /* yacc.c:1646 */ break; - case 521: -#line 2805 "./util/configparser.y" /* yacc.c:1646 */ + case 524: +#line 2806 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnscrypt:)\n")); } -#line 5838 "util/configparser.c" /* yacc.c:1646 */ +#line 5843 "util/configparser.c" /* yacc.c:1646 */ break; - case 534: -#line 2821 "./util/configparser.y" /* yacc.c:1646 */ + case 537: +#line 2822 "./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) @@ -5846,11 +5851,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5850 "util/configparser.c" /* yacc.c:1646 */ +#line 5855 "util/configparser.c" /* yacc.c:1646 */ break; - case 535: -#line 2831 "./util/configparser.y" /* yacc.c:1646 */ + case 538: +#line 2832 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5858,21 +5863,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5862 "util/configparser.c" /* yacc.c:1646 */ +#line 5867 "util/configparser.c" /* yacc.c:1646 */ break; - case 536: -#line 2840 "./util/configparser.y" /* yacc.c:1646 */ + case 539: +#line 2841 "./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 5872 "util/configparser.c" /* yacc.c:1646 */ +#line 5877 "util/configparser.c" /* yacc.c:1646 */ break; - case 537: -#line 2847 "./util/configparser.y" /* yacc.c:1646 */ + case 540: +#line 2848 "./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))) @@ -5880,21 +5885,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 5884 "util/configparser.c" /* yacc.c:1646 */ +#line 5889 "util/configparser.c" /* yacc.c:1646 */ break; - case 538: -#line 2856 "./util/configparser.y" /* yacc.c:1646 */ + case 541: +#line 2857 "./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 5894 "util/configparser.c" /* yacc.c:1646 */ +#line 5899 "util/configparser.c" /* yacc.c:1646 */ break; - case 539: -#line 2863 "./util/configparser.y" /* yacc.c:1646 */ + case 542: +#line 2864 "./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))) @@ -5902,22 +5907,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 5906 "util/configparser.c" /* yacc.c:1646 */ +#line 5911 "util/configparser.c" /* yacc.c:1646 */ break; - case 540: -#line 2872 "./util/configparser.y" /* yacc.c:1646 */ + case 543: +#line 2873 "./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 5917 "util/configparser.c" /* yacc.c:1646 */ +#line 5922 "util/configparser.c" /* yacc.c:1646 */ break; - case 541: -#line 2880 "./util/configparser.y" /* yacc.c:1646 */ + case 544: +#line 2881 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5929,22 +5934,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5933 "util/configparser.c" /* yacc.c:1646 */ +#line 5938 "util/configparser.c" /* yacc.c:1646 */ break; - case 542: -#line 2893 "./util/configparser.y" /* yacc.c:1646 */ + case 545: +#line 2894 "./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 5944 "util/configparser.c" /* yacc.c:1646 */ +#line 5949 "util/configparser.c" /* yacc.c:1646 */ break; - case 543: -#line 2901 "./util/configparser.y" /* yacc.c:1646 */ + case 546: +#line 2902 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5956,19 +5961,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5960 "util/configparser.c" /* yacc.c:1646 */ +#line 5965 "util/configparser.c" /* yacc.c:1646 */ break; - case 544: -#line 2914 "./util/configparser.y" /* yacc.c:1646 */ + case 547: +#line 2915 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(cachedb:)\n")); } -#line 5968 "util/configparser.c" /* yacc.c:1646 */ +#line 5973 "util/configparser.c" /* yacc.c:1646 */ break; - case 552: -#line 2924 "./util/configparser.y" /* yacc.c:1646 */ + case 555: +#line 2925 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -5982,11 +5987,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5986 "util/configparser.c" /* yacc.c:1646 */ +#line 5991 "util/configparser.c" /* yacc.c:1646 */ break; - case 553: -#line 2939 "./util/configparser.y" /* yacc.c:1646 */ + case 556: +#line 2940 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6000,11 +6005,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6004 "util/configparser.c" /* yacc.c:1646 */ +#line 6009 "util/configparser.c" /* yacc.c:1646 */ break; - case 554: -#line 2954 "./util/configparser.y" /* yacc.c:1646 */ + case 557: +#line 2955 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6015,11 +6020,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6019 "util/configparser.c" /* yacc.c:1646 */ +#line 6024 "util/configparser.c" /* yacc.c:1646 */ break; - case 555: -#line 2966 "./util/configparser.y" /* yacc.c:1646 */ + case 558: +#line 2967 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6033,11 +6038,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6037 "util/configparser.c" /* yacc.c:1646 */ +#line 6042 "util/configparser.c" /* yacc.c:1646 */ break; - case 556: -#line 2981 "./util/configparser.y" /* yacc.c:1646 */ + case 559: +#line 2982 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6049,11 +6054,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6053 "util/configparser.c" /* yacc.c:1646 */ +#line 6058 "util/configparser.c" /* yacc.c:1646 */ break; - case 557: -#line 2994 "./util/configparser.y" /* yacc.c:1646 */ + case 560: +#line 2995 "./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) @@ -6063,11 +6068,11 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6067 "util/configparser.c" /* yacc.c:1646 */ +#line 6072 "util/configparser.c" /* yacc.c:1646 */ break; -#line 6071 "util/configparser.c" /* yacc.c:1646 */ +#line 6076 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -6295,7 +6300,7 @@ yyreturn: #endif return yyresult; } -#line 3004 "./util/configparser.y" /* yacc.c:1906 */ +#line 3005 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.y b/util/configparser.y index a4fbf3ead..0cfd77a1a 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -384,7 +384,8 @@ rpzstart: VAR_RPZ ; contents_rpz: contents_rpz content_rpz | ; -content_rpz: auth_name | auth_zonefile | rpz_tag +content_rpz: auth_name | auth_zonefile | rpz_tag | auth_master | auth_url | + auth_allow_notify ; server_num_threads: VAR_NUM_THREADS STRING_ARG { diff --git a/util/data/packed_rrset.c b/util/data/packed_rrset.c index 7b9d5494d..9d21b9cc9 100644 --- a/util/data/packed_rrset.c +++ b/util/data/packed_rrset.c @@ -386,3 +386,83 @@ packed_rrset_copy_alloc(struct ub_packed_rrset_key* key, packed_rrset_ttl_add(dd, now); return dk; } + +int +packed_rrset_find_rr(struct packed_rrset_data* d, uint8_t* rdata, size_t len, + size_t* index) +{ + size_t i; + for(i=0; icount; i++) { + if(d->rr_len[i] != len) + continue; + if(memcmp(d->rr_data[i], rdata, len) == 0) { + *index = i; + return 1; + } + } + return 0; +} + +struct packed_rrset_data* +packed_rrset_remove_rr(struct packed_rrset_data* old, size_t index, + struct regional* region) +{ + struct packed_rrset_data* d; + size_t i; + if(index >= old->count + old->rrsig_count) + return NULL; /* index out of bounds */ + if(region) + d = (struct packed_rrset_data*)regional_alloc(region, + packed_rrset_sizeof(old) - ( sizeof(size_t) + + sizeof(uint8_t*) + sizeof(time_t) + old->rr_len[index])); + else + d = (struct packed_rrset_data*)calloc(1, + packed_rrset_sizeof(old) - ( sizeof(size_t) + + sizeof(uint8_t*) + sizeof(time_t) + old->rr_len[index])); + if(!d) { + log_err("malloc failure"); + return NULL; + } + d->ttl = old->ttl; + d->count = old->count; + d->rrsig_count = old->rrsig_count; + if(index < d->count) d->count--; + else d->rrsig_count--; + d->trust = old->trust; + d->security = old->security; + + /* set rr_len, needed for ptr_fixup */ + d->rr_len = (size_t*)((uint8_t*)d + + sizeof(struct packed_rrset_data)); + if(index > 0) + memmove(d->rr_len, old->rr_len, (index)*sizeof(size_t)); + if(index+1 < old->count+old->rrsig_count) + memmove(&d->rr_len[index], &old->rr_len[index+1], + (old->count+old->rrsig_count - (index+1))*sizeof(size_t)); + packed_rrset_ptr_fixup(d); + + /* move over ttls */ + if(index > 0) + memmove(d->rr_ttl, old->rr_ttl, (index)*sizeof(time_t)); + if(index+1 < old->count+old->rrsig_count) + memmove(&d->rr_ttl[index], &old->rr_ttl[index+1], + (old->count+old->rrsig_count - (index+1))*sizeof(time_t)); + + /* move over rr_data */ + for(i=0; icount+d->rrsig_count; i++) { + size_t oldi; + if(i < index) oldi = i; + else oldi = i+1; + memmove(d->rr_data[i], old->rr_data[oldi], d->rr_len[i]); + } + + /* recalc ttl (lowest of remaining RR ttls) */ + if(d->count + d->rrsig_count > 0) + d->ttl = d->rr_ttl[0]; + for(i=0; icount+d->rrsig_count; i++) { + if(d->rr_ttl[i] < d->ttl) + d->ttl = d->rr_ttl[i]; + } + + return d; +} diff --git a/util/data/packed_rrset.h b/util/data/packed_rrset.h index 3a5335ddf..cb2664c05 100644 --- a/util/data/packed_rrset.h +++ b/util/data/packed_rrset.h @@ -446,4 +446,28 @@ struct ub_packed_rrset_key* packed_rrset_copy_alloc( struct ub_packed_rrset_key* key, struct alloc_cache* alloc, time_t now); +/** + * Find RR index in packed rrset + * @param d: packed rrset + * @param rdata: RDATA of RR to find + * @param len: length of rdata + * @param index: pointer to int to store index of found RR + * @return 1 if RR found, 0 otherwise + */ +int +packed_rrset_find_rr(struct packed_rrset_data* d, uint8_t* rdata, size_t len, + size_t* index); + +/** + * Remove RR from packed rrset + * @param old: packed rrset containing RR to remove + * @param index: index of RR to remove + * @param region: region to use for allocation of new packet RR. Malloc used if + * NULL + * @return pointer to newly allocated packed rrset + */ +struct packed_rrset_data* +packed_rrset_remove_rr(struct packed_rrset_data* old, size_t index, + struct regional* region); + #endif /* UTIL_DATA_PACKED_RRSET_H */ diff --git a/util/iana_ports.inc b/util/iana_ports.inc index 5ead47f0f..6873ca9ab 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -4864,6 +4864,7 @@ 8805, 8807, 8808, +8809, 8873, 8880, 8883,