From: Wouter Wijngaards Date: Mon, 6 Jun 2016 08:33:59 +0000 (+0000) Subject: - access-control-tag config directive. X-Git-Tag: release-1.5.10~110 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=415fc52b082fd62b978b026fecc0f80866126f04;p=thirdparty%2Funbound.git - access-control-tag config directive. git-svn-id: file:///svn/unbound/trunk@3754 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/daemon/acl_list.c b/daemon/acl_list.c index 84d099ca5..d663295bd 100644 --- a/daemon/acl_list.c +++ b/daemon/acl_list.c @@ -71,7 +71,7 @@ acl_list_delete(struct acl_list* acl) } /** insert new address into acl_list structure */ -static int +static struct acl_addr* acl_list_insert(struct acl_list* acl, struct sockaddr_storage* addr, socklen_t addrlen, int net, enum acl_access control, int complain_duplicates) @@ -79,13 +79,15 @@ acl_list_insert(struct acl_list* acl, struct sockaddr_storage* addr, struct acl_addr* node = regional_alloc(acl->region, sizeof(struct acl_addr)); if(!node) - return 0; + return NULL; node->control = control; + node->taglist = NULL; + node->taglen = 0; if(!addr_tree_insert(&acl->tree, &node->node, addr, addrlen, net)) { if(complain_duplicates) verbose(VERB_QUERY, "duplicate acl address ignored."); } - return 1; + return node; } /** apply acl_list string */ @@ -125,6 +127,40 @@ acl_list_str_cfg(struct acl_list* acl, const char* str, const char* s2, return 1; } +/** apply acl_tag string */ +static int +acl_list_tags_cfg(struct acl_list* acl, const char* str, uint8_t* bitmap, + size_t bitmaplen) +{ + struct sockaddr_storage addr; + int net; + socklen_t addrlen; + struct acl_addr* node; + if(!netblockstrtoaddr(str, UNBOUND_DNS_PORT, &addr, &addrlen, &net)) { + log_err("cannot parse netblock in access-control-tag: %s", str); + return 0; + } + /* find or create node */ + if(!(node=(struct acl_addr*)addr_tree_find(&acl->tree, &addr, + addrlen, net))) { + /* create node, type 'allow' since otherwise tags are + * pointless, can override with specific access-control: cfg */ + if(!(node=(struct acl_addr*)acl_list_insert(acl, &addr, + addrlen, net, acl_allow, 1))) { + log_err("out of memory"); + return 0; + } + } + log_assert(node); + node->taglen = bitmaplen; + node->taglist = regional_alloc_init(acl->region, bitmap, bitmaplen); + if(!node->taglist) { + log_err("out of memory"); + return 0; + } + return 1; +} + /** read acl_list config */ static int read_acl_list(struct acl_list* acl, struct config_file* cfg) @@ -138,6 +174,19 @@ read_acl_list(struct acl_list* acl, struct config_file* cfg) return 1; } +/** read acl tags config */ +static int +read_acl_tags(struct acl_list* acl, struct config_file* cfg) +{ + struct config_strbytelist* p; + for(p = cfg->acl_tags; p; p = p->next) { + log_assert(p->str && p->str2); + if(!acl_list_tags_cfg(acl, p->str, p->str2, p->str2len)) + return 0; + } + return 1; +} + int acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg) { @@ -145,6 +194,8 @@ acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg) addr_tree_init(&acl->tree); if(!read_acl_list(acl, cfg)) return 0; + if(!read_acl_tags(acl, cfg)) + return 0; /* insert defaults, with '0' to ignore them if they are duplicates */ if(!acl_list_str_cfg(acl, "0.0.0.0/0", "refuse", 0)) return 0; diff --git a/daemon/acl_list.h b/daemon/acl_list.h index 2323697d5..c3f033f2a 100644 --- a/daemon/acl_list.h +++ b/daemon/acl_list.h @@ -87,6 +87,10 @@ struct acl_addr { struct addr_tree_node node; /** access control on this netblock */ enum acl_access control; + /** tag bitlist */ + uint8_t* taglist; + /** length of the taglist (in bytes) */ + size_t taglen; }; /** diff --git a/doc/Changelog b/doc/Changelog index 86cb5f277..5e0810fc5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 6 June 2016: Wouter - Better help text from -h (from Ray Griffith). + - access-control-tag config directive. 3 June 2016: Wouter - Fix to not ignore return value of chown() in daemon startup. diff --git a/doc/example.conf.in b/doc/example.conf.in index 179008f45..84bb14507 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -203,6 +203,11 @@ server: # access-control: ::1 allow # access-control: ::ffff:127.0.0.1 allow + # tag access-control with list of tags (in "" with spaces between) + # Clients using this access control element use localzones that + # are tagged with one of these tags. + # access-control-tag: "192.0.2.0/24" "tag2 tag3" + # if given, a chroot(2) is done to the given directory. # i.e. you can chroot to the working directory, for example, # for extra security, but make sure all files are in that directory. diff --git a/util/config_file.c b/util/config_file.c index 3e72bcad0..76c7f2cc8 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -784,6 +784,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "qname-minimisation", qname_minimisation) else O_IFC(opt, "define-tag", num_tags, tagname) else O_LTG(opt, "local-zone-tag", local_zone_tags) + else O_LTG(opt, "access-control-tag", acl_tags) /* not here: * outgoing-permit, outgoing-avoid - have list of ports * local-zone - zones and nodefault variables @@ -1022,6 +1023,7 @@ config_delete(struct config_file* cfg) config_delstrlist(cfg->local_data); config_del_strarray(cfg->tagname, cfg->num_tags); config_del_strbytelist(cfg->local_zone_tags); + config_del_strbytelist(cfg->acl_tags); config_delstrlist(cfg->control_ifs); free(cfg->server_key_file); free(cfg->server_cert_file); diff --git a/util/config_file.h b/util/config_file.h index a51cdb464..9a82a8f6d 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -298,6 +298,8 @@ struct config_file { int insecure_lan_zones; /** list of zonename, tagbitlist */ struct config_strbytelist* local_zone_tags; + /** list of aclname, tagbitlist */ + struct config_strbytelist* acl_tags; /** tag list, array with tagname[i] is malloced string */ char** tagname; /** number of items in the taglist */ diff --git a/util/configlexer.c b/util/configlexer.c index 9223aacf7..940f484ca 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -378,8 +378,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 183 -#define YY_END_OF_BUFFER 184 +#define YY_NUM_RULES 184 +#define YY_END_OF_BUFFER 185 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -387,211 +387,212 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1847] = +static yyconst flex_int16_t yy_accept[1852] = { 0, - 1, 1, 165, 165, 169, 169, 173, 173, 177, 177, - 1, 1, 184, 181, 1, 163, 163, 182, 2, 182, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 165, 166, 166, 167, 182, 169, 170, 170, 171, 182, - 176, 173, 174, 174, 175, 182, 177, 178, 178, 179, - 182, 180, 164, 2, 168, 182, 180, 181, 0, 1, - 2, 2, 2, 2, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 165, 0, 169, 0, - 176, 0, 173, 177, 0, 180, 0, 2, 2, 180, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - - 181, 181, 181, 181, 180, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 180, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 74, 181, 181, 181, 181, 181, 181, 7, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 180, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 180, 181, 181, 181, 181, 181, 34, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 143, 181, - 13, 14, 181, 16, 15, 181, 181, 181, 181, 181, - - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 134, 181, 181, 181, - 181, 181, 181, 181, 3, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 180, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 172, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 37, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 38, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 18, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 89, 172, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 88, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 72, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 23, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 35, 181, 181, 181, 181, 181, 181, 181, 181, - - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 36, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 25, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 157, 181, 181, 181, 181, 181, 181, 29, - 181, 30, 181, 181, 181, 75, 181, 76, 181, 73, - - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 6, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 141, - 181, 181, 181, 181, 91, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 26, 181, - 181, 181, 181, 181, 181, 117, 181, 116, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - - 181, 181, 181, 39, 181, 181, 181, 181, 181, 181, - 181, 181, 78, 77, 181, 181, 181, 181, 181, 181, - 181, 113, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 57, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 61, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 33, 181, 181, 181, 181, 181, 181, 181, 115, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 5, - - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 109, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 127, 181, 110, 181, 181, 139, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 24, 181, 181, - 181, 181, 80, 181, 81, 79, 181, 181, 181, 181, - 181, 181, 181, 87, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 111, 181, 181, 181, - - 181, 181, 138, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 71, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 31, 181, 181, 20, 181, 181, 181, 17, 181, - 96, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 46, 48, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 144, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 82, 181, 181, 181, 181, 181, 181, 86, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - - 181, 181, 181, 181, 181, 181, 90, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 133, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 100, 181, 104, 181, 181, 181, 181, - 85, 181, 181, 67, 181, 125, 181, 181, 181, 181, - 181, 140, 181, 181, 181, 181, 181, 181, 181, 149, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 103, 181, 181, 181, 181, 181, 49, 50, 181, - 181, 32, 56, 105, 181, 118, 142, 114, 181, 181, - - 42, 181, 107, 181, 181, 181, 181, 181, 8, 181, - 181, 181, 70, 181, 181, 181, 181, 159, 181, 124, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 92, 148, - 181, 181, 181, 181, 181, 181, 181, 181, 135, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 106, 181, 41, 43, 181, 181, - 181, 181, 181, 181, 181, 69, 181, 181, 181, 181, - 158, 181, 181, 181, 181, 129, 21, 22, 181, 181, - - 181, 181, 181, 181, 181, 66, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 131, 128, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 40, 181, 181, - 181, 181, 181, 181, 181, 12, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 11, 181, 181, 19, 181, - 181, 181, 162, 181, 44, 181, 137, 130, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 99, - 98, 181, 181, 132, 126, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 51, 181, 181, 136, 181, 181, - - 181, 181, 181, 181, 181, 181, 45, 181, 181, 181, - 93, 95, 119, 181, 181, 181, 97, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 145, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 120, 181, 181, 27, 181, 181, 181, 4, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 147, 181, 181, 123, 181, - 181, 181, 181, 181, 181, 181, 54, 181, 28, 181, - 10, 181, 181, 181, 181, 181, 121, 58, 181, 181, - 181, 102, 181, 181, 181, 181, 181, 181, 181, 181, - - 146, 83, 181, 181, 181, 181, 60, 64, 59, 181, - 52, 181, 9, 181, 181, 160, 181, 181, 101, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 65, 63, 181, 53, 181, 112, 181, 122, 181, 181, - 94, 47, 181, 181, 181, 181, 181, 181, 181, 84, - 62, 55, 161, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 68, 181, 156, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - - 181, 108, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 152, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 150, 181, 153, 154, 181, 181, - 181, 181, 181, 151, 155, 0 + 1, 1, 166, 166, 170, 170, 174, 174, 178, 178, + 1, 1, 185, 182, 1, 164, 164, 183, 2, 183, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 166, 167, 167, 168, 183, 170, 171, 171, 172, 183, + 177, 174, 175, 175, 176, 183, 178, 179, 179, 180, + 183, 181, 165, 2, 169, 183, 181, 182, 0, 1, + 2, 2, 2, 2, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 166, 0, 170, 0, + 177, 0, 174, 178, 0, 181, 0, 2, 2, 181, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 181, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 181, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 74, 182, 182, 182, 182, 182, 182, 7, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 181, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 181, 182, 182, 182, 182, 182, 34, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 144, 182, + 13, 14, 182, 16, 15, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 134, 182, 182, 182, + 182, 182, 182, 182, 3, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 181, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 173, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 37, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 38, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 18, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 89, 173, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 88, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 72, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 23, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 35, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 36, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 25, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 158, 182, 182, 182, 182, 182, 182, 29, + 182, 30, 182, 182, 182, 75, 182, 76, 182, 73, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 6, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 141, + 182, 182, 182, 182, 91, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 26, 182, + 182, 182, 182, 182, 182, 117, 182, 116, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 39, 182, 182, 182, 182, 182, 182, + 182, 182, 78, 77, 182, 182, 182, 182, 182, 182, + 182, 113, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 57, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 61, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 33, 182, 182, 182, 182, 182, 182, 182, 115, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 5, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 109, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 127, 182, 110, 182, 182, 139, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 24, 182, 182, + 182, 182, 80, 182, 81, 79, 182, 182, 182, 182, + 182, 182, 182, 87, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 111, 182, 182, 182, + + 182, 182, 138, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 71, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 31, 182, 182, 20, 182, 182, 182, 17, 182, + 96, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 46, 48, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 145, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 82, 182, 182, 182, 182, 182, 182, 86, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 90, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 133, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 100, 182, 104, 182, 182, 182, 182, + 182, 85, 182, 182, 67, 182, 125, 182, 182, 182, + 182, 182, 140, 182, 182, 182, 182, 182, 182, 182, + 150, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 103, 182, 182, 182, 182, 182, 49, 50, + 182, 182, 32, 56, 105, 182, 118, 142, 114, 182, + + 182, 42, 182, 107, 182, 182, 182, 182, 182, 8, + 182, 182, 182, 70, 182, 182, 182, 182, 160, 182, + 124, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 92, 149, 182, 182, 182, 182, 182, 182, 182, 182, + 135, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 106, 182, 41, 43, + 182, 182, 182, 182, 182, 182, 182, 69, 182, 182, + 182, 182, 159, 182, 182, 182, 182, 129, 21, 22, + + 182, 182, 182, 182, 182, 182, 182, 66, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 131, + 128, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 40, 182, 182, 182, 182, 182, 182, 182, 12, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 11, 182, + 182, 19, 182, 182, 182, 163, 182, 44, 182, 137, + 130, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 99, 98, 182, 182, 182, 132, 126, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 51, 182, + + 182, 136, 182, 182, 182, 182, 182, 182, 182, 182, + 45, 182, 182, 182, 93, 95, 119, 182, 182, 182, + 97, 182, 143, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 146, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 120, 182, 182, 27, 182, + 182, 182, 4, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 148, 182, 182, 123, 182, 182, 182, 182, 182, 182, + 182, 54, 182, 28, 182, 10, 182, 182, 182, 182, + 182, 121, 58, 182, 182, 182, 102, 182, 182, 182, + + 182, 182, 182, 182, 182, 147, 83, 182, 182, 182, + 182, 60, 64, 59, 182, 52, 182, 9, 182, 182, + 161, 182, 182, 101, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 65, 63, 182, 53, 182, + 112, 182, 122, 182, 182, 94, 47, 182, 182, 182, + 182, 182, 182, 182, 84, 62, 55, 162, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 68, 182, 157, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 108, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 153, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 151, + 182, 154, 155, 182, 182, 182, 182, 182, 152, 156, + 0 } ; static yyconst YY_CHAR yy_ec[256] = @@ -634,10 +635,10 @@ static yyconst YY_CHAR yy_meta[40] = 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_uint16_t yy_base[1861] = +static yyconst flex_uint16_t yy_base[1866] = { 0, 0, 0, 37, 40, 44, 51, 63, 75, 56, 68, - 87, 108, 2620, 2459, 50, 3655, 3655, 3655, 129, 94, + 87, 108, 3326, 2459, 50, 3655, 3655, 3655, 129, 94, 70, 104, 130, 90, 92, 115, 127, 95, 84, 111, 137, 148, 50, 170, 122, 150, 157, 160, 140, 166, 2191, 3655, 3655, 3655, 70, 2071, 3655, 3655, 3655, 42, @@ -773,281 +774,283 @@ static yyconst flex_uint16_t yy_base[1861] = 2489, 2491, 2493, 2499, 2496, 2495, 2502, 2503, 2505, 2508, 2504, 3655, 2518, 2519, 3655, 2509, 2510, 2511, 3655, 2520, 3655, 2525, 2521, 2528, 2529, 2533, 2534, 2540, 2535, 2537, - 2542, 2544, 2546, 2548, 2549, 3655, 3655, 2551, 2552, 2559, - 2562, 2555, 2560, 2570, 2566, 2573, 3655, 2564, 2574, 2568, - 2575, 2576, 2577, 2580, 2583, 2584, 2585, 2587, 2586, 2594, - 3655, 2593, 2597, 2598, 2599, 2602, 2601, 3655, 2604, 2605, - 2606, 2609, 2611, 2625, 2628, 2630, 2618, 2631, 2635, 2637, - - 2639, 2632, 2641, 2643, 2646, 2647, 3655, 2610, 2649, 2650, - 2653, 2654, 2655, 2656, 2657, 2663, 2660, 2665, 2664, 2668, - 3655, 2670, 2671, 2674, 2677, 2676, 2678, 2685, 2682, 2686, - 2691, 2692, 2688, 2695, 2696, 2698, 2701, 2699, 2702, 2703, - 2707, 2710, 2713, 3655, 2715, 3655, 2716, 2722, 2729, 2727, - 3655, 2718, 2730, 3655, 2726, 3655, 2731, 2732, 2740, 2741, - 2743, 3655, 2745, 2747, 2748, 2746, 2750, 2751, 2754, 3655, - 2752, 2759, 2766, 2763, 2757, 2767, 2769, 2771, 2774, 2780, - 2772, 3655, 2776, 2782, 2788, 2785, 2784, 3655, 3655, 2789, - 2794, 3655, 3655, 3655, 2797, 3655, 3655, 3655, 2799, 2801, - - 3655, 2806, 3655, 2807, 2808, 2798, 2790, 2810, 3655, 2811, - 2813, 2817, 3655, 2818, 2824, 2820, 2821, 3655, 2823, 3655, - 2826, 2832, 2828, 2835, 2844, 2846, 2848, 2829, 2833, 2837, - 2850, 2852, 2853, 2839, 2855, 2856, 2857, 2860, 2861, 2863, - 2867, 2866, 2868, 2870, 2871, 2873, 2878, 2885, 3655, 3655, - 2869, 2879, 2882, 2888, 2891, 2892, 2893, 2894, 3655, 2899, - 2896, 2902, 2901, 2903, 2906, 2907, 2910, 2914, 2920, 2917, - 2918, 2919, 2922, 2925, 3655, 2928, 3655, 3655, 2926, 2931, - 2937, 2939, 2930, 2941, 2949, 3655, 2942, 2951, 2944, 2950, - 3655, 2959, 2952, 2961, 2965, 3655, 3655, 3655, 2966, 2956, - - 2968, 2969, 2970, 2962, 2972, 3655, 2973, 2979, 2982, 2976, - 2986, 2990, 2997, 2993, 2995, 3000, 3655, 3655, 2983, 3006, - 3003, 3004, 3002, 3005, 3008, 3010, 3012, 3655, 3014, 3013, - 3019, 3018, 3021, 3022, 3025, 3655, 3026, 3028, 3033, 3036, - 3037, 3029, 3040, 3041, 3042, 3655, 3044, 3046, 3655, 3050, - 3043, 3051, 3655, 3060, 3655, 3063, 3655, 3655, 3055, 3064, - 3067, 3069, 3072, 3074, 3058, 3077, 3083, 3080, 3081, 3655, - 3655, 3082, 3089, 3655, 3655, 3087, 3086, 3090, 3093, 3094, - 3096, 3098, 3099, 3100, 3101, 3105, 3112, 3107, 3116, 3102, - 3109, 3115, 3117, 3119, 3655, 3126, 3127, 3655, 3128, 3132, - - 3129, 3134, 3136, 3141, 3142, 3138, 3655, 3144, 3145, 3148, - 3655, 3655, 3655, 3149, 3158, 3152, 3655, 3160, 3162, 3150, - 3168, 3156, 3164, 3166, 3172, 3174, 3176, 3655, 3178, 3179, - 3181, 3182, 3183, 3185, 3187, 3188, 3190, 3189, 3203, 3191, - 3655, 3205, 3193, 3655, 3208, 3200, 3209, 3655, 3211, 3213, - 3214, 3217, 3219, 3221, 3222, 3223, 3225, 3226, 3228, 3230, - 3237, 3231, 3244, 3229, 3252, 3655, 3254, 3241, 3655, 3256, - 3235, 3257, 3259, 3264, 3266, 3267, 3655, 3269, 3655, 3270, - 3655, 3274, 3275, 3276, 3278, 3279, 3655, 3655, 3280, 3282, - 3286, 3655, 3287, 3283, 3290, 3293, 3294, 3296, 3297, 3299, - - 3655, 3655, 3300, 3302, 3306, 3303, 3655, 3655, 3655, 3309, - 3655, 3312, 3655, 3322, 3315, 3655, 3324, 3317, 3655, 3319, - 3326, 3328, 3330, 3331, 3333, 3334, 3336, 3338, 3339, 3345, - 3655, 3655, 3347, 3655, 3350, 3655, 3352, 3655, 3342, 3359, - 3655, 3655, 3361, 3362, 3353, 3363, 3365, 3369, 3366, 3655, - 3655, 3655, 3655, 3370, 3371, 3372, 3373, 3375, 3377, 3376, - 3378, 3381, 3380, 3388, 3390, 3393, 3399, 3385, 3400, 3406, - 3402, 3655, 3405, 3655, 3407, 3413, 3414, 3411, 3417, 3412, - 3418, 3419, 3421, 3422, 3423, 3424, 3428, 3427, 3436, 3439, - 3440, 3443, 3441, 3452, 3450, 3451, 3453, 3454, 3461, 3455, - - 3457, 3655, 3459, 3462, 3463, 3465, 3466, 3471, 3468, 3479, - 3483, 3485, 3486, 3469, 3492, 3489, 3494, 3495, 3497, 3498, - 3655, 3499, 3500, 3503, 3506, 3507, 3509, 3510, 3511, 3516, - 3513, 3519, 3524, 3526, 3655, 3527, 3655, 3655, 3530, 3521, - 3531, 3537, 3539, 3655, 3655, 3655, 3563, 3570, 3577, 3584, - 3591, 94, 3598, 3605, 3612, 3619, 3626, 3633, 3640, 3647 + 2542, 2544, 2550, 2548, 2546, 3655, 3655, 2552, 2555, 2559, + 2560, 2562, 2563, 2570, 2567, 2569, 3655, 2571, 2573, 2575, + 2576, 2577, 2579, 2583, 2585, 2586, 2580, 2587, 2588, 2589, + 3655, 2593, 2594, 2600, 2601, 2603, 2602, 3655, 2605, 2606, + 2607, 2610, 2612, 2626, 2629, 2631, 2617, 2621, 2636, 2638, + + 2640, 2633, 2642, 2644, 2646, 2647, 3655, 2648, 2650, 2651, + 2655, 2656, 2657, 2658, 2659, 2665, 2662, 2667, 2668, 2672, + 3655, 2669, 2673, 2676, 2679, 2678, 2680, 2685, 2686, 2692, + 2688, 2690, 2695, 2694, 2698, 2701, 2703, 2705, 2704, 2706, + 2707, 2714, 2723, 3655, 2710, 3655, 2716, 2717, 2729, 2731, + 2726, 3655, 2728, 2733, 3655, 2735, 3655, 2734, 2736, 2738, + 2739, 2745, 3655, 2749, 2750, 2752, 2754, 2755, 2756, 2759, + 3655, 2757, 2762, 2768, 2771, 2763, 2770, 2773, 2772, 2774, + 2785, 2781, 3655, 2778, 2786, 2793, 2782, 2611, 3655, 3655, + 2789, 2795, 3655, 3655, 3655, 2798, 3655, 3655, 3655, 2799, + + 2801, 3655, 2806, 3655, 2807, 2808, 2810, 2811, 2812, 3655, + 2813, 2815, 2819, 3655, 2814, 2821, 2820, 2822, 3655, 2825, + 3655, 2829, 2828, 2831, 2835, 2842, 2844, 2847, 2836, 2839, + 2849, 2850, 2851, 2853, 2852, 2855, 2856, 2859, 2860, 2864, + 2866, 2867, 2868, 2870, 2871, 2873, 2874, 2876, 2883, 2886, + 3655, 3655, 2884, 2889, 2891, 2892, 2894, 2895, 2896, 2897, + 3655, 2900, 2901, 2902, 2905, 2906, 2908, 2911, 2916, 2918, + 2928, 2919, 2921, 2922, 2925, 2929, 3655, 2931, 3655, 3655, + 2932, 2939, 2934, 2938, 2940, 2944, 2947, 3655, 2945, 2955, + 2957, 2948, 3655, 2963, 2946, 2967, 2969, 3655, 3655, 3655, + + 2970, 2954, 2964, 2972, 2974, 2975, 2978, 3655, 2980, 2982, + 2983, 2981, 2985, 2990, 2991, 2997, 2999, 3001, 3003, 3655, + 3655, 2993, 3010, 3007, 3008, 3009, 3012, 3014, 3015, 3016, + 3655, 3021, 3017, 3019, 3025, 3029, 3030, 3033, 3655, 3026, + 3023, 3036, 3040, 3037, 3041, 3047, 3044, 3048, 3655, 3049, + 3051, 3655, 3057, 3054, 3059, 3655, 3062, 3655, 3066, 3655, + 3655, 3060, 3069, 3072, 3077, 3079, 3082, 3067, 3073, 3088, + 3090, 3091, 3655, 3655, 3093, 3094, 3101, 3655, 3655, 3097, + 3086, 3105, 3098, 3099, 3106, 3108, 3109, 3113, 3111, 3114, + 3117, 3122, 3124, 3112, 3123, 3125, 3126, 3127, 3655, 3136, + + 3137, 3655, 3133, 3142, 3139, 3144, 3145, 3155, 3071, 3148, + 3655, 3150, 3152, 3131, 3655, 3655, 3655, 3158, 3161, 3165, + 3655, 3166, 3655, 3167, 3168, 3175, 3169, 3172, 3173, 3183, + 3179, 3181, 3655, 3182, 3184, 3186, 3189, 3187, 3192, 3194, + 3195, 3197, 3198, 3206, 3200, 3655, 3210, 3207, 3655, 3215, + 3211, 3216, 3655, 3217, 3220, 3221, 3223, 3226, 3227, 3228, + 3229, 3233, 3230, 3235, 3238, 3245, 3237, 3252, 3236, 3258, + 3655, 3260, 3244, 3655, 3261, 3248, 3264, 3268, 3271, 3273, + 3274, 3655, 3276, 3655, 3277, 3655, 3281, 3251, 3282, 3284, + 3285, 3655, 3655, 3286, 3288, 3292, 3655, 3293, 3289, 3295, + + 3296, 3299, 3300, 3302, 3304, 3655, 3655, 3305, 3307, 3311, + 3308, 3655, 3655, 3655, 3320, 3655, 3322, 3655, 3328, 3316, + 3655, 3332, 3321, 3655, 3324, 3334, 3338, 3335, 3329, 3341, + 3339, 3343, 3344, 3345, 3347, 3655, 3655, 3351, 3655, 3353, + 3655, 3358, 3655, 3355, 3361, 3655, 3655, 3363, 3370, 3359, + 3369, 3368, 3371, 3372, 3655, 3655, 3655, 3655, 3375, 3376, + 3380, 3377, 3378, 3381, 3382, 3383, 3385, 3393, 3386, 3402, + 3404, 3405, 3394, 3403, 3411, 3407, 3655, 3412, 3655, 3413, + 3420, 3422, 3414, 3416, 3423, 3424, 3425, 3426, 3430, 3431, + 3435, 3436, 3433, 3445, 3448, 3449, 3451, 3447, 3460, 3458, + + 3461, 3459, 3462, 3469, 3463, 3467, 3655, 3465, 3471, 3472, + 3473, 3474, 3479, 3476, 3487, 3492, 3489, 3496, 3483, 3498, + 3499, 3500, 3485, 3505, 3501, 3655, 3508, 3509, 3511, 3512, + 3515, 3517, 3518, 3521, 3524, 3519, 3528, 3533, 3534, 3655, + 3535, 3655, 3655, 3538, 3525, 3529, 3546, 3550, 3655, 3655, + 3655, 3563, 3570, 3577, 3584, 3591, 94, 3598, 3605, 3612, + 3619, 3626, 3633, 3640, 3647 } ; -static yyconst flex_int16_t yy_def[1861] = +static yyconst flex_int16_t yy_def[1866] = { 0, - 1846, 1, 1847, 1847, 1848, 1848, 1849, 1849, 1850, 1850, - 1851, 1851, 1846, 1852, 1846, 1846, 1846, 1846, 1853, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1854, 1846, 1846, 1846, 1854, 1855, 1846, 1846, 1846, 1855, - 1856, 1846, 1846, 1846, 1846, 1856, 1857, 1846, 1846, 1846, - 1857, 1858, 1846, 1859, 1846, 1858, 1858, 1852, 1852, 1846, - 1860, 1853, 1860, 1853, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1854, 1854, 1855, 1855, - 1856, 1856, 1846, 1857, 1857, 1858, 1858, 1859, 1859, 1858, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - - 1852, 1852, 1852, 1852, 1858, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1858, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1858, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1858, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, - 1846, 1846, 1852, 1846, 1846, 1852, 1852, 1852, 1852, 1852, - - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1858, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1846, 1858, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1846, - 1852, 1846, 1852, 1852, 1852, 1846, 1852, 1846, 1852, 1846, - - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, - 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, - 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1846, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - - 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1846, 1846, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, - - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1846, 1852, 1852, 1846, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, - 1852, 1852, 1846, 1852, 1846, 1846, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, - - 1852, 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1852, 1846, 1852, 1852, 1852, 1846, 1852, - 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1846, 1846, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - - 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1846, 1852, 1846, 1852, 1852, 1852, 1852, - 1846, 1852, 1852, 1846, 1852, 1846, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1846, 1846, 1852, - 1852, 1846, 1846, 1846, 1852, 1846, 1846, 1846, 1852, 1852, - - 1846, 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1846, 1852, - 1852, 1852, 1846, 1852, 1852, 1852, 1852, 1846, 1852, 1846, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1846, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1846, 1852, 1846, 1846, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, - 1846, 1852, 1852, 1852, 1852, 1846, 1846, 1846, 1852, 1852, - - 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1846, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1846, 1852, - 1852, 1852, 1846, 1852, 1846, 1852, 1846, 1846, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, - 1846, 1852, 1852, 1846, 1846, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1846, 1852, 1852, - - 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1852, - 1846, 1846, 1846, 1852, 1852, 1852, 1846, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1846, 1852, 1852, 1846, 1852, 1852, 1852, 1846, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1852, 1846, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1846, 1852, 1846, 1852, - 1846, 1852, 1852, 1852, 1852, 1852, 1846, 1846, 1852, 1852, - 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - - 1846, 1846, 1852, 1852, 1852, 1852, 1846, 1846, 1846, 1852, - 1846, 1852, 1846, 1852, 1852, 1846, 1852, 1852, 1846, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1846, 1846, 1852, 1846, 1852, 1846, 1852, 1846, 1852, 1852, - 1846, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1846, - 1846, 1846, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1846, 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - - 1852, 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1846, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, - 1852, 1852, 1852, 1852, 1846, 1852, 1846, 1846, 1852, 1852, - 1852, 1852, 1852, 1846, 1846, 0, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846 + 1851, 1, 1852, 1852, 1853, 1853, 1854, 1854, 1855, 1855, + 1856, 1856, 1851, 1857, 1851, 1851, 1851, 1851, 1858, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1859, 1851, 1851, 1851, 1859, 1860, 1851, 1851, 1851, 1860, + 1861, 1851, 1851, 1851, 1851, 1861, 1862, 1851, 1851, 1851, + 1862, 1863, 1851, 1864, 1851, 1863, 1863, 1857, 1857, 1851, + 1865, 1858, 1865, 1858, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1859, 1859, 1860, 1860, + 1861, 1861, 1851, 1862, 1862, 1863, 1863, 1864, 1864, 1863, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + + 1857, 1857, 1857, 1857, 1863, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1863, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1863, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1863, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, + 1851, 1851, 1857, 1851, 1851, 1857, 1857, 1857, 1857, 1857, + + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1863, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1851, 1863, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1851, + 1857, 1851, 1857, 1857, 1857, 1851, 1857, 1851, 1857, 1851, + + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, + 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, + 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1851, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + + 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1851, 1851, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, + + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1851, 1857, 1851, 1857, 1857, 1851, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, + 1857, 1857, 1851, 1857, 1851, 1851, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, + + 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1851, 1857, 1857, 1851, 1857, 1857, 1857, 1851, 1857, + 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1851, 1851, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + + 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1851, 1857, 1851, 1857, 1857, 1857, 1857, + 1857, 1851, 1857, 1857, 1851, 1857, 1851, 1857, 1857, 1857, + 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1851, 1851, + 1857, 1857, 1851, 1851, 1851, 1857, 1851, 1851, 1851, 1857, + + 1857, 1851, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1851, + 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1851, 1857, + 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1851, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1851, 1851, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, + 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1851, 1851, 1851, + + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, + 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, + 1857, 1851, 1857, 1857, 1857, 1851, 1857, 1851, 1857, 1851, + 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1851, 1851, 1857, 1857, 1857, 1851, 1851, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, + + 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1851, 1857, 1857, 1857, 1851, 1851, 1851, 1857, 1857, 1857, + 1851, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1851, 1857, + 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1851, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1851, 1857, 1851, 1857, 1851, 1857, 1857, 1857, 1857, + 1857, 1851, 1851, 1857, 1857, 1857, 1851, 1857, 1857, 1857, + + 1857, 1857, 1857, 1857, 1857, 1851, 1851, 1857, 1857, 1857, + 1857, 1851, 1851, 1851, 1857, 1851, 1857, 1851, 1857, 1857, + 1851, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1851, 1851, 1857, 1851, 1857, + 1851, 1857, 1851, 1857, 1857, 1851, 1851, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1851, 1851, 1851, 1851, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1851, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + + 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, + 1857, 1851, 1851, 1857, 1857, 1857, 1857, 1857, 1851, 1851, + 0, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, + 1851, 1851, 1851, 1851, 1851 } ; static yyconst flex_uint16_t yy_nxt[3695] = @@ -1333,131 +1336,131 @@ static yyconst flex_uint16_t yy_nxt[3695] = 69, 69, 69, 69, 1336, 1334, 1335, 69, 1339, 1338, 69, 69, 1337, 1340, 1344, 69, 69, 69, 1341, 69, 1343, 1346, 69, 1348, 69, 1345, 69, 1351, 69, 1349, - 69, 69, 1354, 69, 69, 1342, 1347, 69, 1352, 1350, - 1356, 69, 69, 1355, 69, 1357, 69, 1360, 69, 1358, - 69, 1353, 69, 1361, 1362, 69, 69, 69, 69, 69, - 1359, 1364, 69, 1367, 1370, 69, 69, 69, 69, 69, - - 1371, 1363, 1366, 1365, 1373, 69, 69, 1368, 1369, 69, - 69, 69, 1372, 69, 69, 1382, 69, 69, 69, 1846, - 1383, 69, 69, 69, 1374, 1375, 1380, 1400, 1376, 1378, - 69, 1384, 1379, 1377, 1381, 1385, 1386, 69, 1387, 1388, - 69, 1389, 69, 69, 69, 1390, 1392, 69, 1393, 69, - 1394, 69, 1396, 69, 1397, 69, 1391, 1398, 69, 69, - 1401, 69, 69, 1395, 1403, 69, 69, 69, 69, 69, - 1407, 1406, 69, 1405, 1409, 69, 69, 69, 1399, 1413, - 69, 1402, 69, 69, 1404, 1408, 69, 1418, 69, 69, - 69, 1410, 1411, 1417, 69, 1412, 1420, 69, 69, 1422, - - 69, 1416, 1414, 69, 69, 1425, 1415, 69, 69, 1419, - 69, 69, 1423, 69, 69, 69, 1424, 1434, 1429, 69, - 1421, 1427, 69, 1431, 1432, 69, 1430, 69, 69, 1435, - 69, 1428, 1426, 1433, 69, 1438, 1439, 1437, 69, 69, - 1440, 69, 69, 69, 69, 1442, 1445, 1436, 1441, 1446, - 1444, 1443, 69, 69, 1449, 69, 1450, 69, 69, 69, - 69, 1452, 69, 69, 69, 1448, 69, 1456, 1457, 69, - 1453, 69, 1447, 1451, 1458, 69, 1454, 1459, 69, 69, - 1460, 69, 1455, 69, 69, 1463, 69, 1466, 69, 1461, - 1467, 1465, 69, 1462, 69, 1470, 69, 69, 1472, 1469, - - 69, 69, 69, 1464, 1468, 1471, 69, 1474, 1475, 69, - 69, 69, 1477, 69, 1479, 1473, 1476, 1478, 69, 69, - 69, 1480, 69, 69, 1482, 69, 1481, 1483, 1486, 69, - 69, 1488, 69, 69, 1491, 69, 69, 1485, 69, 1487, - 69, 69, 1484, 1492, 69, 69, 1493, 69, 1490, 69, - 1489, 69, 1495, 1499, 1494, 1496, 69, 1497, 69, 1498, - 69, 1501, 69, 1500, 69, 69, 1506, 69, 69, 69, - 1504, 1505, 69, 69, 1502, 69, 1503, 1507, 69, 69, - 69, 69, 69, 69, 1517, 69, 1510, 1515, 1516, 1518, - 69, 69, 1509, 1512, 69, 1508, 1513, 69, 1519, 1511, - - 69, 1520, 1514, 69, 69, 69, 69, 1527, 69, 1521, - 1528, 69, 1524, 69, 69, 69, 1522, 1529, 69, 69, - 1523, 1530, 69, 1526, 1525, 1536, 69, 1537, 1531, 69, - 69, 69, 69, 1532, 69, 1534, 1533, 69, 69, 1541, - 69, 1535, 69, 69, 1846, 1539, 1545, 1538, 1546, 69, - 1540, 69, 1549, 69, 69, 1553, 69, 1542, 1544, 1543, - 1548, 69, 69, 69, 69, 1550, 1547, 1552, 69, 1551, - 1555, 69, 1557, 69, 69, 1554, 1558, 69, 69, 1559, - 69, 69, 69, 1556, 69, 69, 1562, 1563, 69, 1561, - 1560, 69, 1565, 1564, 69, 69, 1567, 1570, 69, 1568, - - 1566, 1571, 69, 1569, 1572, 69, 1574, 69, 1576, 69, - 1573, 1575, 69, 1577, 69, 69, 69, 69, 69, 1578, - 69, 1579, 69, 1580, 69, 69, 69, 1583, 1582, 1585, - 69, 69, 1581, 69, 69, 1590, 1584, 69, 69, 1588, - 69, 69, 1589, 1586, 1587, 69, 1591, 1595, 69, 69, - 1597, 1598, 69, 69, 69, 69, 69, 1592, 69, 1600, - 1593, 1599, 69, 69, 1594, 1601, 1603, 69, 1596, 1604, - 69, 1602, 69, 1606, 1607, 69, 69, 1609, 1605, 69, - 1611, 69, 1610, 1612, 69, 1613, 69, 1608, 1614, 69, - 1616, 1617, 69, 69, 69, 69, 1620, 1618, 69, 69, - - 1619, 69, 69, 1615, 1621, 69, 69, 1624, 69, 1628, - 69, 69, 69, 69, 69, 1622, 1623, 69, 1632, 69, - 1630, 69, 1627, 1625, 69, 1633, 1626, 69, 69, 69, - 1629, 69, 1631, 1635, 1636, 1634, 1638, 1641, 69, 69, - 69, 69, 1642, 1644, 69, 1645, 69, 1637, 69, 1639, - 69, 1640, 1648, 69, 69, 1646, 69, 69, 1643, 1650, - 69, 69, 69, 1647, 69, 1651, 1654, 1649, 69, 1652, - 69, 1655, 69, 1656, 69, 1660, 69, 1657, 69, 1664, - 69, 1662, 1659, 1658, 69, 1653, 69, 1666, 69, 1661, - 69, 69, 1669, 69, 69, 69, 1663, 69, 1670, 69, - - 69, 69, 69, 69, 1671, 69, 1668, 1675, 1674, 1667, - 1680, 1665, 69, 1672, 1677, 69, 1679, 69, 1673, 1681, - 69, 69, 1678, 69, 1684, 69, 69, 1676, 1687, 69, - 1688, 69, 1682, 69, 69, 69, 1692, 69, 69, 1685, - 69, 69, 69, 69, 1683, 1695, 1690, 69, 1686, 69, - 1693, 1698, 1689, 69, 1696, 1691, 69, 1846, 1699, 1700, - 1694, 1705, 1697, 1701, 69, 1702, 69, 1846, 69, 69, - 1707, 69, 1703, 1704, 1706, 1708, 69, 1709, 69, 69, - 1711, 69, 69, 1712, 1710, 1713, 69, 69, 69, 1716, - 69, 69, 69, 1719, 69, 69, 1717, 1715, 69, 69, - - 1718, 1714, 69, 1720, 1721, 69, 69, 1722, 69, 69, - 1723, 69, 69, 1731, 69, 69, 1729, 1732, 69, 1733, - 1734, 69, 1725, 1724, 69, 1726, 1727, 69, 1735, 69, - 1728, 69, 1730, 1736, 69, 1738, 69, 1741, 69, 1742, - 69, 1737, 69, 69, 1739, 69, 69, 1743, 69, 1740, - 69, 69, 1846, 1747, 69, 1748, 1750, 69, 1751, 69, - 1745, 1752, 69, 1753, 69, 69, 1754, 1746, 1744, 1757, - 1749, 69, 1755, 69, 69, 69, 1756, 69, 69, 1758, - 1759, 69, 69, 69, 69, 69, 1763, 69, 69, 69, - 69, 1772, 69, 69, 1762, 1765, 1760, 69, 1766, 1761, - - 69, 1774, 69, 1764, 1769, 69, 1767, 1768, 1771, 1773, - 1775, 69, 69, 1779, 69, 1770, 1776, 69, 69, 69, - 1783, 1784, 1777, 69, 69, 69, 69, 1778, 1780, 69, - 69, 69, 1781, 69, 69, 69, 69, 1785, 1782, 69, - 69, 1793, 1786, 1787, 1788, 1794, 1790, 1791, 69, 1796, - 1789, 69, 69, 69, 1792, 69, 1797, 1798, 1795, 1801, - 1799, 1802, 69, 69, 69, 69, 69, 69, 1806, 69, - 1803, 69, 1800, 69, 69, 69, 1809, 69, 69, 1813, - 69, 69, 1808, 69, 1804, 1805, 1807, 1846, 1814, 1846, - 1812, 69, 1816, 1810, 1811, 69, 1817, 69, 69, 1815, - - 1820, 69, 1818, 1821, 69, 1819, 69, 69, 1822, 69, - 69, 69, 69, 1823, 1825, 69, 1827, 1828, 69, 69, - 1831, 69, 69, 69, 1834, 69, 1824, 1835, 69, 1826, - 1837, 69, 1836, 69, 1829, 1838, 69, 1830, 69, 69, - 1832, 1833, 69, 69, 1840, 1839, 1846, 1841, 1844, 69, - 1845, 69, 1842, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1843, 41, 41, 41, 41, 41, 41, 41, + 69, 1352, 69, 1355, 69, 1342, 1347, 69, 1353, 1350, + 1357, 69, 69, 1358, 69, 69, 1356, 1361, 1354, 69, + 1363, 69, 69, 69, 1362, 69, 1359, 69, 69, 69, + 1365, 69, 69, 1360, 1368, 69, 1371, 69, 69, 69, + + 69, 69, 1372, 1367, 1374, 69, 69, 1373, 1364, 1369, + 1366, 1370, 69, 69, 69, 69, 1383, 69, 69, 69, + 1376, 1384, 69, 69, 69, 1474, 1375, 1381, 1377, 69, + 1378, 1379, 1385, 69, 1380, 1382, 1386, 1387, 69, 1388, + 1389, 69, 1390, 69, 1391, 69, 1392, 1393, 69, 1394, + 69, 1395, 69, 1397, 69, 1398, 69, 1399, 69, 69, + 69, 1402, 69, 69, 1396, 1401, 1404, 69, 69, 69, + 69, 69, 1408, 1407, 69, 1406, 1410, 69, 1400, 69, + 69, 69, 1403, 1414, 69, 69, 1405, 1409, 69, 1419, + 69, 69, 69, 1411, 1412, 1418, 1421, 69, 69, 1413, + + 69, 1415, 69, 1417, 69, 1423, 69, 69, 1416, 1424, + 69, 1420, 1426, 69, 1425, 69, 69, 69, 69, 69, + 1430, 1435, 69, 1428, 1422, 1432, 69, 1433, 69, 69, + 1439, 1427, 1431, 1434, 1429, 69, 1440, 1438, 69, 1436, + 69, 69, 1437, 69, 1441, 69, 69, 69, 69, 1447, + 69, 69, 1442, 1448, 1445, 1444, 1451, 69, 1443, 1446, + 1452, 69, 69, 1450, 69, 1454, 69, 69, 69, 69, + 1449, 69, 1458, 1459, 69, 69, 1453, 1460, 1455, 1461, + 69, 1456, 69, 69, 69, 69, 69, 1457, 1462, 1465, + 69, 1467, 1468, 69, 69, 1463, 1464, 69, 69, 1469, + + 1472, 69, 1473, 1471, 1466, 69, 1470, 69, 1476, 1477, + 69, 69, 1479, 69, 1481, 1475, 1478, 1480, 69, 69, + 69, 1482, 69, 69, 69, 69, 69, 69, 1490, 1485, + 1488, 69, 69, 69, 69, 1489, 1493, 69, 1483, 1487, + 69, 69, 1495, 69, 1486, 1484, 1494, 69, 69, 1492, + 1491, 69, 1497, 1498, 69, 1499, 69, 1496, 1500, 69, + 1501, 69, 69, 69, 69, 69, 1508, 69, 69, 1502, + 1506, 69, 69, 1503, 1504, 1505, 69, 1509, 69, 69, + 69, 1515, 69, 69, 1507, 69, 69, 1520, 69, 1512, + 1518, 1519, 1511, 1514, 1521, 69, 69, 1510, 69, 1522, + + 1516, 69, 1513, 69, 69, 1517, 69, 69, 69, 69, + 1530, 1531, 69, 69, 69, 1527, 1523, 69, 69, 1524, + 69, 1533, 1532, 69, 1526, 1525, 1529, 1528, 69, 1539, + 69, 69, 1534, 69, 69, 1540, 1535, 69, 1536, 1537, + 69, 69, 1544, 69, 69, 1549, 69, 1538, 1542, 1541, + 69, 69, 69, 1543, 1548, 1552, 69, 69, 69, 69, + 69, 1545, 1546, 1553, 1547, 1550, 69, 69, 1556, 69, + 1551, 1555, 1554, 1557, 1558, 69, 69, 1559, 1560, 69, + 1561, 69, 69, 1562, 69, 1564, 69, 69, 1563, 1565, + 69, 1566, 69, 69, 69, 69, 1573, 69, 1568, 1570, + + 1571, 1574, 69, 69, 1576, 69, 1567, 1569, 1572, 69, + 1575, 69, 1578, 69, 1579, 69, 1577, 1581, 1580, 69, + 69, 69, 69, 1582, 69, 1583, 69, 69, 69, 69, + 1584, 69, 1587, 69, 1586, 69, 1589, 69, 69, 1585, + 1588, 69, 69, 1594, 1591, 69, 1592, 1590, 69, 69, + 1593, 1599, 69, 69, 1595, 1597, 69, 1596, 1602, 69, + 69, 69, 1601, 69, 1603, 1604, 69, 1598, 1600, 69, + 1605, 69, 69, 1607, 69, 1610, 1606, 1611, 69, 69, + 1608, 69, 1613, 69, 69, 69, 1609, 1614, 1615, 69, + 1616, 69, 1612, 1617, 69, 1620, 1654, 1618, 69, 1619, + + 69, 1621, 69, 69, 1623, 69, 69, 1622, 1625, 69, + 69, 69, 1624, 69, 1626, 1627, 1628, 69, 69, 1633, + 69, 69, 1629, 69, 69, 69, 69, 1637, 1630, 69, + 1638, 1631, 1632, 1635, 69, 69, 69, 69, 69, 69, + 1634, 1640, 1636, 69, 1641, 69, 1643, 1646, 69, 69, + 1639, 69, 1647, 1649, 69, 1650, 69, 69, 1644, 1645, + 69, 1642, 69, 1648, 69, 1651, 1653, 69, 1658, 1655, + 69, 1656, 1652, 69, 1660, 1659, 1657, 69, 69, 69, + 69, 69, 1665, 1662, 69, 69, 1661, 69, 1663, 1667, + 1669, 69, 1671, 69, 69, 69, 69, 1674, 69, 69, + + 1664, 69, 1666, 1668, 69, 1675, 69, 69, 1676, 69, + 69, 1673, 69, 1672, 1680, 1679, 1670, 1682, 69, 69, + 1677, 1684, 69, 69, 1685, 1678, 1686, 69, 69, 69, + 1689, 1683, 69, 69, 1692, 69, 1681, 1693, 69, 69, + 69, 69, 69, 1687, 1697, 69, 1690, 69, 69, 69, + 69, 1688, 1695, 1700, 1698, 1691, 69, 69, 1694, 1703, + 69, 1696, 1701, 69, 69, 1704, 1705, 1699, 1702, 1706, + 69, 1707, 69, 69, 1710, 1708, 69, 1719, 1709, 1712, + 69, 1711, 1713, 69, 1714, 69, 69, 1716, 69, 69, + 1717, 1715, 1718, 69, 69, 1721, 69, 69, 69, 1724, + + 69, 69, 1722, 1720, 69, 69, 1723, 69, 69, 1725, + 1726, 69, 69, 1727, 69, 1728, 69, 69, 1736, 69, + 69, 1734, 1737, 69, 1738, 1851, 1729, 1730, 69, 1731, + 1732, 1739, 69, 69, 69, 1733, 69, 1735, 1740, 1741, + 69, 69, 1742, 1743, 69, 1746, 69, 69, 1744, 1747, + 69, 69, 1748, 69, 1745, 69, 69, 69, 1755, 69, + 1752, 1753, 1756, 69, 1757, 69, 1749, 69, 1750, 1758, + 69, 69, 1751, 69, 1760, 69, 1754, 1762, 1761, 1759, + 69, 69, 69, 69, 69, 1763, 1764, 69, 69, 69, + 69, 1768, 69, 69, 69, 69, 1851, 69, 69, 1765, + + 1767, 1766, 1771, 1770, 1777, 69, 69, 1778, 1769, 1772, + 1774, 1773, 1776, 1779, 69, 69, 69, 69, 1784, 69, + 1775, 1780, 1781, 69, 69, 69, 69, 1788, 69, 1789, + 1783, 1782, 69, 1785, 69, 69, 69, 69, 69, 1786, + 1790, 1791, 69, 69, 1787, 69, 1851, 69, 69, 1851, + 1793, 1795, 1798, 1799, 1792, 1796, 1794, 69, 1801, 69, + 69, 69, 1797, 69, 1800, 1802, 1803, 1806, 1804, 1807, + 69, 69, 69, 69, 69, 69, 1811, 69, 1805, 69, + 1808, 69, 1814, 69, 69, 69, 69, 1818, 69, 1851, + 1809, 69, 1813, 1810, 1812, 69, 1819, 69, 1817, 69, + + 1821, 69, 1815, 1816, 69, 1822, 1823, 1820, 69, 1826, + 69, 69, 69, 69, 1825, 1824, 1829, 69, 1827, 1828, + 69, 69, 1830, 69, 69, 1832, 1833, 69, 1836, 69, + 69, 69, 1831, 69, 1839, 1840, 69, 69, 1841, 1842, + 69, 69, 1834, 1835, 1843, 69, 69, 69, 1837, 1838, + 69, 1851, 1845, 1844, 1851, 1846, 1847, 1849, 69, 1851, + 1848, 1850, 69, 41, 41, 41, 41, 41, 41, 41, 46, 46, 46, 46, 46, 46, 46, 51, 51, 51, 51, 51, 51, 51, 57, 57, 57, 57, 57, 57, 57, 62, 62, 62, 62, 62, 62, 62, 72, 72, - 1846, 72, 72, 72, 72, 127, 127, 1846, 1846, 1846, - 127, 127, 129, 129, 1846, 1846, 129, 1846, 129, 131, - 1846, 1846, 1846, 1846, 1846, 131, 134, 134, 1846, 1846, - 1846, 134, 134, 136, 1846, 1846, 1846, 1846, 1846, 136, - 138, 138, 1846, 138, 138, 138, 138, 73, 73, 1846, - 73, 73, 73, 73, 13, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846 + 1851, 72, 72, 72, 72, 127, 127, 1851, 1851, 1851, + 127, 127, 129, 129, 1851, 1851, 129, 1851, 129, 131, + 1851, 1851, 1851, 1851, 1851, 131, 134, 134, 1851, 1851, + 1851, 134, 134, 136, 1851, 1851, 1851, 1851, 1851, 136, + 138, 138, 1851, 138, 138, 138, 138, 73, 73, 1851, + 73, 73, 73, 73, 13, 1851, 1851, 1851, 1851, 1851, + 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, + 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, + 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, + 1851, 1851, 1851, 1851 } ; @@ -1472,7 +1475,7 @@ static yyconst flex_int16_t yy_chk[3695] = 9, 158, 33, 6, 7, 7, 7, 7, 9, 7, 10, 10, 10, 45, 45, 7, 8, 8, 8, 8, 10, 8, 21, 33, 158, 21, 21, 8, 11, 11, - 11, 11, 11, 11, 1852, 20, 29, 20, 20, 11, + 11, 11, 11, 11, 1857, 20, 29, 20, 20, 11, 20, 29, 24, 21, 25, 20, 24, 28, 11, 12, 12, 12, 12, 12, 12, 75, 22, 22, 75, 25, @@ -1743,132 +1746,132 @@ static yyconst flex_int16_t yy_chk[3695] = 1230, 1236, 1237, 1238, 1228, 1223, 1227, 1228, 1231, 1230, 1233, 1234, 1240, 1243, 1236, 1233, 1234, 1242, 1240, 1238, 1244, 1245, 1237, 1242, 1246, 1246, 1247, 1249, 1243, 1250, - 1245, 1248, 1248, 1250, 1251, 1247, 1252, 1253, 1253, 1251, - 1254, 1255, 1258, 1258, 1259, 1244, 1249, 1262, 1254, 1252, - 1260, 1260, 1263, 1259, 1261, 1261, 1268, 1264, 1265, 1262, - 1270, 1255, 1264, 1265, 1266, 1266, 1269, 1271, 1272, 1273, - 1263, 1269, 1274, 1272, 1275, 1275, 1276, 1277, 1279, 1278, - - 1276, 1268, 1271, 1270, 1278, 1282, 1280, 1273, 1274, 1283, - 1284, 1285, 1277, 1287, 1286, 1289, 1289, 1290, 1291, 13, - 1290, 1292, 1308, 1293, 1279, 1280, 1286, 1308, 1282, 1284, - 1297, 1291, 1285, 1283, 1287, 1292, 1293, 1294, 1294, 1295, - 1295, 1296, 1296, 1298, 1302, 1297, 1299, 1299, 1300, 1300, - 1301, 1301, 1303, 1303, 1304, 1304, 1298, 1305, 1305, 1306, - 1309, 1309, 1310, 1302, 1311, 1311, 1312, 1313, 1314, 1315, - 1315, 1314, 1317, 1313, 1316, 1316, 1319, 1318, 1306, 1320, - 1320, 1310, 1322, 1323, 1312, 1315, 1324, 1326, 1326, 1325, - 1327, 1317, 1318, 1325, 1329, 1319, 1328, 1328, 1330, 1330, - - 1333, 1324, 1322, 1331, 1332, 1333, 1323, 1334, 1335, 1327, - 1336, 1338, 1331, 1337, 1339, 1340, 1332, 1342, 1337, 1341, - 1329, 1335, 1342, 1339, 1340, 1343, 1338, 1345, 1347, 1343, - 1352, 1336, 1334, 1341, 1348, 1348, 1349, 1347, 1355, 1350, - 1350, 1349, 1353, 1357, 1358, 1352, 1357, 1345, 1350, 1358, - 1355, 1353, 1359, 1360, 1361, 1361, 1363, 1363, 1366, 1364, - 1365, 1365, 1367, 1368, 1371, 1360, 1369, 1369, 1371, 1375, - 1366, 1372, 1359, 1364, 1372, 1374, 1367, 1373, 1373, 1376, - 1374, 1377, 1368, 1378, 1381, 1377, 1379, 1380, 1383, 1375, - 1381, 1379, 1380, 1376, 1384, 1385, 1387, 1386, 1387, 1384, - - 1385, 1390, 1407, 1378, 1383, 1386, 1391, 1391, 1395, 1395, - 1406, 1399, 1400, 1400, 1404, 1390, 1399, 1402, 1402, 1404, - 1405, 1405, 1408, 1410, 1407, 1411, 1406, 1408, 1412, 1412, - 1414, 1415, 1416, 1417, 1419, 1419, 1415, 1411, 1421, 1414, - 1423, 1428, 1410, 1421, 1422, 1429, 1422, 1424, 1417, 1430, - 1416, 1434, 1424, 1428, 1423, 1425, 1425, 1426, 1426, 1427, - 1427, 1430, 1431, 1429, 1432, 1433, 1435, 1435, 1436, 1437, - 1433, 1434, 1438, 1439, 1431, 1440, 1432, 1436, 1442, 1441, - 1443, 1451, 1444, 1445, 1446, 1446, 1439, 1444, 1445, 1447, - 1447, 1452, 1438, 1441, 1453, 1437, 1442, 1448, 1448, 1440, - - 1454, 1451, 1443, 1455, 1456, 1457, 1458, 1458, 1461, 1452, - 1460, 1460, 1455, 1463, 1462, 1464, 1453, 1461, 1465, 1466, - 1454, 1462, 1467, 1457, 1456, 1468, 1468, 1469, 1463, 1470, - 1471, 1472, 1469, 1464, 1473, 1466, 1465, 1474, 1479, 1473, - 1476, 1467, 1483, 1480, 0, 1471, 1480, 1470, 1481, 1481, - 1472, 1482, 1484, 1484, 1487, 1489, 1489, 1474, 1479, 1476, - 1483, 1485, 1490, 1488, 1493, 1485, 1482, 1488, 1500, 1487, - 1492, 1492, 1494, 1494, 1504, 1490, 1495, 1495, 1499, 1499, - 1501, 1502, 1503, 1493, 1505, 1507, 1502, 1503, 1510, 1501, - 1500, 1508, 1505, 1504, 1509, 1519, 1508, 1511, 1511, 1509, - - 1507, 1512, 1512, 1510, 1513, 1514, 1515, 1515, 1519, 1513, - 1514, 1516, 1516, 1520, 1523, 1521, 1522, 1524, 1520, 1521, - 1525, 1522, 1526, 1523, 1527, 1530, 1529, 1526, 1525, 1529, - 1532, 1531, 1524, 1533, 1534, 1534, 1527, 1535, 1537, 1532, - 1538, 1542, 1533, 1530, 1531, 1539, 1535, 1540, 1540, 1541, - 1542, 1543, 1543, 1544, 1545, 1551, 1547, 1537, 1548, 1545, - 1538, 1544, 1550, 1552, 1539, 1547, 1550, 1559, 1541, 1551, - 1565, 1548, 1554, 1554, 1556, 1556, 1560, 1560, 1552, 1561, - 1562, 1562, 1561, 1563, 1563, 1564, 1564, 1559, 1565, 1566, - 1567, 1568, 1568, 1569, 1572, 1567, 1573, 1569, 1577, 1576, - - 1572, 1573, 1578, 1566, 1576, 1579, 1580, 1578, 1581, 1582, - 1582, 1583, 1584, 1585, 1590, 1577, 1577, 1586, 1586, 1588, - 1584, 1591, 1581, 1579, 1587, 1587, 1580, 1592, 1589, 1593, - 1583, 1594, 1585, 1589, 1590, 1588, 1592, 1596, 1596, 1597, - 1599, 1601, 1597, 1600, 1600, 1601, 1602, 1591, 1603, 1593, - 1606, 1594, 1604, 1604, 1605, 1602, 1608, 1609, 1599, 1606, - 1610, 1614, 1620, 1603, 1616, 1608, 1614, 1605, 1622, 1609, - 1615, 1615, 1618, 1616, 1619, 1621, 1623, 1618, 1624, 1625, - 1621, 1623, 1620, 1619, 1625, 1610, 1626, 1627, 1627, 1622, - 1629, 1630, 1631, 1631, 1632, 1633, 1624, 1634, 1632, 1635, - - 1636, 1638, 1637, 1640, 1633, 1643, 1630, 1637, 1636, 1629, - 1643, 1626, 1646, 1634, 1639, 1639, 1642, 1642, 1635, 1645, - 1645, 1647, 1640, 1649, 1649, 1650, 1651, 1638, 1652, 1652, - 1653, 1653, 1646, 1654, 1655, 1656, 1657, 1657, 1658, 1650, - 1659, 1664, 1660, 1662, 1647, 1660, 1655, 1671, 1651, 1661, - 1658, 1663, 1654, 1668, 1661, 1656, 1663, 0, 1664, 1664, - 1659, 1671, 1662, 1665, 1665, 1667, 1667, 0, 1670, 1672, - 1673, 1673, 1668, 1670, 1672, 1674, 1674, 1675, 1675, 1676, - 1678, 1678, 1680, 1680, 1676, 1682, 1682, 1683, 1684, 1685, - 1685, 1686, 1689, 1690, 1690, 1694, 1686, 1684, 1691, 1693, - - 1689, 1683, 1695, 1691, 1693, 1696, 1697, 1694, 1698, 1699, - 1695, 1700, 1703, 1704, 1704, 1706, 1700, 1705, 1705, 1706, - 1710, 1710, 1697, 1696, 1712, 1698, 1698, 1715, 1712, 1718, - 1699, 1720, 1703, 1714, 1714, 1717, 1717, 1721, 1721, 1722, - 1722, 1715, 1723, 1724, 1718, 1725, 1726, 1723, 1727, 1720, - 1728, 1729, 0, 1727, 1739, 1728, 1730, 1730, 1733, 1733, - 1725, 1735, 1735, 1737, 1737, 1745, 1739, 1726, 1724, 1744, - 1729, 1740, 1740, 1743, 1744, 1746, 1743, 1747, 1749, 1745, - 1746, 1748, 1754, 1755, 1756, 1757, 1754, 1758, 1760, 1759, - 1761, 1763, 1763, 1762, 1749, 1756, 1747, 1768, 1757, 1748, - - 1764, 1765, 1765, 1755, 1760, 1766, 1758, 1759, 1762, 1764, - 1766, 1767, 1769, 1770, 1771, 1761, 1767, 1773, 1770, 1775, - 1776, 1777, 1768, 1778, 1780, 1776, 1777, 1769, 1771, 1779, - 1781, 1782, 1773, 1783, 1784, 1785, 1786, 1778, 1775, 1788, - 1787, 1786, 1779, 1780, 1781, 1787, 1783, 1784, 1789, 1789, - 1782, 1790, 1791, 1793, 1785, 1792, 1790, 1791, 1788, 1794, - 1792, 1795, 1795, 1796, 1794, 1797, 1798, 1800, 1799, 1801, - 1796, 1803, 1793, 1799, 1804, 1805, 1803, 1806, 1807, 1807, - 1809, 1814, 1801, 1808, 1797, 1798, 1800, 0, 1808, 0, - 1806, 1810, 1810, 1804, 1805, 1811, 1811, 1812, 1813, 1809, - - 1814, 1816, 1812, 1815, 1815, 1813, 1817, 1818, 1816, 1819, - 1820, 1822, 1823, 1817, 1819, 1824, 1822, 1823, 1825, 1826, - 1826, 1827, 1828, 1829, 1829, 1831, 1818, 1830, 1830, 1820, - 1832, 1832, 1831, 1840, 1824, 1833, 1833, 1825, 1834, 1836, - 1827, 1828, 1839, 1841, 1836, 1834, 0, 1839, 1842, 1842, - 1843, 1843, 1840, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1841, 1847, 1847, 1847, 1847, 1847, 1847, 1847, - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1849, 1849, 1849, - 1849, 1849, 1849, 1849, 1850, 1850, 1850, 1850, 1850, 1850, - 1850, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1853, 1853, - - 0, 1853, 1853, 1853, 1853, 1854, 1854, 0, 0, 0, - 1854, 1854, 1855, 1855, 0, 0, 1855, 0, 1855, 1856, - 0, 0, 0, 0, 0, 1856, 1857, 1857, 0, 0, - 0, 1857, 1857, 1858, 0, 0, 0, 0, 0, 1858, - 1859, 1859, 0, 1859, 1859, 1859, 1859, 1860, 1860, 0, - 1860, 1860, 1860, 1860, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846 + 1245, 1248, 1248, 1250, 1251, 1247, 1252, 1253, 1255, 1251, + 1254, 1253, 1253, 1258, 1258, 1244, 1249, 1259, 1254, 1252, + 1260, 1260, 1261, 1261, 1262, 1263, 1259, 1264, 1255, 1265, + 1266, 1266, 1264, 1268, 1265, 1269, 1262, 1270, 1271, 1272, + 1269, 1273, 1277, 1263, 1272, 1274, 1275, 1275, 1276, 1278, + + 1279, 1280, 1276, 1271, 1278, 1282, 1283, 1277, 1268, 1273, + 1270, 1274, 1284, 1285, 1287, 1286, 1289, 1289, 1290, 1291, + 1280, 1290, 1292, 1388, 1293, 1388, 1279, 1286, 1282, 1297, + 1283, 1284, 1291, 1298, 1285, 1287, 1292, 1293, 1294, 1294, + 1295, 1295, 1296, 1296, 1297, 1302, 1298, 1299, 1299, 1300, + 1300, 1301, 1301, 1303, 1303, 1304, 1304, 1305, 1305, 1306, + 1308, 1309, 1309, 1310, 1302, 1308, 1311, 1311, 1312, 1313, + 1314, 1315, 1315, 1314, 1317, 1313, 1316, 1316, 1306, 1318, + 1319, 1322, 1310, 1320, 1320, 1323, 1312, 1315, 1324, 1326, + 1326, 1325, 1327, 1317, 1318, 1325, 1328, 1328, 1329, 1319, + + 1331, 1322, 1332, 1324, 1330, 1330, 1334, 1333, 1323, 1331, + 1335, 1327, 1333, 1336, 1332, 1337, 1339, 1338, 1340, 1341, + 1337, 1342, 1345, 1335, 1329, 1339, 1342, 1340, 1347, 1348, + 1348, 1334, 1338, 1341, 1336, 1343, 1349, 1347, 1351, 1343, + 1353, 1349, 1345, 1350, 1350, 1354, 1358, 1356, 1359, 1358, + 1360, 1361, 1350, 1359, 1354, 1353, 1362, 1362, 1351, 1356, + 1364, 1364, 1365, 1361, 1366, 1366, 1367, 1368, 1369, 1372, + 1360, 1370, 1370, 1372, 1373, 1376, 1365, 1373, 1367, 1374, + 1374, 1368, 1377, 1375, 1379, 1378, 1380, 1369, 1375, 1378, + 1384, 1380, 1381, 1382, 1387, 1376, 1377, 1381, 1385, 1382, + + 1386, 1391, 1387, 1385, 1379, 1386, 1384, 1392, 1392, 1396, + 1396, 1400, 1401, 1401, 1405, 1391, 1400, 1403, 1403, 1405, + 1406, 1406, 1407, 1408, 1409, 1411, 1415, 1412, 1416, 1409, + 1413, 1413, 1417, 1416, 1418, 1415, 1420, 1420, 1407, 1412, + 1423, 1422, 1423, 1424, 1411, 1408, 1422, 1425, 1429, 1418, + 1417, 1430, 1425, 1426, 1426, 1427, 1427, 1424, 1428, 1428, + 1429, 1431, 1432, 1433, 1435, 1434, 1436, 1436, 1437, 1430, + 1434, 1438, 1439, 1431, 1432, 1433, 1440, 1437, 1441, 1442, + 1443, 1443, 1444, 1445, 1435, 1446, 1447, 1448, 1448, 1440, + 1446, 1447, 1439, 1442, 1449, 1449, 1453, 1438, 1450, 1450, + + 1444, 1454, 1441, 1455, 1456, 1445, 1457, 1458, 1459, 1460, + 1460, 1462, 1462, 1463, 1464, 1457, 1453, 1465, 1466, 1454, + 1467, 1464, 1463, 1468, 1456, 1455, 1459, 1458, 1469, 1470, + 1470, 1472, 1465, 1473, 1474, 1471, 1466, 1475, 1467, 1468, + 1471, 1476, 1475, 1478, 1481, 1483, 1483, 1469, 1473, 1472, + 1484, 1482, 1485, 1474, 1482, 1486, 1486, 1489, 1495, 1487, + 1492, 1476, 1478, 1487, 1481, 1484, 1502, 1490, 1491, 1491, + 1485, 1490, 1489, 1492, 1494, 1494, 1503, 1495, 1496, 1496, + 1497, 1497, 1501, 1501, 1504, 1503, 1505, 1506, 1502, 1504, + 1507, 1505, 1509, 1512, 1510, 1511, 1513, 1513, 1507, 1510, + + 1511, 1514, 1514, 1515, 1516, 1522, 1506, 1509, 1512, 1516, + 1515, 1517, 1518, 1518, 1519, 1519, 1517, 1523, 1522, 1524, + 1525, 1526, 1523, 1524, 1527, 1525, 1528, 1529, 1530, 1533, + 1526, 1534, 1529, 1532, 1528, 1541, 1532, 1535, 1540, 1527, + 1530, 1536, 1537, 1537, 1534, 1538, 1535, 1533, 1542, 1544, + 1536, 1543, 1543, 1545, 1538, 1541, 1547, 1540, 1546, 1546, + 1548, 1550, 1545, 1551, 1547, 1548, 1554, 1542, 1544, 1553, + 1550, 1555, 1562, 1553, 1557, 1557, 1551, 1559, 1559, 1568, + 1554, 1563, 1563, 1609, 1564, 1569, 1555, 1564, 1565, 1565, + 1566, 1566, 1562, 1567, 1567, 1570, 1609, 1568, 1581, 1569, + + 1570, 1571, 1571, 1572, 1575, 1575, 1576, 1572, 1577, 1580, + 1583, 1584, 1576, 1577, 1580, 1581, 1581, 1582, 1585, 1586, + 1586, 1587, 1582, 1589, 1594, 1588, 1590, 1590, 1583, 1591, + 1591, 1584, 1585, 1588, 1592, 1595, 1593, 1596, 1597, 1598, + 1587, 1593, 1589, 1614, 1594, 1603, 1596, 1600, 1600, 1601, + 1592, 1605, 1601, 1604, 1604, 1605, 1606, 1607, 1597, 1598, + 1610, 1595, 1612, 1603, 1613, 1606, 1608, 1608, 1614, 1610, + 1618, 1612, 1607, 1619, 1619, 1618, 1613, 1620, 1622, 1624, + 1625, 1627, 1626, 1622, 1628, 1629, 1620, 1626, 1624, 1628, + 1630, 1631, 1632, 1632, 1634, 1630, 1635, 1636, 1636, 1638, + + 1625, 1637, 1627, 1629, 1639, 1637, 1640, 1641, 1638, 1642, + 1643, 1635, 1645, 1634, 1642, 1641, 1631, 1644, 1644, 1648, + 1639, 1647, 1647, 1651, 1648, 1640, 1650, 1650, 1652, 1654, + 1654, 1645, 1655, 1656, 1657, 1657, 1643, 1658, 1658, 1659, + 1660, 1661, 1663, 1651, 1662, 1662, 1655, 1664, 1669, 1667, + 1665, 1652, 1660, 1665, 1663, 1656, 1673, 1666, 1659, 1668, + 1676, 1661, 1666, 1688, 1668, 1669, 1669, 1664, 1667, 1670, + 1670, 1672, 1672, 1675, 1676, 1673, 1677, 1688, 1675, 1678, + 1678, 1677, 1679, 1679, 1680, 1680, 1681, 1683, 1683, 1685, + 1685, 1681, 1687, 1687, 1689, 1690, 1690, 1691, 1694, 1695, + + 1695, 1699, 1691, 1689, 1696, 1698, 1694, 1700, 1701, 1696, + 1698, 1702, 1703, 1699, 1704, 1700, 1705, 1708, 1709, 1709, + 1711, 1705, 1710, 1710, 1711, 13, 1701, 1702, 1720, 1703, + 1703, 1715, 1715, 1723, 1717, 1704, 1725, 1708, 1717, 1719, + 1719, 1729, 1720, 1722, 1722, 1726, 1726, 1728, 1723, 1727, + 1727, 1731, 1728, 1730, 1725, 1732, 1733, 1734, 1735, 1735, + 1732, 1733, 1738, 1738, 1740, 1740, 1729, 1744, 1730, 1742, + 1742, 1750, 1731, 1745, 1745, 1748, 1734, 1749, 1748, 1744, + 1752, 1751, 1749, 1753, 1754, 1750, 1751, 1759, 1760, 1762, + 1763, 1759, 1761, 1764, 1765, 1766, 0, 1767, 1769, 1752, + + 1754, 1753, 1762, 1761, 1768, 1768, 1773, 1769, 1760, 1763, + 1765, 1764, 1767, 1770, 1770, 1774, 1771, 1772, 1775, 1776, + 1766, 1771, 1772, 1775, 1778, 1780, 1783, 1781, 1784, 1782, + 1774, 1773, 1781, 1776, 1782, 1785, 1786, 1787, 1788, 1778, + 1783, 1784, 1789, 1790, 1780, 1793, 0, 1791, 1792, 0, + 1786, 1788, 1791, 1792, 1785, 1789, 1787, 1794, 1794, 1798, + 1795, 1796, 1790, 1797, 1793, 1795, 1796, 1799, 1797, 1800, + 1800, 1802, 1799, 1801, 1803, 1805, 1804, 1808, 1798, 1806, + 1801, 1804, 1808, 1809, 1810, 1811, 1812, 1812, 1814, 0, + 1802, 1813, 1806, 1803, 1805, 1819, 1813, 1823, 1811, 1815, + + 1815, 1817, 1809, 1810, 1816, 1816, 1817, 1814, 1818, 1820, + 1820, 1821, 1822, 1825, 1819, 1818, 1823, 1824, 1821, 1822, + 1827, 1828, 1824, 1829, 1830, 1827, 1828, 1831, 1831, 1832, + 1833, 1836, 1825, 1834, 1834, 1835, 1835, 1845, 1836, 1837, + 1837, 1846, 1829, 1830, 1838, 1838, 1839, 1841, 1832, 1833, + 1844, 0, 1841, 1839, 0, 1844, 1845, 1847, 1847, 0, + 1846, 1848, 1848, 1852, 1852, 1852, 1852, 1852, 1852, 1852, + 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1854, 1854, 1854, + 1854, 1854, 1854, 1854, 1855, 1855, 1855, 1855, 1855, 1855, + 1855, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1858, 1858, + + 0, 1858, 1858, 1858, 1858, 1859, 1859, 0, 0, 0, + 1859, 1859, 1860, 1860, 0, 0, 1860, 0, 1860, 1861, + 0, 0, 0, 0, 0, 1861, 1862, 1862, 0, 0, + 0, 1862, 1862, 1863, 0, 0, 0, 0, 0, 1863, + 1864, 1864, 0, 1864, 1864, 1864, 1864, 1865, 1865, 0, + 1865, 1865, 1865, 1865, 1851, 1851, 1851, 1851, 1851, 1851, + 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, + 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, + 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, + 1851, 1851, 1851, 1851 } ; @@ -2074,7 +2077,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 2076 "" +#line 2079 "" #define INITIAL 0 #define quotedstring 1 @@ -2297,7 +2300,7 @@ YY_DECL { #line 201 "./util/configlexer.lex" -#line 2299 "" +#line 2302 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2330,7 +2333,7 @@ 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 >= 1847 ) + if ( yy_current_state >= 1852 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3077,144 +3080,149 @@ YY_RULE_SETUP case 143: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 144: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 145: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 146: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 147: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 148: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 149: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 150: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 151: YY_RULE_SETUP -#line 357 "./util/configlexer.lex" +#line 356 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 152: YY_RULE_SETUP -#line 359 "./util/configlexer.lex" +#line 358 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 153: YY_RULE_SETUP -#line 361 "./util/configlexer.lex" +#line 360 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 154: YY_RULE_SETUP -#line 363 "./util/configlexer.lex" +#line 362 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 155: YY_RULE_SETUP -#line 365 "./util/configlexer.lex" +#line 364 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 156: YY_RULE_SETUP -#line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 366 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 157: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 158: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 159: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 160: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 161: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 162: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 163: -/* rule 163 can match eol */ YY_RULE_SETUP #line 374 "./util/configlexer.lex" +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } + YY_BREAK +case 164: +/* rule 164 can match eol */ +YY_RULE_SETUP +#line 375 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 164: +case 165: YY_RULE_SETUP -#line 377 "./util/configlexer.lex" +#line 378 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 378 "./util/configlexer.lex" +#line 379 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 165: +case 166: YY_RULE_SETUP -#line 383 "./util/configlexer.lex" +#line 384 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 166: -/* rule 166 can match eol */ +case 167: +/* rule 167 can match eol */ YY_RULE_SETUP -#line 384 "./util/configlexer.lex" +#line 385 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 167: +case 168: YY_RULE_SETUP -#line 386 "./util/configlexer.lex" +#line 387 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -3227,34 +3235,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 168: +case 169: YY_RULE_SETUP -#line 398 "./util/configlexer.lex" +#line 399 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 399 "./util/configlexer.lex" +#line 400 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 169: +case 170: YY_RULE_SETUP -#line 404 "./util/configlexer.lex" +#line 405 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 170: -/* rule 170 can match eol */ +case 171: +/* rule 171 can match eol */ YY_RULE_SETUP -#line 405 "./util/configlexer.lex" +#line 406 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 171: +case 172: YY_RULE_SETUP -#line 407 "./util/configlexer.lex" +#line 408 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -3267,38 +3275,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 172: +case 173: YY_RULE_SETUP -#line 419 "./util/configlexer.lex" +#line 420 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 421 "./util/configlexer.lex" +#line 422 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 173: -YY_RULE_SETUP -#line 425 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 174: -/* rule 174 can match eol */ YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 175: +/* rule 175 can match eol */ YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 176: YY_RULE_SETUP #line 428 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 177: +YY_RULE_SETUP +#line 429 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -3306,27 +3314,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 433 "./util/configlexer.lex" +#line 434 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 177: +case 178: YY_RULE_SETUP -#line 437 "./util/configlexer.lex" +#line 438 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 178: -/* rule 178 can match eol */ +case 179: +/* rule 179 can match eol */ YY_RULE_SETUP -#line 438 "./util/configlexer.lex" +#line 439 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 179: +case 180: YY_RULE_SETUP -#line 440 "./util/configlexer.lex" +#line 441 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -3336,7 +3344,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 446 "./util/configlexer.lex" +#line 447 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -3348,33 +3356,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 180: +case 181: YY_RULE_SETUP -#line 457 "./util/configlexer.lex" +#line 458 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 181: +case 182: YY_RULE_SETUP -#line 461 "./util/configlexer.lex" +#line 462 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 182: +case 183: YY_RULE_SETUP -#line 465 "./util/configlexer.lex" +#line 466 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 183: +case 184: YY_RULE_SETUP -#line 469 "./util/configlexer.lex" +#line 470 "./util/configlexer.lex" ECHO; YY_BREAK -#line 3376 "" +#line 3384 "" case YY_END_OF_BUFFER: { @@ -3665,7 +3673,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 >= 1847 ) + if ( yy_current_state >= 1852 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3693,11 +3701,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 >= 1847 ) + if ( yy_current_state >= 1852 ) 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 == 1846); + yy_is_jam = (yy_current_state == 1851); return yy_is_jam ? 0 : yy_current_state; } @@ -4336,7 +4344,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 469 "./util/configlexer.lex" +#line 470 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 58d642c1d..3fe675d33 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -345,6 +345,7 @@ dns64-prefix{COLON} { YDVAR(1, VAR_DNS64_PREFIX) } dns64-synthall{COLON} { YDVAR(1, VAR_DNS64_SYNTHALL) } define-tag{COLON} { YDVAR(1, VAR_DEFINE_TAG) } local-zone-tag{COLON} { YDVAR(2, VAR_LOCAL_ZONE_TAG) } +access-control-tag{COLON} { YDVAR(2, VAR_ACCESS_CONTROL_TAG) } dnstap{COLON} { YDVAR(0, VAR_DNSTAP) } dnstap-enable{COLON} { YDVAR(1, VAR_DNSTAP_ENABLE) } dnstap-socket-path{COLON} { YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } diff --git a/util/configparser.c b/util/configparser.c index c2035bad6..1d050483a 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -290,7 +290,8 @@ extern int yydebug; VAR_QNAME_MINIMISATION = 421, VAR_IP_FREEBIND = 422, VAR_DEFINE_TAG = 423, - VAR_LOCAL_ZONE_TAG = 424 + VAR_LOCAL_ZONE_TAG = 424, + VAR_ACCESS_CONTROL_TAG = 425 }; #endif /* Tokens. */ @@ -461,6 +462,7 @@ extern int yydebug; #define VAR_IP_FREEBIND 422 #define VAR_DEFINE_TAG 423 #define VAR_LOCAL_ZONE_TAG 424 +#define VAR_ACCESS_CONTROL_TAG 425 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -471,7 +473,7 @@ union YYSTYPE char* str; -#line 475 "util/configparser.c" /* yacc.c:355 */ +#line 477 "util/configparser.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -488,7 +490,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 492 "util/configparser.c" /* yacc.c:358 */ +#line 494 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -730,21 +732,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 319 +#define YYLAST 323 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 170 +#define YYNTOKENS 171 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 175 +#define YYNNTS 176 /* YYNRULES -- Number of rules. */ -#define YYNRULES 335 +#define YYNRULES 337 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 495 +#define YYNSTATES 499 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 424 +#define YYMAXUTOK 425 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -795,47 +797,47 @@ static const yytype_uint8 yytranslate[] = 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, - 165, 166, 167, 168, 169 + 165, 166, 167, 168, 169, 170 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 131, 131, 131, 132, 132, 133, 133, 134, 134, - 138, 143, 144, 145, 145, 145, 146, 146, 147, 147, - 147, 148, 148, 149, 149, 149, 150, 150, 150, 151, - 151, 152, 152, 153, 153, 154, 154, 155, 155, 156, - 156, 157, 157, 158, 158, 159, 159, 159, 160, 160, - 160, 161, 161, 161, 162, 162, 163, 163, 164, 164, - 165, 165, 166, 166, 166, 167, 167, 168, 168, 169, - 169, 169, 170, 170, 171, 171, 172, 172, 173, 173, - 173, 174, 174, 175, 175, 176, 176, 177, 177, 178, - 178, 179, 179, 179, 180, 180, 181, 181, 181, 182, - 182, 182, 183, 183, 183, 184, 184, 184, 185, 185, - 185, 186, 186, 186, 187, 187, 188, 188, 189, 189, - 190, 190, 191, 191, 191, 192, 192, 193, 193, 194, - 194, 195, 195, 196, 196, 196, 197, 199, 211, 212, - 213, 213, 213, 213, 213, 215, 227, 228, 229, 229, - 229, 229, 231, 240, 249, 260, 269, 278, 287, 300, - 315, 324, 333, 342, 351, 360, 369, 378, 387, 396, - 405, 414, 423, 432, 441, 448, 455, 464, 473, 487, - 496, 505, 512, 519, 526, 534, 541, 548, 555, 562, - 570, 578, 586, 593, 600, 609, 618, 625, 632, 640, - 648, 658, 668, 678, 691, 702, 710, 723, 732, 741, - 750, 760, 770, 778, 791, 800, 808, 817, 825, 838, - 847, 854, 864, 874, 884, 894, 904, 914, 924, 934, - 941, 948, 955, 964, 973, 982, 989, 999, 1016, 1023, - 1041, 1054, 1067, 1076, 1085, 1094, 1103, 1113, 1123, 1132, - 1141, 1148, 1157, 1166, 1175, 1184, 1192, 1205, 1213, 1237, - 1244, 1259, 1269, 1279, 1286, 1293, 1302, 1316, 1335, 1344, - 1352, 1365, 1378, 1391, 1400, 1410, 1420, 1427, 1434, 1443, - 1453, 1463, 1470, 1477, 1486, 1491, 1492, 1493, 1493, 1493, - 1494, 1494, 1494, 1495, 1495, 1497, 1507, 1516, 1523, 1533, - 1540, 1547, 1554, 1561, 1566, 1567, 1568, 1568, 1569, 1569, - 1570, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1578, 1586, - 1593, 1601, 1609, 1616, 1623, 1632, 1641, 1650, 1659, 1668, - 1677, 1682, 1683, 1684, 1686, 1692 + 0, 132, 132, 132, 133, 133, 134, 134, 135, 135, + 139, 144, 145, 146, 146, 146, 147, 147, 148, 148, + 148, 149, 149, 150, 150, 150, 151, 151, 151, 152, + 152, 153, 153, 154, 154, 155, 155, 156, 156, 157, + 157, 158, 158, 159, 159, 160, 160, 160, 161, 161, + 161, 162, 162, 162, 163, 163, 164, 164, 165, 165, + 166, 166, 167, 167, 167, 168, 168, 169, 169, 170, + 170, 170, 171, 171, 172, 172, 173, 173, 174, 174, + 174, 175, 175, 176, 176, 177, 177, 178, 178, 179, + 179, 180, 180, 180, 181, 181, 182, 182, 182, 183, + 183, 183, 184, 184, 184, 185, 185, 185, 186, 186, + 186, 187, 187, 187, 188, 188, 189, 189, 190, 190, + 191, 191, 192, 192, 192, 193, 193, 194, 194, 195, + 195, 196, 196, 197, 197, 197, 198, 198, 200, 212, + 213, 214, 214, 214, 214, 214, 216, 228, 229, 230, + 230, 230, 230, 232, 241, 250, 261, 270, 279, 288, + 301, 316, 325, 334, 343, 352, 361, 370, 379, 388, + 397, 406, 415, 424, 433, 442, 449, 456, 465, 474, + 488, 497, 506, 513, 520, 527, 535, 542, 549, 556, + 563, 571, 579, 587, 594, 601, 610, 619, 626, 633, + 641, 649, 659, 669, 679, 692, 703, 711, 724, 733, + 742, 751, 761, 771, 779, 792, 801, 809, 818, 826, + 839, 848, 855, 865, 875, 885, 895, 905, 915, 925, + 935, 942, 949, 956, 965, 974, 983, 990, 1000, 1017, + 1024, 1042, 1055, 1068, 1077, 1086, 1095, 1104, 1114, 1124, + 1133, 1142, 1149, 1158, 1167, 1176, 1185, 1193, 1206, 1214, + 1238, 1245, 1260, 1270, 1280, 1287, 1294, 1303, 1317, 1336, + 1355, 1364, 1372, 1385, 1398, 1411, 1420, 1430, 1440, 1447, + 1454, 1463, 1473, 1483, 1490, 1497, 1506, 1511, 1512, 1513, + 1513, 1513, 1514, 1514, 1514, 1515, 1515, 1517, 1527, 1536, + 1543, 1553, 1560, 1567, 1574, 1581, 1586, 1587, 1588, 1588, + 1589, 1589, 1590, 1590, 1591, 1592, 1593, 1594, 1595, 1596, + 1598, 1606, 1613, 1621, 1629, 1636, 1643, 1652, 1661, 1670, + 1679, 1688, 1697, 1702, 1703, 1704, 1706, 1712 }; #endif @@ -903,11 +905,11 @@ static const char *const yytname[] = "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_RATELIMIT_FACTOR", "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL", "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", "VAR_IP_FREEBIND", - "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG", "$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", + "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG", + "$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_extended_statistics", "server_port", "server_interface", "server_outgoing_interface", "server_outgoing_range", "server_outgoing_port_permit", @@ -955,17 +957,18 @@ static const char *const yytname[] = "server_local_data", "server_local_data_ptr", "server_minimal_responses", "server_rrset_roundrobin", "server_max_udp_size", "server_dns64_prefix", "server_dns64_synthall", "server_define_tag", "server_local_zone_tag", - "server_ratelimit", "server_ratelimit_size", "server_ratelimit_slabs", - "server_ratelimit_for_domain", "server_ratelimit_below_domain", - "server_ratelimit_factor", "server_qname_minimisation", "stub_name", - "stub_host", "stub_addr", "stub_first", "stub_prime", "forward_name", - "forward_host", "forward_addr", "forward_first", "rcstart", - "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", - "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", - "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", - "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", - "dt_dnstap_socket_path", "dt_dnstap_send_identity", - "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version", + "access_control_tag", "server_ratelimit", "server_ratelimit_size", + "server_ratelimit_slabs", "server_ratelimit_for_domain", + "server_ratelimit_below_domain", "server_ratelimit_factor", + "server_qname_minimisation", "stub_name", "stub_host", "stub_addr", + "stub_first", "stub_prime", "forward_name", "forward_host", + "forward_addr", "forward_first", "rcstart", "contents_rc", "content_rc", + "rc_control_enable", "rc_control_port", "rc_control_interface", + "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file", + "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt", + "content_dt", "dt_dnstap_enable", "dt_dnstap_socket_path", + "dt_dnstap_send_identity", "dt_dnstap_send_version", + "dt_dnstap_identity", "dt_dnstap_version", "dt_dnstap_log_resolver_query_messages", "dt_dnstap_log_resolver_response_messages", "dt_dnstap_log_client_query_messages", @@ -998,7 +1001,8 @@ static const yytype_uint16 yytoknum[] = 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424 + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425 }; # endif @@ -1016,23 +1020,21 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -81, 118, -81, -81, -81, -81, -81, -81, -81, -81, + -81, 119, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -12, 39, 47, 40, 36, -80, 18, 19, 20, 24, 25, 26, 69, 72, - 73, 74, 75, 80, 109, 120, 129, 130, 149, 150, - 151, 152, 153, 155, 156, 157, 158, 159, 161, 162, - 163, 164, 165, 166, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + 73, 74, 75, 80, 108, 129, 130, 150, 151, 152, + 153, 154, 156, 157, 158, 159, 161, 162, 163, 164, + 165, 166, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, @@ -1043,29 +1045,31 @@ static const yytype_int16 yypact[] = -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, 275, 276, 277, 278, 279, -81, -81, -81, -81, - -81, -81, 280, 281, 282, 283, -81, -81, -81, -81, - -81, 284, 285, 286, 287, 288, 289, 290, 291, -81, - -81, -81, -81, -81, -81, -81, -81, -81, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, 304, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, 278, 279, 280, 281, 282, -81, -81, + -81, -81, -81, -81, 283, 284, 285, 286, -81, -81, + -81, -81, -81, 287, 288, 289, 290, 291, 292, 293, + 294, -81, -81, -81, -81, -81, -81, -81, -81, -81, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, -81, -81, 307, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, 305, 306, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, 308, 309, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - 307, 308, -81, -81, -81, -81, -81, -81, -81, 309, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, 310, 311, -81, -81, -81, -81, -81, -81, + -81, 312, 313, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81 + -81, -81, -81, -81, -81, -81, -81, -81, -81 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1073,8 +1077,8 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 10, 137, 145, 284, 330, 303, 3, - 12, 139, 147, 286, 305, 332, 4, 5, 6, 8, + 2, 0, 1, 10, 138, 146, 286, 332, 305, 3, + 12, 140, 148, 288, 307, 334, 4, 5, 6, 8, 9, 7, 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, @@ -1087,42 +1091,42 @@ static const yytype_uint16 yydefact[] = 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, 11, 13, 14, 72, - 75, 84, 15, 23, 63, 16, 76, 77, 34, 56, - 71, 17, 18, 19, 20, 21, 22, 106, 107, 108, - 109, 110, 73, 62, 88, 105, 24, 25, 26, 27, - 28, 64, 78, 79, 94, 50, 60, 51, 89, 44, - 45, 46, 47, 98, 102, 114, 122, 133, 99, 57, - 29, 30, 31, 86, 115, 116, 117, 32, 33, 35, - 36, 38, 39, 37, 120, 40, 41, 42, 48, 67, - 103, 81, 121, 74, 129, 82, 83, 100, 101, 87, - 43, 65, 68, 49, 52, 90, 91, 66, 130, 92, - 53, 54, 55, 104, 93, 61, 95, 96, 97, 131, - 58, 59, 80, 69, 70, 85, 111, 112, 113, 118, - 119, 134, 135, 123, 125, 124, 126, 127, 128, 132, - 136, 0, 0, 0, 0, 0, 138, 140, 141, 142, - 144, 143, 0, 0, 0, 0, 146, 148, 149, 150, - 151, 0, 0, 0, 0, 0, 0, 0, 0, 285, - 287, 289, 288, 294, 290, 291, 292, 293, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 13, 14, + 72, 75, 84, 15, 23, 63, 16, 76, 77, 34, + 56, 71, 17, 18, 19, 20, 21, 22, 106, 107, + 108, 109, 110, 73, 62, 88, 105, 24, 25, 26, + 27, 28, 64, 78, 79, 94, 50, 60, 51, 89, + 44, 45, 46, 47, 98, 102, 114, 122, 133, 99, + 57, 29, 30, 31, 86, 115, 116, 117, 32, 33, + 35, 36, 38, 39, 37, 120, 40, 41, 42, 48, + 67, 103, 81, 121, 74, 129, 82, 83, 100, 101, + 87, 43, 65, 68, 49, 52, 90, 91, 66, 130, + 92, 53, 54, 55, 104, 93, 61, 95, 96, 97, + 131, 58, 59, 80, 69, 70, 85, 111, 112, 113, + 118, 119, 134, 135, 137, 123, 125, 124, 126, 127, + 128, 132, 136, 0, 0, 0, 0, 0, 139, 141, + 142, 143, 145, 144, 0, 0, 0, 0, 147, 149, + 150, 151, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 287, 289, 291, 290, 296, 292, 293, 294, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 304, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 0, 331, 333, 153, 152, 157, 160, - 158, 166, 167, 168, 169, 170, 171, 181, 182, 183, - 184, 185, 205, 206, 207, 212, 213, 163, 214, 215, - 218, 216, 217, 220, 221, 222, 235, 194, 195, 196, - 197, 223, 238, 190, 192, 239, 245, 246, 247, 164, - 204, 255, 256, 191, 250, 178, 159, 186, 236, 242, - 224, 0, 0, 259, 165, 154, 177, 228, 155, 161, - 162, 187, 188, 257, 226, 230, 231, 156, 260, 208, - 234, 179, 193, 240, 241, 244, 249, 189, 253, 251, - 252, 198, 203, 232, 233, 199, 200, 225, 248, 180, - 172, 173, 174, 175, 176, 261, 262, 263, 209, 210, - 211, 219, 264, 265, 227, 201, 335, 268, 270, 269, - 0, 0, 273, 229, 243, 254, 274, 202, 266, 0, - 275, 276, 277, 279, 278, 280, 281, 282, 283, 295, - 297, 296, 299, 300, 301, 302, 298, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 334, - 237, 258, 271, 272, 267 + 0, 0, 306, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 0, 333, 335, 154, 153, + 158, 161, 159, 167, 168, 169, 170, 171, 172, 182, + 183, 184, 185, 186, 206, 207, 208, 213, 214, 164, + 215, 216, 219, 217, 218, 221, 222, 223, 236, 195, + 196, 197, 198, 224, 239, 191, 193, 240, 246, 247, + 248, 165, 205, 256, 257, 192, 251, 179, 160, 187, + 237, 243, 225, 0, 0, 260, 166, 155, 178, 229, + 156, 162, 163, 188, 189, 258, 227, 231, 232, 157, + 261, 209, 235, 180, 194, 241, 242, 245, 250, 190, + 254, 252, 253, 199, 204, 233, 234, 200, 201, 226, + 249, 181, 173, 174, 175, 176, 177, 262, 263, 264, + 210, 211, 212, 220, 265, 266, 228, 202, 337, 270, + 272, 271, 0, 0, 275, 230, 244, 255, 276, 203, + 267, 0, 0, 277, 278, 279, 281, 280, 282, 283, + 284, 285, 297, 299, 298, 301, 302, 303, 304, 300, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 336, 238, 259, 273, 274, 268, 269 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1145,30 +1149,30 @@ static const yytype_int8 yypgoto[] = -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81 + -81, -81, -81, -81, -81, -81 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 9, 10, 16, 146, 11, 17, 276, 12, - 18, 286, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 277, 278, 279, 280, 281, - 287, 288, 289, 290, 13, 19, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 14, 20, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 15, 21, 334, 335, 270 + -1, 1, 9, 10, 16, 147, 11, 17, 278, 12, + 18, 288, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 279, 280, 281, 282, + 283, 289, 290, 291, 292, 13, 19, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 14, 20, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 15, 21, 336, 337, 272 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1178,39 +1182,40 @@ static const yytype_uint16 yytable[] = { 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 333, 336, 337, - 338, 49, 50, 51, 339, 340, 341, 52, 53, 54, + 42, 43, 44, 45, 46, 47, 48, 335, 338, 339, + 340, 49, 50, 51, 341, 342, 343, 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, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 271, 342, - 272, 273, 343, 344, 345, 346, 282, 93, 94, 95, - 347, 96, 97, 98, 283, 284, 99, 100, 101, 102, + 85, 86, 87, 88, 89, 90, 91, 92, 273, 344, + 274, 275, 345, 346, 347, 348, 284, 93, 94, 95, + 349, 96, 97, 98, 285, 286, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 2, 348, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 3, - 349, 291, 292, 293, 294, 295, 296, 297, 298, 350, - 351, 274, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 4, 352, - 353, 354, 355, 356, 5, 357, 358, 359, 360, 361, - 275, 362, 363, 364, 365, 366, 367, 285, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 113, 114, 115, 116, 117, 118, 119, 120, 350, 2, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 3, 293, 294, 295, 296, 297, 298, 299, 300, 351, + 352, 276, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 4, + 353, 354, 355, 356, 357, 5, 358, 359, 360, 361, + 277, 362, 363, 364, 365, 366, 367, 287, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 6, 386, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 6, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 7, 401, 402, 403, 404, 405, + 397, 398, 399, 400, 401, 7, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 8, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 8, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494 + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498 }; -static const yytype_uint8 yycheck[] = +static const yytype_int16 yycheck[] = { 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, @@ -1223,36 +1228,37 @@ static const yytype_uint8 yycheck[] = 41, 42, 10, 10, 10, 10, 39, 99, 100, 101, 10, 103, 104, 105, 47, 48, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 0, 10, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 11, - 10, 91, 92, 93, 94, 95, 96, 97, 98, 10, + 122, 123, 124, 125, 126, 127, 128, 129, 10, 0, + 132, 133, 134, 135, 136, 137, 138, 139, 140, -1, + 11, 91, 92, 93, 94, 95, 96, 97, 98, 10, 10, 102, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 40, 10, - 10, 10, 10, 10, 46, 10, 10, 10, 10, 10, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 40, + 10, 10, 10, 10, 10, 46, 10, 10, 10, 10, 131, 10, 10, 10, 10, 10, 10, 130, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 90, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 90, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 106, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 106, 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, 141, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 141, 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 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 171, 0, 11, 40, 46, 90, 106, 141, 172, - 173, 176, 179, 314, 325, 340, 174, 177, 180, 315, - 326, 341, 12, 13, 14, 15, 16, 17, 18, 19, + 0, 172, 0, 11, 40, 46, 90, 106, 141, 173, + 174, 177, 180, 316, 327, 342, 175, 178, 181, 317, + 328, 343, 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, 37, 38, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, @@ -1264,7 +1270,7 @@ static const yytype_uint16 yystos[] = 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 175, 182, 183, 184, + 164, 165, 166, 167, 168, 169, 170, 176, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, @@ -1277,13 +1283,13 @@ static const yytype_uint16 yystos[] = 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 344, 39, 41, 42, 102, 131, 178, 305, 306, 307, - 308, 309, 39, 47, 48, 130, 181, 310, 311, 312, - 313, 91, 92, 93, 94, 95, 96, 97, 98, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 107, 342, 343, 10, 10, 10, 10, + 305, 306, 346, 39, 41, 42, 102, 131, 179, 307, + 308, 309, 310, 311, 39, 47, 48, 130, 182, 312, + 313, 314, 315, 91, 92, 93, 94, 95, 96, 97, + 98, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 107, 344, 345, 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, @@ -1299,28 +1305,28 @@ static const yytype_uint16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 170, 171, 171, 172, 172, 172, 172, 172, 172, - 173, 174, 174, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 176, 177, 177, - 178, 178, 178, 178, 178, 179, 180, 180, 181, 181, - 181, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 0, 171, 172, 172, 173, 173, 173, 173, 173, 173, + 174, 175, 175, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 177, 178, + 178, 179, 179, 179, 179, 179, 180, 181, 181, 182, + 182, 182, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, @@ -1333,12 +1339,12 @@ static const yytype_uint16 yyr1[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 315, 316, 316, 316, - 316, 316, 316, 316, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 326, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 328, 329, + 310, 311, 312, 313, 314, 315, 316, 317, 317, 318, + 318, 318, 318, 318, 318, 318, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 328, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 341, 342, 343, 344 + 340, 341, 342, 343, 343, 344, 345, 346 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1357,27 +1363,27 @@ 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, 1, 1, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 2, 0, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, - 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 2, 0, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, + 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 2, 2 }; @@ -2054,15 +2060,15 @@ yyreduce: switch (yyn) { case 10: -#line 139 "./util/configparser.y" /* yacc.c:1646 */ +#line 140 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(server:)\n")); } -#line 2062 "util/configparser.c" /* yacc.c:1646 */ +#line 2068 "util/configparser.c" /* yacc.c:1646 */ break; - case 137: -#line 200 "./util/configparser.y" /* yacc.c:1646 */ + case 138: +#line 201 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2073,11 +2079,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2077 "util/configparser.c" /* yacc.c:1646 */ +#line 2083 "util/configparser.c" /* yacc.c:1646 */ break; - case 145: -#line 216 "./util/configparser.y" /* yacc.c:1646 */ + case 146: +#line 217 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2088,11 +2094,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2092 "util/configparser.c" /* yacc.c:1646 */ +#line 2098 "util/configparser.c" /* yacc.c:1646 */ break; - case 152: -#line 232 "./util/configparser.y" /* yacc.c:1646 */ + case 153: +#line 233 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2100,11 +2106,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2104 "util/configparser.c" /* yacc.c:1646 */ +#line 2110 "util/configparser.c" /* yacc.c:1646 */ break; - case 153: -#line 241 "./util/configparser.y" /* yacc.c:1646 */ + case 154: +#line 242 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2112,11 +2118,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2116 "util/configparser.c" /* yacc.c:1646 */ +#line 2122 "util/configparser.c" /* yacc.c:1646 */ break; - case 154: -#line 250 "./util/configparser.y" /* yacc.c:1646 */ + case 155: +#line 251 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2126,11 +2132,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2130 "util/configparser.c" /* yacc.c:1646 */ +#line 2136 "util/configparser.c" /* yacc.c:1646 */ break; - case 155: -#line 261 "./util/configparser.y" /* yacc.c:1646 */ + case 156: +#line 262 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2138,11 +2144,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2142 "util/configparser.c" /* yacc.c:1646 */ +#line 2148 "util/configparser.c" /* yacc.c:1646 */ break; - case 156: -#line 270 "./util/configparser.y" /* yacc.c:1646 */ + case 157: +#line 271 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2150,11 +2156,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2154 "util/configparser.c" /* yacc.c:1646 */ +#line 2160 "util/configparser.c" /* yacc.c:1646 */ break; - case 157: -#line 279 "./util/configparser.y" /* yacc.c:1646 */ + case 158: +#line 280 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2162,11 +2168,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2166 "util/configparser.c" /* yacc.c:1646 */ +#line 2172 "util/configparser.c" /* yacc.c:1646 */ break; - case 158: -#line 288 "./util/configparser.y" /* yacc.c:1646 */ + case 159: +#line 289 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -2178,11 +2184,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 2182 "util/configparser.c" /* yacc.c:1646 */ +#line 2188 "util/configparser.c" /* yacc.c:1646 */ break; - case 159: -#line 301 "./util/configparser.y" /* yacc.c:1646 */ + case 160: +#line 302 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -2196,11 +2202,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 2200 "util/configparser.c" /* yacc.c:1646 */ +#line 2206 "util/configparser.c" /* yacc.c:1646 */ break; - case 160: -#line 316 "./util/configparser.y" /* yacc.c:1646 */ + case 161: +#line 317 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2208,11 +2214,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2212 "util/configparser.c" /* yacc.c:1646 */ +#line 2218 "util/configparser.c" /* yacc.c:1646 */ break; - case 161: -#line 325 "./util/configparser.y" /* yacc.c:1646 */ + case 162: +#line 326 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -2220,11 +2226,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2224 "util/configparser.c" /* yacc.c:1646 */ +#line 2230 "util/configparser.c" /* yacc.c:1646 */ break; - case 162: -#line 334 "./util/configparser.y" /* yacc.c:1646 */ + case 163: +#line 335 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -2232,11 +2238,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2236 "util/configparser.c" /* yacc.c:1646 */ +#line 2242 "util/configparser.c" /* yacc.c:1646 */ break; - case 163: -#line 343 "./util/configparser.y" /* yacc.c:1646 */ + case 164: +#line 344 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2244,11 +2250,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2248 "util/configparser.c" /* yacc.c:1646 */ +#line 2254 "util/configparser.c" /* yacc.c:1646 */ break; - case 164: -#line 352 "./util/configparser.y" /* yacc.c:1646 */ + case 165: +#line 353 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2256,11 +2262,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2260 "util/configparser.c" /* yacc.c:1646 */ +#line 2266 "util/configparser.c" /* yacc.c:1646 */ break; - case 165: -#line 361 "./util/configparser.y" /* yacc.c:1646 */ + case 166: +#line 362 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2268,11 +2274,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2272 "util/configparser.c" /* yacc.c:1646 */ +#line 2278 "util/configparser.c" /* yacc.c:1646 */ break; - case 166: -#line 370 "./util/configparser.y" /* yacc.c:1646 */ + case 167: +#line 371 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2280,11 +2286,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2284 "util/configparser.c" /* yacc.c:1646 */ +#line 2290 "util/configparser.c" /* yacc.c:1646 */ break; - case 167: -#line 379 "./util/configparser.y" /* yacc.c:1646 */ + case 168: +#line 380 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2292,11 +2298,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2296 "util/configparser.c" /* yacc.c:1646 */ +#line 2302 "util/configparser.c" /* yacc.c:1646 */ break; - case 168: -#line 388 "./util/configparser.y" /* yacc.c:1646 */ + case 169: +#line 389 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2304,11 +2310,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2308 "util/configparser.c" /* yacc.c:1646 */ +#line 2314 "util/configparser.c" /* yacc.c:1646 */ break; - case 169: -#line 397 "./util/configparser.y" /* yacc.c:1646 */ + case 170: +#line 398 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2316,11 +2322,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2320 "util/configparser.c" /* yacc.c:1646 */ +#line 2326 "util/configparser.c" /* yacc.c:1646 */ break; - case 170: -#line 406 "./util/configparser.y" /* yacc.c:1646 */ + case 171: +#line 407 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2328,11 +2334,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2332 "util/configparser.c" /* yacc.c:1646 */ +#line 2338 "util/configparser.c" /* yacc.c:1646 */ break; - case 171: -#line 415 "./util/configparser.y" /* yacc.c:1646 */ + case 172: +#line 416 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2340,11 +2346,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2344 "util/configparser.c" /* yacc.c:1646 */ +#line 2350 "util/configparser.c" /* yacc.c:1646 */ break; - case 172: -#line 424 "./util/configparser.y" /* yacc.c:1646 */ + case 173: +#line 425 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2352,11 +2358,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2356 "util/configparser.c" /* yacc.c:1646 */ +#line 2362 "util/configparser.c" /* yacc.c:1646 */ break; - case 173: -#line 433 "./util/configparser.y" /* yacc.c:1646 */ + case 174: +#line 434 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2364,31 +2370,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2368 "util/configparser.c" /* yacc.c:1646 */ +#line 2374 "util/configparser.c" /* yacc.c:1646 */ break; - case 174: -#line 442 "./util/configparser.y" /* yacc.c:1646 */ + case 175: +#line 443 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 2378 "util/configparser.c" /* yacc.c:1646 */ +#line 2384 "util/configparser.c" /* yacc.c:1646 */ break; - case 175: -#line 449 "./util/configparser.y" /* yacc.c:1646 */ + case 176: +#line 450 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 2388 "util/configparser.c" /* yacc.c:1646 */ +#line 2394 "util/configparser.c" /* yacc.c:1646 */ break; - case 176: -#line 456 "./util/configparser.y" /* yacc.c:1646 */ + case 177: +#line 457 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2396,11 +2402,11 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2400 "util/configparser.c" /* yacc.c:1646 */ +#line 2406 "util/configparser.c" /* yacc.c:1646 */ break; - case 177: -#line 465 "./util/configparser.y" /* yacc.c:1646 */ + case 178: +#line 466 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2408,11 +2414,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2412 "util/configparser.c" /* yacc.c:1646 */ +#line 2418 "util/configparser.c" /* yacc.c:1646 */ break; - case 178: -#line 474 "./util/configparser.y" /* yacc.c:1646 */ + case 179: +#line 475 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2425,11 +2431,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2429 "util/configparser.c" /* yacc.c:1646 */ +#line 2435 "util/configparser.c" /* yacc.c:1646 */ break; - case 179: -#line 488 "./util/configparser.y" /* yacc.c:1646 */ + case 180: +#line 489 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2437,11 +2443,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2441 "util/configparser.c" /* yacc.c:1646 */ +#line 2447 "util/configparser.c" /* yacc.c:1646 */ break; - case 180: -#line 497 "./util/configparser.y" /* yacc.c:1646 */ + case 181: +#line 498 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2449,145 +2455,145 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2453 "util/configparser.c" /* yacc.c:1646 */ +#line 2459 "util/configparser.c" /* yacc.c:1646 */ break; - case 181: -#line 506 "./util/configparser.y" /* yacc.c:1646 */ + case 182: +#line 507 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 2463 "util/configparser.c" /* yacc.c:1646 */ +#line 2469 "util/configparser.c" /* yacc.c:1646 */ break; - case 182: -#line 513 "./util/configparser.y" /* yacc.c:1646 */ + case 183: +#line 514 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 2473 "util/configparser.c" /* yacc.c:1646 */ +#line 2479 "util/configparser.c" /* yacc.c:1646 */ break; - case 183: -#line 520 "./util/configparser.y" /* yacc.c:1646 */ + case 184: +#line 521 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = (yyvsp[0].str); } -#line 2483 "util/configparser.c" /* yacc.c:1646 */ +#line 2489 "util/configparser.c" /* yacc.c:1646 */ break; - case 184: -#line 527 "./util/configparser.y" /* yacc.c:1646 */ + case 185: +#line 528 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 2494 "util/configparser.c" /* yacc.c:1646 */ +#line 2500 "util/configparser.c" /* yacc.c:1646 */ break; - case 185: -#line 535 "./util/configparser.y" /* yacc.c:1646 */ + case 186: +#line 536 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 2504 "util/configparser.c" /* yacc.c:1646 */ +#line 2510 "util/configparser.c" /* yacc.c:1646 */ break; - case 186: -#line 542 "./util/configparser.y" /* yacc.c:1646 */ + case 187: +#line 543 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2514 "util/configparser.c" /* yacc.c:1646 */ +#line 2520 "util/configparser.c" /* yacc.c:1646 */ break; - case 187: -#line 549 "./util/configparser.y" /* yacc.c:1646 */ + case 188: +#line 550 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 2524 "util/configparser.c" /* yacc.c:1646 */ +#line 2530 "util/configparser.c" /* yacc.c:1646 */ break; - case 188: -#line 556 "./util/configparser.y" /* yacc.c:1646 */ + case 189: +#line 557 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2534 "util/configparser.c" /* yacc.c:1646 */ +#line 2540 "util/configparser.c" /* yacc.c:1646 */ break; - case 189: -#line 563 "./util/configparser.y" /* yacc.c:1646 */ + case 190: +#line 564 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2545 "util/configparser.c" /* yacc.c:1646 */ +#line 2551 "util/configparser.c" /* yacc.c:1646 */ break; - case 190: -#line 571 "./util/configparser.y" /* yacc.c:1646 */ + case 191: +#line 572 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2556 "util/configparser.c" /* yacc.c:1646 */ +#line 2562 "util/configparser.c" /* yacc.c:1646 */ break; - case 191: -#line 579 "./util/configparser.y" /* yacc.c:1646 */ + case 192: +#line 580 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2567 "util/configparser.c" /* yacc.c:1646 */ +#line 2573 "util/configparser.c" /* yacc.c:1646 */ break; - case 192: -#line 587 "./util/configparser.y" /* yacc.c:1646 */ + case 193: +#line 588 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2577 "util/configparser.c" /* yacc.c:1646 */ +#line 2583 "util/configparser.c" /* yacc.c:1646 */ break; - case 193: -#line 594 "./util/configparser.y" /* yacc.c:1646 */ + case 194: +#line 595 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2587 "util/configparser.c" /* yacc.c:1646 */ +#line 2593 "util/configparser.c" /* yacc.c:1646 */ break; - case 194: -#line 601 "./util/configparser.y" /* yacc.c:1646 */ + case 195: +#line 602 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2595,11 +2601,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2599 "util/configparser.c" /* yacc.c:1646 */ +#line 2605 "util/configparser.c" /* yacc.c:1646 */ break; - case 195: -#line 610 "./util/configparser.y" /* yacc.c:1646 */ + case 196: +#line 611 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2607,53 +2613,53 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2611 "util/configparser.c" /* yacc.c:1646 */ +#line 2617 "util/configparser.c" /* yacc.c:1646 */ break; - case 196: -#line 619 "./util/configparser.y" /* yacc.c:1646 */ + case 197: +#line 620 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 2621 "util/configparser.c" /* yacc.c:1646 */ +#line 2627 "util/configparser.c" /* yacc.c:1646 */ break; - case 197: -#line 626 "./util/configparser.y" /* yacc.c:1646 */ + case 198: +#line 627 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 2631 "util/configparser.c" /* yacc.c:1646 */ +#line 2637 "util/configparser.c" /* yacc.c:1646 */ break; - case 198: -#line 633 "./util/configparser.y" /* yacc.c:1646 */ + case 199: +#line 634 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 2642 "util/configparser.c" /* yacc.c:1646 */ +#line 2648 "util/configparser.c" /* yacc.c:1646 */ break; - case 199: -#line 641 "./util/configparser.y" /* yacc.c:1646 */ + case 200: +#line 642 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 2653 "util/configparser.c" /* yacc.c:1646 */ +#line 2659 "util/configparser.c" /* yacc.c:1646 */ break; - case 200: -#line 649 "./util/configparser.y" /* yacc.c:1646 */ + case 201: +#line 650 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2662,11 +2668,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2666 "util/configparser.c" /* yacc.c:1646 */ +#line 2672 "util/configparser.c" /* yacc.c:1646 */ break; - case 201: -#line 659 "./util/configparser.y" /* yacc.c:1646 */ + case 202: +#line 660 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2675,11 +2681,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2679 "util/configparser.c" /* yacc.c:1646 */ +#line 2685 "util/configparser.c" /* yacc.c:1646 */ break; - case 202: -#line 669 "./util/configparser.y" /* yacc.c:1646 */ + case 203: +#line 670 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2688,11 +2694,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2692 "util/configparser.c" /* yacc.c:1646 */ +#line 2698 "util/configparser.c" /* yacc.c:1646 */ break; - case 203: -#line 679 "./util/configparser.y" /* yacc.c:1646 */ + case 204: +#line 680 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2704,11 +2710,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2708 "util/configparser.c" /* yacc.c:1646 */ +#line 2714 "util/configparser.c" /* yacc.c:1646 */ break; - case 204: -#line 692 "./util/configparser.y" /* yacc.c:1646 */ + case 205: +#line 693 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2718,22 +2724,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2722 "util/configparser.c" /* yacc.c:1646 */ +#line 2728 "util/configparser.c" /* yacc.c:1646 */ break; - case 205: -#line 703 "./util/configparser.y" /* yacc.c:1646 */ + case 206: +#line 704 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 2733 "util/configparser.c" /* yacc.c:1646 */ +#line 2739 "util/configparser.c" /* yacc.c:1646 */ break; - case 206: -#line 711 "./util/configparser.y" /* yacc.c:1646 */ + case 207: +#line 712 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2745,11 +2751,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2749 "util/configparser.c" /* yacc.c:1646 */ +#line 2755 "util/configparser.c" /* yacc.c:1646 */ break; - case 207: -#line 724 "./util/configparser.y" /* yacc.c:1646 */ + case 208: +#line 725 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2757,11 +2763,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2761 "util/configparser.c" /* yacc.c:1646 */ +#line 2767 "util/configparser.c" /* yacc.c:1646 */ break; - case 208: -#line 733 "./util/configparser.y" /* yacc.c:1646 */ + case 209: +#line 734 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2769,11 +2775,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2773 "util/configparser.c" /* yacc.c:1646 */ +#line 2779 "util/configparser.c" /* yacc.c:1646 */ break; - case 209: -#line 742 "./util/configparser.y" /* yacc.c:1646 */ + case 210: +#line 743 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2781,11 +2787,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2785 "util/configparser.c" /* yacc.c:1646 */ +#line 2791 "util/configparser.c" /* yacc.c:1646 */ break; - case 210: -#line 751 "./util/configparser.y" /* yacc.c:1646 */ + case 211: +#line 752 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2794,11 +2800,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2798 "util/configparser.c" /* yacc.c:1646 */ +#line 2804 "util/configparser.c" /* yacc.c:1646 */ break; - case 211: -#line 761 "./util/configparser.y" /* yacc.c:1646 */ + case 212: +#line 762 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2807,22 +2813,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2811 "util/configparser.c" /* yacc.c:1646 */ +#line 2817 "util/configparser.c" /* yacc.c:1646 */ break; - case 212: -#line 771 "./util/configparser.y" /* yacc.c:1646 */ + case 213: +#line 772 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 2822 "util/configparser.c" /* yacc.c:1646 */ +#line 2828 "util/configparser.c" /* yacc.c:1646 */ break; - case 213: -#line 779 "./util/configparser.y" /* yacc.c:1646 */ + case 214: +#line 780 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2834,11 +2840,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2838 "util/configparser.c" /* yacc.c:1646 */ +#line 2844 "util/configparser.c" /* yacc.c:1646 */ break; - case 214: -#line 792 "./util/configparser.y" /* yacc.c:1646 */ + case 215: +#line 793 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2846,22 +2852,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2850 "util/configparser.c" /* yacc.c:1646 */ +#line 2856 "util/configparser.c" /* yacc.c:1646 */ break; - case 215: -#line 801 "./util/configparser.y" /* yacc.c:1646 */ + case 216: +#line 802 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2861 "util/configparser.c" /* yacc.c:1646 */ +#line 2867 "util/configparser.c" /* yacc.c:1646 */ break; - case 216: -#line 809 "./util/configparser.y" /* yacc.c:1646 */ + case 217: +#line 810 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2869,22 +2875,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2873 "util/configparser.c" /* yacc.c:1646 */ +#line 2879 "util/configparser.c" /* yacc.c:1646 */ break; - case 217: -#line 818 "./util/configparser.y" /* yacc.c:1646 */ + case 218: +#line 819 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2884 "util/configparser.c" /* yacc.c:1646 */ +#line 2890 "util/configparser.c" /* yacc.c:1646 */ break; - case 218: -#line 826 "./util/configparser.y" /* yacc.c:1646 */ + case 219: +#line 827 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2896,11 +2902,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2900 "util/configparser.c" /* yacc.c:1646 */ +#line 2906 "util/configparser.c" /* yacc.c:1646 */ break; - case 219: -#line 839 "./util/configparser.y" /* yacc.c:1646 */ + case 220: +#line 840 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2908,21 +2914,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2912 "util/configparser.c" /* yacc.c:1646 */ +#line 2918 "util/configparser.c" /* yacc.c:1646 */ break; - case 220: -#line 848 "./util/configparser.y" /* yacc.c:1646 */ + case 221: +#line 849 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 2922 "util/configparser.c" /* yacc.c:1646 */ +#line 2928 "util/configparser.c" /* yacc.c:1646 */ break; - case 221: -#line 855 "./util/configparser.y" /* yacc.c:1646 */ + case 222: +#line 856 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2931,11 +2937,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2935 "util/configparser.c" /* yacc.c:1646 */ +#line 2941 "util/configparser.c" /* yacc.c:1646 */ break; - case 222: -#line 865 "./util/configparser.y" /* yacc.c:1646 */ + case 223: +#line 866 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2944,11 +2950,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2948 "util/configparser.c" /* yacc.c:1646 */ +#line 2954 "util/configparser.c" /* yacc.c:1646 */ break; - case 223: -#line 875 "./util/configparser.y" /* yacc.c:1646 */ + case 224: +#line 876 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2957,11 +2963,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2961 "util/configparser.c" /* yacc.c:1646 */ +#line 2967 "util/configparser.c" /* yacc.c:1646 */ break; - case 224: -#line 885 "./util/configparser.y" /* yacc.c:1646 */ + case 225: +#line 886 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2970,11 +2976,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2974 "util/configparser.c" /* yacc.c:1646 */ +#line 2980 "util/configparser.c" /* yacc.c:1646 */ break; - case 225: -#line 895 "./util/configparser.y" /* yacc.c:1646 */ + case 226: +#line 896 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2983,11 +2989,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2987 "util/configparser.c" /* yacc.c:1646 */ +#line 2993 "util/configparser.c" /* yacc.c:1646 */ break; - case 226: -#line 905 "./util/configparser.y" /* yacc.c:1646 */ + case 227: +#line 906 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2996,11 +3002,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3000 "util/configparser.c" /* yacc.c:1646 */ +#line 3006 "util/configparser.c" /* yacc.c:1646 */ break; - case 227: -#line 915 "./util/configparser.y" /* yacc.c:1646 */ + case 228: +#line 916 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3009,11 +3015,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3013 "util/configparser.c" /* yacc.c:1646 */ +#line 3019 "util/configparser.c" /* yacc.c:1646 */ break; - case 228: -#line 925 "./util/configparser.y" /* yacc.c:1646 */ + case 229: +#line 926 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3022,41 +3028,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3026 "util/configparser.c" /* yacc.c:1646 */ +#line 3032 "util/configparser.c" /* yacc.c:1646 */ break; - case 229: -#line 935 "./util/configparser.y" /* yacc.c:1646 */ + case 230: +#line 936 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3036 "util/configparser.c" /* yacc.c:1646 */ +#line 3042 "util/configparser.c" /* yacc.c:1646 */ break; - case 230: -#line 942 "./util/configparser.y" /* yacc.c:1646 */ + case 231: +#line 943 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3046 "util/configparser.c" /* yacc.c:1646 */ +#line 3052 "util/configparser.c" /* yacc.c:1646 */ break; - case 231: -#line 949 "./util/configparser.y" /* yacc.c:1646 */ + case 232: +#line 950 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3056 "util/configparser.c" /* yacc.c:1646 */ +#line 3062 "util/configparser.c" /* yacc.c:1646 */ break; - case 232: -#line 956 "./util/configparser.y" /* yacc.c:1646 */ + case 233: +#line 957 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3064,11 +3070,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3068 "util/configparser.c" /* yacc.c:1646 */ +#line 3074 "util/configparser.c" /* yacc.c:1646 */ break; - case 233: -#line 965 "./util/configparser.y" /* yacc.c:1646 */ + case 234: +#line 966 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3076,11 +3082,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3080 "util/configparser.c" /* yacc.c:1646 */ +#line 3086 "util/configparser.c" /* yacc.c:1646 */ break; - case 234: -#line 974 "./util/configparser.y" /* yacc.c:1646 */ + case 235: +#line 975 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3088,21 +3094,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3092 "util/configparser.c" /* yacc.c:1646 */ +#line 3098 "util/configparser.c" /* yacc.c:1646 */ break; - case 235: -#line 983 "./util/configparser.y" /* yacc.c:1646 */ + case 236: +#line 984 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3102 "util/configparser.c" /* yacc.c:1646 */ +#line 3108 "util/configparser.c" /* yacc.c:1646 */ break; - case 236: -#line 990 "./util/configparser.y" /* yacc.c:1646 */ + case 237: +#line 991 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3111,11 +3117,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3115 "util/configparser.c" /* yacc.c:1646 */ +#line 3121 "util/configparser.c" /* yacc.c:1646 */ break; - case 237: -#line 1000 "./util/configparser.y" /* yacc.c:1646 */ + case 238: +#line 1001 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -3131,21 +3137,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 3135 "util/configparser.c" /* yacc.c:1646 */ +#line 3141 "util/configparser.c" /* yacc.c:1646 */ break; - case 238: -#line 1017 "./util/configparser.y" /* yacc.c:1646 */ + case 239: +#line 1018 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 3145 "util/configparser.c" /* yacc.c:1646 */ +#line 3151 "util/configparser.c" /* yacc.c:1646 */ break; - case 239: -#line 1024 "./util/configparser.y" /* yacc.c:1646 */ + case 240: +#line 1025 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -3162,11 +3168,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3166 "util/configparser.c" /* yacc.c:1646 */ +#line 3172 "util/configparser.c" /* yacc.c:1646 */ break; - case 240: -#line 1042 "./util/configparser.y" /* yacc.c:1646 */ + case 241: +#line 1043 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -3178,11 +3184,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3182 "util/configparser.c" /* yacc.c:1646 */ +#line 3188 "util/configparser.c" /* yacc.c:1646 */ break; - case 241: -#line 1055 "./util/configparser.y" /* yacc.c:1646 */ + case 242: +#line 1056 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -3194,11 +3200,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3198 "util/configparser.c" /* yacc.c:1646 */ +#line 3204 "util/configparser.c" /* yacc.c:1646 */ break; - case 242: -#line 1068 "./util/configparser.y" /* yacc.c:1646 */ + case 243: +#line 1069 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3206,11 +3212,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3210 "util/configparser.c" /* yacc.c:1646 */ +#line 3216 "util/configparser.c" /* yacc.c:1646 */ break; - case 243: -#line 1077 "./util/configparser.y" /* yacc.c:1646 */ + case 244: +#line 1078 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3218,11 +3224,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3222 "util/configparser.c" /* yacc.c:1646 */ +#line 3228 "util/configparser.c" /* yacc.c:1646 */ break; - case 244: -#line 1086 "./util/configparser.y" /* yacc.c:1646 */ + case 245: +#line 1087 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3230,11 +3236,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3234 "util/configparser.c" /* yacc.c:1646 */ +#line 3240 "util/configparser.c" /* yacc.c:1646 */ break; - case 245: -#line 1095 "./util/configparser.y" /* yacc.c:1646 */ + case 246: +#line 1096 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3242,11 +3248,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3246 "util/configparser.c" /* yacc.c:1646 */ +#line 3252 "util/configparser.c" /* yacc.c:1646 */ break; - case 246: -#line 1104 "./util/configparser.y" /* yacc.c:1646 */ + case 247: +#line 1105 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3255,11 +3261,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3259 "util/configparser.c" /* yacc.c:1646 */ +#line 3265 "util/configparser.c" /* yacc.c:1646 */ break; - case 247: -#line 1114 "./util/configparser.y" /* yacc.c:1646 */ + case 248: +#line 1115 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3268,11 +3274,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3272 "util/configparser.c" /* yacc.c:1646 */ +#line 3278 "util/configparser.c" /* yacc.c:1646 */ break; - case 248: -#line 1124 "./util/configparser.y" /* yacc.c:1646 */ + case 249: +#line 1125 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3280,11 +3286,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3284 "util/configparser.c" /* yacc.c:1646 */ +#line 3290 "util/configparser.c" /* yacc.c:1646 */ break; - case 249: -#line 1133 "./util/configparser.y" /* yacc.c:1646 */ + case 250: +#line 1134 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3292,21 +3298,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3296 "util/configparser.c" /* yacc.c:1646 */ +#line 3302 "util/configparser.c" /* yacc.c:1646 */ break; - case 250: -#line 1142 "./util/configparser.y" /* yacc.c:1646 */ + case 251: +#line 1143 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 3306 "util/configparser.c" /* yacc.c:1646 */ +#line 3312 "util/configparser.c" /* yacc.c:1646 */ break; - case 251: -#line 1149 "./util/configparser.y" /* yacc.c:1646 */ + case 252: +#line 1150 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3314,11 +3320,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3318 "util/configparser.c" /* yacc.c:1646 */ +#line 3324 "util/configparser.c" /* yacc.c:1646 */ break; - case 252: -#line 1158 "./util/configparser.y" /* yacc.c:1646 */ + case 253: +#line 1159 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3326,11 +3332,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3330 "util/configparser.c" /* yacc.c:1646 */ +#line 3336 "util/configparser.c" /* yacc.c:1646 */ break; - case 253: -#line 1167 "./util/configparser.y" /* yacc.c:1646 */ + case 254: +#line 1168 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3338,11 +3344,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3342 "util/configparser.c" /* yacc.c:1646 */ +#line 3348 "util/configparser.c" /* yacc.c:1646 */ break; - case 254: -#line 1176 "./util/configparser.y" /* yacc.c:1646 */ + case 255: +#line 1177 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3351,22 +3357,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3355 "util/configparser.c" /* yacc.c:1646 */ +#line 3361 "util/configparser.c" /* yacc.c:1646 */ break; - case 255: -#line 1185 "./util/configparser.y" /* yacc.c:1646 */ + case 256: +#line 1186 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3366 "util/configparser.c" /* yacc.c:1646 */ +#line 3372 "util/configparser.c" /* yacc.c:1646 */ break; - case 256: -#line 1193 "./util/configparser.y" /* yacc.c:1646 */ + case 257: +#line 1194 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3378,22 +3384,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3382 "util/configparser.c" /* yacc.c:1646 */ +#line 3388 "util/configparser.c" /* yacc.c:1646 */ break; - case 257: -#line 1206 "./util/configparser.y" /* yacc.c:1646 */ + case 258: +#line 1207 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" /* yacc.c:1646 */ +#line 3399 "util/configparser.c" /* yacc.c:1646 */ break; - case 258: -#line 1214 "./util/configparser.y" /* yacc.c:1646 */ + case 259: +#line 1215 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -3416,21 +3422,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 3420 "util/configparser.c" /* yacc.c:1646 */ +#line 3426 "util/configparser.c" /* yacc.c:1646 */ break; - case 259: -#line 1238 "./util/configparser.y" /* yacc.c:1646 */ + case 260: +#line 1239 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 3430 "util/configparser.c" /* yacc.c:1646 */ +#line 3436 "util/configparser.c" /* yacc.c:1646 */ break; - case 260: -#line 1245 "./util/configparser.y" /* yacc.c:1646 */ + case 261: +#line 1246 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -3444,11 +3450,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 3448 "util/configparser.c" /* yacc.c:1646 */ +#line 3454 "util/configparser.c" /* yacc.c:1646 */ break; - case 261: -#line 1260 "./util/configparser.y" /* yacc.c:1646 */ + case 262: +#line 1261 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3457,11 +3463,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3461 "util/configparser.c" /* yacc.c:1646 */ +#line 3467 "util/configparser.c" /* yacc.c:1646 */ break; - case 262: -#line 1270 "./util/configparser.y" /* yacc.c:1646 */ + case 263: +#line 1271 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3470,31 +3476,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3474 "util/configparser.c" /* yacc.c:1646 */ +#line 3480 "util/configparser.c" /* yacc.c:1646 */ break; - case 263: -#line 1280 "./util/configparser.y" /* yacc.c:1646 */ + case 264: +#line 1281 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3484 "util/configparser.c" /* yacc.c:1646 */ +#line 3490 "util/configparser.c" /* yacc.c:1646 */ break; - case 264: -#line 1287 "./util/configparser.y" /* yacc.c:1646 */ + case 265: +#line 1288 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 3494 "util/configparser.c" /* yacc.c:1646 */ +#line 3500 "util/configparser.c" /* yacc.c:1646 */ break; - case 265: -#line 1294 "./util/configparser.y" /* yacc.c:1646 */ + case 266: +#line 1295 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3502,11 +3508,11 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3506 "util/configparser.c" /* yacc.c:1646 */ +#line 3512 "util/configparser.c" /* yacc.c:1646 */ break; - case 266: -#line 1303 "./util/configparser.y" /* yacc.c:1646 */ + case 267: +#line 1304 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -3519,11 +3525,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3523 "util/configparser.c" /* yacc.c:1646 */ +#line 3529 "util/configparser.c" /* yacc.c:1646 */ break; - case 267: -#line 1317 "./util/configparser.y" /* yacc.c:1646 */ + case 268: +#line 1318 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -3541,11 +3547,33 @@ yyreduce: } } } -#line 3545 "util/configparser.c" /* yacc.c:1646 */ +#line 3551 "util/configparser.c" /* yacc.c:1646 */ break; - case 268: -#line 1336 "./util/configparser.y" /* yacc.c:1646 */ + case 269: +#line 1337 "./util/configparser.y" /* yacc.c:1646 */ + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + &len); + free((yyvsp[0].str)); + OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str))); + if(!bitlist) + yyerror("could not parse tags, (define-tag them first)"); + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->acl_tags, + (yyvsp[-1].str), bitlist, len)) { + yyerror("out of memory"); + free((yyvsp[-1].str)); + } + } + } +#line 3573 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 270: +#line 1356 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3553,22 +3581,22 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3557 "util/configparser.c" /* yacc.c:1646 */ +#line 3585 "util/configparser.c" /* yacc.c:1646 */ break; - case 269: -#line 1345 "./util/configparser.y" /* yacc.c:1646 */ + case 271: +#line 1365 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3568 "util/configparser.c" /* yacc.c:1646 */ +#line 3596 "util/configparser.c" /* yacc.c:1646 */ break; - case 270: -#line 1353 "./util/configparser.y" /* yacc.c:1646 */ + case 272: +#line 1373 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3580,11 +3608,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3584 "util/configparser.c" /* yacc.c:1646 */ +#line 3612 "util/configparser.c" /* yacc.c:1646 */ break; - case 271: -#line 1366 "./util/configparser.y" /* yacc.c:1646 */ + case 273: +#line 1386 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -3596,11 +3624,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 3600 "util/configparser.c" /* yacc.c:1646 */ +#line 3628 "util/configparser.c" /* yacc.c:1646 */ break; - case 272: -#line 1379 "./util/configparser.y" /* yacc.c:1646 */ + case 274: +#line 1399 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -3612,11 +3640,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 3616 "util/configparser.c" /* yacc.c:1646 */ +#line 3644 "util/configparser.c" /* yacc.c:1646 */ break; - case 273: -#line 1392 "./util/configparser.y" /* yacc.c:1646 */ + case 275: +#line 1412 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3624,11 +3652,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3628 "util/configparser.c" /* yacc.c:1646 */ +#line 3656 "util/configparser.c" /* yacc.c:1646 */ break; - case 274: -#line 1401 "./util/configparser.y" /* yacc.c:1646 */ + case 276: +#line 1421 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3637,11 +3665,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3641 "util/configparser.c" /* yacc.c:1646 */ +#line 3669 "util/configparser.c" /* yacc.c:1646 */ break; - case 275: -#line 1411 "./util/configparser.y" /* yacc.c:1646 */ + case 277: +#line 1431 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -3650,31 +3678,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 3654 "util/configparser.c" /* yacc.c:1646 */ +#line 3682 "util/configparser.c" /* yacc.c:1646 */ break; - case 276: -#line 1421 "./util/configparser.y" /* yacc.c:1646 */ + case 278: +#line 1441 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3664 "util/configparser.c" /* yacc.c:1646 */ +#line 3692 "util/configparser.c" /* yacc.c:1646 */ break; - case 277: -#line 1428 "./util/configparser.y" /* yacc.c:1646 */ + case 279: +#line 1448 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3674 "util/configparser.c" /* yacc.c:1646 */ +#line 3702 "util/configparser.c" /* yacc.c:1646 */ break; - case 278: -#line 1435 "./util/configparser.y" /* yacc.c:1646 */ + case 280: +#line 1455 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3682,11 +3710,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3686 "util/configparser.c" /* yacc.c:1646 */ +#line 3714 "util/configparser.c" /* yacc.c:1646 */ break; - case 279: -#line 1444 "./util/configparser.y" /* yacc.c:1646 */ + case 281: +#line 1464 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3695,11 +3723,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3699 "util/configparser.c" /* yacc.c:1646 */ +#line 3727 "util/configparser.c" /* yacc.c:1646 */ break; - case 280: -#line 1454 "./util/configparser.y" /* yacc.c:1646 */ + case 282: +#line 1474 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -3708,31 +3736,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 3712 "util/configparser.c" /* yacc.c:1646 */ +#line 3740 "util/configparser.c" /* yacc.c:1646 */ break; - case 281: -#line 1464 "./util/configparser.y" /* yacc.c:1646 */ + case 283: +#line 1484 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3722 "util/configparser.c" /* yacc.c:1646 */ +#line 3750 "util/configparser.c" /* yacc.c:1646 */ break; - case 282: -#line 1471 "./util/configparser.y" /* yacc.c:1646 */ + case 284: +#line 1491 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3732 "util/configparser.c" /* yacc.c:1646 */ +#line 3760 "util/configparser.c" /* yacc.c:1646 */ break; - case 283: -#line 1478 "./util/configparser.y" /* yacc.c:1646 */ + case 285: +#line 1498 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3740,19 +3768,19 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3744 "util/configparser.c" /* yacc.c:1646 */ +#line 3772 "util/configparser.c" /* yacc.c:1646 */ break; - case 284: -#line 1487 "./util/configparser.y" /* yacc.c:1646 */ + case 286: +#line 1507 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 3752 "util/configparser.c" /* yacc.c:1646 */ +#line 3780 "util/configparser.c" /* yacc.c:1646 */ break; - case 295: -#line 1498 "./util/configparser.y" /* yacc.c:1646 */ + case 297: +#line 1518 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3761,11 +3789,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3765 "util/configparser.c" /* yacc.c:1646 */ +#line 3793 "util/configparser.c" /* yacc.c:1646 */ break; - case 296: -#line 1508 "./util/configparser.y" /* yacc.c:1646 */ + case 298: +#line 1528 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3773,21 +3801,21 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3777 "util/configparser.c" /* yacc.c:1646 */ +#line 3805 "util/configparser.c" /* yacc.c:1646 */ break; - case 297: -#line 1517 "./util/configparser.y" /* yacc.c:1646 */ + case 299: +#line 1537 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3787 "util/configparser.c" /* yacc.c:1646 */ +#line 3815 "util/configparser.c" /* yacc.c:1646 */ break; - case 298: -#line 1524 "./util/configparser.y" /* yacc.c:1646 */ + case 300: +#line 1544 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3796,122 +3824,122 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3800 "util/configparser.c" /* yacc.c:1646 */ +#line 3828 "util/configparser.c" /* yacc.c:1646 */ break; - case 299: -#line 1534 "./util/configparser.y" /* yacc.c:1646 */ + case 301: +#line 1554 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 3810 "util/configparser.c" /* yacc.c:1646 */ +#line 3838 "util/configparser.c" /* yacc.c:1646 */ break; - case 300: -#line 1541 "./util/configparser.y" /* yacc.c:1646 */ + case 302: +#line 1561 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 3820 "util/configparser.c" /* yacc.c:1646 */ +#line 3848 "util/configparser.c" /* yacc.c:1646 */ break; - case 301: -#line 1548 "./util/configparser.y" /* yacc.c:1646 */ + case 303: +#line 1568 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 3830 "util/configparser.c" /* yacc.c:1646 */ +#line 3858 "util/configparser.c" /* yacc.c:1646 */ break; - case 302: -#line 1555 "./util/configparser.y" /* yacc.c:1646 */ + case 304: +#line 1575 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 3840 "util/configparser.c" /* yacc.c:1646 */ +#line 3868 "util/configparser.c" /* yacc.c:1646 */ break; - case 303: -#line 1562 "./util/configparser.y" /* yacc.c:1646 */ + case 305: +#line 1582 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 3848 "util/configparser.c" /* yacc.c:1646 */ +#line 3876 "util/configparser.c" /* yacc.c:1646 */ break; - case 318: -#line 1579 "./util/configparser.y" /* yacc.c:1646 */ + case 320: +#line 1599 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); } -#line 3859 "util/configparser.c" /* yacc.c:1646 */ +#line 3887 "util/configparser.c" /* yacc.c:1646 */ break; - case 319: -#line 1587 "./util/configparser.y" /* yacc.c:1646 */ + case 321: +#line 1607 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 3869 "util/configparser.c" /* yacc.c:1646 */ +#line 3897 "util/configparser.c" /* yacc.c:1646 */ break; - case 320: -#line 1594 "./util/configparser.y" /* yacc.c:1646 */ + case 322: +#line 1614 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); } -#line 3880 "util/configparser.c" /* yacc.c:1646 */ +#line 3908 "util/configparser.c" /* yacc.c:1646 */ break; - case 321: -#line 1602 "./util/configparser.y" /* yacc.c:1646 */ + case 323: +#line 1622 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); } -#line 3891 "util/configparser.c" /* yacc.c:1646 */ +#line 3919 "util/configparser.c" /* yacc.c:1646 */ break; - case 322: -#line 1610 "./util/configparser.y" /* yacc.c:1646 */ + case 324: +#line 1630 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 3901 "util/configparser.c" /* yacc.c:1646 */ +#line 3929 "util/configparser.c" /* yacc.c:1646 */ break; - case 323: -#line 1617 "./util/configparser.y" /* yacc.c:1646 */ + case 325: +#line 1637 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 3911 "util/configparser.c" /* yacc.c:1646 */ +#line 3939 "util/configparser.c" /* yacc.c:1646 */ break; - case 324: -#line 1624 "./util/configparser.y" /* yacc.c:1646 */ + case 326: +#line 1644 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3919,11 +3947,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_resolver_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 3923 "util/configparser.c" /* yacc.c:1646 */ +#line 3951 "util/configparser.c" /* yacc.c:1646 */ break; - case 325: -#line 1633 "./util/configparser.y" /* yacc.c:1646 */ + case 327: +#line 1653 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3931,11 +3959,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_resolver_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 3935 "util/configparser.c" /* yacc.c:1646 */ +#line 3963 "util/configparser.c" /* yacc.c:1646 */ break; - case 326: -#line 1642 "./util/configparser.y" /* yacc.c:1646 */ + case 328: +#line 1662 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3943,11 +3971,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_client_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 3947 "util/configparser.c" /* yacc.c:1646 */ +#line 3975 "util/configparser.c" /* yacc.c:1646 */ break; - case 327: -#line 1651 "./util/configparser.y" /* yacc.c:1646 */ + case 329: +#line 1671 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3955,11 +3983,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_client_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 3959 "util/configparser.c" /* yacc.c:1646 */ +#line 3987 "util/configparser.c" /* yacc.c:1646 */ break; - case 328: -#line 1660 "./util/configparser.y" /* yacc.c:1646 */ + case 330: +#line 1680 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3967,11 +3995,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_forwarder_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 3971 "util/configparser.c" /* yacc.c:1646 */ +#line 3999 "util/configparser.c" /* yacc.c:1646 */ break; - case 329: -#line 1669 "./util/configparser.y" /* yacc.c:1646 */ + case 331: +#line 1689 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3979,29 +4007,29 @@ yyreduce: else cfg_parser->cfg->dnstap_log_forwarder_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 3983 "util/configparser.c" /* yacc.c:1646 */ +#line 4011 "util/configparser.c" /* yacc.c:1646 */ break; - case 330: -#line 1678 "./util/configparser.y" /* yacc.c:1646 */ + case 332: +#line 1698 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 3991 "util/configparser.c" /* yacc.c:1646 */ +#line 4019 "util/configparser.c" /* yacc.c:1646 */ break; - case 334: -#line 1687 "./util/configparser.y" /* yacc.c:1646 */ + case 336: +#line 1707 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->python_script); cfg_parser->cfg->python_script = (yyvsp[0].str); } -#line 4001 "util/configparser.c" /* yacc.c:1646 */ +#line 4029 "util/configparser.c" /* yacc.c:1646 */ break; - case 335: -#line 1693 "./util/configparser.y" /* yacc.c:1646 */ + case 337: +#line 1713 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4010,11 +4038,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4014 "util/configparser.c" /* yacc.c:1646 */ +#line 4042 "util/configparser.c" /* yacc.c:1646 */ break; -#line 4018 "util/configparser.c" /* yacc.c:1646 */ +#line 4046 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4242,7 +4270,7 @@ yyreturn: #endif return yyresult; } -#line 1701 "./util/configparser.y" /* yacc.c:1906 */ +#line 1721 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 40f157e9a..ef1282859 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -211,7 +211,8 @@ extern int yydebug; VAR_QNAME_MINIMISATION = 421, VAR_IP_FREEBIND = 422, VAR_DEFINE_TAG = 423, - VAR_LOCAL_ZONE_TAG = 424 + VAR_LOCAL_ZONE_TAG = 424, + VAR_ACCESS_CONTROL_TAG = 425 }; #endif /* Tokens. */ @@ -382,6 +383,7 @@ extern int yydebug; #define VAR_IP_FREEBIND 422 #define VAR_DEFINE_TAG 423 #define VAR_LOCAL_ZONE_TAG 424 +#define VAR_ACCESS_CONTROL_TAG 425 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -392,7 +394,7 @@ union YYSTYPE char* str; -#line 396 "util/configparser.h" /* yacc.c:1909 */ +#line 398 "util/configparser.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 4ff18f0ce..adaf01f84 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -126,6 +126,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN VAR_RATELIMIT_FACTOR %token VAR_CAPS_WHITELIST VAR_CACHE_MAX_NEGATIVE_TTL VAR_PERMIT_SMALL_HOLDDOWN %token VAR_QNAME_MINIMISATION VAR_IP_FREEBIND VAR_DEFINE_TAG VAR_LOCAL_ZONE_TAG +%token VAR_ACCESS_CONTROL_TAG %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -194,7 +195,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_caps_whitelist | server_cache_max_negative_ttl | server_permit_small_holddown | server_qname_minimisation | server_ip_freebind | server_define_tag | server_local_zone_tag | - server_disable_dnssec_lame_check + server_disable_dnssec_lame_check | access_control_tag ; stubstart: VAR_STUB_ZONE { @@ -1332,6 +1333,25 @@ server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG } } ; +access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3, + &len); + free($3); + OUTYY(("P(server_access_control_tag:%s)\n", $2)); + if(!bitlist) + yyerror("could not parse tags, (define-tag them first)"); + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->acl_tags, + $2, bitlist, len)) { + yyerror("out of memory"); + free($2); + } + } + } + ; server_ratelimit: VAR_RATELIMIT STRING_ARG { OUTYY(("P(server_ratelimit:%s)\n", $2)); diff --git a/util/storage/dnstree.c b/util/storage/dnstree.c index 0df490ee5..7664c479d 100644 --- a/util/storage/dnstree.c +++ b/util/storage/dnstree.c @@ -231,6 +231,19 @@ struct addr_tree_node* addr_tree_lookup(rbtree_t* tree, return result; } +struct addr_tree_node* addr_tree_find(rbtree_t* tree, + struct sockaddr_storage* addr, socklen_t addrlen, int net) +{ + rbnode_t* res = NULL; + struct addr_tree_node key; + key.node.key = &key; + memcpy(&key.addr, addr, addrlen); + key.addrlen = addrlen; + key.net = net; + res = rbtree_search(tree, &key); + return (struct addr_tree_node*)res; +} + int name_tree_next_root(rbtree_t* tree, uint16_t* dclass) { diff --git a/util/storage/dnstree.h b/util/storage/dnstree.h index ec8189100..792f39110 100644 --- a/util/storage/dnstree.h +++ b/util/storage/dnstree.h @@ -183,6 +183,18 @@ void addr_tree_init_parents(rbtree_t* tree); struct addr_tree_node* addr_tree_lookup(rbtree_t* tree, struct sockaddr_storage* addr, socklen_t addrlen); +/** + * Find element in addr tree. (search a netblock, not a match for an address) + * @param tree: addr tree + * @param addr: netblock to lookup. + * @param addrlen: length of addr + * @param net: size of subnet + * @return addr tree element, or NULL if not found. + */ +struct addr_tree_node* addr_tree_find(rbtree_t* tree, + struct sockaddr_storage* addr, socklen_t addrlen, int net); + + /** compare name tree nodes */ int name_tree_compare(const void* k1, const void* k2);