diff --git a/doc/Changelog b/doc/Changelog index a1bfc17a1..00682e24a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,8 @@ options. - bug #204: variable name ameliorated in log.c. - bug #206: in iana_update, no egrep, but awk use. + - ldns snapshot r2699 taken (includes DLV type). + - DLV work, config file element, trust anchor read in. 12 August 2008: Wouter - finished adjusting testset to provide qtype NS answers. diff --git a/doc/example.conf.in b/doc/example.conf.in index b10df7e03..b77ca6189 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -247,6 +247,11 @@ server: # separated by spaces. "iterator" or "validator iterator" # module-config: "validator iterator" + # File with DLV trusted keys. Same format as trust-anchor-file. + # There can be only one DLV configured, it is trusted from root down. + # Download https://secure.isc.org/ops/dlv/dlv.isc.org.key + # dlv-anchor-file: "dlv.isc.org.key" + # File with trusted keys for validation. Specify more than one file # with several entries, one file per entry. # Zone file format, with DS and DNSKEY entries. @@ -263,7 +268,7 @@ server: # but has a different file format. Format is BIND-9 style format, # the trusted-keys { name flag proto algo "key"; }; clauses are read. # trusted-keys-file: "" - + # Override the date for validation with a specific fixed date. # Do not set this unless you are debugging signature inception # and expiration. "" or "0" turns the feature off. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 0fed04ff8..b52e22469 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -411,6 +411,13 @@ with several entries, one file per entry. Like \fBtrust\-anchor\-file\fR but has a different file format. Format is BIND\-9 style format, the trusted\-keys { name flag proto algo "key"; }; clauses are read. .TP +.B dlv\-anchor\-file: \fI +File with trusted keys for DLV (DNSSEC Lookaside Validation). Both DS and +DNSKEY entries can be used in the file, in the same format as for +\fItrust\-anchor\-file:\fR statements. Only one DLV can be configured, more +would be slow. The DLV configured is used as a root trusted DLV, this +means that it is a lookaside for the root. Default is "", or no dlv anchor file. +.TP .B val\-override\-date: \fI Default is "" or "0", which disables this debugging feature. If enabled by giving a RRSIG style date, that date is used for verifying RRSIG inception diff --git a/ldns-src.tar.gz b/ldns-src.tar.gz index ac99a720c..dd3e0c50b 100644 Binary files a/ldns-src.tar.gz and b/ldns-src.tar.gz differ diff --git a/util/config_file.c b/util/config_file.c index 60183fc02..05a33836e 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -137,6 +137,7 @@ config_create() cfg->trust_anchor_file_list = NULL; cfg->trust_anchor_list = NULL; cfg->trusted_keys_file_list = NULL; + cfg->dlv_anchor_file = NULL; cfg->val_date_override = 0; cfg->val_clean_additional = 1; cfg->val_permissive_mode = 0; @@ -304,6 +305,9 @@ int config_set_option(struct config_file* cfg, const char* opt, } else if(strcmp(opt, "trusted-keys-file:") == 0) { return cfg_strlist_insert(&cfg->trusted_keys_file_list, strdup(val)); + } else if(strcmp(opt, "dlv-anchor-file:") == 0) { + free(cfg->dlv_anchor_file); + return (cfg->dlv_anchor_file = strdup(val)) != NULL; } else if(strcmp(opt, "val-override-date:") == 0) { if(strcmp(val, "") == 0 || strcmp(val, "0") == 0) { cfg->val_date_override = 0; @@ -452,6 +456,7 @@ config_delete(struct config_file* cfg) config_delstrlist(cfg->trust_anchor_file_list); config_delstrlist(cfg->trusted_keys_file_list); config_delstrlist(cfg->trust_anchor_list); + free(cfg->dlv_anchor_file); config_deldblstrlist(cfg->acls); free(cfg->val_nsec3_key_iterations); config_deldblstrlist(cfg->local_zones); diff --git a/util/config_file.h b/util/config_file.h index 06dbe31c5..6b8a46e6d 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -178,6 +178,8 @@ struct config_file { struct config_strlist* trust_anchor_list; /** files with trusted DNSKEYs in named.conf format, list */ struct config_strlist* trusted_keys_file_list; + /** DLV anchor file */ + char* dlv_anchor_file; /** the number of seconds maximal TTL used for RRsets and messages */ int max_ttl; diff --git a/util/configlexer.c b/util/configlexer.c index 484219869..837c0d809 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -361,8 +361,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 92 -#define YY_END_OF_BUFFER 93 +#define YY_NUM_RULES 93 +#define YY_END_OF_BUFFER 94 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -370,97 +370,99 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[807] = +static yyconst flex_int16_t yy_accept[822] = { 0, - 1, 1, 76, 76, 80, 80, 84, 84, 88, 88, - 93, 91, 1, 74, 75, 2, 79, 92, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 76, 77, 92, 78, 92, - 80, 81, 82, 92, 87, 84, 85, 86, 92, 88, - 89, 90, 92, 91, 0, 1, 2, 2, 2, 2, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 76, 0, - 80, 0, 87, 0, 84, 88, 0, 91, 91, 91, + 1, 1, 77, 77, 81, 81, 85, 85, 89, 89, + 94, 92, 1, 75, 76, 2, 80, 93, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 77, 78, 93, 79, 93, + 81, 82, 83, 93, 88, 85, 86, 87, 93, 89, + 90, 91, 93, 92, 0, 1, 2, 2, 2, 2, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 77, + 0, 81, 0, 88, 0, 85, 89, 0, 92, 92, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 45, 91, 91, 91, 91, 6, 91, 91, 91, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 45, 92, 92, 92, 92, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 20, 91, 91, 12, 13, - 91, 15, 14, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 3, 91, 91, + 6, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 20, 92, 92, 92, 12, 13, 92, 15, 14, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 83, 91, - 91, 91, 91, 91, 91, 91, 91, 23, 91, 91, - 91, 91, 91, 91, 24, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 57, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 56, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 92, 92, 92, 3, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 84, 92, 92, 92, 92, + 92, 92, 92, 92, 23, 92, 92, 92, 92, 92, + 92, 24, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 57, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 56, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 91, 91, 91, 91, 21, 91, 91, 91, 91, 91, - 91, 91, 91, 22, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 17, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 46, 47, 44, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 5, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 71, - 70, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 25, 91, 91, 91, 91, 91, 91, 69, 91, 91, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 21, 92, 92, 92, 92, 92, 92, 92, + 92, 22, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 17, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 46, 47, 44, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 5, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 72, + 71, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 41, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 4, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 16, 91, 49, - 50, 48, 91, 91, 91, 91, 55, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 61, 91, 91, 91, 91, 91, 91, 91, 91, 31, - 91, 91, 91, 91, 91, 54, 91, 91, 91, 91, + 25, 92, 92, 92, 92, 92, 92, 70, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 41, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 4, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 16, + 92, 49, 50, 48, 92, 92, 92, 92, 55, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 62, 92, 92, 92, 92, 92, 92, 92, - 91, 91, 91, 91, 91, 58, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 63, 91, 91, 91, 91, 53, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 32, 33, 91, - 66, 91, 91, 27, 91, 91, 91, 91, 91, 91, - 7, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 67, 26, 28, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 43, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 11, 91, + 92, 31, 92, 92, 92, 92, 92, 92, 54, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 58, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 64, 92, 92, 92, 92, + 53, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 32, 33, 92, 67, 92, 92, 27, 92, 92, + 92, 92, 92, 92, 7, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 59, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 68, 26, + 28, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 91, 91, 91, 91, 91, 10, 91, 91, 29, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 34, 91, 91, 91, - 91, 91, 30, 91, 91, 91, 59, 60, 91, 91, - 62, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 18, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 19, 91, 9, - 91, 91, 72, 38, 91, 91, 65, 51, 91, 91, - 40, 39, 91, 35, 91, 8, 91, 64, 91, 91, - 91, 36, 91, 73, 91, 52, 42, 37, 91, 91, + 92, 92, 92, 43, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 11, 92, 92, 92, 92, 92, 92, + 10, 92, 92, 29, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 34, 92, 92, 92, 92, 92, 30, 92, 92, + 92, 60, 61, 92, 92, 63, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 18, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 19, 92, 9, 92, 92, 73, 38, 92, + 92, 66, 51, 92, 92, 40, 39, 92, 35, 92, - 91, 91, 91, 91, 68, 0 + 8, 92, 65, 92, 92, 92, 36, 92, 74, 92, + 52, 42, 37, 92, 92, 92, 92, 92, 92, 69, + 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -503,195 +505,199 @@ static yyconst flex_int32_t yy_meta[39] = 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[818] = +static yyconst flex_int16_t yy_base[833] = { 0, 0, 0, 36, 39, 43, 50, 62, 74, 55, 67, - 1663, 1649, 49, 1664, 1664, 81, 1664, 88, 32, 83, - 76, 78, 60, 89, 94, 86, 87, 95, 88, 97, - 103, 104, 112, 98, 121, 1648, 1664, 1664, 1664, 57, - 1647, 1664, 1664, 116, 1646, 1656, 1664, 1664, 136, 1644, - 1664, 1664, 127, 1643, 142, 146, 0, 149, 0, 0, - 142, 144, 137, 146, 153, 150, 151, 152, 155, 158, - 157, 159, 165, 171, 170, 172, 173, 175, 174, 176, - 114, 180, 185, 183, 187, 188, 195, 194, 1642, 207, - 1641, 210, 1640, 221, 1650, 1638, 211, 209, 208, 217, + 1693, 1679, 49, 1694, 1694, 81, 1694, 88, 32, 83, + 76, 78, 60, 89, 94, 86, 95, 96, 88, 98, + 101, 105, 103, 111, 121, 1678, 1694, 1694, 1694, 57, + 1677, 1694, 1694, 123, 1676, 1686, 1694, 1694, 136, 1674, + 1694, 1694, 140, 1673, 144, 130, 0, 148, 0, 0, + 141, 143, 134, 145, 147, 154, 150, 152, 153, 155, + 158, 156, 163, 171, 165, 173, 174, 159, 179, 176, + 181, 182, 184, 187, 189, 190, 191, 192, 194, 1672, + 206, 1671, 208, 1670, 223, 1680, 1668, 213, 208, 216, - 218, 232, 220, 221, 219, 222, 226, 227, 228, 234, - 238, 243, 230, 253, 254, 260, 189, 256, 246, 247, - 258, 257, 261, 267, 264, 268, 275, 277, 279, 273, - 282, 274, 290, 283, 285, 289, 295, 301, 306, 294, - 309, 296, 302, 308, 310, 312, 313, 314, 317, 319, - 321, 328, 318, 331, 332, 336, 338, 339, 342, 340, - 348, 346, 344, 350, 352, 369, 356, 355, 357, 359, - 360, 361, 362, 376, 366, 377, 378, 381, 386, 387, - 388, 390, 391, 406, 389, 402, 409, 405, 407, 410, - 413, 1637, 411, 415, 417, 418, 1636, 419, 425, 421, + 209, 220, 226, 227, 219, 218, 228, 229, 234, 232, + 230, 243, 250, 252, 237, 244, 254, 260, 256, 261, + 253, 262, 264, 265, 266, 268, 271, 273, 279, 280, + 282, 276, 283, 287, 289, 297, 302, 290, 293, 306, + 295, 310, 308, 317, 304, 314, 315, 318, 316, 321, + 320, 326, 325, 337, 329, 322, 330, 342, 346, 348, + 347, 349, 350, 357, 353, 355, 360, 356, 379, 361, + 362, 365, 372, 368, 370, 364, 380, 398, 384, 373, + 376, 390, 386, 397, 400, 401, 402, 413, 404, 414, + 417, 416, 419, 420, 421, 1667, 423, 425, 426, 428, - 422, 433, 424, 437, 435, 428, 444, 439, 446, 447, - 448, 449, 450, 456, 460, 451, 462, 459, 464, 467, - 472, 479, 478, 481, 482, 488, 485, 487, 475, 490, - 484, 493, 498, 500, 502, 505, 512, 508, 513, 515, - 509, 511, 517, 519, 518, 530, 523, 531, 525, 532, - 538, 536, 540, 534, 541, 543, 545, 548, 551, 557, - 547, 554, 558, 565, 560, 1635, 550, 566, 1634, 1633, - 569, 1632, 1631, 575, 572, 573, 574, 577, 582, 586, - 587, 584, 594, 589, 596, 599, 597, 603, 605, 606, - 607, 609, 613, 610, 620, 614, 621, 1630, 616, 624, + 1666, 429, 436, 430, 432, 441, 434, 451, 444, 438, + 454, 457, 448, 452, 458, 460, 463, 461, 469, 468, + 473, 474, 482, 477, 484, 487, 495, 492, 494, 496, + 502, 499, 501, 498, 504, 505, 508, 512, 507, 520, + 521, 527, 523, 525, 530, 514, 533, 532, 467, 536, + 541, 515, 538, 543, 544, 552, 548, 550, 551, 553, + 555, 556, 559, 560, 568, 561, 570, 562, 569, 576, + 1665, 574, 580, 581, 1664, 1663, 582, 1662, 1661, 589, + 583, 592, 585, 586, 600, 596, 604, 593, 608, 611, + 612, 615, 613, 618, 619, 623, 624, 621, 625, 626, - 623, 629, 630, 631, 637, 633, 634, 635, 638, 646, - 649, 639, 643, 648, 654, 650, 657, 659, 660, 661, - 662, 665, 666, 668, 671, 672, 674, 676, 1629, 689, - 688, 682, 686, 690, 694, 693, 696, 1628, 697, 701, - 702, 704, 714, 708, 1627, 705, 716, 717, 710, 718, - 721, 723, 722, 729, 735, 731, 733, 734, 736, 742, - 740, 741, 743, 1626, 746, 753, 755, 747, 758, 760, - 751, 761, 744, 766, 768, 769, 770, 771, 1625, 774, - 773, 772, 777, 793, 784, 794, 796, 790, 797, 804, - 800, 798, 806, 807, 808, 809, 811, 813, 818, 820, + 635, 628, 636, 1660, 631, 639, 642, 644, 645, 646, + 652, 648, 650, 649, 653, 655, 662, 658, 664, 663, + 668, 669, 670, 671, 672, 674, 677, 680, 678, 679, + 684, 692, 689, 694, 699, 1659, 701, 703, 704, 707, + 708, 709, 710, 711, 1658, 716, 715, 718, 717, 727, + 736, 1657, 721, 732, 734, 725, 733, 738, 739, 745, + 741, 754, 746, 756, 747, 750, 757, 758, 759, 761, + 1656, 764, 767, 770, 766, 771, 773, 772, 774, 779, + 781, 782, 784, 786, 787, 789, 1655, 790, 796, 791, + 792, 812, 813, 794, 809, 805, 815, 821, 817, 819, - 822, 824, 826, 828, 1624, 836, 838, 842, 834, 840, - 845, 841, 846, 1623, 847, 849, 848, 850, 851, 853, - 854, 855, 856, 861, 863, 867, 869, 880, 881, 878, - 1622, 882, 884, 886, 888, 895, 889, 891, 892, 893, - 896, 897, 898, 902, 903, 917, 1621, 1620, 1619, 915, - 905, 904, 913, 921, 914, 922, 924, 925, 926, 1618, - 930, 931, 932, 935, 936, 938, 940, 941, 943, 949, - 939, 948, 951, 956, 960, 952, 961, 962, 963, 1617, - 1616, 966, 965, 970, 978, 977, 969, 984, 985, 986, - 1615, 992, 991, 989, 990, 993, 995, 1614, 998, 1001, + 820, 824, 826, 825, 828, 831, 839, 836, 840, 841, + 844, 845, 1654, 854, 856, 858, 857, 847, 860, 861, + 862, 1653, 868, 864, 867, 869, 870, 872, 874, 871, + 875, 877, 878, 879, 883, 886, 895, 901, 897, 1652, + 899, 905, 907, 902, 914, 900, 910, 911, 912, 913, + 916, 919, 922, 926, 932, 1651, 1650, 1649, 934, 924, + 915, 935, 941, 923, 943, 936, 947, 945, 1648, 948, + 950, 952, 954, 953, 955, 956, 957, 961, 968, 971, + 960, 964, 973, 970, 985, 974, 978, 981, 987, 1647, + 1646, 990, 984, 994, 1000, 989, 991, 992, 1006, 1007, - 1003, 1004, 1006, 1010, 1014, 1019, 1021, 1023, 1027, 1029, - 1030, 1613, 1036, 1037, 1020, 1035, 1043, 1039, 1040, 1041, - 1042, 1045, 1046, 1048, 1049, 1051, 1053, 1056, 1612, 1062, - 1068, 1064, 1065, 1066, 1069, 1073, 1079, 1082, 1080, 1090, - 1087, 1088, 1078, 1096, 1093, 1094, 1100, 1611, 1106, 1610, - 1609, 1608, 1108, 1095, 776, 1110, 1607, 1097, 1112, 1101, - 1104, 1118, 1119, 1120, 1122, 1123, 1132, 1124, 1128, 1135, - 1136, 1126, 1138, 1144, 1140, 1142, 1146, 1147, 1148, 1150, - 1606, 1154, 1152, 1165, 1159, 1155, 1167, 1169, 1176, 1605, - 1177, 1170, 1162, 1172, 1178, 1604, 1179, 1183, 1185, 1186, + 1645, 1013, 1009, 1011, 1014, 1015, 1017, 1644, 1016, 1021, + 1022, 1024, 1028, 1026, 1030, 1036, 1039, 1047, 1044, 1049, + 1051, 1052, 1643, 1058, 1059, 1032, 1061, 1062, 1063, 1046, + 1064, 1066, 1067, 1068, 1070, 1071, 1072, 1078, 1073, 1642, + 1082, 1089, 1075, 1086, 1090, 1091, 1096, 1100, 1103, 1104, + 1106, 1105, 1110, 1107, 1117, 1113, 1115, 1119, 1121, 1641, + 1122, 1640, 1639, 1638, 1125, 1124, 1127, 1136, 1637, 1128, + 1137, 1130, 1141, 1142, 1143, 1144, 1146, 1155, 1149, 1139, + 1156, 1160, 1163, 1159, 1165, 1171, 1167, 1169, 1170, 1173, + 1174, 1175, 1636, 1177, 1179, 1186, 1187, 1190, 1191, 1193, - 1189, 1191, 1193, 1200, 1194, 1603, 1196, 1203, 1204, 1206, - 1207, 1208, 1209, 1215, 1216, 1217, 1219, 1220, 1221, 1227, - 1228, 1226, 1602, 1229, 1231, 1232, 1243, 1601, 1242, 1244, - 1234, 1245, 1249, 1251, 1252, 1254, 1256, 1600, 1599, 1259, - 1598, 1264, 1268, 1597, 1270, 1276, 1272, 1265, 1261, 1274, - 1596, 1278, 1275, 1281, 1284, 1285, 1286, 1287, 1289, 1290, - 1291, 1293, 1294, 1300, 1302, 1304, 1305, 1295, 1308, 1314, - 1310, 1311, 1315, 1592, 1588, 1587, 1318, 1320, 1326, 1319, - 1327, 1331, 1328, 1335, 1332, 1338, 1340, 1343, 1586, 1341, - 1349, 1351, 1350, 1352, 1358, 1359, 1361, 1362, 1582, 1342, + 1200, 1635, 1197, 1201, 1203, 1194, 1204, 1206, 1634, 1207, + 1209, 1211, 1213, 1216, 1219, 1220, 1228, 1222, 1633, 1225, + 1234, 1229, 1231, 1235, 1236, 1237, 1243, 1244, 1245, 1250, + 1249, 1251, 1253, 1255, 1256, 1632, 1257, 1258, 1271, 1266, + 1631, 1274, 1259, 1275, 1268, 1277, 1279, 1280, 1281, 1283, + 1288, 1630, 1629, 1292, 1628, 1297, 1299, 1627, 1301, 1289, + 1302, 1294, 1304, 1305, 1623, 1306, 1312, 1307, 1313, 1308, + 1315, 1316, 1321, 1322, 1317, 1324, 1323, 1619, 1328, 1332, + 1329, 1334, 1336, 1338, 1344, 1341, 1340, 1347, 1618, 1617, + 1613, 1348, 1349, 1357, 1350, 1353, 1360, 1361, 1362, 1365, - 1363, 1366, 1367, 1372, 1373, 1581, 1374, 1375, 1577, 1385, - 1377, 1388, 1379, 1391, 1393, 1386, 1400, 1398, 1401, 1394, - 1402, 1403, 1404, 1406, 1407, 1408, 1576, 1411, 1413, 1420, - 1417, 1415, 1575, 1423, 1422, 1425, 1569, 1541, 1428, 1426, - 1540, 1434, 1436, 1437, 1438, 1440, 1441, 1442, 1443, 1445, - 1447, 1539, 1456, 1450, 1457, 1460, 1463, 1464, 1465, 1471, - 1473, 1448, 1474, 1477, 1481, 1482, 1486, 1538, 1488, 1537, - 1491, 1492, 1536, 1534, 1494, 1495, 1533, 1532, 1483, 1499, - 1531, 1529, 1505, 1528, 1506, 1527, 1508, 1498, 1496, 1512, - 1515, 1468, 1517, 1339, 1518, 1013, 857, 491, 1501, 1521, + 1368, 1369, 1371, 1612, 1373, 1375, 1378, 1381, 1384, 1382, + 1385, 1388, 1390, 1608, 1391, 1392, 1401, 1396, 1398, 1402, + 1607, 1403, 1404, 1606, 1414, 1408, 1417, 1419, 1421, 1424, + 1415, 1430, 1432, 1429, 1426, 1434, 1435, 1436, 1437, 1438, + 1439, 1600, 1440, 1446, 1449, 1451, 1445, 1572, 1452, 1453, + 1456, 1571, 1570, 1459, 1457, 1569, 1465, 1467, 1468, 1469, + 1471, 1472, 1473, 1474, 1476, 1478, 1568, 1487, 1481, 1488, + 1491, 1494, 1495, 1496, 1502, 1504, 1479, 1505, 1508, 1512, + 1513, 1517, 1567, 1519, 1565, 1522, 1523, 1564, 1563, 1525, + 1526, 1562, 1560, 1514, 1530, 1559, 1558, 1536, 1529, 1537, - 1509, 1522, 1524, 1526, 276, 1664, 1555, 1561, 1567, 1573, - 136, 1579, 1585, 1591, 83, 1596, 1602 + 1499, 1539, 1411, 1527, 1543, 1546, 1372, 1548, 1145, 1549, + 606, 478, 332, 1532, 1552, 1540, 1553, 1555, 1557, 277, + 1694, 1586, 1592, 1598, 1604, 118, 1610, 1616, 1622, 83, + 1627, 1633 } ; -static yyconst flex_int16_t yy_def[818] = +static yyconst flex_int16_t yy_def[833] = { 0, - 806, 1, 807, 807, 808, 808, 809, 809, 810, 810, - 806, 811, 806, 806, 806, 812, 806, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 813, 806, 806, 806, 813, - 814, 806, 806, 814, 815, 806, 806, 806, 815, 816, - 806, 806, 816, 811, 811, 806, 817, 812, 817, 812, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 813, 813, - 814, 814, 815, 815, 806, 816, 816, 811, 811, 811, + 821, 1, 822, 822, 823, 823, 824, 824, 825, 825, + 821, 826, 821, 821, 821, 827, 821, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 828, 821, 821, 821, 828, + 829, 821, 821, 829, 830, 821, 821, 821, 830, 831, + 821, 821, 831, 826, 826, 821, 832, 827, 832, 827, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 828, + 828, 829, 829, 830, 830, 821, 831, 831, 826, 826, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 811, 811, 811, 811, 811, 0, 806, 806, 806, 806, - 806, 806, 806, 806, 806, 806, 806 + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 0, 821, 821, 821, 821, 821, 821, 821, 821, 821, + 821, 821 } ; -static yyconst flex_int16_t yy_nxt[1703] = +static yyconst flex_int16_t yy_nxt[1733] = { 0, 12, 13, 14, 14, 15, 16, 17, 12, 12, 12, 12, 12, 18, 19, 12, 20, 21, 12, 22, 12, @@ -699,191 +705,194 @@ static yyconst flex_int16_t yy_nxt[1703] = 32, 33, 34, 35, 12, 12, 12, 12, 37, 38, 39, 37, 38, 39, 55, 42, 38, 61, 40, 43, 56, 40, 42, 38, 57, 44, 43, 51, 51, 52, - 89, 89, 44, 46, 47, 47, 48, 53, 38, 51, - 51, 52, 55, 67, 49, 46, 47, 47, 48, 53, - 38, 68, 59, 93, 59, 59, 49, 59, 55, 54, - 55, 54, 54, 60, 54, 55, 62, 64, 55, 55, + 90, 90, 44, 46, 47, 47, 48, 53, 38, 51, + 51, 52, 55, 68, 49, 46, 47, 47, 48, 53, + 38, 69, 59, 94, 59, 59, 49, 59, 55, 54, + 55, 54, 54, 60, 54, 55, 62, 64, 55, 65, - 55, 55, 65, 63, 66, 69, 55, 55, 75, 55, - 55, 71, 72, 73, 70, 55, 55, 74, 78, 91, - 77, 82, 91, 79, 55, 84, 55, 76, 86, 80, - 96, 96, 81, 55, 87, 83, 54, 93, 88, 93, - 93, 85, 93, 54, 121, 54, 54, 56, 54, 55, - 59, 57, 59, 59, 55, 59, 55, 98, 55, 99, - 102, 60, 55, 55, 55, 55, 100, 55, 105, 55, - 55, 55, 106, 107, 111, 101, 108, 55, 112, 103, - 104, 113, 55, 55, 55, 55, 55, 55, 55, 109, - 114, 118, 55, 110, 115, 55, 116, 55, 123, 55, + 55, 55, 66, 63, 67, 70, 55, 55, 55, 76, + 55, 72, 73, 55, 71, 55, 85, 55, 54, 79, + 78, 74, 83, 55, 80, 75, 92, 81, 77, 92, + 82, 56, 86, 55, 88, 57, 84, 94, 89, 94, + 94, 87, 94, 97, 97, 54, 55, 54, 54, 59, + 54, 59, 59, 55, 59, 55, 99, 55, 100, 55, + 60, 104, 55, 101, 55, 55, 55, 55, 55, 107, + 55, 55, 108, 109, 102, 55, 110, 55, 113, 105, + 103, 106, 114, 55, 116, 55, 55, 115, 55, 111, + 119, 55, 112, 55, 55, 120, 55, 117, 118, 55, - 55, 55, 120, 119, 117, 127, 55, 55, 154, 122, - 89, 89, 125, 91, 96, 96, 91, 124, 128, 126, - 55, 55, 93, 129, 93, 93, 130, 93, 131, 55, - 55, 55, 55, 55, 55, 133, 141, 140, 55, 55, - 55, 147, 55, 132, 55, 146, 55, 142, 134, 143, - 55, 148, 144, 135, 139, 55, 145, 136, 55, 55, - 151, 149, 150, 137, 138, 55, 55, 153, 55, 55, - 55, 152, 55, 55, 155, 158, 55, 156, 157, 55, - 55, 161, 164, 162, 166, 55, 55, 55, 55, 55, - 159, 55, 160, 167, 55, 55, 173, 55, 163, 170, + 125, 55, 55, 55, 55, 121, 55, 122, 129, 90, + 90, 92, 123, 124, 92, 130, 97, 97, 127, 126, + 55, 55, 128, 131, 94, 132, 94, 94, 55, 94, + 55, 55, 55, 136, 143, 134, 133, 135, 55, 55, + 55, 55, 55, 137, 55, 144, 55, 149, 138, 55, + 150, 154, 139, 142, 145, 55, 55, 146, 140, 141, + 147, 148, 55, 151, 55, 55, 55, 156, 55, 153, + 152, 155, 55, 55, 55, 157, 55, 55, 55, 158, + 55, 161, 164, 55, 159, 55, 167, 169, 55, 55, + 165, 55, 55, 160, 55, 55, 170, 163, 162, 55, - 171, 55, 55, 169, 165, 172, 55, 55, 55, 168, - 176, 179, 174, 55, 55, 175, 180, 177, 55, 178, - 55, 55, 55, 184, 55, 55, 55, 181, 186, 55, - 55, 55, 183, 55, 182, 190, 191, 187, 188, 192, - 55, 185, 189, 55, 55, 198, 193, 197, 55, 194, - 55, 55, 55, 196, 55, 202, 55, 195, 55, 200, - 55, 201, 55, 203, 55, 205, 216, 55, 55, 55, - 199, 55, 55, 55, 55, 204, 214, 207, 55, 219, - 206, 55, 213, 208, 209, 220, 221, 215, 55, 55, - 55, 217, 218, 55, 210, 211, 212, 222, 55, 55, + 173, 55, 55, 166, 175, 55, 172, 55, 168, 55, + 176, 181, 171, 174, 55, 177, 55, 178, 55, 179, + 55, 180, 55, 182, 184, 183, 55, 55, 55, 55, + 55, 188, 55, 55, 55, 185, 190, 55, 55, 187, + 196, 55, 55, 191, 55, 189, 186, 192, 193, 55, + 197, 194, 195, 198, 55, 202, 199, 201, 55, 55, + 55, 55, 55, 200, 206, 55, 204, 55, 55, 55, + 207, 205, 55, 55, 55, 209, 55, 55, 203, 220, + 55, 211, 55, 218, 55, 55, 208, 217, 55, 223, + 210, 55, 55, 212, 213, 219, 55, 224, 55, 221, - 55, 55, 55, 55, 223, 224, 230, 233, 227, 229, - 225, 226, 231, 232, 55, 234, 235, 55, 55, 55, - 228, 55, 55, 55, 237, 55, 239, 55, 236, 55, - 55, 55, 245, 55, 55, 241, 55, 55, 242, 244, - 55, 243, 238, 240, 252, 55, 248, 55, 254, 55, - 246, 55, 247, 249, 253, 251, 55, 256, 55, 55, - 55, 55, 55, 55, 255, 257, 261, 264, 55, 258, - 250, 55, 55, 266, 55, 265, 55, 259, 269, 55, - 262, 260, 263, 270, 55, 267, 271, 55, 268, 272, - 55, 55, 273, 55, 55, 275, 55, 55, 274, 55, + 228, 222, 55, 229, 214, 215, 216, 225, 226, 55, + 55, 231, 55, 55, 55, 227, 55, 235, 232, 230, + 237, 234, 238, 236, 240, 55, 55, 239, 55, 55, + 233, 55, 55, 55, 244, 55, 242, 55, 55, 241, + 55, 55, 55, 250, 55, 246, 55, 247, 55, 249, + 55, 248, 243, 55, 253, 245, 55, 259, 257, 251, + 55, 254, 252, 55, 55, 256, 55, 261, 258, 55, + 55, 263, 55, 55, 260, 55, 269, 266, 255, 55, + 55, 55, 264, 262, 271, 55, 55, 268, 302, 55, + 55, 265, 270, 267, 55, 275, 55, 273, 276, 55, - 55, 276, 55, 55, 277, 55, 278, 279, 281, 280, - 55, 284, 55, 282, 55, 285, 283, 55, 286, 289, - 55, 55, 288, 55, 55, 55, 290, 55, 291, 55, - 55, 55, 292, 297, 295, 55, 294, 55, 293, 287, - 296, 298, 55, 55, 55, 303, 55, 300, 55, 304, - 55, 301, 55, 55, 299, 55, 305, 55, 302, 55, - 55, 306, 55, 55, 309, 310, 55, 308, 311, 55, - 55, 307, 55, 317, 312, 314, 313, 55, 55, 318, - 316, 55, 321, 315, 55, 55, 55, 55, 322, 55, - 326, 323, 319, 329, 55, 324, 55, 320, 55, 55, + 272, 274, 277, 278, 55, 279, 55, 55, 55, 281, + 55, 55, 280, 55, 55, 282, 55, 55, 283, 55, + 55, 285, 291, 287, 55, 290, 55, 55, 288, 284, + 286, 289, 55, 55, 295, 55, 292, 55, 294, 55, + 297, 296, 55, 299, 55, 55, 305, 298, 55, 301, + 55, 303, 304, 55, 306, 55, 55, 293, 300, 309, + 55, 310, 55, 55, 55, 55, 311, 55, 55, 307, + 308, 55, 55, 55, 55, 315, 316, 317, 312, 314, + 55, 55, 55, 313, 322, 318, 55, 321, 55, 323, + 319, 320, 55, 55, 55, 55, 328, 55, 55, 329, - 331, 55, 325, 327, 334, 330, 55, 333, 55, 55, - 332, 55, 336, 328, 338, 55, 335, 55, 55, 55, - 339, 55, 55, 337, 340, 55, 55, 341, 55, 344, - 343, 345, 55, 55, 347, 55, 55, 348, 342, 346, - 349, 55, 55, 55, 354, 55, 55, 55, 352, 55, - 55, 55, 357, 350, 351, 55, 353, 356, 55, 359, - 55, 55, 55, 355, 360, 364, 55, 362, 361, 55, - 358, 55, 55, 55, 55, 370, 365, 55, 55, 363, - 55, 375, 371, 55, 55, 368, 55, 379, 55, 374, - 373, 376, 366, 369, 55, 367, 380, 377, 55, 372, + 325, 55, 330, 324, 55, 55, 331, 326, 55, 333, + 327, 336, 55, 332, 334, 337, 55, 338, 55, 339, + 55, 340, 335, 55, 55, 55, 341, 55, 343, 345, + 55, 55, 342, 55, 346, 55, 55, 55, 55, 344, + 55, 347, 350, 55, 348, 351, 352, 55, 55, 354, + 349, 55, 355, 353, 55, 356, 55, 55, 55, 361, + 55, 55, 55, 359, 55, 55, 364, 55, 366, 358, + 55, 360, 357, 363, 55, 55, 55, 367, 362, 371, + 55, 55, 55, 55, 55, 365, 55, 368, 369, 55, + 55, 55, 55, 378, 370, 372, 55, 383, 375, 376, - 55, 55, 55, 381, 378, 55, 55, 384, 55, 55, - 383, 385, 382, 55, 55, 393, 55, 55, 389, 390, - 55, 387, 55, 388, 386, 391, 55, 392, 55, 55, - 55, 395, 396, 55, 55, 55, 394, 401, 399, 397, - 400, 55, 403, 55, 405, 55, 55, 55, 55, 398, - 408, 402, 55, 55, 55, 55, 55, 404, 55, 55, - 413, 407, 410, 55, 406, 55, 414, 55, 415, 409, - 55, 412, 55, 55, 420, 416, 417, 418, 55, 411, - 55, 55, 55, 55, 55, 55, 55, 419, 55, 55, - 595, 432, 425, 427, 429, 423, 55, 422, 421, 426, + 379, 55, 382, 381, 55, 373, 55, 374, 388, 377, + 387, 55, 384, 55, 385, 55, 55, 380, 389, 55, + 55, 55, 55, 55, 386, 392, 393, 55, 55, 55, + 55, 391, 397, 55, 390, 398, 395, 55, 399, 55, + 400, 394, 396, 401, 55, 55, 55, 403, 55, 404, + 55, 55, 402, 55, 405, 407, 408, 55, 55, 55, + 409, 411, 55, 410, 406, 416, 55, 413, 55, 55, + 55, 55, 412, 55, 421, 415, 55, 414, 55, 55, + 418, 422, 55, 55, 55, 55, 55, 417, 426, 420, + 425, 55, 424, 55, 55, 423, 55, 419, 55, 55, - 430, 424, 55, 428, 431, 55, 55, 433, 55, 55, - 55, 437, 55, 434, 439, 435, 55, 438, 55, 55, - 55, 55, 447, 55, 448, 55, 436, 440, 445, 449, - 55, 441, 55, 442, 55, 443, 55, 444, 55, 446, - 55, 452, 451, 455, 453, 456, 55, 454, 55, 457, - 55, 450, 55, 55, 55, 458, 460, 55, 55, 55, - 55, 55, 55, 55, 465, 55, 55, 55, 55, 55, - 459, 469, 461, 55, 470, 55, 467, 462, 464, 55, - 466, 55, 472, 468, 463, 471, 475, 476, 477, 473, - 55, 478, 55, 55, 55, 480, 55, 481, 55, 474, + 427, 55, 55, 55, 55, 428, 55, 442, 55, 438, + 434, 429, 432, 431, 430, 435, 436, 55, 433, 439, + 441, 55, 437, 440, 55, 55, 443, 55, 446, 55, + 444, 55, 55, 55, 447, 448, 55, 55, 55, 456, + 55, 449, 457, 55, 445, 450, 454, 451, 55, 452, + 458, 55, 55, 55, 453, 455, 55, 55, 461, 55, + 460, 464, 462, 465, 463, 466, 55, 459, 55, 55, + 55, 469, 55, 55, 55, 472, 55, 468, 467, 55, + 55, 55, 55, 55, 55, 475, 55, 55, 479, 55, + 55, 55, 470, 471, 480, 55, 474, 477, 55, 482, - 55, 55, 483, 55, 55, 55, 482, 55, 55, 55, - 55, 490, 479, 491, 55, 55, 55, 55, 487, 484, - 492, 485, 486, 489, 493, 55, 55, 55, 488, 55, - 494, 495, 498, 55, 55, 500, 55, 55, 55, 497, - 496, 502, 55, 55, 55, 499, 501, 55, 55, 506, - 55, 55, 55, 55, 512, 55, 503, 510, 511, 504, - 55, 55, 505, 55, 55, 508, 513, 518, 55, 509, - 514, 507, 55, 55, 55, 55, 516, 55, 55, 515, - 517, 55, 55, 519, 522, 528, 523, 524, 529, 55, - 55, 526, 520, 527, 521, 525, 55, 55, 55, 534, + 476, 473, 486, 485, 478, 483, 481, 55, 487, 55, + 488, 55, 55, 55, 55, 484, 490, 55, 491, 55, + 492, 493, 55, 55, 55, 55, 55, 55, 55, 489, + 494, 55, 500, 501, 55, 55, 55, 497, 55, 503, + 495, 496, 499, 502, 55, 498, 55, 55, 55, 504, + 505, 506, 508, 55, 509, 55, 510, 55, 511, 55, + 55, 507, 55, 512, 55, 55, 55, 55, 55, 55, + 516, 517, 55, 55, 521, 513, 55, 514, 522, 523, + 55, 515, 55, 55, 519, 55, 55, 520, 524, 518, + 55, 525, 529, 55, 528, 526, 55, 55, 527, 55, - 530, 55, 55, 55, 55, 55, 535, 55, 531, 537, - 55, 533, 536, 55, 532, 55, 55, 542, 55, 538, - 543, 544, 55, 539, 540, 55, 55, 545, 549, 541, - 548, 55, 55, 55, 550, 55, 546, 547, 551, 55, - 552, 55, 55, 554, 555, 553, 557, 55, 55, 55, - 558, 55, 55, 55, 55, 55, 556, 55, 55, 566, - 55, 55, 559, 55, 560, 55, 570, 567, 55, 561, - 568, 562, 563, 564, 55, 573, 55, 55, 55, 572, - 55, 55, 565, 571, 575, 55, 579, 582, 569, 580, - 55, 55, 55, 581, 55, 574, 576, 583, 578, 55, + 540, 55, 55, 55, 55, 530, 55, 539, 533, 531, + 534, 535, 55, 532, 536, 537, 542, 538, 55, 55, + 545, 55, 541, 55, 546, 55, 55, 55, 55, 55, + 547, 548, 544, 55, 55, 543, 55, 553, 55, 554, + 55, 555, 55, 549, 55, 550, 551, 552, 55, 556, + 560, 55, 557, 558, 561, 562, 55, 559, 55, 55, + 563, 55, 564, 55, 55, 566, 567, 565, 568, 570, + 55, 55, 569, 55, 55, 55, 55, 574, 55, 55, + 55, 578, 55, 55, 55, 55, 571, 55, 572, 579, + 55, 582, 580, 573, 55, 575, 585, 576, 55, 584, - 55, 577, 55, 587, 585, 55, 55, 55, 55, 55, - 584, 590, 55, 55, 586, 593, 55, 589, 55, 591, - 55, 596, 55, 594, 55, 598, 588, 600, 597, 592, - 55, 55, 55, 599, 55, 55, 55, 605, 55, 604, - 55, 601, 602, 606, 55, 608, 603, 55, 55, 609, - 55, 613, 55, 610, 55, 611, 55, 614, 55, 55, - 55, 607, 55, 615, 55, 616, 55, 55, 620, 612, - 617, 55, 621, 622, 55, 619, 623, 55, 618, 55, - 624, 55, 55, 626, 55, 625, 627, 628, 55, 55, - 55, 55, 631, 629, 634, 55, 630, 55, 55, 637, + 583, 55, 55, 55, 577, 587, 586, 591, 55, 581, + 592, 594, 55, 595, 593, 55, 55, 55, 55, 55, + 588, 590, 55, 589, 599, 55, 597, 55, 596, 55, + 602, 55, 606, 55, 55, 604, 55, 55, 601, 55, + 55, 608, 55, 598, 603, 605, 600, 609, 55, 55, + 611, 55, 607, 55, 55, 55, 55, 55, 55, 610, + 619, 55, 612, 617, 613, 614, 615, 55, 55, 618, + 616, 55, 55, 621, 622, 55, 620, 55, 626, 55, + 623, 55, 55, 55, 627, 55, 55, 55, 624, 55, + 628, 55, 629, 633, 630, 634, 625, 636, 55, 55, - 638, 55, 639, 55, 632, 55, 55, 635, 55, 636, - 633, 641, 55, 643, 644, 55, 55, 640, 55, 55, - 55, 55, 649, 648, 642, 647, 651, 55, 55, 55, - 653, 55, 55, 55, 645, 646, 650, 655, 55, 55, - 55, 55, 659, 55, 55, 662, 55, 656, 657, 658, - 663, 654, 661, 652, 55, 55, 55, 55, 664, 665, - 660, 55, 667, 55, 55, 666, 55, 668, 55, 670, - 672, 55, 673, 55, 671, 674, 55, 55, 669, 675, - 55, 676, 55, 677, 55, 678, 55, 55, 55, 683, - 55, 681, 679, 55, 680, 682, 55, 55, 55, 55, + 635, 632, 55, 55, 631, 55, 55, 639, 637, 55, + 640, 641, 55, 55, 642, 55, 55, 643, 55, 55, + 638, 55, 648, 55, 645, 55, 651, 652, 55, 644, + 653, 55, 55, 649, 55, 650, 646, 55, 647, 655, + 55, 55, 657, 55, 654, 658, 55, 55, 55, 55, + 663, 662, 656, 661, 665, 55, 55, 55, 667, 659, + 660, 55, 55, 55, 664, 55, 669, 55, 55, 55, + 55, 55, 673, 677, 671, 679, 672, 670, 55, 675, + 55, 666, 668, 55, 676, 678, 55, 55, 674, 55, + 680, 55, 55, 55, 682, 55, 692, 683, 685, 681, - 689, 55, 55, 55, 684, 55, 55, 55, 686, 687, - 688, 690, 55, 685, 55, 695, 55, 55, 693, 699, - 55, 700, 55, 55, 692, 698, 55, 55, 691, 694, - 55, 55, 55, 696, 697, 705, 701, 706, 55, 55, - 55, 702, 709, 55, 55, 707, 703, 55, 711, 704, - 55, 55, 55, 55, 55, 55, 708, 714, 710, 713, - 715, 55, 55, 55, 55, 712, 717, 716, 718, 720, - 55, 55, 725, 55, 55, 55, 719, 727, 55, 55, - 722, 721, 723, 724, 55, 55, 55, 55, 728, 55, - 730, 55, 729, 726, 736, 731, 733, 55, 55, 732, + 55, 55, 687, 686, 55, 688, 55, 684, 689, 55, + 690, 55, 691, 55, 55, 693, 55, 55, 55, 55, + 55, 694, 696, 697, 55, 55, 698, 55, 55, 55, + 699, 701, 704, 55, 55, 55, 55, 695, 702, 703, + 55, 55, 700, 705, 55, 710, 55, 708, 55, 714, + 55, 715, 55, 55, 706, 707, 55, 709, 711, 55, + 55, 55, 55, 712, 720, 55, 713, 716, 721, 55, + 717, 724, 55, 55, 55, 726, 722, 55, 718, 719, + 55, 55, 723, 55, 55, 55, 729, 55, 730, 728, + 55, 725, 732, 55, 55, 733, 55, 55, 727, 731, - 55, 735, 737, 55, 738, 55, 55, 740, 734, 741, - 55, 739, 55, 55, 55, 55, 55, 742, 55, 55, - 55, 746, 744, 55, 743, 55, 750, 55, 748, 55, - 745, 752, 55, 753, 55, 55, 754, 55, 55, 749, - 55, 758, 751, 747, 755, 756, 55, 759, 55, 55, - 55, 760, 55, 55, 55, 55, 768, 55, 765, 55, - 55, 757, 55, 762, 769, 763, 761, 770, 55, 55, - 764, 773, 55, 767, 774, 55, 55, 55, 779, 766, - 55, 771, 777, 55, 778, 55, 55, 775, 781, 55, - 772, 780, 782, 55, 55, 55, 776, 784, 55, 783, + 55, 735, 55, 55, 55, 736, 737, 734, 55, 738, + 55, 739, 742, 55, 55, 55, 55, 743, 744, 745, + 55, 740, 741, 55, 746, 748, 55, 55, 747, 55, + 750, 55, 752, 55, 751, 753, 55, 755, 55, 749, + 754, 55, 55, 756, 55, 757, 55, 55, 55, 55, + 55, 55, 55, 761, 759, 765, 758, 55, 55, 763, + 767, 55, 760, 55, 55, 55, 769, 768, 55, 55, + 764, 55, 773, 770, 762, 766, 771, 55, 774, 55, + 55, 55, 775, 55, 55, 55, 55, 783, 55, 780, + 55, 55, 772, 55, 777, 784, 778, 776, 785, 55, - 55, 785, 786, 55, 55, 788, 55, 55, 55, 787, - 55, 55, 789, 55, 790, 791, 792, 55, 55, 794, - 55, 55, 793, 796, 55, 795, 797, 55, 798, 55, - 55, 799, 800, 55, 55, 802, 55, 805, 55, 55, - 55, 55, 801, 55, 55, 55, 55, 803, 55, 55, - 55, 55, 55, 55, 804, 36, 36, 36, 36, 36, - 36, 41, 41, 41, 41, 41, 41, 45, 45, 45, - 45, 45, 45, 50, 50, 50, 50, 50, 50, 58, - 58, 55, 58, 58, 58, 89, 89, 55, 55, 55, - 89, 91, 91, 55, 55, 91, 96, 96, 55, 55, + 55, 779, 788, 55, 782, 789, 55, 55, 55, 794, + 781, 55, 786, 792, 55, 793, 55, 55, 790, 796, + 55, 787, 795, 797, 55, 55, 55, 791, 799, 55, + 798, 55, 800, 801, 55, 55, 803, 55, 55, 55, + 802, 55, 55, 804, 55, 805, 806, 807, 55, 55, + 809, 55, 55, 808, 811, 55, 810, 812, 55, 813, + 55, 55, 814, 815, 55, 55, 817, 55, 820, 55, + 55, 55, 55, 816, 55, 55, 55, 55, 818, 55, + 55, 55, 55, 55, 55, 819, 36, 36, 36, 36, + 36, 36, 41, 41, 41, 41, 41, 41, 45, 45, - 55, 96, 59, 59, 55, 59, 59, 59, 55, 55, + 45, 45, 45, 45, 50, 50, 50, 50, 50, 50, + 58, 58, 55, 58, 58, 58, 90, 90, 55, 55, + 55, 90, 92, 92, 55, 55, 92, 97, 97, 55, + 55, 55, 97, 59, 59, 55, 59, 59, 59, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 97, 95, 94, 92, 90, 55, 97, 95, 94, 92, - 90, 55, 806, 11, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, + 98, 96, 95, 93, 91, 55, 98, 96, 95, 93, + 91, 55, 821, 11, 821, 821, 821, 821, 821, 821, - 806, 806 + 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, + 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, + 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, + 821, 821 } ; -static yyconst flex_int16_t yy_chk[1703] = +static yyconst flex_int16_t yy_chk[1733] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -893,186 +902,189 @@ static yyconst flex_int16_t yy_chk[1703] = 13, 4, 6, 6, 13, 5, 6, 9, 9, 9, 40, 40, 6, 7, 7, 7, 7, 9, 7, 10, 10, 10, 23, 23, 7, 8, 8, 8, 8, 10, - 8, 23, 16, 815, 16, 16, 8, 16, 21, 18, - 22, 18, 18, 16, 18, 20, 20, 21, 26, 27, + 8, 23, 16, 830, 16, 16, 8, 16, 21, 18, + 22, 18, 18, 16, 18, 20, 20, 21, 26, 21, - 29, 24, 21, 20, 22, 24, 25, 28, 28, 30, - 34, 25, 26, 27, 24, 31, 32, 27, 30, 44, - 29, 32, 44, 30, 33, 33, 81, 28, 34, 31, - 53, 53, 31, 35, 35, 32, 811, 49, 35, 49, - 49, 33, 49, 55, 81, 55, 55, 56, 55, 63, - 58, 56, 58, 58, 61, 58, 62, 61, 64, 62, - 65, 58, 66, 67, 68, 65, 63, 69, 68, 71, - 70, 72, 69, 70, 72, 64, 70, 73, 72, 66, - 67, 73, 75, 74, 76, 77, 79, 78, 80, 70, - 74, 78, 82, 71, 75, 84, 76, 83, 83, 85, + 29, 24, 21, 20, 22, 24, 25, 27, 28, 28, + 30, 25, 26, 31, 24, 33, 33, 32, 826, 30, + 29, 27, 32, 34, 30, 27, 44, 31, 28, 44, + 31, 56, 33, 35, 35, 56, 32, 49, 35, 49, + 49, 34, 49, 53, 53, 55, 63, 55, 55, 58, + 55, 58, 58, 61, 58, 62, 61, 64, 62, 65, + 58, 66, 67, 63, 68, 69, 66, 70, 72, 69, + 71, 78, 70, 71, 64, 73, 71, 75, 73, 67, + 65, 68, 73, 74, 75, 76, 77, 74, 80, 71, + 78, 79, 72, 81, 82, 79, 83, 76, 77, 84, - 86, 117, 80, 79, 77, 86, 88, 87, 117, 82, - 90, 90, 84, 92, 97, 97, 92, 83, 87, 85, - 99, 98, 94, 88, 94, 94, 98, 94, 99, 100, - 101, 105, 103, 104, 106, 101, 105, 104, 107, 108, - 109, 110, 113, 100, 102, 109, 110, 106, 102, 107, - 111, 111, 107, 102, 103, 112, 108, 102, 119, 120, - 114, 112, 113, 102, 102, 114, 115, 116, 118, 122, - 121, 115, 116, 123, 118, 121, 125, 119, 120, 124, - 126, 124, 127, 125, 128, 130, 132, 127, 805, 128, - 122, 129, 123, 129, 131, 134, 134, 135, 126, 131, + 84, 85, 86, 87, 88, 80, 89, 81, 87, 91, + 91, 93, 82, 83, 93, 88, 98, 98, 85, 84, + 99, 101, 86, 89, 95, 99, 95, 95, 100, 95, + 106, 105, 102, 103, 106, 101, 100, 102, 103, 104, + 107, 108, 111, 104, 110, 107, 109, 111, 104, 115, + 112, 116, 104, 105, 108, 112, 116, 109, 104, 104, + 109, 110, 113, 113, 114, 121, 117, 118, 119, 115, + 114, 117, 118, 120, 122, 119, 123, 124, 125, 120, + 126, 123, 126, 127, 121, 128, 129, 130, 132, 820, + 127, 129, 130, 122, 131, 133, 131, 125, 124, 134, - 132, 136, 133, 130, 127, 133, 140, 137, 142, 129, - 137, 140, 135, 138, 143, 136, 141, 138, 139, 139, - 144, 141, 145, 145, 146, 147, 148, 142, 147, 149, - 153, 150, 144, 151, 143, 151, 151, 148, 149, 152, - 152, 146, 150, 154, 155, 157, 153, 156, 156, 153, - 157, 158, 160, 155, 159, 161, 163, 154, 162, 159, - 161, 160, 164, 162, 165, 164, 170, 168, 167, 169, - 158, 170, 171, 172, 173, 163, 168, 165, 175, 173, - 164, 166, 167, 166, 166, 174, 174, 169, 174, 176, - 177, 171, 172, 178, 166, 166, 166, 175, 179, 180, + 133, 135, 138, 128, 135, 139, 132, 141, 129, 136, + 136, 141, 131, 134, 137, 137, 145, 138, 140, 139, + 143, 140, 142, 142, 144, 143, 146, 147, 149, 144, + 148, 148, 151, 150, 156, 145, 150, 153, 152, 147, + 155, 155, 157, 151, 813, 149, 146, 152, 153, 154, + 156, 154, 154, 156, 158, 160, 157, 159, 159, 161, + 160, 162, 163, 158, 164, 165, 162, 166, 168, 164, + 165, 163, 167, 170, 171, 167, 176, 172, 161, 173, + 174, 168, 175, 171, 173, 180, 166, 170, 181, 176, + 167, 169, 177, 169, 169, 172, 179, 177, 183, 174, - 181, 185, 182, 183, 176, 177, 182, 185, 180, 181, - 178, 179, 183, 184, 186, 186, 187, 188, 184, 189, - 180, 187, 190, 193, 189, 191, 191, 194, 188, 195, - 196, 198, 199, 200, 201, 194, 203, 199, 195, 198, - 206, 196, 190, 193, 204, 202, 202, 205, 205, 204, - 200, 208, 201, 202, 204, 203, 207, 207, 209, 210, - 211, 212, 213, 216, 206, 208, 212, 215, 214, 209, - 202, 218, 215, 217, 217, 216, 219, 210, 220, 220, - 213, 211, 214, 221, 221, 218, 222, 229, 219, 223, - 223, 222, 224, 224, 225, 226, 231, 227, 225, 228, + 180, 175, 182, 181, 169, 169, 169, 178, 178, 184, + 178, 183, 185, 186, 187, 179, 189, 186, 184, 182, + 188, 185, 189, 187, 191, 188, 190, 190, 192, 191, + 184, 193, 194, 195, 195, 197, 193, 198, 199, 192, + 200, 202, 204, 203, 205, 198, 207, 199, 203, 202, + 210, 200, 194, 206, 206, 197, 209, 209, 208, 204, + 213, 206, 205, 208, 214, 207, 211, 211, 208, 212, + 215, 213, 216, 218, 210, 217, 219, 216, 206, 249, + 220, 219, 214, 212, 221, 221, 222, 218, 249, 224, + 812, 215, 220, 217, 223, 225, 225, 223, 226, 226, - 226, 227, 230, 798, 228, 232, 229, 230, 232, 231, - 233, 233, 234, 232, 235, 234, 232, 236, 235, 237, - 238, 241, 236, 242, 237, 239, 238, 240, 239, 243, - 245, 244, 240, 245, 243, 247, 242, 249, 241, 235, - 244, 246, 246, 248, 250, 251, 254, 248, 252, 252, - 251, 249, 253, 255, 247, 256, 253, 257, 250, 261, - 258, 254, 267, 259, 257, 258, 262, 256, 259, 260, - 263, 255, 265, 265, 260, 262, 261, 264, 268, 267, - 264, 271, 274, 263, 275, 276, 277, 274, 275, 278, - 276, 275, 268, 279, 279, 275, 282, 271, 280, 281, + 222, 224, 227, 228, 228, 229, 229, 227, 230, 231, + 234, 232, 230, 233, 231, 232, 235, 236, 233, 239, + 237, 235, 239, 237, 238, 238, 246, 252, 237, 234, + 236, 237, 240, 241, 242, 243, 240, 244, 241, 242, + 244, 243, 245, 246, 248, 247, 252, 245, 250, 248, + 253, 250, 251, 251, 253, 254, 255, 240, 247, 256, + 257, 257, 258, 259, 256, 260, 258, 261, 262, 254, + 255, 263, 264, 266, 268, 262, 263, 264, 259, 261, + 265, 269, 267, 260, 269, 265, 272, 268, 270, 270, + 266, 267, 273, 274, 277, 281, 280, 283, 284, 281, - 281, 284, 275, 277, 284, 280, 283, 283, 285, 287, - 282, 286, 286, 278, 288, 288, 285, 289, 290, 291, - 289, 292, 294, 287, 290, 293, 296, 291, 299, 294, - 293, 295, 295, 297, 297, 301, 300, 299, 292, 296, - 300, 302, 303, 304, 305, 306, 307, 308, 303, 305, - 309, 312, 308, 301, 302, 313, 304, 307, 310, 310, - 314, 311, 316, 306, 311, 315, 315, 313, 312, 317, - 309, 318, 319, 320, 321, 321, 316, 322, 323, 314, - 324, 324, 321, 325, 326, 319, 327, 328, 328, 323, - 322, 325, 317, 320, 332, 318, 330, 326, 333, 321, + 273, 280, 281, 272, 282, 288, 281, 274, 286, 282, + 277, 285, 285, 281, 283, 286, 287, 287, 811, 288, + 289, 289, 284, 290, 291, 293, 290, 292, 292, 294, + 294, 295, 291, 298, 295, 296, 297, 299, 300, 293, + 302, 296, 299, 305, 297, 300, 301, 301, 303, 303, + 298, 306, 305, 302, 307, 306, 308, 309, 310, 311, + 312, 314, 313, 309, 311, 315, 314, 316, 316, 308, + 318, 310, 307, 313, 317, 320, 319, 317, 312, 321, + 321, 322, 323, 324, 325, 315, 326, 318, 319, 327, + 329, 330, 328, 328, 320, 322, 331, 331, 325, 326, - 331, 330, 334, 331, 327, 336, 335, 334, 337, 339, - 333, 335, 332, 340, 341, 344, 342, 346, 340, 341, - 344, 337, 349, 339, 336, 342, 343, 343, 347, 348, - 350, 347, 348, 351, 353, 352, 346, 353, 351, 349, - 352, 354, 355, 356, 357, 357, 358, 355, 359, 350, - 360, 354, 361, 362, 360, 363, 373, 356, 365, 368, - 366, 359, 362, 371, 358, 366, 367, 367, 368, 361, - 369, 365, 370, 372, 373, 369, 370, 371, 374, 363, - 375, 376, 377, 378, 382, 381, 380, 372, 555, 383, - 555, 385, 378, 381, 383, 376, 385, 375, 374, 380, + 328, 333, 330, 329, 332, 323, 334, 324, 337, 327, + 335, 335, 332, 337, 333, 338, 339, 328, 338, 340, + 341, 342, 343, 344, 334, 341, 342, 347, 346, 349, + 348, 340, 347, 353, 339, 348, 344, 356, 349, 350, + 350, 343, 346, 351, 354, 357, 355, 354, 351, 355, + 358, 359, 353, 361, 356, 358, 359, 360, 363, 365, + 360, 362, 366, 361, 357, 367, 362, 364, 364, 367, + 368, 369, 363, 370, 373, 366, 372, 365, 375, 373, + 369, 374, 374, 376, 378, 377, 379, 368, 378, 372, + 377, 380, 376, 381, 382, 375, 383, 370, 384, 385, - 384, 377, 388, 382, 384, 384, 386, 386, 387, 389, - 392, 390, 391, 387, 392, 388, 390, 391, 393, 394, - 395, 396, 397, 397, 398, 398, 389, 393, 395, 399, - 399, 393, 400, 393, 401, 393, 402, 394, 403, 396, - 404, 402, 401, 406, 403, 407, 409, 404, 406, 408, - 407, 400, 410, 412, 408, 409, 411, 411, 413, 415, - 417, 416, 418, 419, 417, 420, 421, 422, 423, 797, - 410, 421, 412, 424, 422, 425, 419, 413, 416, 426, - 418, 427, 424, 420, 415, 423, 427, 428, 429, 425, - 430, 430, 428, 429, 432, 433, 433, 434, 434, 426, + 379, 386, 388, 390, 391, 380, 394, 394, 389, 391, + 386, 381, 384, 383, 382, 388, 389, 396, 385, 392, + 393, 395, 390, 392, 392, 393, 395, 397, 398, 399, + 396, 400, 401, 398, 399, 400, 402, 404, 403, 405, + 405, 401, 406, 406, 397, 401, 403, 401, 408, 401, + 407, 407, 409, 410, 402, 404, 411, 412, 410, 418, + 409, 414, 411, 415, 412, 416, 414, 408, 415, 417, + 416, 419, 419, 420, 421, 423, 424, 418, 417, 425, + 423, 426, 427, 430, 428, 426, 429, 431, 430, 432, + 433, 434, 420, 421, 431, 435, 425, 428, 436, 433, - 435, 437, 436, 438, 439, 440, 435, 436, 441, 442, - 443, 443, 432, 444, 444, 445, 452, 451, 440, 437, - 445, 438, 439, 442, 446, 453, 455, 450, 441, 446, - 450, 451, 454, 454, 456, 456, 457, 458, 459, 453, - 452, 458, 461, 462, 463, 455, 457, 464, 465, 463, - 466, 471, 467, 468, 469, 469, 459, 467, 468, 461, - 472, 470, 462, 473, 476, 465, 470, 475, 474, 466, - 471, 464, 475, 477, 478, 479, 473, 483, 482, 472, - 474, 487, 484, 476, 479, 485, 479, 482, 486, 486, - 485, 484, 477, 484, 478, 483, 488, 489, 490, 492, + 427, 424, 437, 436, 429, 434, 432, 437, 438, 439, + 439, 441, 446, 438, 444, 435, 442, 442, 443, 443, + 444, 445, 447, 448, 449, 450, 445, 461, 451, 441, + 446, 452, 452, 453, 453, 464, 460, 449, 454, 455, + 447, 448, 451, 454, 455, 450, 459, 462, 466, 459, + 460, 461, 463, 463, 464, 465, 465, 468, 466, 467, + 470, 462, 471, 467, 472, 474, 473, 475, 476, 477, + 472, 473, 481, 478, 477, 468, 482, 470, 478, 479, + 479, 471, 484, 480, 475, 483, 486, 476, 480, 474, + 487, 481, 485, 488, 484, 482, 493, 485, 483, 489, - 487, 494, 495, 493, 492, 496, 493, 497, 488, 494, - 499, 490, 493, 500, 489, 501, 502, 500, 503, 495, - 501, 502, 504, 496, 497, 796, 505, 503, 507, 499, - 506, 506, 515, 507, 508, 508, 504, 505, 509, 509, - 510, 510, 511, 513, 514, 511, 516, 516, 513, 514, - 517, 518, 519, 520, 521, 517, 515, 522, 523, 523, - 524, 525, 518, 526, 518, 527, 527, 524, 528, 518, - 525, 519, 520, 521, 530, 531, 532, 533, 534, 530, - 531, 535, 522, 528, 533, 536, 537, 539, 526, 538, - 543, 537, 539, 538, 538, 532, 534, 540, 536, 541, + 496, 496, 492, 497, 498, 486, 494, 495, 489, 487, + 489, 492, 495, 488, 493, 494, 498, 494, 499, 500, + 502, 503, 497, 504, 503, 502, 505, 506, 509, 507, + 503, 504, 500, 510, 511, 499, 512, 510, 514, 511, + 513, 512, 515, 505, 526, 506, 507, 509, 516, 513, + 517, 517, 514, 515, 518, 519, 519, 516, 530, 518, + 520, 520, 521, 521, 522, 524, 525, 522, 526, 528, + 524, 525, 527, 527, 528, 529, 531, 530, 532, 533, + 534, 534, 535, 536, 537, 539, 529, 543, 529, 535, + 538, 538, 536, 529, 541, 531, 542, 532, 544, 541, - 542, 535, 540, 544, 542, 545, 546, 554, 544, 558, - 541, 547, 547, 560, 543, 553, 561, 546, 549, 549, - 553, 556, 556, 554, 559, 559, 545, 561, 558, 549, - 562, 563, 564, 560, 565, 566, 568, 566, 572, 565, - 569, 562, 563, 567, 567, 569, 564, 570, 571, 570, - 573, 574, 575, 571, 576, 572, 574, 575, 577, 578, - 579, 568, 580, 576, 583, 576, 582, 586, 580, 573, - 577, 585, 582, 583, 593, 579, 584, 584, 578, 587, - 585, 588, 592, 587, 594, 586, 588, 589, 589, 591, - 595, 597, 593, 591, 597, 598, 592, 599, 600, 600, + 539, 542, 545, 546, 533, 544, 543, 548, 547, 537, + 549, 550, 548, 551, 549, 549, 550, 552, 551, 554, + 545, 547, 553, 546, 555, 556, 553, 557, 552, 555, + 558, 558, 565, 559, 561, 561, 566, 565, 557, 567, + 570, 567, 572, 554, 559, 561, 556, 568, 568, 571, + 571, 580, 566, 573, 574, 575, 576, 809, 577, 570, + 579, 579, 572, 577, 573, 574, 575, 578, 581, 578, + 576, 584, 582, 581, 582, 583, 580, 585, 586, 587, + 583, 588, 589, 586, 587, 590, 591, 592, 584, 594, + 588, 595, 588, 592, 589, 594, 585, 596, 596, 597, - 601, 601, 602, 602, 594, 603, 605, 598, 607, 599, - 595, 604, 604, 607, 608, 608, 609, 603, 610, 611, - 612, 613, 613, 612, 605, 611, 614, 614, 615, 616, - 616, 617, 618, 619, 609, 610, 613, 618, 622, 620, - 621, 624, 622, 625, 626, 626, 631, 619, 620, 621, - 627, 617, 625, 615, 629, 627, 630, 632, 629, 630, - 624, 633, 632, 634, 635, 631, 636, 633, 637, 635, - 637, 640, 640, 649, 636, 642, 642, 648, 634, 643, - 643, 645, 645, 646, 647, 647, 650, 653, 646, 653, - 652, 650, 648, 654, 649, 652, 655, 656, 657, 658, + 595, 591, 598, 599, 590, 600, 606, 599, 597, 603, + 600, 601, 601, 604, 603, 605, 607, 604, 608, 610, + 598, 611, 610, 612, 606, 613, 613, 614, 614, 605, + 615, 615, 616, 611, 618, 612, 607, 620, 608, 617, + 617, 622, 620, 623, 616, 621, 621, 624, 625, 626, + 626, 625, 618, 624, 627, 627, 628, 629, 629, 622, + 623, 631, 630, 632, 626, 633, 631, 634, 635, 637, + 638, 643, 635, 640, 633, 643, 634, 632, 640, 638, + 645, 628, 630, 639, 639, 642, 642, 644, 637, 646, + 644, 647, 648, 649, 646, 650, 660, 647, 649, 645, - 659, 659, 660, 661, 654, 662, 663, 668, 656, 657, - 658, 660, 664, 655, 665, 665, 666, 667, 663, 669, - 669, 670, 671, 672, 662, 668, 670, 673, 661, 664, - 677, 680, 678, 666, 667, 678, 671, 679, 679, 681, - 683, 672, 682, 682, 685, 680, 673, 684, 684, 677, - 686, 794, 687, 690, 700, 688, 681, 687, 683, 686, - 688, 691, 693, 692, 694, 685, 691, 690, 692, 694, - 695, 696, 700, 697, 698, 701, 693, 702, 702, 703, - 696, 695, 697, 698, 704, 705, 707, 708, 703, 711, - 705, 713, 704, 701, 713, 707, 710, 710, 716, 708, + 651, 660, 651, 650, 654, 654, 662, 648, 656, 656, + 657, 657, 659, 659, 661, 661, 663, 664, 666, 668, + 670, 662, 664, 666, 667, 669, 667, 671, 672, 675, + 668, 670, 673, 673, 674, 677, 676, 663, 671, 672, + 679, 681, 669, 674, 680, 680, 682, 677, 683, 684, + 684, 685, 687, 686, 675, 676, 685, 679, 681, 688, + 692, 693, 695, 682, 693, 696, 683, 686, 694, 694, + 687, 697, 697, 698, 699, 699, 695, 700, 688, 692, + 701, 702, 696, 703, 807, 705, 702, 706, 703, 701, + 707, 698, 706, 708, 710, 707, 709, 711, 700, 705, - 712, 712, 714, 714, 715, 715, 720, 717, 711, 718, - 718, 716, 717, 719, 721, 722, 723, 719, 724, 725, - 726, 723, 721, 728, 720, 729, 728, 732, 725, 731, - 722, 730, 730, 731, 735, 734, 732, 736, 740, 726, - 739, 739, 729, 724, 734, 735, 742, 740, 743, 744, - 745, 742, 746, 747, 748, 749, 750, 750, 747, 751, - 762, 736, 754, 744, 751, 745, 743, 753, 753, 755, - 746, 756, 756, 749, 757, 757, 758, 759, 762, 748, - 792, 754, 760, 760, 761, 761, 763, 758, 764, 764, - 755, 763, 765, 765, 766, 779, 759, 767, 767, 766, + 712, 709, 713, 715, 716, 710, 711, 708, 718, 712, + 719, 713, 717, 717, 720, 722, 723, 718, 719, 720, + 726, 715, 716, 803, 722, 725, 725, 731, 723, 727, + 727, 728, 729, 729, 728, 730, 730, 732, 735, 726, + 731, 734, 732, 733, 733, 734, 736, 737, 738, 739, + 740, 741, 743, 738, 736, 743, 735, 747, 744, 740, + 745, 745, 737, 746, 749, 750, 747, 746, 751, 755, + 741, 754, 754, 749, 739, 744, 750, 757, 755, 758, + 759, 760, 757, 761, 762, 763, 764, 765, 765, 762, + 766, 777, 751, 769, 759, 766, 760, 758, 768, 768, - 769, 769, 771, 771, 772, 775, 775, 776, 789, 772, - 788, 780, 776, 799, 779, 780, 783, 783, 785, 787, - 787, 801, 785, 790, 790, 789, 791, 791, 793, 793, - 795, 795, 799, 800, 802, 801, 803, 804, 804, 786, - 784, 782, 800, 781, 778, 777, 774, 802, 773, 770, - 768, 752, 741, 738, 803, 807, 807, 807, 807, 807, - 807, 808, 808, 808, 808, 808, 808, 809, 809, 809, - 809, 809, 809, 810, 810, 810, 810, 810, 810, 812, - 812, 737, 812, 812, 812, 813, 813, 733, 727, 709, - 813, 814, 814, 706, 699, 814, 816, 816, 689, 676, + 770, 761, 771, 771, 764, 772, 772, 773, 774, 777, + 763, 801, 769, 775, 775, 776, 776, 778, 773, 779, + 779, 770, 778, 780, 780, 781, 794, 774, 782, 782, + 781, 784, 784, 786, 786, 787, 790, 790, 791, 804, + 787, 799, 795, 791, 814, 794, 795, 798, 798, 800, + 802, 802, 816, 800, 805, 805, 804, 806, 806, 808, + 808, 810, 810, 814, 815, 817, 816, 818, 819, 819, + 797, 796, 793, 815, 792, 789, 788, 785, 817, 783, + 767, 756, 753, 752, 748, 818, 822, 822, 822, 822, + 822, 822, 823, 823, 823, 823, 823, 823, 824, 824, - 675, 816, 817, 817, 674, 817, 817, 817, 651, 644, - 641, 639, 638, 628, 623, 606, 596, 590, 581, 557, - 552, 551, 550, 548, 529, 512, 498, 491, 481, 480, - 460, 449, 448, 447, 431, 414, 405, 379, 364, 345, - 338, 329, 298, 273, 272, 270, 269, 266, 197, 192, - 96, 95, 93, 91, 89, 54, 50, 46, 45, 41, - 36, 12, 11, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, + 824, 824, 824, 824, 825, 825, 825, 825, 825, 825, + 827, 827, 742, 827, 827, 827, 828, 828, 724, 721, + 714, 828, 829, 829, 704, 691, 829, 831, 831, 690, + 689, 678, 831, 832, 832, 665, 832, 832, 832, 658, + 655, 653, 652, 641, 636, 619, 609, 602, 593, 569, + 564, 563, 562, 560, 540, 523, 508, 501, 491, 490, + 469, 458, 457, 456, 440, 422, 413, 387, 371, 352, + 345, 336, 304, 279, 278, 276, 275, 271, 201, 196, + 97, 96, 94, 92, 90, 54, 50, 46, 45, 41, + 36, 12, 11, 821, 821, 821, 821, 821, 821, 821, - 806, 806 + 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, + 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, + 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, + 821, 821 } ; static yy_state_type yy_last_accepting_state; @@ -1184,7 +1196,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 1187 "" +#line 1199 "" #define INITIAL 0 #define quotedstring 1 @@ -1370,7 +1382,7 @@ YY_DECL #line 107 "util/configlexer.lex" -#line 1373 "" +#line 1385 "" if ( !(yy_init) ) { @@ -1429,13 +1441,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 807 ) + if ( yy_current_state >= 822 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 1664 ); + while ( yy_base[yy_current_state] != 1694 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1752,111 +1764,116 @@ YY_RULE_SETUP case 59: YY_RULE_SETUP #line 166 "util/configlexer.lex" -{ YDOUT; return VAR_TRUST_ANCHOR_FILE;} +{ YDOUT; return VAR_DLV_ANCHOR_FILE;} YY_BREAK case 60: YY_RULE_SETUP #line 167 "util/configlexer.lex" -{ YDOUT; return VAR_TRUSTED_KEYS_FILE;} +{ YDOUT; return VAR_TRUST_ANCHOR_FILE;} YY_BREAK case 61: YY_RULE_SETUP #line 168 "util/configlexer.lex" -{ YDOUT; return VAR_TRUST_ANCHOR;} +{ YDOUT; return VAR_TRUSTED_KEYS_FILE;} YY_BREAK case 62: YY_RULE_SETUP #line 169 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_OVERRIDE_DATE;} +{ YDOUT; return VAR_TRUST_ANCHOR;} YY_BREAK case 63: YY_RULE_SETUP #line 170 "util/configlexer.lex" -{ YDOUT; return VAR_BOGUS_TTL;} +{ YDOUT; return VAR_VAL_OVERRIDE_DATE;} YY_BREAK case 64: YY_RULE_SETUP #line 171 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;} +{ YDOUT; return VAR_BOGUS_TTL;} YY_BREAK case 65: YY_RULE_SETUP #line 172 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_PERMISSIVE_MODE;} +{ YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;} YY_BREAK case 66: YY_RULE_SETUP #line 173 "util/configlexer.lex" -{ YDOUT; return VAR_KEY_CACHE_SIZE;} +{ YDOUT; return VAR_VAL_PERMISSIVE_MODE;} YY_BREAK case 67: YY_RULE_SETUP #line 174 "util/configlexer.lex" -{ YDOUT; return VAR_KEY_CACHE_SLABS;} +{ YDOUT; return VAR_KEY_CACHE_SIZE;} YY_BREAK case 68: YY_RULE_SETUP #line 175 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;} +{ YDOUT; return VAR_KEY_CACHE_SLABS;} YY_BREAK case 69: YY_RULE_SETUP #line 176 "util/configlexer.lex" -{ YDOUT; return VAR_USE_SYSLOG;} +{ YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;} YY_BREAK case 70: YY_RULE_SETUP #line 177 "util/configlexer.lex" -{ YDOUT; return VAR_LOCAL_ZONE;} +{ YDOUT; return VAR_USE_SYSLOG;} YY_BREAK case 71: YY_RULE_SETUP #line 178 "util/configlexer.lex" -{ YDOUT; return VAR_LOCAL_DATA;} +{ YDOUT; return VAR_LOCAL_ZONE;} YY_BREAK case 72: YY_RULE_SETUP #line 179 "util/configlexer.lex" -{ YDOUT; return VAR_STATISTICS_INTERVAL;} +{ YDOUT; return VAR_LOCAL_DATA;} YY_BREAK case 73: YY_RULE_SETUP #line 180 "util/configlexer.lex" -{ YDOUT; return VAR_STATISTICS_CUMULATIVE;} +{ YDOUT; return VAR_STATISTICS_INTERVAL;} YY_BREAK case 74: -/* rule 74 can match eol */ YY_RULE_SETUP #line 181 "util/configlexer.lex" +{ YDOUT; return VAR_STATISTICS_CUMULATIVE;} + YY_BREAK +case 75: +/* rule 75 can match eol */ +YY_RULE_SETUP +#line 182 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 75: +case 76: YY_RULE_SETUP -#line 184 "util/configlexer.lex" +#line 185 "util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 185 "util/configlexer.lex" +#line 186 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 76: -YY_RULE_SETUP -#line 189 "util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 77: -/* rule 77 can match eol */ YY_RULE_SETUP #line 190 "util/configlexer.lex" -{ cfg_parser->line++; yymore(); } +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK case 78: +/* rule 78 can match eol */ YY_RULE_SETUP #line 191 "util/configlexer.lex" +{ cfg_parser->line++; yymore(); } + YY_BREAK +case 79: +YY_RULE_SETUP +#line 192 "util/configlexer.lex" { LEXOUT(("QE ")); BEGIN(INITIAL); @@ -1868,32 +1885,32 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 79: +case 80: YY_RULE_SETUP -#line 202 "util/configlexer.lex" +#line 203 "util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 203 "util/configlexer.lex" +#line 204 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 80: -YY_RULE_SETUP -#line 207 "util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 81: -/* rule 81 can match eol */ YY_RULE_SETUP #line 208 "util/configlexer.lex" -{ cfg_parser->line++; yymore(); } +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK case 82: +/* rule 82 can match eol */ YY_RULE_SETUP #line 209 "util/configlexer.lex" +{ cfg_parser->line++; yymore(); } + YY_BREAK +case 83: +YY_RULE_SETUP +#line 210 "util/configlexer.lex" { LEXOUT(("SQE ")); BEGIN(INITIAL); @@ -1905,37 +1922,37 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 83: +case 84: YY_RULE_SETUP -#line 220 "util/configlexer.lex" +#line 221 "util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 221 "util/configlexer.lex" +#line 222 "util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(INITIAL); } YY_BREAK -case 84: -YY_RULE_SETUP -#line 225 "util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 85: -/* rule 85 can match eol */ YY_RULE_SETUP #line 226 "util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 86: +/* rule 86 can match eol */ YY_RULE_SETUP #line 227 "util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 87: YY_RULE_SETUP #line 228 "util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 88: +YY_RULE_SETUP +#line 229 "util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include(yytext); @@ -1943,26 +1960,26 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 233 "util/configlexer.lex" +#line 234 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 88: -YY_RULE_SETUP -#line 237 "util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 89: -/* rule 89 can match eol */ YY_RULE_SETUP #line 238 "util/configlexer.lex" -{ cfg_parser->line++; yymore(); } +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK case 90: +/* rule 90 can match eol */ YY_RULE_SETUP #line 239 "util/configlexer.lex" +{ cfg_parser->line++; yymore(); } + YY_BREAK +case 91: +YY_RULE_SETUP +#line 240 "util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -1971,7 +1988,7 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 245 "util/configlexer.lex" +#line 246 "util/configlexer.lex" { yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ if (config_include_stack_ptr == 0) { @@ -1982,18 +1999,18 @@ case YY_STATE_EOF(INITIAL): } } YY_BREAK -case 91: +case 92: YY_RULE_SETUP -#line 255 "util/configlexer.lex" +#line 256 "util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); yylval.str = strdup(yytext); return STRING; } YY_BREAK -case 92: +case 93: YY_RULE_SETUP -#line 258 "util/configlexer.lex" +#line 259 "util/configlexer.lex" ECHO; YY_BREAK -#line 1996 "" +#line 2013 "" case YY_END_OF_BUFFER: { @@ -2283,7 +2300,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 807 ) + if ( yy_current_state >= 822 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2311,11 +2328,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 807 ) + if ( yy_current_state >= 822 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 806); + yy_is_jam = (yy_current_state == 821); return yy_is_jam ? 0 : yy_current_state; } @@ -2952,7 +2969,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 258 "util/configlexer.lex" +#line 259 "util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index ec6e5008a..da46c9b7f 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -163,6 +163,7 @@ hide-version{COLON} { YDOUT; return VAR_HIDE_VERSION;} identity{COLON} { YDOUT; return VAR_IDENTITY;} version{COLON} { YDOUT; return VAR_VERSION;} module-config{COLON} { YDOUT; return VAR_MODULE_CONF;} +dlv-anchor-file{COLON} { YDOUT; return VAR_DLV_ANCHOR_FILE;} trust-anchor-file{COLON} { YDOUT; return VAR_TRUST_ANCHOR_FILE;} trusted-keys-file{COLON} { YDOUT; return VAR_TRUSTED_KEYS_FILE;} trust-anchor{COLON} { YDOUT; return VAR_TRUST_ANCHOR;} diff --git a/util/configparser.c b/util/configparser.c index 93e2d72dd..f0ba538ea 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -144,7 +144,8 @@ VAR_USE_CAPS_FOR_ID = 333, VAR_STATISTICS_CUMULATIVE = 334, VAR_OUTGOING_PORT_PERMIT = 335, - VAR_OUTGOING_PORT_AVOID = 336 + VAR_OUTGOING_PORT_AVOID = 336, + VAR_DLV_ANCHOR_FILE = 337 }; #endif /* Tokens. */ @@ -227,6 +228,7 @@ #define VAR_STATISTICS_CUMULATIVE 334 #define VAR_OUTGOING_PORT_PERMIT 335 #define VAR_OUTGOING_PORT_AVOID 336 +#define VAR_DLV_ANCHOR_FILE 337 @@ -285,7 +287,7 @@ typedef union YYSTYPE char* str; } /* Line 187 of yacc.c. */ -#line 289 "util/configparser.c" +#line 291 "util/configparser.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -298,7 +300,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 302 "util/configparser.c" +#line 304 "util/configparser.c" #ifdef short # undef short @@ -513,20 +515,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 143 +#define YYLAST 145 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 82 +#define YYNTOKENS 83 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 81 +#define YYNNTS 82 /* YYNRULES -- Number of rules. */ -#define YYNRULES 153 +#define YYNRULES 155 /* YYNRULES -- Number of states. */ -#define YYNSTATES 225 +#define YYNSTATES 228 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 336 +#define YYMAXUTOK 337 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -567,7 +569,7 @@ static const yytype_uint8 yytranslate[] = 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 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 + 75, 76, 77, 78, 79, 80, 81, 82 }; #if YYDEBUG @@ -582,59 +584,59 @@ static const yytype_uint16 yyprhs[] = 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, - 142, 144, 146, 148, 150, 153, 154, 156, 158, 160, - 162, 165, 166, 168, 170, 172, 175, 178, 181, 184, - 187, 190, 193, 196, 199, 202, 205, 208, 211, 214, - 217, 220, 223, 226, 229, 232, 235, 238, 241, 244, - 247, 250, 253, 256, 259, 262, 265, 268, 271, 274, - 277, 280, 283, 286, 289, 292, 295, 298, 301, 304, - 307, 310, 313, 316, 319, 322, 325, 329, 332, 335, - 338, 341, 344, 347, 350, 353, 356, 360, 363, 366, - 369, 372, 375, 378 + 142, 144, 146, 148, 150, 152, 155, 156, 158, 160, + 162, 164, 167, 168, 170, 172, 174, 177, 180, 183, + 186, 189, 192, 195, 198, 201, 204, 207, 210, 213, + 216, 219, 222, 225, 228, 231, 234, 237, 240, 243, + 246, 249, 252, 255, 258, 261, 264, 267, 270, 273, + 276, 279, 282, 285, 288, 291, 294, 297, 300, 303, + 306, 309, 312, 315, 318, 321, 324, 327, 330, 334, + 337, 340, 343, 346, 349, 352, 355, 358, 361, 365, + 368, 371, 374, 377, 380, 383 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 83, 0, -1, -1, 83, 84, -1, 85, 86, -1, - 88, 89, -1, 91, 92, -1, 11, -1, 86, 87, - -1, -1, 94, -1, 95, -1, 98, -1, 101, -1, - 107, -1, 108, -1, 109, -1, 110, -1, 99, -1, - 113, -1, 114, -1, 115, -1, 116, -1, 117, -1, - 127, -1, 128, -1, 129, -1, 130, -1, 131, -1, - 104, -1, 132, -1, 133, -1, 136, -1, 134, -1, - 135, -1, 137, -1, 138, -1, 139, -1, 143, -1, - 122, -1, 123, -1, 124, -1, 125, -1, 140, -1, - 146, -1, 119, -1, 121, -1, 147, -1, 149, -1, - 150, -1, 151, -1, 105, -1, 126, -1, 153, -1, - 154, -1, 120, -1, 152, -1, 112, -1, 100, -1, - 118, -1, 144, -1, 148, -1, 141, -1, 145, -1, - 155, -1, 156, -1, 106, -1, 96, -1, 111, -1, - 142, -1, 97, -1, 102, -1, 103, -1, 38, -1, - 89, 90, -1, -1, 157, -1, 158, -1, 159, -1, - 44, -1, 92, 93, -1, -1, 160, -1, 161, -1, - 162, -1, 13, 10, -1, 12, 10, -1, 76, 10, - -1, 79, 10, -1, 14, 10, -1, 16, 10, -1, - 67, 10, -1, 15, 10, -1, 80, 10, -1, 81, - 10, -1, 31, 10, -1, 60, 10, -1, 75, 10, - -1, 17, 10, -1, 18, 10, -1, 19, 10, -1, - 20, 10, -1, 77, 10, -1, 66, 10, -1, 21, - 10, -1, 22, 10, -1, 23, 10, -1, 24, 10, - -1, 25, 10, -1, 68, 10, -1, 54, 10, -1, - 64, 10, -1, 55, 10, -1, 48, 10, -1, 49, - 10, -1, 50, 10, -1, 51, 10, -1, 61, 10, - -1, 26, 10, -1, 27, 10, -1, 28, 10, -1, - 29, 10, -1, 30, 10, -1, 32, 10, -1, 33, - 10, -1, 35, 10, -1, 36, 10, -1, 34, 10, - -1, 41, 10, -1, 42, 10, -1, 43, 10, -1, - 52, 10, -1, 71, 10, -1, 78, 10, -1, 47, - 10, -1, 69, 10, -1, 72, 10, 10, -1, 53, - 10, -1, 56, 10, -1, 70, 10, -1, 57, 10, - -1, 58, 10, -1, 59, 10, -1, 65, 10, -1, - 62, 10, -1, 63, 10, -1, 73, 10, 10, -1, - 74, 10, -1, 37, 10, -1, 39, 10, -1, 40, - 10, -1, 37, 10, -1, 45, 10, -1, 46, 10, - -1 + 84, 0, -1, -1, 84, 85, -1, 86, 87, -1, + 89, 90, -1, 92, 93, -1, 11, -1, 87, 88, + -1, -1, 95, -1, 96, -1, 99, -1, 102, -1, + 108, -1, 109, -1, 110, -1, 111, -1, 100, -1, + 114, -1, 115, -1, 116, -1, 117, -1, 118, -1, + 129, -1, 130, -1, 131, -1, 132, -1, 133, -1, + 105, -1, 134, -1, 135, -1, 138, -1, 136, -1, + 137, -1, 139, -1, 140, -1, 141, -1, 145, -1, + 124, -1, 125, -1, 126, -1, 127, -1, 142, -1, + 148, -1, 121, -1, 123, -1, 149, -1, 151, -1, + 152, -1, 153, -1, 106, -1, 128, -1, 155, -1, + 156, -1, 122, -1, 154, -1, 113, -1, 101, -1, + 119, -1, 146, -1, 150, -1, 143, -1, 147, -1, + 157, -1, 158, -1, 107, -1, 97, -1, 112, -1, + 144, -1, 98, -1, 103, -1, 104, -1, 120, -1, + 38, -1, 90, 91, -1, -1, 159, -1, 160, -1, + 161, -1, 44, -1, 93, 94, -1, -1, 162, -1, + 163, -1, 164, -1, 13, 10, -1, 12, 10, -1, + 76, 10, -1, 79, 10, -1, 14, 10, -1, 16, + 10, -1, 67, 10, -1, 15, 10, -1, 80, 10, + -1, 81, 10, -1, 31, 10, -1, 60, 10, -1, + 75, 10, -1, 17, 10, -1, 18, 10, -1, 19, + 10, -1, 20, 10, -1, 77, 10, -1, 66, 10, + -1, 21, 10, -1, 22, 10, -1, 23, 10, -1, + 24, 10, -1, 25, 10, -1, 68, 10, -1, 82, + 10, -1, 54, 10, -1, 64, 10, -1, 55, 10, + -1, 48, 10, -1, 49, 10, -1, 50, 10, -1, + 51, 10, -1, 61, 10, -1, 26, 10, -1, 27, + 10, -1, 28, 10, -1, 29, 10, -1, 30, 10, + -1, 32, 10, -1, 33, 10, -1, 35, 10, -1, + 36, 10, -1, 34, 10, -1, 41, 10, -1, 42, + 10, -1, 43, 10, -1, 52, 10, -1, 71, 10, + -1, 78, 10, -1, 47, 10, -1, 69, 10, -1, + 72, 10, 10, -1, 53, 10, -1, 56, 10, -1, + 70, 10, -1, 57, 10, -1, 58, 10, -1, 59, + 10, -1, 65, 10, -1, 62, 10, -1, 63, 10, + -1, 73, 10, 10, -1, 74, 10, -1, 37, 10, + -1, 39, 10, -1, 40, 10, -1, 37, 10, -1, + 45, 10, -1, 46, 10, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -647,15 +649,15 @@ static const yytype_uint16 yyrline[] = 122, 122, 122, 123, 123, 123, 124, 124, 124, 125, 125, 126, 126, 127, 127, 128, 128, 129, 129, 129, 130, 130, 131, 131, 132, 132, 132, 133, 133, 134, - 134, 135, 135, 137, 149, 150, 151, 151, 151, 153, - 165, 166, 167, 167, 167, 169, 178, 187, 198, 207, - 216, 229, 244, 253, 262, 271, 280, 289, 298, 307, - 316, 325, 334, 343, 357, 364, 371, 378, 386, 393, - 400, 408, 416, 423, 432, 441, 448, 455, 466, 474, - 487, 496, 504, 517, 526, 535, 544, 553, 566, 573, - 583, 593, 603, 613, 623, 630, 640, 653, 660, 678, - 687, 696, 706, 716, 723, 731, 744, 763, 770, 777, - 784, 791, 798, 805 + 134, 135, 135, 136, 138, 150, 151, 152, 152, 152, + 154, 166, 167, 168, 168, 168, 170, 179, 188, 199, + 208, 217, 230, 245, 254, 263, 272, 281, 290, 299, + 308, 317, 326, 335, 344, 358, 365, 372, 379, 387, + 394, 401, 407, 415, 423, 430, 439, 448, 455, 462, + 473, 481, 494, 503, 511, 524, 533, 542, 551, 560, + 573, 580, 590, 600, 610, 620, 630, 637, 647, 660, + 667, 685, 694, 703, 713, 723, 730, 738, 751, 770, + 777, 784, 791, 798, 805, 812 }; #endif @@ -689,37 +691,39 @@ static const char *const yytname[] = "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC", "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID", "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT", - "VAR_OUTGOING_PORT_AVOID", "$accept", "toplevelvars", "toplevelvar", - "serverstart", "contents_server", "content_server", "stubstart", - "contents_stub", "content_stub", "forwardstart", "contents_forward", - "content_forward", "server_num_threads", "server_verbosity", - "server_statistics_interval", "server_statistics_cumulative", - "server_port", "server_interface", "server_outgoing_interface", - "server_outgoing_range", "server_outgoing_port_permit", - "server_outgoing_port_avoid", "server_outgoing_num_tcp", - "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4", - "server_do_ip6", "server_do_udp", "server_do_tcp", "server_do_daemonize", + "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "$accept", + "toplevelvars", "toplevelvar", "serverstart", "contents_server", + "content_server", "stubstart", "contents_stub", "content_stub", + "forwardstart", "contents_forward", "content_forward", + "server_num_threads", "server_verbosity", "server_statistics_interval", + "server_statistics_cumulative", "server_port", "server_interface", + "server_outgoing_interface", "server_outgoing_range", + "server_outgoing_port_permit", "server_outgoing_port_avoid", + "server_outgoing_num_tcp", "server_incoming_num_tcp", + "server_interface_automatic", "server_do_ip4", "server_do_ip6", + "server_do_udp", "server_do_tcp", "server_do_daemonize", "server_use_syslog", "server_chroot", "server_username", "server_directory", "server_logfile", "server_pidfile", - "server_root_hints", "server_trust_anchor_file", - "server_trusted_keys_file", "server_trust_anchor", - "server_hide_identity", "server_hide_version", "server_identity", - "server_version", "server_msg_buffer_size", "server_msg_cache_size", - "server_msg_cache_slabs", "server_num_queries_per_thread", - "server_rrset_cache_size", "server_rrset_cache_slabs", - "server_infra_host_ttl", "server_infra_lame_ttl", - "server_infra_cache_numhosts", "server_infra_cache_lame_size", - "server_infra_cache_slabs", "server_target_fetch_policy", - "server_harden_short_bufsize", "server_harden_large_queries", - "server_harden_glue", "server_harden_dnssec_stripped", - "server_use_caps_for_id", "server_do_not_query_address", - "server_do_not_query_localhost", "server_access_control", - "server_module_conf", "server_val_override_date", "server_cache_max_ttl", - "server_bogus_ttl", "server_val_clean_additional", - "server_val_permissive_mode", "server_val_nsec3_keysize_iterations", - "server_key_cache_size", "server_key_cache_slabs", "server_local_zone", - "server_local_data", "stub_name", "stub_host", "stub_addr", - "forward_name", "forward_host", "forward_addr", 0 + "server_root_hints", "server_dlv_anchor_file", + "server_trust_anchor_file", "server_trusted_keys_file", + "server_trust_anchor", "server_hide_identity", "server_hide_version", + "server_identity", "server_version", "server_msg_buffer_size", + "server_msg_cache_size", "server_msg_cache_slabs", + "server_num_queries_per_thread", "server_rrset_cache_size", + "server_rrset_cache_slabs", "server_infra_host_ttl", + "server_infra_lame_ttl", "server_infra_cache_numhosts", + "server_infra_cache_lame_size", "server_infra_cache_slabs", + "server_target_fetch_policy", "server_harden_short_bufsize", + "server_harden_large_queries", "server_harden_glue", + "server_harden_dnssec_stripped", "server_use_caps_for_id", + "server_do_not_query_address", "server_do_not_query_localhost", + "server_access_control", "server_module_conf", + "server_val_override_date", "server_cache_max_ttl", "server_bogus_ttl", + "server_val_clean_additional", "server_val_permissive_mode", + "server_val_nsec3_keysize_iterations", "server_key_cache_size", + "server_key_cache_slabs", "server_local_zone", "server_local_data", + "stub_name", "stub_host", "stub_addr", "forward_name", "forward_host", + "forward_addr", 0 }; #endif @@ -736,29 +740,29 @@ static const yytype_uint16 yytoknum[] = 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 + 335, 336, 337 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 82, 83, 83, 84, 84, 84, 85, 86, 86, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 88, 89, 89, 90, 90, 90, 91, - 92, 92, 93, 93, 93, 94, 95, 96, 97, 98, + 0, 83, 84, 84, 85, 85, 85, 86, 87, 87, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 89, 90, 90, 91, 91, 91, + 92, 93, 93, 94, 94, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162 + 159, 160, 161, 162, 163, 164 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -771,15 +775,15 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 2, 0, 1, 1, 1, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 2, 0, 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, 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, 3, 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, 3, 2, + 2, 2, 2, 2, 2, 2 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -787,43 +791,43 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 0, 1, 7, 73, 79, 3, 9, 75, 81, + 2, 0, 1, 7, 74, 80, 3, 9, 76, 82, 4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 8, 10, 11, 67, - 70, 12, 18, 58, 13, 71, 72, 29, 51, 66, - 14, 15, 16, 17, 68, 57, 19, 20, 21, 22, - 23, 59, 45, 55, 46, 39, 40, 41, 42, 52, - 24, 25, 26, 27, 28, 30, 31, 33, 34, 32, - 35, 36, 37, 43, 62, 69, 38, 60, 63, 44, - 47, 61, 48, 49, 50, 56, 53, 54, 64, 65, - 0, 0, 0, 74, 76, 77, 78, 0, 0, 0, - 80, 82, 83, 84, 86, 85, 89, 92, 90, 98, - 99, 100, 101, 104, 105, 106, 107, 108, 118, 119, - 120, 121, 122, 95, 123, 124, 127, 125, 126, 128, - 129, 130, 134, 113, 114, 115, 116, 131, 137, 110, - 112, 138, 140, 141, 142, 96, 117, 144, 145, 111, - 143, 103, 91, 109, 135, 139, 132, 0, 0, 147, - 97, 87, 102, 133, 88, 93, 94, 148, 149, 150, - 151, 152, 153, 136, 146 + 0, 0, 0, 0, 0, 0, 0, 8, 10, 11, + 67, 70, 12, 18, 58, 13, 71, 72, 29, 51, + 66, 14, 15, 16, 17, 68, 57, 19, 20, 21, + 22, 23, 59, 73, 45, 55, 46, 39, 40, 41, + 42, 52, 24, 25, 26, 27, 28, 30, 31, 33, + 34, 32, 35, 36, 37, 43, 62, 69, 38, 60, + 63, 44, 47, 61, 48, 49, 50, 56, 53, 54, + 64, 65, 0, 0, 0, 75, 77, 78, 79, 0, + 0, 0, 81, 83, 84, 85, 87, 86, 90, 93, + 91, 99, 100, 101, 102, 105, 106, 107, 108, 109, + 120, 121, 122, 123, 124, 96, 125, 126, 129, 127, + 128, 130, 131, 132, 136, 115, 116, 117, 118, 133, + 139, 112, 114, 140, 142, 143, 144, 97, 119, 146, + 147, 113, 145, 104, 92, 110, 137, 141, 134, 0, + 0, 149, 98, 88, 103, 135, 89, 94, 95, 111, + 150, 151, 152, 153, 154, 155, 138, 148 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 6, 7, 10, 76, 8, 11, 143, 9, - 12, 150, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 144, 145, 146, 151, 152, - 153 + -1, 1, 6, 7, 10, 77, 8, 11, 145, 9, + 12, 152, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 146, 147, 148, 153, + 154, 155 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -831,29 +835,29 @@ static const yytype_int16 yydefgoto[] = #define YYPACT_NINF -13 static const yytype_int16 yypact[] = { - -13, 70, -13, -13, -13, -13, -13, -13, -13, -13, - -12, 35, 34, 15, 16, 17, 18, 22, 23, 24, - 63, 66, 67, 68, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -13, -13, -13, -13, + -13, 71, -13, -13, -13, -13, -13, -13, -13, -13, + -12, 36, 35, 15, 16, 17, 18, 22, 23, 24, + 64, 67, 68, 69, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - 126, 127, 128, -13, -13, -13, -13, 129, 130, 131, + -13, -13, 128, 129, 130, -13, -13, -13, -13, 131, + 132, 133, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, 132, 133, -13, - -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -13, -13, -13, -13 + -13, -13, -13, -13, -13, -13, -13, -13, -13, 134, + 135, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13 }; /* YYPGOTO[NTERM-NUM]. */ @@ -867,7 +871,7 @@ static const yytype_int8 yypgoto[] = -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13 + -13, -13 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -879,19 +883,19 @@ static const yytype_uint8 yytable[] = { 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 154, 155, 156, 157, 38, - 39, 40, 158, 159, 160, 41, 42, 43, 44, 45, + 33, 34, 35, 36, 37, 156, 157, 158, 159, 38, + 39, 40, 160, 161, 162, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 2, 147, 140, 161, 141, 142, 162, 163, 164, 148, - 149, 3, 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, 4, 191, - 192, 193, 194, 195, 5, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224 + 76, 2, 149, 142, 163, 143, 144, 164, 165, 166, + 150, 151, 3, 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, 192, 4, + 193, 194, 195, 196, 197, 5, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227 }; static const yytype_uint8 yycheck[] = @@ -903,43 +907,43 @@ static const yytype_uint8 yycheck[] = 52, 53, 54, 55, 56, 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, - 0, 37, 37, 10, 39, 40, 10, 10, 10, 45, - 46, 11, 10, 10, 10, 10, 10, 10, 10, 10, + 82, 0, 37, 37, 10, 39, 40, 10, 10, 10, + 45, 46, 11, 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, 38, 10, - 10, 10, 10, 10, 44, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 38, + 10, 10, 10, 10, 10, 44, 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 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 83, 0, 11, 38, 44, 84, 85, 88, 91, - 86, 89, 92, 12, 13, 14, 15, 16, 17, 18, + 0, 84, 0, 11, 38, 44, 85, 86, 89, 92, + 87, 90, 93, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 41, 42, 43, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 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, 87, 94, 95, 96, + 76, 77, 78, 79, 80, 81, 82, 88, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 37, 39, 40, 90, 157, 158, 159, 37, 45, 46, - 93, 160, 161, 162, 10, 10, 10, 10, 10, 10, + 157, 158, 37, 39, 40, 91, 159, 160, 161, 37, + 45, 46, 94, 162, 163, 164, 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, 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 }; #define yyerrok (yyerrstatus = 0) @@ -1760,8 +1764,8 @@ yyreduce: } break; - case 73: -#line 138 "util/configparser.y" + case 74: +#line 139 "util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -1774,8 +1778,8 @@ yyreduce: } break; - case 79: -#line 154 "util/configparser.y" + case 80: +#line 155 "util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -1788,8 +1792,8 @@ yyreduce: } break; - case 85: -#line 170 "util/configparser.y" + case 86: +#line 171 "util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -1799,8 +1803,8 @@ yyreduce: } break; - case 86: -#line 179 "util/configparser.y" + case 87: +#line 180 "util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -1810,8 +1814,8 @@ yyreduce: } break; - case 87: -#line 188 "util/configparser.y" + case 88: +#line 189 "util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) @@ -1823,8 +1827,8 @@ yyreduce: } break; - case 88: -#line 199 "util/configparser.y" + case 89: +#line 200 "util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1834,8 +1838,8 @@ yyreduce: } break; - case 89: -#line 208 "util/configparser.y" + case 90: +#line 209 "util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -1845,8 +1849,8 @@ yyreduce: } break; - case 90: -#line 217 "util/configparser.y" + case 91: +#line 218 "util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -1860,8 +1864,8 @@ yyreduce: } break; - case 91: -#line 230 "util/configparser.y" + case 92: +#line 231 "util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -1877,8 +1881,8 @@ yyreduce: } break; - case 92: -#line 245 "util/configparser.y" + case 93: +#line 246 "util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -1888,8 +1892,8 @@ yyreduce: } break; - case 93: -#line 254 "util/configparser.y" + case 94: +#line 255 "util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, @@ -1899,8 +1903,8 @@ yyreduce: } break; - case 94: -#line 263 "util/configparser.y" + case 95: +#line 264 "util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, @@ -1910,8 +1914,8 @@ yyreduce: } break; - case 95: -#line 272 "util/configparser.y" + case 96: +#line 273 "util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -1921,8 +1925,8 @@ yyreduce: } break; - case 96: -#line 281 "util/configparser.y" + case 97: +#line 282 "util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -1932,8 +1936,8 @@ yyreduce: } break; - case 97: -#line 290 "util/configparser.y" + case 98: +#line 291 "util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1943,8 +1947,8 @@ yyreduce: } break; - case 98: -#line 299 "util/configparser.y" + case 99: +#line 300 "util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1954,8 +1958,8 @@ yyreduce: } break; - case 99: -#line 308 "util/configparser.y" + case 100: +#line 309 "util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1965,8 +1969,8 @@ yyreduce: } break; - case 100: -#line 317 "util/configparser.y" + case 101: +#line 318 "util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1976,8 +1980,8 @@ yyreduce: } break; - case 101: -#line 326 "util/configparser.y" + case 102: +#line 327 "util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1987,8 +1991,8 @@ yyreduce: } break; - case 102: -#line 335 "util/configparser.y" + case 103: +#line 336 "util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1998,8 +2002,8 @@ yyreduce: } break; - case 103: -#line 344 "util/configparser.y" + case 104: +#line 345 "util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2014,8 +2018,8 @@ yyreduce: } break; - case 104: -#line 358 "util/configparser.y" + case 105: +#line 359 "util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->chrootdir); @@ -2023,8 +2027,8 @@ yyreduce: } break; - case 105: -#line 365 "util/configparser.y" + case 106: +#line 366 "util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->username); @@ -2032,8 +2036,8 @@ yyreduce: } break; - case 106: -#line 372 "util/configparser.y" + case 107: +#line 373 "util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->directory); @@ -2041,8 +2045,8 @@ yyreduce: } break; - case 107: -#line 379 "util/configparser.y" + case 108: +#line 380 "util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->logfile); @@ -2051,8 +2055,8 @@ yyreduce: } break; - case 108: -#line 387 "util/configparser.y" + case 109: +#line 388 "util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->pidfile); @@ -2060,8 +2064,8 @@ yyreduce: } break; - case 109: -#line 394 "util/configparser.y" + case 110: +#line 395 "util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str))) @@ -2069,8 +2073,17 @@ yyreduce: } break; - case 110: -#line 401 "util/configparser.y" + case 111: +#line 402 "util/configparser.y" + { + OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dlv_anchor_file); + cfg_parser->cfg->dlv_anchor_file = (yyvsp[(2) - (2)].str); + } + break; + + case 112: +#line 408 "util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2079,8 +2092,8 @@ yyreduce: } break; - case 111: -#line 409 "util/configparser.y" + case 113: +#line 416 "util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2089,8 +2102,8 @@ yyreduce: } break; - case 112: -#line 417 "util/configparser.y" + case 114: +#line 424 "util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str))) @@ -2098,8 +2111,8 @@ yyreduce: } break; - case 113: -#line 424 "util/configparser.y" + case 115: +#line 431 "util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2109,8 +2122,8 @@ yyreduce: } break; - case 114: -#line 433 "util/configparser.y" + case 116: +#line 440 "util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2120,8 +2133,8 @@ yyreduce: } break; - case 115: -#line 442 "util/configparser.y" + case 117: +#line 449 "util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->identity); @@ -2129,8 +2142,8 @@ yyreduce: } break; - case 116: -#line 449 "util/configparser.y" + case 118: +#line 456 "util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->version); @@ -2138,8 +2151,8 @@ yyreduce: } break; - case 117: -#line 456 "util/configparser.y" + case 119: +#line 463 "util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2151,8 +2164,8 @@ yyreduce: } break; - case 118: -#line 467 "util/configparser.y" + case 120: +#line 474 "util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size)) @@ -2161,8 +2174,8 @@ yyreduce: } break; - case 119: -#line 475 "util/configparser.y" + case 121: +#line 482 "util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2176,8 +2189,8 @@ yyreduce: } break; - case 120: -#line 488 "util/configparser.y" + case 122: +#line 495 "util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2187,8 +2200,8 @@ yyreduce: } break; - case 121: -#line 497 "util/configparser.y" + case 123: +#line 504 "util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size)) @@ -2197,8 +2210,8 @@ yyreduce: } break; - case 122: -#line 505 "util/configparser.y" + case 124: +#line 512 "util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2212,8 +2225,8 @@ yyreduce: } break; - case 123: -#line 518 "util/configparser.y" + case 125: +#line 525 "util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2223,8 +2236,8 @@ yyreduce: } break; - case 124: -#line 527 "util/configparser.y" + case 126: +#line 534 "util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2234,8 +2247,8 @@ yyreduce: } break; - case 125: -#line 536 "util/configparser.y" + case 127: +#line 543 "util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2245,8 +2258,8 @@ yyreduce: } break; - case 126: -#line 545 "util/configparser.y" + case 128: +#line 552 "util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg-> @@ -2256,8 +2269,8 @@ yyreduce: } break; - case 127: -#line 554 "util/configparser.y" + case 129: +#line 561 "util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2271,8 +2284,8 @@ yyreduce: } break; - case 128: -#line 567 "util/configparser.y" + case 130: +#line 574 "util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->target_fetch_policy); @@ -2280,8 +2293,8 @@ yyreduce: } break; - case 129: -#line 574 "util/configparser.y" + case 131: +#line 581 "util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2292,8 +2305,8 @@ yyreduce: } break; - case 130: -#line 584 "util/configparser.y" + case 132: +#line 591 "util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2304,8 +2317,8 @@ yyreduce: } break; - case 131: -#line 594 "util/configparser.y" + case 133: +#line 601 "util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2316,8 +2329,8 @@ yyreduce: } break; - case 132: -#line 604 "util/configparser.y" + case 134: +#line 611 "util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2328,8 +2341,8 @@ yyreduce: } break; - case 133: -#line 614 "util/configparser.y" + case 135: +#line 621 "util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2340,8 +2353,8 @@ yyreduce: } break; - case 134: -#line 624 "util/configparser.y" + case 136: +#line 631 "util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str))) @@ -2349,8 +2362,8 @@ yyreduce: } break; - case 135: -#line 631 "util/configparser.y" + case 137: +#line 638 "util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2361,8 +2374,8 @@ yyreduce: } break; - case 136: -#line 641 "util/configparser.y" + case 138: +#line 648 "util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && @@ -2376,8 +2389,8 @@ yyreduce: } break; - case 137: -#line 654 "util/configparser.y" + case 139: +#line 661 "util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->module_conf); @@ -2385,8 +2398,8 @@ yyreduce: } break; - case 138: -#line 661 "util/configparser.y" + case 140: +#line 668 "util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -2405,8 +2418,8 @@ yyreduce: } break; - case 139: -#line 679 "util/configparser.y" + case 141: +#line 686 "util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2416,8 +2429,8 @@ yyreduce: } break; - case 140: -#line 688 "util/configparser.y" + case 142: +#line 695 "util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2427,8 +2440,8 @@ yyreduce: } break; - case 141: -#line 697 "util/configparser.y" + case 143: +#line 704 "util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2439,8 +2452,8 @@ yyreduce: } break; - case 142: -#line 707 "util/configparser.y" + case 144: +#line 714 "util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2451,8 +2464,8 @@ yyreduce: } break; - case 143: -#line 717 "util/configparser.y" + case 145: +#line 724 "util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); @@ -2460,8 +2473,8 @@ yyreduce: } break; - case 144: -#line 724 "util/configparser.y" + case 146: +#line 731 "util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size)) @@ -2470,8 +2483,8 @@ yyreduce: } break; - case 145: -#line 732 "util/configparser.y" + case 147: +#line 739 "util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2485,8 +2498,8 @@ yyreduce: } break; - case 146: -#line 745 "util/configparser.y" + case 148: +#line 752 "util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && @@ -2506,8 +2519,8 @@ yyreduce: } break; - case 147: -#line 764 "util/configparser.y" + case 149: +#line 771 "util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str))) @@ -2515,8 +2528,8 @@ yyreduce: } break; - case 148: -#line 771 "util/configparser.y" + case 150: +#line 778 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->stubs->name); @@ -2524,8 +2537,8 @@ yyreduce: } break; - case 149: -#line 778 "util/configparser.y" + case 151: +#line 785 "util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str))) @@ -2533,8 +2546,8 @@ yyreduce: } break; - case 150: -#line 785 "util/configparser.y" + case 152: +#line 792 "util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str))) @@ -2542,8 +2555,8 @@ yyreduce: } break; - case 151: -#line 792 "util/configparser.y" + case 153: +#line 799 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->forwards->name); @@ -2551,8 +2564,8 @@ yyreduce: } break; - case 152: -#line 799 "util/configparser.y" + case 154: +#line 806 "util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str))) @@ -2560,8 +2573,8 @@ yyreduce: } break; - case 153: -#line 806 "util/configparser.y" + case 155: +#line 813 "util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str))) @@ -2571,7 +2584,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 2575 "util/configparser.c" +#line 2588 "util/configparser.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2785,7 +2798,7 @@ yyreturn: } -#line 812 "util/configparser.y" +#line 819 "util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 682a315b1..aae573727 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -117,7 +117,8 @@ VAR_USE_CAPS_FOR_ID = 333, VAR_STATISTICS_CUMULATIVE = 334, VAR_OUTGOING_PORT_PERMIT = 335, - VAR_OUTGOING_PORT_AVOID = 336 + VAR_OUTGOING_PORT_AVOID = 336, + VAR_DLV_ANCHOR_FILE = 337 }; #endif /* Tokens. */ @@ -200,6 +201,7 @@ #define VAR_STATISTICS_CUMULATIVE 334 #define VAR_OUTGOING_PORT_PERMIT 335 #define VAR_OUTGOING_PORT_AVOID 336 +#define VAR_DLV_ANCHOR_FILE 337 @@ -211,7 +213,7 @@ typedef union YYSTYPE char* str; } /* Line 1489 of yacc.c. */ -#line 215 "util/configparser.h" +#line 217 "util/configparser.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/util/configparser.y b/util/configparser.y index 32a5a28bb..9e0779a33 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -90,7 +90,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_LOCAL_ZONE VAR_LOCAL_DATA VAR_INTERFACE_AUTOMATIC %token VAR_STATISTICS_INTERVAL VAR_DO_DAEMONIZE VAR_USE_CAPS_FOR_ID %token VAR_STATISTICS_CUMULATIVE VAR_OUTGOING_PORT_PERMIT -%token VAR_OUTGOING_PORT_AVOID +%token VAR_OUTGOING_PORT_AVOID VAR_DLV_ANCHOR_FILE %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -132,7 +132,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_local_zone | server_local_data | server_interface_automatic | server_statistics_interval | server_do_daemonize | server_use_caps_for_id | server_statistics_cumulative | - server_outgoing_port_permit | server_outgoing_port_avoid + server_outgoing_port_permit | server_outgoing_port_avoid | + server_dlv_anchor_file ; stubstart: VAR_STUB_ZONE { @@ -397,6 +398,12 @@ server_root_hints: VAR_ROOT_HINTS STRING yyerror("out of memory"); } ; +server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING + { + OUTYY(("P(server_dlv_anchor_file:%s)\n", $2)); + free(cfg_parser->cfg->dlv_anchor_file); + cfg_parser->cfg->dlv_anchor_file = $2; + } server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING { OUTYY(("P(server_trust_anchor_file:%s)\n", $2)); diff --git a/validator/val_anchor.c b/validator/val_anchor.c index 55db7b32d..ddcdc13a8 100644 --- a/validator/val_anchor.c +++ b/validator/val_anchor.c @@ -203,9 +203,9 @@ anchor_new_ta_key(struct val_anchors* anchors, uint8_t* rdata, size_t rdata_len, * @param dclass: class of RR * @param rdata: rdata wireformat, starting with rdlength. * @param rdata_len: length of rdata including rdlength. - * @return: 0 on error. + * @return: NULL on error, else the trust anchor. */ -static int +static struct trust_anchor* anchor_store_new_key(struct val_anchors* anchors, uint8_t* name, uint16_t type, uint16_t dclass, uint8_t* rdata, size_t rdata_len) { @@ -223,22 +223,22 @@ anchor_store_new_key(struct val_anchors* anchors, uint8_t* name, uint16_t type, if(!ta) { ta = anchor_new_ta(anchors, name, namelabs, namelen, dclass); if(!ta) - return 0; + return NULL; } /* look for duplicates */ if(anchor_find_key(ta, rdata, rdata_len, type)) { - return 1; + return ta; } k = anchor_new_ta_key(anchors, rdata, rdata_len, type); if(!k) - return 0; + return NULL; /* add new key */ if(type == LDNS_RR_TYPE_DS) ta->numDS++; else ta->numDNSKEY++; k->next = ta->keylist; ta->keylist = k; - return 1; + return ta; } /** @@ -246,12 +246,13 @@ anchor_store_new_key(struct val_anchors* anchors, uint8_t* name, uint16_t type, * @param anchors: anchor storage. * @param buffer: parsing buffer. * @param rr: the rr (allocated by caller). - * @return false on error. + * @return NULL on error, else the trust anchor. */ -static int +static struct trust_anchor* anchor_store_new_rr(struct val_anchors* anchors, ldns_buffer* buffer, ldns_rr* rr) { + struct trust_anchor* ta; ldns_rdf* owner = ldns_rr_owner(rr); ldns_status status; ldns_buffer_clear(buffer); @@ -260,20 +261,20 @@ anchor_store_new_rr(struct val_anchors* anchors, ldns_buffer* buffer, if(status != LDNS_STATUS_OK) { log_err("error converting trustanchor to wireformat: %s", ldns_get_errorstr_by_id(status)); - return 0; + return NULL; } ldns_buffer_flip(buffer); ldns_buffer_write_u16_at(buffer, 0, ldns_buffer_limit(buffer) - 2); - if(!anchor_store_new_key(anchors, ldns_rdf_data(owner), + if(!(ta=anchor_store_new_key(anchors, ldns_rdf_data(owner), ldns_rr_get_type(rr), ldns_rr_get_class(rr), - ldns_buffer_begin(buffer), ldns_buffer_limit(buffer))) { - return 0; + ldns_buffer_begin(buffer), ldns_buffer_limit(buffer)))) { + return NULL; } log_nametypeclass(VERB_QUERY, "adding trusted key", ldns_rdf_data(owner), ldns_rr_get_type(rr), ldns_rr_get_class(rr)); - return 1; + return ta; } int @@ -302,12 +303,14 @@ anchor_store_str(struct val_anchors* anchors, ldns_buffer* buffer, * @param anchors: anchor storage. * @param buffer: parsing buffer. * @param fname: string. - * @return false on error. + * @param onlyone: only one trust anchor allowed in file. + * @return NULL on error. Else last trust-anchor point. */ -static int +static struct trust_anchor* anchor_read_file(struct val_anchors* anchors, ldns_buffer* buffer, - const char* fname) + const char* fname, int onlyone) { + struct trust_anchor* ta = NULL, *tanew; uint32_t default_ttl = 3600; ldns_rdf* origin = NULL, *prev = NULL; int line_nr = 1; @@ -339,18 +342,28 @@ anchor_read_file(struct val_anchors* anchors, ldns_buffer* buffer, ldns_rr_free(rr); continue; } - if(!anchor_store_new_rr(anchors, buffer, rr)) { + if(!(tanew=anchor_store_new_rr(anchors, buffer, rr))) { log_err("error at %s line %d", fname, line_nr); ldns_rr_free(rr); ok = 0; break; } + if(onlyone && ta && ta != tanew) { + log_err("error at %s line %d: no multiple anchor " + "domains allowed (you can have multiple " + "keys, but they must have the same name).", + fname, line_nr); + ldns_rr_free(rr); + ok = 0; + break; + } + ta = tanew; ldns_rr_free(rr); } ldns_rdf_deep_free(origin); ldns_rdf_deep_free(prev); fclose(in); - return ok; + return ok?ta:NULL; } /** skip file to end of line */ @@ -759,7 +772,7 @@ anchors_apply_cfg(struct val_anchors* anchors, struct config_file* cfg) if(cfg->chrootdir && cfg->chrootdir[0] && strncmp(nm, cfg->chrootdir, strlen(cfg->chrootdir)) == 0) nm += strlen(cfg->chrootdir); - if(!anchor_read_file(anchors, parsebuf, nm)) { + if(!anchor_read_file(anchors, parsebuf, nm, 0)) { log_err("error reading trust-anchor-file: %s", f->str); ldns_buffer_free(parsebuf); return 0; @@ -787,6 +800,15 @@ anchors_apply_cfg(struct val_anchors* anchors, struct config_file* cfg) return 0; } } + if(cfg->dlv_anchor_file && cfg->dlv_anchor_file[0] != 0) { + if(!(anchors->dlv_anchor = anchor_read_file(anchors, parsebuf, + cfg->dlv_anchor_file, 1))) { + log_err("error reading dlv-anchor-file: %s", + cfg->dlv_anchor_file); + ldns_buffer_free(parsebuf); + return 0; + } + } init_parents(anchors); anchors_assemble_rrsets(anchors); ldns_buffer_free(parsebuf); diff --git a/validator/val_anchor.h b/validator/val_anchor.h index 2032d6984..0e1c2bfea 100644 --- a/validator/val_anchor.h +++ b/validator/val_anchor.h @@ -60,6 +60,8 @@ struct val_anchors { * contents of type trust_anchor. */ rbtree_t* tree; + /** The DLV trust anchor (if one is configured, else NULL) */ + struct trust_anchor* dlv_anchor; }; /**