From a7cfe2bf65675c5b99feca2fa8128c5e62089535 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Thu, 21 Aug 2008 14:58:39 +0000 Subject: [PATCH] Test DLV anchor. git-svn-id: file:///svn/unbound/trunk@1202 be551aaa-1e26-0410-a405-d3ace91eadb9 --- doc/Changelog | 3 + doc/unbound.conf.5.in | 3 + testcode/ldns-testpkts.c | 11 + testcode/ldns-testpkts.h | 3 + testdata/dlv_anchor.rpl | 274 +++++++++++ util/config_file.c | 5 + util/config_file.h | 2 + util/configlexer.c | 957 ++++++++++++++++++++------------------- util/configlexer.lex | 1 + util/configparser.c | 551 +++++++++++----------- util/configparser.h | 6 +- util/configparser.y | 12 +- util/data/msgparse.c | 4 +- validator/val_anchor.c | 21 +- validator/val_anchor.h | 6 +- validator/validator.c | 12 +- 16 files changed, 1110 insertions(+), 761 deletions(-) create mode 100644 testdata/dlv_anchor.rpl diff --git a/doc/Changelog b/doc/Changelog index da2b3ee8d..50ad43034 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,9 @@ - negative cache code linked into validator, for DLV use. negative cache works for DLV. - iana portlist update. + - dlv-anchor option for unit tests. + - fixup NSEC_AT_APEX classification for short typemaps. + - ldns-testns has subdomain checks, for unit tests. 20 August 2008: Wouter - negative cache code, reviewed. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index b52e22469..3ab65c2c6 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -418,6 +418,9 @@ DNSKEY entries can be used in the file, in the same format as for 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 dlv\-anchor: \fI<"Resource Record"> +Much like trust\-anchor, this is a DLV anchor with the DS or DNSKEY inline. +.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/testcode/ldns-testpkts.c b/testcode/ldns-testpkts.c index b8317b257..bd3ee79e5 100644 --- a/testcode/ldns-testpkts.c +++ b/testcode/ldns-testpkts.c @@ -104,6 +104,8 @@ static void matchline(const char* line, struct entry* e) e->match_qtype = true; } else if(str_keyword(&parse, "qname")) { e->match_qname = true; + } else if(str_keyword(&parse, "subdomain")) { + e->match_subdomain = true; } else if(str_keyword(&parse, "all")) { e->match_all = true; } else if(str_keyword(&parse, "ttl")) { @@ -227,6 +229,7 @@ static struct entry* new_entry() e->match_opcode = false; e->match_qtype = false; e->match_qname = false; + e->match_subdomain = false; e->match_all = false; e->match_ttl = false; e->match_do = false; @@ -672,6 +675,14 @@ find_match(struct entry* entries, ldns_pkt* query_pkt, continue; } } + if(p->match_subdomain) { + if(!get_owner(query_pkt) || !get_owner(reply) || + !ldns_dname_is_subdomain( + get_owner(query_pkt), get_owner(reply)) != 0) { + verbose(3, "bad subdomain\n"); + continue; + } + } if(p->match_serial && get_serial(query_pkt) != p->ixfr_soa_serial) { verbose(3, "bad serial\n"); continue; diff --git a/testcode/ldns-testpkts.h b/testcode/ldns-testpkts.h index 1bb6c9e01..b9735a69a 100644 --- a/testcode/ldns-testpkts.h +++ b/testcode/ldns-testpkts.h @@ -42,6 +42,7 @@ ; if you leave it out, any opcode matches this entry. ; 'qtype' makes the query match the qtype from the reply ; 'qname' makes the query match the qname from the reply + ; 'subdomain' makes the query match subdomains of qname from the reply ; 'serial=1023' makes the query match if ixfr serial is 1023. ; 'all' has to match header byte for byte and all rrs in packet. ; 'ttl' used with all, rrs in packet must also have matching TTLs. @@ -157,6 +158,8 @@ struct entry { bool match_qtype; /** match qname with answer qname */ bool match_qname; + /** match qname as subdomain of answer qname */ + bool match_subdomain; /** match SOA serial number, from auth section */ bool match_serial; /** match all of the packet */ diff --git a/testdata/dlv_anchor.rpl b/testdata/dlv_anchor.rpl new file mode 100644 index 000000000..b359f18bc --- /dev/null +++ b/testdata/dlv_anchor.rpl @@ -0,0 +1,274 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DLV anchor +; positive response for DLV. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net.example.com. IN DLV +SECTION ANSWER +example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/util/config_file.c b/util/config_file.c index 05a33836e..f074d441c 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -138,6 +138,7 @@ config_create() cfg->trust_anchor_list = NULL; cfg->trusted_keys_file_list = NULL; cfg->dlv_anchor_file = NULL; + cfg->dlv_anchor_list = NULL; cfg->val_date_override = 0; cfg->val_clean_additional = 1; cfg->val_permissive_mode = 0; @@ -308,6 +309,9 @@ int config_set_option(struct config_file* cfg, const char* opt, } 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, "dlv-anchor:") == 0) { + return cfg_strlist_insert(&cfg->dlv_anchor_list, + strdup(val)); } else if(strcmp(opt, "val-override-date:") == 0) { if(strcmp(val, "") == 0 || strcmp(val, "0") == 0) { cfg->val_date_override = 0; @@ -457,6 +461,7 @@ config_delete(struct config_file* cfg) config_delstrlist(cfg->trusted_keys_file_list); config_delstrlist(cfg->trust_anchor_list); free(cfg->dlv_anchor_file); + config_delstrlist(cfg->dlv_anchor_list); 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 6b8a46e6d..47f163a51 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -180,6 +180,8 @@ struct config_file { struct config_strlist* trusted_keys_file_list; /** DLV anchor file */ char* dlv_anchor_file; + /** DLV anchor inline */ + struct config_strlist* dlv_anchor_list; /** 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 837c0d809..320e2db3a 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 93 -#define YY_END_OF_BUFFER 94 +#define YY_NUM_RULES 94 +#define YY_END_OF_BUFFER 95 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -370,99 +370,99 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[822] = +static yyconst flex_int16_t yy_accept[823] = { 0, - 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, + 1, 1, 78, 78, 82, 82, 86, 86, 90, 90, + 95, 93, 1, 76, 77, 2, 81, 94, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 78, 79, 94, 80, 94, + 82, 83, 84, 94, 89, 86, 87, 88, 94, 90, + 91, 92, 94, 93, 0, 1, 2, 2, 2, 2, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 78, + 0, 82, 0, 89, 0, 86, 90, 0, 93, 93, - 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, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 45, 93, 93, 93, 93, - 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, + 6, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 20, 93, 93, 93, 12, 13, 93, 15, 14, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 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, + 93, 93, 93, 3, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 85, 93, 93, 93, 93, + 93, 93, 93, 93, 23, 93, 93, 93, 93, 93, + 93, 24, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 57, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 56, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 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, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 21, 93, 93, 93, 93, 93, 93, 93, + 93, 22, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 17, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 46, 47, 44, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 5, 93, + 93, 93, 59, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 73, 72, 93, 93, 93, 93, 93, 93, 93, 93, - 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, + 93, 25, 93, 93, 93, 93, 93, 93, 71, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 41, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 4, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 16, 93, 49, 50, 48, 93, 93, 93, 93, 55, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 63, 93, 93, 93, 93, 93, 93, - 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, + 93, 93, 31, 93, 93, 93, 93, 93, 93, 54, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 58, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 65, 93, 93, 93, + 93, 53, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 32, 33, 93, 68, 93, 93, 27, 93, + 93, 93, 93, 93, 93, 7, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 60, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 69, + 26, 28, 93, 93, 93, 93, 93, 93, 93, 93, - 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, + 93, 93, 93, 93, 43, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 11, 93, 93, 93, 93, 93, + 93, 10, 93, 93, 29, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 34, 93, 93, 93, 93, 93, 30, 93, + 93, 93, 61, 62, 93, 93, 64, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 18, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 19, 93, 9, 93, 93, 74, 38, + 93, 93, 67, 51, 93, 93, 40, 39, 93, 35, - 8, 92, 65, 92, 92, 92, 36, 92, 74, 92, - 52, 42, 37, 92, 92, 92, 92, 92, 92, 69, - 0 + 93, 8, 93, 66, 93, 93, 93, 36, 93, 75, + 93, 52, 42, 37, 93, 93, 93, 93, 93, 93, + 70, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -505,18 +505,18 @@ static yyconst flex_int32_t yy_meta[39] = 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[833] = +static yyconst flex_int16_t yy_base[834] = { 0, 0, 0, 36, 39, 43, 50, 62, 74, 55, 67, - 1693, 1679, 49, 1694, 1694, 81, 1694, 88, 32, 83, + 1695, 1681, 49, 1696, 1696, 81, 1696, 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, + 101, 105, 103, 111, 121, 1680, 1696, 1696, 1696, 57, + 1679, 1696, 1696, 123, 1678, 1688, 1696, 1696, 136, 1676, + 1696, 1696, 140, 1675, 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, + 181, 182, 184, 187, 189, 190, 191, 192, 194, 1674, + 206, 1673, 208, 1672, 223, 1682, 1670, 213, 208, 216, 209, 220, 226, 227, 219, 218, 228, 229, 234, 232, 230, 243, 250, 252, 237, 244, 254, 260, 256, 261, @@ -527,177 +527,177 @@ static yyconst flex_int16_t yy_base[833] = 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, + 417, 416, 419, 420, 421, 1669, 423, 425, 426, 428, - 1666, 429, 436, 430, 432, 441, 434, 451, 444, 438, + 1668, 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, + 1667, 574, 580, 581, 1666, 1665, 582, 1664, 1663, 589, 583, 592, 585, 586, 600, 596, 604, 593, 608, 611, 612, 615, 613, 618, 619, 623, 624, 621, 625, 626, - 635, 628, 636, 1660, 631, 639, 642, 644, 645, 646, + 635, 628, 636, 1662, 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, + 684, 692, 689, 694, 699, 1661, 701, 703, 704, 707, + 708, 709, 710, 711, 1660, 716, 715, 718, 717, 727, + 736, 1659, 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, + 1658, 764, 767, 770, 766, 771, 773, 772, 774, 779, + 781, 782, 784, 786, 787, 789, 1657, 790, 796, 791, 792, 812, 813, 794, 809, 805, 815, 821, 817, 819, 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, + 844, 845, 1656, 854, 856, 858, 857, 847, 860, 861, + 862, 1655, 868, 864, 869, 870, 872, 871, 873, 877, + 876, 875, 878, 879, 885, 894, 900, 901, 897, 1654, + 888, 903, 908, 904, 914, 911, 912, 913, 915, 916, + 918, 919, 922, 933, 939, 1653, 1652, 1651, 923, 927, + 924, 935, 943, 925, 945, 937, 950, 940, 1650, 951, + 952, 953, 1649, 955, 956, 957, 962, 961, 964, 973, + 965, 963, 967, 975, 977, 983, 976, 979, 984, 985, + 1648, 1647, 990, 987, 991, 997, 1007, 993, 1001, 1003, - 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, + 1008, 1646, 1014, 1015, 1011, 1010, 1016, 1022, 1645, 1017, + 1025, 1023, 1026, 1032, 1030, 1035, 1033, 1038, 1045, 1048, + 1050, 1052, 1053, 1644, 1059, 1060, 1043, 1058, 1066, 1062, + 1063, 1064, 1065, 1068, 1069, 1071, 1072, 1074, 1076, 1079, + 1643, 1085, 1091, 1087, 1088, 1089, 1092, 1096, 1102, 1105, + 1103, 1113, 1110, 1111, 1101, 1119, 1116, 1117, 1123, 1118, + 1642, 1130, 1641, 1640, 1639, 1132, 1120, 1124, 1134, 1638, + 1135, 1138, 1140, 1142, 1144, 1145, 1143, 1146, 1147, 1159, + 1148, 1161, 1150, 1162, 1163, 1164, 1170, 1169, 1168, 1172, + 1171, 1176, 1175, 1637, 1182, 1178, 1186, 1189, 1192, 1193, - 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, + 1194, 1196, 1636, 1200, 1202, 1201, 1203, 1204, 1207, 1635, + 1208, 1213, 1214, 1216, 1219, 1223, 1220, 1229, 1212, 1634, + 1231, 1234, 1235, 1237, 1238, 1239, 1240, 1246, 1243, 1247, + 1249, 1251, 1250, 1252, 1257, 1258, 1633, 1259, 1263, 1270, + 1265, 1632, 1274, 1275, 1277, 1267, 1276, 1282, 1283, 1284, + 1285, 1290, 1631, 1630, 1294, 1629, 1297, 1300, 1628, 1302, + 1308, 1304, 1291, 1307, 1309, 1627, 1310, 1311, 1312, 1316, + 1318, 1319, 1320, 1322, 1317, 1324, 1325, 1327, 1626, 1334, + 1335, 1337, 1338, 1332, 1341, 1347, 1343, 1345, 1346, 1625, + 1624, 1623, 1348, 1353, 1359, 1352, 1360, 1362, 1364, 1368, - 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, + 1370, 1371, 1373, 1374, 1622, 1372, 1376, 1383, 1375, 1385, + 1384, 1387, 1392, 1393, 1621, 1394, 1397, 1399, 1400, 1403, + 1405, 1620, 1404, 1406, 1616, 1408, 1414, 1416, 1419, 1421, + 1424, 1425, 1431, 1428, 1430, 1429, 1432, 1435, 1436, 1437, + 1439, 1442, 1612, 1443, 1449, 1445, 1451, 1454, 1611, 1456, + 1453, 1452, 1610, 1606, 1457, 1459, 1605, 1467, 1460, 1469, + 1470, 1471, 1474, 1473, 1475, 1481, 1477, 1601, 1487, 1484, + 1488, 1491, 1495, 1496, 1492, 1500, 1502, 1497, 1505, 1513, + 1517, 1514, 1521, 1600, 1522, 1599, 1525, 1526, 1593, 1565, + 1528, 1529, 1564, 1563, 1518, 1504, 1562, 1559, 1533, 1554, - 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 + 1535, 1506, 1541, 1287, 1530, 1543, 1545, 1209, 1549, 917, + 1550, 606, 478, 332, 1536, 1552, 1546, 1553, 1538, 1558, + 277, 1696, 1579, 1585, 1591, 1597, 118, 1603, 1609, 1615, + 83, 1620, 1626 } ; -static yyconst flex_int16_t yy_def[833] = +static yyconst flex_int16_t yy_def[834] = { 0, - 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, + 822, 1, 823, 823, 824, 824, 825, 825, 826, 826, + 822, 827, 822, 822, 822, 828, 822, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 829, 822, 822, 822, 829, + 830, 822, 822, 830, 831, 822, 822, 822, 831, 832, + 822, 822, 832, 827, 827, 822, 833, 828, 833, 828, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 829, + 829, 830, 830, 831, 831, 822, 832, 832, 827, 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, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 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, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 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, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 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, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 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, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 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, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 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, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, - 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 + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, + 827, 0, 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822 } ; -static yyconst flex_int16_t yy_nxt[1733] = +static yyconst flex_int16_t yy_nxt[1735] = { 0, 12, 13, 14, 14, 15, 16, 17, 12, 12, 12, 12, 12, 18, 19, 12, 20, 21, 12, 22, 12, @@ -794,105 +794,105 @@ static yyconst flex_int16_t yy_nxt[1733] = 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, 469, 55, 55, 55, 472, 55, 468, 467, 473, + 55, 55, 55, 55, 55, 55, 476, 55, 55, 55, + 55, 55, 470, 471, 480, 481, 478, 55, 475, 483, - 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, + 55, 474, 477, 479, 482, 484, 55, 487, 488, 55, + 489, 486, 55, 55, 491, 55, 55, 485, 490, 492, + 55, 494, 493, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 501, 502, 55, 55, 55, 55, 505, 55, + 498, 495, 496, 497, 500, 55, 504, 55, 499, 55, + 503, 55, 55, 506, 509, 55, 510, 55, 511, 512, + 507, 508, 55, 55, 55, 55, 513, 55, 55, 55, + 514, 517, 518, 55, 55, 55, 55, 55, 522, 55, + 515, 523, 525, 516, 524, 55, 520, 55, 55, 55, + 530, 55, 519, 521, 526, 55, 55, 55, 527, 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, + 528, 529, 55, 55, 540, 55, 534, 531, 535, 55, + 532, 536, 538, 55, 539, 55, 533, 537, 541, 55, + 55, 546, 55, 55, 542, 543, 55, 55, 55, 55, + 547, 549, 544, 545, 55, 55, 548, 55, 55, 550, + 555, 554, 55, 556, 55, 55, 551, 55, 553, 561, + 55, 552, 562, 557, 560, 55, 558, 55, 559, 563, + 55, 564, 55, 565, 55, 55, 567, 568, 566, 570, + 55, 55, 55, 571, 55, 55, 55, 55, 55, 569, + 55, 55, 579, 55, 55, 572, 55, 573, 55, 583, + 580, 55, 574, 581, 575, 576, 577, 55, 586, 55, - 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, + 55, 55, 585, 55, 55, 578, 584, 588, 55, 592, + 595, 582, 593, 55, 55, 55, 594, 55, 587, 589, + 596, 591, 55, 55, 590, 55, 600, 598, 55, 55, + 55, 55, 55, 597, 603, 55, 55, 599, 609, 607, + 602, 604, 55, 605, 55, 610, 55, 55, 608, 601, + 55, 612, 55, 606, 55, 55, 55, 55, 55, 55, + 55, 619, 55, 618, 623, 614, 611, 615, 616, 617, + 620, 55, 613, 55, 55, 55, 55, 627, 622, 624, + 55, 55, 55, 55, 55, 621, 628, 55, 55, 629, + 55, 630, 625, 634, 55, 626, 631, 637, 55, 636, - 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, + 635, 55, 632, 633, 55, 55, 55, 642, 55, 640, + 638, 641, 55, 55, 55, 55, 55, 643, 644, 55, + 55, 55, 639, 649, 55, 55, 55, 645, 55, 652, + 653, 55, 55, 646, 654, 55, 647, 650, 651, 648, + 656, 55, 657, 55, 655, 659, 55, 55, 658, 55, + 55, 55, 55, 664, 663, 55, 662, 666, 55, 55, + 668, 55, 55, 55, 55, 660, 661, 665, 670, 55, + 55, 55, 678, 672, 674, 55, 671, 55, 673, 55, + 667, 669, 55, 677, 676, 679, 55, 55, 55, 55, + 675, 680, 681, 683, 55, 55, 55, 55, 682, 55, - 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, + 684, 686, 55, 55, 688, 687, 55, 689, 690, 55, + 685, 691, 55, 692, 55, 693, 55, 694, 695, 55, + 55, 55, 55, 55, 55, 699, 697, 698, 55, 55, + 55, 55, 55, 705, 55, 700, 55, 55, 706, 55, + 696, 702, 703, 704, 55, 701, 55, 55, 711, 55, + 55, 709, 715, 55, 716, 55, 708, 55, 55, 55, + 55, 707, 714, 710, 55, 55, 712, 713, 721, 717, + 722, 55, 55, 725, 55, 718, 55, 719, 723, 720, + 55, 727, 55, 55, 55, 55, 55, 55, 55, 724, + 730, 731, 729, 733, 726, 55, 55, 55, 732, 55, - 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, + 734, 735, 736, 728, 55, 55, 55, 737, 738, 55, + 743, 55, 55, 739, 740, 55, 55, 55, 55, 749, + 55, 744, 746, 745, 741, 747, 55, 742, 55, 751, + 748, 55, 753, 55, 752, 754, 55, 55, 756, 757, + 55, 55, 55, 55, 55, 750, 758, 55, 55, 55, + 755, 55, 760, 762, 55, 55, 768, 55, 766, 759, + 764, 55, 761, 55, 55, 55, 55, 769, 55, 55, + 774, 55, 55, 765, 763, 770, 772, 771, 767, 55, + 775, 55, 55, 55, 776, 55, 55, 55, 773, 55, + 777, 781, 784, 55, 785, 778, 55, 779, 786, 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, 780, 789, 55, 55, 783, 790, 55, 55, 55, + 782, 793, 55, 794, 55, 787, 55, 55, 55, 791, + 807, 788, 796, 792, 797, 55, 55, 795, 798, 55, + 55, 799, 800, 55, 55, 801, 802, 55, 55, 804, + 55, 55, 55, 803, 808, 55, 805, 55, 55, 806, + 55, 809, 810, 55, 812, 55, 813, 55, 55, 811, + 814, 55, 55, 815, 55, 55, 55, 816, 820, 821, + 55, 55, 818, 817, 55, 55, 55, 55, 819, 36, + 36, 36, 36, 36, 36, 41, 41, 41, 41, 41, + 41, 45, 45, 45, 45, 45, 45, 50, 50, 50, - 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, + 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, 55, 55, 55, 55, 55, 55, 55, - 98, 96, 95, 93, 91, 55, 98, 96, 95, 93, - 91, 55, 821, 11, 821, 821, 821, 821, 821, 821, + 55, 55, 98, 96, 95, 93, 91, 55, 98, 96, + 95, 93, 91, 55, 822, 11, 822, 822, 822, 822, - 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 + 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822 } ; -static yyconst flex_int16_t yy_chk[1733] = +static yyconst flex_int16_t yy_chk[1735] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -902,11 +902,11 @@ static yyconst flex_int16_t yy_chk[1733] = 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, 830, 16, 16, 8, 16, 21, 18, + 8, 23, 16, 831, 16, 16, 8, 16, 21, 18, 22, 18, 18, 16, 18, 20, 20, 21, 26, 21, 29, 24, 21, 20, 22, 24, 25, 27, 28, 28, - 30, 25, 26, 31, 24, 33, 33, 32, 826, 30, + 30, 25, 26, 31, 24, 33, 33, 32, 827, 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, @@ -924,14 +924,14 @@ static yyconst flex_int16_t yy_chk[1733] = 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, + 126, 123, 126, 127, 121, 128, 129, 130, 132, 821, 127, 129, 130, 122, 131, 133, 131, 125, 124, 134, 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, + 155, 155, 157, 151, 814, 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, @@ -947,7 +947,7 @@ static yyconst flex_int16_t yy_chk[1733] = 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, + 813, 215, 220, 217, 223, 225, 225, 223, 226, 226, 222, 224, 227, 228, 228, 229, 229, 227, 230, 231, 234, 232, 230, 233, 231, 232, 235, 236, 233, 239, @@ -961,7 +961,7 @@ static yyconst flex_int16_t yy_chk[1733] = 266, 267, 273, 274, 277, 281, 280, 283, 284, 281, 273, 280, 281, 272, 282, 288, 281, 274, 286, 282, - 277, 285, 285, 281, 283, 286, 287, 287, 811, 288, + 277, 285, 285, 281, 283, 286, 287, 287, 812, 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, @@ -989,102 +989,102 @@ static yyconst flex_int16_t yy_chk[1733] = 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, + 416, 419, 419, 420, 421, 423, 424, 418, 417, 423, + 423, 425, 426, 428, 427, 429, 426, 432, 431, 430, + 433, 434, 420, 421, 430, 431, 428, 435, 425, 433, - 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, + 441, 424, 427, 429, 432, 434, 436, 437, 438, 439, + 439, 436, 437, 438, 442, 442, 444, 435, 441, 443, + 443, 445, 444, 446, 447, 448, 445, 449, 450, 810, + 451, 452, 452, 453, 453, 459, 461, 464, 459, 460, + 449, 446, 447, 448, 451, 454, 455, 462, 450, 466, + 454, 455, 468, 460, 463, 463, 464, 465, 465, 466, + 461, 462, 467, 470, 471, 472, 467, 474, 475, 476, + 468, 472, 474, 478, 477, 482, 479, 481, 478, 483, + 470, 479, 481, 471, 480, 480, 476, 484, 487, 485, + 486, 488, 475, 477, 482, 486, 489, 490, 483, 494, - 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, + 484, 485, 493, 495, 496, 498, 490, 487, 490, 496, + 488, 493, 495, 499, 495, 500, 489, 494, 497, 497, + 501, 503, 506, 505, 498, 499, 503, 504, 507, 510, + 504, 505, 500, 501, 508, 512, 504, 511, 513, 506, + 512, 511, 515, 513, 514, 517, 507, 516, 510, 518, + 518, 508, 519, 514, 517, 527, 515, 519, 516, 520, + 520, 521, 521, 522, 522, 523, 525, 526, 523, 528, + 528, 525, 526, 529, 530, 531, 532, 533, 529, 527, + 534, 535, 535, 536, 537, 530, 538, 530, 539, 539, + 536, 540, 530, 537, 531, 532, 533, 542, 543, 544, - 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, + 545, 546, 542, 543, 547, 534, 540, 545, 548, 549, + 551, 538, 550, 555, 549, 551, 550, 550, 544, 546, + 552, 548, 553, 554, 547, 552, 556, 554, 557, 558, + 560, 556, 567, 553, 559, 559, 568, 555, 568, 566, + 558, 560, 562, 562, 566, 569, 569, 571, 567, 557, + 572, 572, 573, 562, 574, 577, 575, 576, 578, 579, + 581, 579, 583, 578, 583, 574, 571, 575, 576, 577, + 580, 580, 573, 582, 584, 585, 586, 587, 582, 584, + 589, 588, 587, 591, 590, 581, 588, 593, 592, 589, + 596, 589, 585, 593, 595, 586, 590, 597, 597, 596, - 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, + 595, 598, 591, 592, 599, 600, 601, 602, 602, 600, + 598, 601, 604, 606, 605, 607, 608, 604, 605, 609, + 611, 808, 599, 611, 619, 612, 613, 606, 614, 614, + 615, 615, 617, 607, 616, 616, 608, 612, 613, 609, + 618, 618, 619, 621, 617, 622, 622, 623, 621, 624, + 625, 626, 627, 627, 626, 629, 625, 628, 628, 630, + 630, 631, 633, 632, 634, 623, 624, 627, 632, 635, + 636, 638, 641, 634, 636, 639, 633, 641, 635, 646, + 629, 631, 640, 640, 639, 643, 643, 644, 647, 645, + 638, 644, 645, 647, 648, 649, 650, 651, 646, 804, - 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, + 648, 650, 652, 663, 652, 651, 655, 655, 657, 657, + 649, 658, 658, 660, 660, 661, 662, 662, 663, 664, + 661, 665, 667, 668, 669, 668, 665, 667, 670, 675, + 671, 672, 673, 674, 674, 669, 676, 677, 675, 678, + 664, 671, 672, 673, 684, 670, 680, 681, 681, 682, + 683, 678, 685, 685, 686, 687, 677, 688, 689, 686, + 693, 676, 684, 680, 696, 694, 682, 683, 694, 687, + 695, 695, 697, 698, 698, 688, 699, 689, 696, 693, + 700, 700, 701, 702, 706, 703, 704, 709, 707, 697, + 703, 704, 702, 707, 699, 708, 711, 710, 706, 712, - 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, + 708, 709, 710, 701, 713, 714, 716, 711, 712, 717, + 718, 718, 719, 713, 714, 720, 723, 721, 724, 726, + 726, 719, 721, 720, 716, 723, 727, 717, 728, 728, + 724, 729, 730, 730, 729, 731, 731, 732, 733, 734, + 734, 736, 735, 733, 737, 727, 735, 738, 739, 740, + 732, 741, 737, 739, 742, 744, 746, 746, 744, 736, + 741, 745, 738, 747, 752, 751, 748, 747, 750, 755, + 755, 756, 759, 742, 740, 748, 751, 750, 745, 758, + 756, 760, 761, 762, 758, 764, 763, 765, 752, 767, + 759, 763, 766, 766, 767, 760, 770, 761, 769, 769, - 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, + 771, 762, 772, 772, 775, 765, 773, 773, 774, 778, + 764, 776, 776, 777, 777, 770, 796, 779, 802, 774, + 796, 771, 779, 775, 780, 780, 782, 778, 781, 781, + 795, 782, 783, 783, 785, 785, 787, 787, 788, 791, + 791, 792, 805, 788, 799, 799, 792, 801, 815, 795, + 819, 801, 803, 803, 806, 806, 807, 807, 817, 805, + 809, 809, 811, 811, 816, 818, 800, 815, 819, 820, + 820, 798, 817, 816, 797, 794, 793, 790, 818, 823, + 823, 823, 823, 823, 823, 824, 824, 824, 824, 824, + 824, 825, 825, 825, 825, 825, 825, 826, 826, 826, - 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, + 826, 826, 826, 828, 828, 789, 828, 828, 828, 829, + 829, 786, 784, 768, 829, 830, 830, 757, 754, 830, + 832, 832, 753, 749, 743, 832, 833, 833, 725, 833, + 833, 833, 722, 715, 705, 692, 691, 690, 679, 666, + 659, 656, 654, 653, 642, 637, 620, 610, 603, 594, + 570, 565, 564, 563, 561, 541, 524, 509, 502, 492, + 491, 473, 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, 822, 822, 822, 822, 822, - 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 + 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822 } ; static yy_state_type yy_last_accepting_state; @@ -1441,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 >= 822 ) + if ( yy_current_state >= 823 ) 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] != 1694 ); + while ( yy_base[yy_current_state] != 1696 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1764,116 +1764,121 @@ YY_RULE_SETUP case 59: YY_RULE_SETUP #line 166 "util/configlexer.lex" -{ YDOUT; return VAR_DLV_ANCHOR_FILE;} +{ YDOUT; return VAR_DLV_ANCHOR;} YY_BREAK case 60: YY_RULE_SETUP #line 167 "util/configlexer.lex" -{ YDOUT; return VAR_TRUST_ANCHOR_FILE;} +{ YDOUT; return VAR_DLV_ANCHOR_FILE;} YY_BREAK case 61: YY_RULE_SETUP #line 168 "util/configlexer.lex" -{ YDOUT; return VAR_TRUSTED_KEYS_FILE;} +{ YDOUT; return VAR_TRUST_ANCHOR_FILE;} YY_BREAK case 62: YY_RULE_SETUP #line 169 "util/configlexer.lex" -{ YDOUT; return VAR_TRUST_ANCHOR;} +{ YDOUT; return VAR_TRUSTED_KEYS_FILE;} YY_BREAK case 63: YY_RULE_SETUP #line 170 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_OVERRIDE_DATE;} +{ YDOUT; return VAR_TRUST_ANCHOR;} YY_BREAK case 64: YY_RULE_SETUP #line 171 "util/configlexer.lex" -{ YDOUT; return VAR_BOGUS_TTL;} +{ YDOUT; return VAR_VAL_OVERRIDE_DATE;} YY_BREAK case 65: YY_RULE_SETUP #line 172 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;} +{ YDOUT; return VAR_BOGUS_TTL;} YY_BREAK case 66: YY_RULE_SETUP #line 173 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_PERMISSIVE_MODE;} +{ YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;} YY_BREAK case 67: YY_RULE_SETUP #line 174 "util/configlexer.lex" -{ YDOUT; return VAR_KEY_CACHE_SIZE;} +{ YDOUT; return VAR_VAL_PERMISSIVE_MODE;} YY_BREAK case 68: YY_RULE_SETUP #line 175 "util/configlexer.lex" -{ YDOUT; return VAR_KEY_CACHE_SLABS;} +{ YDOUT; return VAR_KEY_CACHE_SIZE;} YY_BREAK case 69: YY_RULE_SETUP #line 176 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;} +{ YDOUT; return VAR_KEY_CACHE_SLABS;} YY_BREAK case 70: YY_RULE_SETUP #line 177 "util/configlexer.lex" -{ YDOUT; return VAR_USE_SYSLOG;} +{ YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;} YY_BREAK case 71: YY_RULE_SETUP #line 178 "util/configlexer.lex" -{ YDOUT; return VAR_LOCAL_ZONE;} +{ YDOUT; return VAR_USE_SYSLOG;} YY_BREAK case 72: YY_RULE_SETUP #line 179 "util/configlexer.lex" -{ YDOUT; return VAR_LOCAL_DATA;} +{ YDOUT; return VAR_LOCAL_ZONE;} YY_BREAK case 73: YY_RULE_SETUP #line 180 "util/configlexer.lex" -{ YDOUT; return VAR_STATISTICS_INTERVAL;} +{ YDOUT; return VAR_LOCAL_DATA;} YY_BREAK case 74: YY_RULE_SETUP #line 181 "util/configlexer.lex" -{ YDOUT; return VAR_STATISTICS_CUMULATIVE;} +{ YDOUT; return VAR_STATISTICS_INTERVAL;} YY_BREAK case 75: -/* rule 75 can match eol */ YY_RULE_SETUP #line 182 "util/configlexer.lex" +{ YDOUT; return VAR_STATISTICS_CUMULATIVE;} + YY_BREAK +case 76: +/* rule 76 can match eol */ +YY_RULE_SETUP +#line 183 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 76: +case 77: YY_RULE_SETUP -#line 185 "util/configlexer.lex" +#line 186 "util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 186 "util/configlexer.lex" +#line 187 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 77: -YY_RULE_SETUP -#line 190 "util/configlexer.lex" -{ 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(); } +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK case 79: +/* rule 79 can match eol */ YY_RULE_SETUP #line 192 "util/configlexer.lex" +{ cfg_parser->line++; yymore(); } + YY_BREAK +case 80: +YY_RULE_SETUP +#line 193 "util/configlexer.lex" { LEXOUT(("QE ")); BEGIN(INITIAL); @@ -1885,32 +1890,32 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 80: +case 81: YY_RULE_SETUP -#line 203 "util/configlexer.lex" +#line 204 "util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 204 "util/configlexer.lex" +#line 205 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 81: -YY_RULE_SETUP -#line 208 "util/configlexer.lex" -{ 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(); } +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK case 83: +/* rule 83 can match eol */ YY_RULE_SETUP #line 210 "util/configlexer.lex" +{ cfg_parser->line++; yymore(); } + YY_BREAK +case 84: +YY_RULE_SETUP +#line 211 "util/configlexer.lex" { LEXOUT(("SQE ")); BEGIN(INITIAL); @@ -1922,37 +1927,37 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 84: +case 85: YY_RULE_SETUP -#line 221 "util/configlexer.lex" +#line 222 "util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 222 "util/configlexer.lex" +#line 223 "util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(INITIAL); } YY_BREAK -case 85: -YY_RULE_SETUP -#line 226 "util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 86: -/* rule 86 can match eol */ YY_RULE_SETUP #line 227 "util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 87: +/* rule 87 can match eol */ YY_RULE_SETUP #line 228 "util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 88: YY_RULE_SETUP #line 229 "util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 89: +YY_RULE_SETUP +#line 230 "util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include(yytext); @@ -1960,26 +1965,26 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 234 "util/configlexer.lex" +#line 235 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 89: -YY_RULE_SETUP -#line 238 "util/configlexer.lex" -{ 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(); } +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK case 91: +/* rule 91 can match eol */ YY_RULE_SETUP #line 240 "util/configlexer.lex" +{ cfg_parser->line++; yymore(); } + YY_BREAK +case 92: +YY_RULE_SETUP +#line 241 "util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -1988,7 +1993,7 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 246 "util/configlexer.lex" +#line 247 "util/configlexer.lex" { yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ if (config_include_stack_ptr == 0) { @@ -1999,18 +2004,18 @@ case YY_STATE_EOF(INITIAL): } } YY_BREAK -case 92: +case 93: YY_RULE_SETUP -#line 256 "util/configlexer.lex" +#line 257 "util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); yylval.str = strdup(yytext); return STRING; } YY_BREAK -case 93: +case 94: YY_RULE_SETUP -#line 259 "util/configlexer.lex" +#line 260 "util/configlexer.lex" ECHO; YY_BREAK -#line 2013 "" +#line 2018 "" case YY_END_OF_BUFFER: { @@ -2300,7 +2305,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 >= 822 ) + if ( yy_current_state >= 823 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2328,11 +2333,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 >= 822 ) + if ( yy_current_state >= 823 ) 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 == 821); + yy_is_jam = (yy_current_state == 822); return yy_is_jam ? 0 : yy_current_state; } @@ -2969,7 +2974,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 259 "util/configlexer.lex" +#line 260 "util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index da46c9b7f..0eab8661b 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{COLON} { YDOUT; return VAR_DLV_ANCHOR;} 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;} diff --git a/util/configparser.c b/util/configparser.c index f0ba538ea..b1898083e 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -145,7 +145,8 @@ VAR_STATISTICS_CUMULATIVE = 334, VAR_OUTGOING_PORT_PERMIT = 335, VAR_OUTGOING_PORT_AVOID = 336, - VAR_DLV_ANCHOR_FILE = 337 + VAR_DLV_ANCHOR_FILE = 337, + VAR_DLV_ANCHOR = 338 }; #endif /* Tokens. */ @@ -229,6 +230,7 @@ #define VAR_OUTGOING_PORT_PERMIT 335 #define VAR_OUTGOING_PORT_AVOID 336 #define VAR_DLV_ANCHOR_FILE 337 +#define VAR_DLV_ANCHOR 338 @@ -287,7 +289,7 @@ typedef union YYSTYPE char* str; } /* Line 187 of yacc.c. */ -#line 291 "util/configparser.c" +#line 293 "util/configparser.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -300,7 +302,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 304 "util/configparser.c" +#line 306 "util/configparser.c" #ifdef short # undef short @@ -515,20 +517,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 145 +#define YYLAST 147 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 83 +#define YYNTOKENS 84 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 82 +#define YYNNTS 83 /* YYNRULES -- Number of rules. */ -#define YYNRULES 155 +#define YYNRULES 157 /* YYNRULES -- Number of states. */ -#define YYNSTATES 228 +#define YYNSTATES 231 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 337 +#define YYMAXUTOK 338 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -569,7 +571,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, 82 + 75, 76, 77, 78, 79, 80, 81, 82, 83 }; #if YYDEBUG @@ -584,59 +586,60 @@ 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, 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 + 142, 144, 146, 148, 150, 152, 154, 157, 158, 160, + 162, 164, 166, 169, 170, 172, 174, 176, 179, 182, + 185, 188, 191, 194, 197, 200, 203, 206, 209, 212, + 215, 218, 221, 224, 227, 230, 233, 236, 239, 242, + 245, 248, 251, 254, 257, 260, 263, 266, 269, 272, + 275, 278, 281, 284, 287, 290, 293, 296, 299, 302, + 305, 308, 311, 314, 317, 320, 323, 326, 329, 332, + 335, 339, 342, 345, 348, 351, 354, 357, 360, 363, + 366, 370, 373, 376, 379, 382, 385, 388 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 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 + 85, 0, -1, -1, 85, 86, -1, 87, 88, -1, + 90, 91, -1, 93, 94, -1, 11, -1, 88, 89, + -1, -1, 96, -1, 97, -1, 100, -1, 103, -1, + 109, -1, 110, -1, 111, -1, 112, -1, 101, -1, + 115, -1, 116, -1, 117, -1, 118, -1, 119, -1, + 131, -1, 132, -1, 133, -1, 134, -1, 135, -1, + 106, -1, 136, -1, 137, -1, 140, -1, 138, -1, + 139, -1, 141, -1, 142, -1, 143, -1, 147, -1, + 126, -1, 127, -1, 128, -1, 129, -1, 144, -1, + 150, -1, 123, -1, 125, -1, 151, -1, 153, -1, + 154, -1, 155, -1, 107, -1, 130, -1, 157, -1, + 158, -1, 124, -1, 156, -1, 114, -1, 102, -1, + 120, -1, 148, -1, 152, -1, 145, -1, 149, -1, + 159, -1, 160, -1, 108, -1, 98, -1, 113, -1, + 146, -1, 99, -1, 104, -1, 105, -1, 121, -1, + 122, -1, 38, -1, 91, 92, -1, -1, 161, -1, + 162, -1, 163, -1, 44, -1, 94, 95, -1, -1, + 164, -1, 165, -1, 166, -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, 83, 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. */ @@ -649,15 +652,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, 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 + 134, 135, 135, 136, 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, 408, 415, 423, 431, 438, 447, 456, + 463, 470, 481, 489, 502, 511, 519, 532, 541, 550, + 559, 568, 581, 588, 598, 608, 618, 628, 638, 645, + 655, 668, 675, 693, 702, 711, 721, 731, 738, 746, + 759, 778, 785, 792, 799, 806, 813, 820 }; #endif @@ -691,10 +694,10 @@ 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", "VAR_DLV_ANCHOR_FILE", "$accept", - "toplevelvars", "toplevelvar", "serverstart", "contents_server", - "content_server", "stubstart", "contents_stub", "content_stub", - "forwardstart", "contents_forward", "content_forward", + "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR", + "$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", @@ -704,7 +707,7 @@ static const char *const yytname[] = "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_dlv_anchor_file", + "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", "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", @@ -740,29 +743,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, 337 + 335, 336, 337, 338 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 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, + 0, 84, 85, 85, 86, 86, 86, 87, 88, 88, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 90, 91, 91, 92, 92, + 92, 93, 94, 94, 95, 95, 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, 163, 164 + 159, 160, 161, 162, 163, 164, 165, 166 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -775,15 +778,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, 1, 2, 0, 1, 1, 1, - 1, 2, 0, 1, 1, 1, 2, 2, 2, 2, + 1, 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, 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, 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 @@ -791,43 +794,44 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 0, 1, 7, 74, 80, 3, 9, 76, 82, + 2, 0, 1, 7, 75, 81, 3, 9, 77, 83, 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, 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 + 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, 73, 74, 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, 76, 78, 79, + 80, 0, 0, 0, 82, 84, 85, 86, 88, 87, + 91, 94, 92, 100, 101, 102, 103, 106, 107, 108, + 109, 110, 122, 123, 124, 125, 126, 97, 127, 128, + 131, 129, 130, 132, 133, 134, 138, 117, 118, 119, + 120, 135, 141, 114, 116, 142, 144, 145, 146, 98, + 121, 148, 149, 115, 147, 105, 93, 111, 139, 143, + 136, 0, 0, 151, 99, 89, 104, 137, 90, 95, + 96, 112, 113, 152, 153, 154, 155, 156, 157, 140, + 150 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -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 + -1, 1, 6, 7, 10, 78, 8, 11, 147, 9, + 12, 154, 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, 142, 143, 148, 149, 150, + 155, 156, 157 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -835,29 +839,30 @@ static const yytype_int16 yydefgoto[] = #define YYPACT_NINF -13 static const yytype_int16 yypact[] = { - -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, 72, -13, -13, -13, -13, -13, -13, -13, -13, + -12, 37, 36, 15, 16, 17, 18, 22, 23, 24, + 65, 68, 69, 70, 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, 99, + 101, 102, 103, 104, 105, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, -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, 128, 129, 130, -13, -13, -13, -13, 131, - 132, 133, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, 130, 131, 132, -13, -13, -13, + -13, 133, 134, 135, -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, 134, - 135, -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, 136, 137, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13 }; /* YYPGOTO[NTERM-NUM]. */ @@ -871,7 +876,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, -13, -13 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -883,19 +888,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, 156, 157, 158, 159, 38, - 39, 40, 160, 161, 162, 41, 42, 43, 44, 45, + 33, 34, 35, 36, 37, 158, 159, 160, 161, 38, + 39, 40, 162, 163, 164, 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, - 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 + 76, 77, 2, 151, 144, 165, 145, 146, 166, 167, + 168, 152, 153, 3, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 4, 195, 196, 197, 198, 199, 5, 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, 228, 229, 230 }; static const yytype_uint8 yycheck[] = @@ -907,43 +912,44 @@ 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, - 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, 10, 38, - 10, 10, 10, 10, 10, 44, 10, 10, 10, 10, + 82, 83, 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, 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 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 84, 0, 11, 38, 44, 85, 86, 89, 92, - 87, 90, 93, 12, 13, 14, 15, 16, 17, 18, + 0, 85, 0, 11, 38, 44, 86, 87, 90, 93, + 88, 91, 94, 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, 82, 88, 95, 96, + 76, 77, 78, 79, 80, 81, 82, 83, 89, 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, 37, 39, 40, 91, 159, 160, 161, 37, - 45, 46, 94, 162, 163, 164, 10, 10, 10, 10, + 157, 158, 159, 160, 37, 39, 40, 92, 161, 162, + 163, 37, 45, 46, 95, 164, 165, 166, 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, 10, 10, 10, + 10 }; #define yyerrok (yyerrstatus = 0) @@ -1764,7 +1770,7 @@ yyreduce: } break; - case 74: + case 75: #line 139 "util/configparser.y" { struct config_stub* s; @@ -1778,7 +1784,7 @@ yyreduce: } break; - case 80: + case 81: #line 155 "util/configparser.y" { struct config_stub* s; @@ -1792,7 +1798,7 @@ yyreduce: } break; - case 86: + case 87: #line 171 "util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1803,7 +1809,7 @@ yyreduce: } break; - case 87: + case 88: #line 180 "util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1814,7 +1820,7 @@ yyreduce: } break; - case 88: + case 89: #line 189 "util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1827,7 +1833,7 @@ yyreduce: } break; - case 89: + case 90: #line 200 "util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1838,7 +1844,7 @@ yyreduce: } break; - case 90: + case 91: #line 209 "util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1849,7 +1855,7 @@ yyreduce: } break; - case 91: + case 92: #line 218 "util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1864,7 +1870,7 @@ yyreduce: } break; - case 92: + case 93: #line 231 "util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1881,7 +1887,7 @@ yyreduce: } break; - case 93: + case 94: #line 246 "util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1892,7 +1898,7 @@ yyreduce: } break; - case 94: + case 95: #line 255 "util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1903,7 +1909,7 @@ yyreduce: } break; - case 95: + case 96: #line 264 "util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1914,7 +1920,7 @@ yyreduce: } break; - case 96: + case 97: #line 273 "util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1925,7 +1931,7 @@ yyreduce: } break; - case 97: + case 98: #line 282 "util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1936,7 +1942,7 @@ yyreduce: } break; - case 98: + case 99: #line 291 "util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1947,7 +1953,7 @@ yyreduce: } break; - case 99: + case 100: #line 300 "util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1958,7 +1964,7 @@ yyreduce: } break; - case 100: + case 101: #line 309 "util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1969,7 +1975,7 @@ yyreduce: } break; - case 101: + case 102: #line 318 "util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1980,7 +1986,7 @@ yyreduce: } break; - case 102: + case 103: #line 327 "util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str))); @@ -1991,7 +1997,7 @@ yyreduce: } break; - case 103: + case 104: #line 336 "util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2002,7 +2008,7 @@ yyreduce: } break; - case 104: + case 105: #line 345 "util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2018,7 +2024,7 @@ yyreduce: } break; - case 105: + case 106: #line 359 "util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2027,7 +2033,7 @@ yyreduce: } break; - case 106: + case 107: #line 366 "util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2036,7 +2042,7 @@ yyreduce: } break; - case 107: + case 108: #line 373 "util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2045,7 +2051,7 @@ yyreduce: } break; - case 108: + case 109: #line 380 "util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2055,7 +2061,7 @@ yyreduce: } break; - case 109: + case 110: #line 388 "util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2064,7 +2070,7 @@ yyreduce: } break; - case 110: + case 111: #line 395 "util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2073,7 +2079,7 @@ yyreduce: } break; - case 111: + case 112: #line 402 "util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2082,8 +2088,17 @@ yyreduce: } break; - case 112: -#line 408 "util/configparser.y" + case 113: +#line 409 "util/configparser.y" + { + OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); + } + break; + + case 114: +#line 416 "util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2092,8 +2107,8 @@ yyreduce: } break; - case 113: -#line 416 "util/configparser.y" + case 115: +#line 424 "util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2102,8 +2117,8 @@ yyreduce: } break; - case 114: -#line 424 "util/configparser.y" + case 116: +#line 432 "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))) @@ -2111,8 +2126,8 @@ yyreduce: } break; - case 115: -#line 431 "util/configparser.y" + case 117: +#line 439 "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) @@ -2122,8 +2137,8 @@ yyreduce: } break; - case 116: -#line 440 "util/configparser.y" + case 118: +#line 448 "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) @@ -2133,8 +2148,8 @@ yyreduce: } break; - case 117: -#line 449 "util/configparser.y" + case 119: +#line 457 "util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->identity); @@ -2142,8 +2157,8 @@ yyreduce: } break; - case 118: -#line 456 "util/configparser.y" + case 120: +#line 464 "util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->version); @@ -2151,8 +2166,8 @@ yyreduce: } break; - case 119: -#line 463 "util/configparser.y" + case 121: +#line 471 "util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2164,8 +2179,8 @@ yyreduce: } break; - case 120: -#line 474 "util/configparser.y" + case 122: +#line 482 "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)) @@ -2174,8 +2189,8 @@ yyreduce: } break; - case 121: -#line 482 "util/configparser.y" + case 123: +#line 490 "util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2189,8 +2204,8 @@ yyreduce: } break; - case 122: -#line 495 "util/configparser.y" + case 124: +#line 503 "util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2200,8 +2215,8 @@ yyreduce: } break; - case 123: -#line 504 "util/configparser.y" + case 125: +#line 512 "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)) @@ -2210,8 +2225,8 @@ yyreduce: } break; - case 124: -#line 512 "util/configparser.y" + case 126: +#line 520 "util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2225,8 +2240,8 @@ yyreduce: } break; - case 125: -#line 525 "util/configparser.y" + case 127: +#line 533 "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) @@ -2236,8 +2251,8 @@ yyreduce: } break; - case 126: -#line 534 "util/configparser.y" + case 128: +#line 542 "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) @@ -2247,8 +2262,8 @@ yyreduce: } break; - case 127: -#line 543 "util/configparser.y" + case 129: +#line 551 "util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2258,8 +2273,8 @@ yyreduce: } break; - case 128: -#line 552 "util/configparser.y" + case 130: +#line 560 "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-> @@ -2269,8 +2284,8 @@ yyreduce: } break; - case 129: -#line 561 "util/configparser.y" + case 131: +#line 569 "util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2284,8 +2299,8 @@ yyreduce: } break; - case 130: -#line 574 "util/configparser.y" + case 132: +#line 582 "util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->target_fetch_policy); @@ -2293,8 +2308,8 @@ yyreduce: } break; - case 131: -#line 581 "util/configparser.y" + case 133: +#line 589 "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) @@ -2305,8 +2320,8 @@ yyreduce: } break; - case 132: -#line 591 "util/configparser.y" + case 134: +#line 599 "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) @@ -2317,8 +2332,8 @@ yyreduce: } break; - case 133: -#line 601 "util/configparser.y" + case 135: +#line 609 "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) @@ -2329,8 +2344,8 @@ yyreduce: } break; - case 134: -#line 611 "util/configparser.y" + case 136: +#line 619 "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) @@ -2341,8 +2356,8 @@ yyreduce: } break; - case 135: -#line 621 "util/configparser.y" + case 137: +#line 629 "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) @@ -2353,8 +2368,8 @@ yyreduce: } break; - case 136: -#line 631 "util/configparser.y" + case 138: +#line 639 "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))) @@ -2362,8 +2377,8 @@ yyreduce: } break; - case 137: -#line 638 "util/configparser.y" + case 139: +#line 646 "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) @@ -2374,8 +2389,8 @@ yyreduce: } break; - case 138: -#line 648 "util/configparser.y" + case 140: +#line 656 "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 && @@ -2389,8 +2404,8 @@ yyreduce: } break; - case 139: -#line 661 "util/configparser.y" + case 141: +#line 669 "util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->module_conf); @@ -2398,8 +2413,8 @@ yyreduce: } break; - case 140: -#line 668 "util/configparser.y" + case 142: +#line 676 "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) { @@ -2418,8 +2433,8 @@ yyreduce: } break; - case 141: -#line 686 "util/configparser.y" + case 143: +#line 694 "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) @@ -2429,8 +2444,8 @@ yyreduce: } break; - case 142: -#line 695 "util/configparser.y" + case 144: +#line 703 "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) @@ -2440,8 +2455,8 @@ yyreduce: } break; - case 143: -#line 704 "util/configparser.y" + case 145: +#line 712 "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) @@ -2452,8 +2467,8 @@ yyreduce: } break; - case 144: -#line 714 "util/configparser.y" + case 146: +#line 722 "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) @@ -2464,8 +2479,8 @@ yyreduce: } break; - case 145: -#line 724 "util/configparser.y" + case 147: +#line 732 "util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); @@ -2473,8 +2488,8 @@ yyreduce: } break; - case 146: -#line 731 "util/configparser.y" + case 148: +#line 739 "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)) @@ -2483,8 +2498,8 @@ yyreduce: } break; - case 147: -#line 739 "util/configparser.y" + case 149: +#line 747 "util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2498,8 +2513,8 @@ yyreduce: } break; - case 148: -#line 752 "util/configparser.y" + case 150: +#line 760 "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 && @@ -2519,8 +2534,8 @@ yyreduce: } break; - case 149: -#line 771 "util/configparser.y" + case 151: +#line 779 "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))) @@ -2528,8 +2543,8 @@ yyreduce: } break; - case 150: -#line 778 "util/configparser.y" + case 152: +#line 786 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->stubs->name); @@ -2537,8 +2552,8 @@ yyreduce: } break; - case 151: -#line 785 "util/configparser.y" + case 153: +#line 793 "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))) @@ -2546,8 +2561,8 @@ yyreduce: } break; - case 152: -#line 792 "util/configparser.y" + case 154: +#line 800 "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))) @@ -2555,8 +2570,8 @@ yyreduce: } break; - case 153: -#line 799 "util/configparser.y" + case 155: +#line 807 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->forwards->name); @@ -2564,8 +2579,8 @@ yyreduce: } break; - case 154: -#line 806 "util/configparser.y" + case 156: +#line 814 "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))) @@ -2573,8 +2588,8 @@ yyreduce: } break; - case 155: -#line 813 "util/configparser.y" + case 157: +#line 821 "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))) @@ -2584,7 +2599,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 2588 "util/configparser.c" +#line 2603 "util/configparser.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2798,7 +2813,7 @@ yyreturn: } -#line 819 "util/configparser.y" +#line 827 "util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index aae573727..316743577 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -118,7 +118,8 @@ VAR_STATISTICS_CUMULATIVE = 334, VAR_OUTGOING_PORT_PERMIT = 335, VAR_OUTGOING_PORT_AVOID = 336, - VAR_DLV_ANCHOR_FILE = 337 + VAR_DLV_ANCHOR_FILE = 337, + VAR_DLV_ANCHOR = 338 }; #endif /* Tokens. */ @@ -202,6 +203,7 @@ #define VAR_OUTGOING_PORT_PERMIT 335 #define VAR_OUTGOING_PORT_AVOID 336 #define VAR_DLV_ANCHOR_FILE 337 +#define VAR_DLV_ANCHOR 338 @@ -213,7 +215,7 @@ typedef union YYSTYPE char* str; } /* Line 1489 of yacc.c. */ -#line 217 "util/configparser.h" +#line 219 "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 9e0779a33..c06ad0173 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 VAR_DLV_ANCHOR_FILE +%token VAR_OUTGOING_PORT_AVOID VAR_DLV_ANCHOR_FILE VAR_DLV_ANCHOR %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -133,7 +133,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_statistics_interval | server_do_daemonize | server_use_caps_for_id | server_statistics_cumulative | server_outgoing_port_permit | server_outgoing_port_avoid | - server_dlv_anchor_file + server_dlv_anchor_file | server_dlv_anchor ; stubstart: VAR_STUB_ZONE { @@ -404,6 +404,14 @@ server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = $2; } + ; +server_dlv_anchor: VAR_DLV_ANCHOR STRING + { + OUTYY(("P(server_dlv_anchor:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, $2)) + yyerror("out of memory"); + } + ; server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING { OUTYY(("P(server_trust_anchor_file:%s)\n", $2)); diff --git a/util/data/msgparse.c b/util/data/msgparse.c index 8defd47dd..91642d56d 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -119,11 +119,11 @@ nsec_at_apex(ldns_buffer* pkt) } /* see if SOA bit is set. */ - if(ldns_buffer_position(pkt) < pos+rdatalen) { + if(ldns_buffer_position(pkt) < pos+4+rdatalen) { /* nsec type bitmap contains items */ uint8_t win, blen, bits; /* need: windownum, bitmap len, firstbyte */ - if(ldns_buffer_position(pkt)+3 > pos+rdatalen) { + if(ldns_buffer_position(pkt)+3 > pos+4+rdatalen) { ldns_buffer_set_position(pkt, pos); return 0; /* malformed nsec */ } diff --git a/validator/val_anchor.c b/validator/val_anchor.c index b569d7b3d..30c35b02c 100644 --- a/validator/val_anchor.c +++ b/validator/val_anchor.c @@ -277,25 +277,26 @@ anchor_store_new_rr(struct val_anchors* anchors, ldns_buffer* buffer, return ta; } -int +struct trust_anchor* anchor_store_str(struct val_anchors* anchors, ldns_buffer* buffer, const char* str) { + struct trust_anchor* ta; ldns_rr* rr = NULL; ldns_status status = ldns_rr_new_frm_str(&rr, str, 0, NULL, NULL); if(status != LDNS_STATUS_OK) { log_err("error parsing trust anchor: %s", ldns_get_errorstr_by_id(status)); ldns_rr_free(rr); - return 0; + return NULL; } - if(!anchor_store_new_rr(anchors, buffer, rr)) { + if(!(ta=anchor_store_new_rr(anchors, buffer, rr))) { log_err("out of memory"); ldns_rr_free(rr); - return 0; + return NULL; } ldns_rr_free(rr); - return 1; + return ta; } /** @@ -816,6 +817,16 @@ anchors_apply_cfg(struct val_anchors* anchors, struct config_file* cfg) return 0; } } + for(f = cfg->dlv_anchor_list; f; f = f->next) { + if(!f->str || f->str[0] == 0) /* empty "" */ + continue; + if(!(anchors->dlv_anchor = anchor_store_str( + anchors, parsebuf, f->str))) { + log_err("error in dlv-anchor: \"%s\"", f->str); + 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 0e1c2bfea..3ce14b53b 100644 --- a/validator/val_anchor.h +++ b/validator/val_anchor.h @@ -160,10 +160,10 @@ struct trust_anchor* anchor_find(struct val_anchors* anchors, * @param anchors: anchor storage. * @param buffer: parsing buffer, to generate the RR wireformat in. * @param str: string. - * @return false on error. + * @return NULL on error. */ -int anchor_store_str(struct val_anchors* anchors, ldns_buffer* buffer, - const char* str); +struct trust_anchor* anchor_store_str(struct val_anchors* anchors, + ldns_buffer* buffer, const char* str); /** * Get memory in use by the trust anchor storage diff --git a/validator/validator.c b/validator/validator.c index 0b4e7f878..0fa0c5221 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -1199,8 +1199,9 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, } /* if not key, or if keyentry is *above* the trustanchor, i.e. * the keyentry is based on another (higher) trustanchor */ - else if(vq->key_entry == NULL || dname_strict_subdomain_c( - vq->trust_anchor->name, vq->key_entry->name)) { + else if(vq->key_entry == NULL || (vq->trust_anchor && + dname_strict_subdomain_c(vq->trust_anchor->name, + vq->key_entry->name))) { /* fire off a trust anchor priming query. */ verbose(VERB_DETAIL, "prime trust anchor"); if(!prime_trust_anchor(qstate, vq, id, vq->trust_anchor)) @@ -1295,7 +1296,12 @@ processFindKey(struct module_qstate* qstate, struct val_qstate* vq, int id) log_nametypeclass(VERB_ALGO, "target keyname", target_key_name, LDNS_RR_TYPE_DNSKEY, LDNS_RR_CLASS_IN); /* assert we are walking down the DNS tree */ - log_assert(dname_subdomain_c(target_key_name, current_key_name)); + if(!dname_subdomain_c(target_key_name, current_key_name)) { + verbose(VERB_ALGO, "bad signer name"); + vq->chase_reply->security = sec_status_bogus; + vq->state = VAL_FINISHED_STATE; + return 1; + } /* so this value is >= -1 */ strip_lab = dname_count_labels(target_key_name) - dname_count_labels(current_key_name) - 1;