From 416129dedb94a51a375f00e03e5af16e73c872bd Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Tue, 20 Nov 2007 14:48:33 +0000 Subject: [PATCH] localzone and localdata configuration setup. git-svn-id: file:///svn/unbound/trunk@771 be551aaa-1e26-0410-a405-d3ace91eadb9 --- checkconf/unbound-checkconf.c | 8 +- daemon/acl_list.c | 6 +- doc/Changelog | 4 + doc/example.conf | 29 + doc/unbound.conf.5 | 94 +++ util/config_file.c | 38 +- util/config_file.h | 46 +- util/configlexer.c | 1178 +++++++++++++++++---------------- util/configlexer.lex | 2 + util/configparser.c | 600 +++++++++-------- util/configparser.h | 8 +- util/configparser.y | 38 +- 12 files changed, 1162 insertions(+), 889 deletions(-) diff --git a/checkconf/unbound-checkconf.c b/checkconf/unbound-checkconf.c index 8f1cb9ec6..df1938042 100644 --- a/checkconf/unbound-checkconf.c +++ b/checkconf/unbound-checkconf.c @@ -92,7 +92,7 @@ morechecks(struct config_file* cfg) int i; struct sockaddr_storage a; socklen_t alen; - struct config_acl* acl; + struct config_str2list* acl; for(i=0; inum_ifs; i++) { if(!ipstrtoaddr(cfg->ifs[i], UNBOUND_DNS_PORT, &a, &alen)) { fatal_exit("cannot parse interface specified as '%s'", @@ -107,10 +107,10 @@ morechecks(struct config_file* cfg) } } for(acl=cfg->acls; acl; acl = acl->next) { - if(!netblockstrtoaddr(acl->address, UNBOUND_DNS_PORT, - &a, &alen, &i)) { + if(!netblockstrtoaddr(acl->str, UNBOUND_DNS_PORT, &a, &alen, + &i)) { fatal_exit("cannot parse access control address %s %s", - acl->address, acl->control); + acl->str, acl->str2); } } diff --git a/daemon/acl_list.c b/daemon/acl_list.c index 366e35e0a..09104763f 100644 --- a/daemon/acl_list.c +++ b/daemon/acl_list.c @@ -144,10 +144,10 @@ acl_list_str_cfg(struct acl_list* acl, const char* str, const char* s2, static int read_acl_list(struct acl_list* acl, struct config_file* cfg) { - struct config_acl* p; + struct config_str2list* p; for(p = cfg->acls; p; p = p->next) { - log_assert(p->address && p->control); - if(!acl_list_str_cfg(acl, p->address, p->control, 1)) + log_assert(p->str && p->str2); + if(!acl_list_str_cfg(acl, p->str, p->str2, 1)) return 0; } return 1; diff --git a/doc/Changelog b/doc/Changelog index 94b644832..acb3aa8af 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +20 November 2007: Wouter + - 0.8 - str2list config support for double string config options. + - local-zone and local-data options, config storage and documentation. + 19 November 2007: Wouter - do not downcase NSEC and RRSIG for verification. Follows draft-ietf-dnsext-dnssec-bis-updates-06.txt. diff --git a/doc/example.conf b/doc/example.conf index 80ce19efa..c62e8cb04 100644 --- a/doc/example.conf +++ b/doc/example.conf @@ -255,6 +255,35 @@ server: # more slabs reduce lock contention, but fragment memory usage. # key-cache-slabs: 4 + # a number of locally served zones can be configured. + # local-zone: + # local-data: "" + # o deny serves local data (if any), else, drops queries. + # o refuse serves local data (if any), else, replies with error. + # o static serves local data, else, nxdomain or nodata answer. + # o transparent serves local data, else, resolves normally . + # o redirect serves the zone data for any subdomain in the zone. + # o nodefault can be used to normally resolve AS112 zones. + # + # defaults are localhost address, reverse for 127.0.0.1 and ::1 + # and nxdomain for AS112 zones. If you configure one of these zones + # the default content is omitted, or you can omit it with 'nodefault'. + # + # If you configure local-data without specifying local-zone, by + # default a transparent local-zone is created for the data. + # + # You can add locally served data with + # local-zone: "local." static + # local-data: "mycomputer.local. IN A 192.0.2.51" + # + # You can override certain queries with + # local-data: "adserver.example.com A 127.0.0.1" + # + # You can redirect a domain to a fixed address with + # (this makes example.com, www.example.com, etc, all go to 192.0.2.3) + # local-zone: "example.com" redirect + # local-data: "example.com A 192.0.2.3" + # Stub zones. # Create entries like below, to make all queries for 'example.com' and diff --git a/doc/unbound.conf.5 b/doc/unbound.conf.5 index ade71d4df..e9a0f43a8 100644 --- a/doc/unbound.conf.5 +++ b/doc/unbound.conf.5 @@ -321,6 +321,100 @@ Number of bytes size of the key cache. Default is 4 megabytes. Number of slabs in the key cache. Slabs reduce lock contention by threads. Must be set to a power of 2. Setting (close) to the number of cpus is a reasonable guess. +.It \fBlocal-zone:\fR +Configure a local zone. The type determines the answer to give if there is +no match from local-data. The types are deny, refuse, static, transparent, +redirect, nodefault, and are explained below. After that the default settings +are listed. Use local-data: to enter data into the local zone. Answers for +local zones are authoritative DNS answers. +.Bl -tag -width indent +.It \fIdeny\fR +Do not send an answer, drop the query. +If there is a match from local data, the query is answered. +.It \fIrefuse\fR +Send an error message reply, with rcode REFUSED. +If there is a match from local data, the query is answered. +.It \fIstatic\fR +If there is a match from local data, the query is answered. +Otherwise, the query is answered with nodata or nxdomain. +For a negative answer a SOA is included in the answer if present +as local-data for the zone apex domain. +.It \fItransparent\fR +If there is a match from local data, the query is answered. +Otherwise, the query is resolved normally. +If no local-zone is given local-data causes a transparent zone +to be created by default. +.It \fIredirect\fR +The query is answered from the local data for the zone name. +There may be no local data beneath the zone name. +This answers queries for the zone, and all subdomains of the zone +with the local data for the zone. +It can be used to redirect a domain to a different address, with +local-zone: "example.com." redirect and +local-data: "example.com. A 127.0.0.1" +queries for www.example.com and www.foo.example.com are redirected. +.It \fInodefault\fR +Used to turn off default contents for AS112 zones. The other types +also turn off default contents for the zone. The 'nodefault' option +has no other effect than turning off default contents for the +given zone. +.El +The default zones are localhost, reverse 127.0.0.1 and ::1, and the AS112 +zones. The AS112 zones are reverse DNS zones for private use and reserved +IP addresses for which the servers on the internet cannot provide correct +answers. They are configured by default to give nxdomain (no reverse +information) answers. The defaults can be turned off by specifying your +own local-zone of that name, or using the 'nodefault' type. Below is a +list of the default zone contents. +.Bl -tag -width indent +.It \fIlocalhost\fR +The IP4 and IP6 localhost information is given. NS and SOA records are provided +for completeness and to satisfy some DNS update tools. Default content: +.nf +local-zone: "localhost." static +local-data: "localhost. 10800 IN NS localhost." +local-data: "localhost. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" +local-data: "localhost. 10800 IN A 127.0.0.1" +local-data: "localhost. 10800 IN AAAA ::1" +.fi +.It \fIreverse IPv4 loopback\fR +Default content: +.nf +local-zone: "127.in-addr.arpa." static +local-data: "127.in-addr.arpa. 10800 IN NS localhost." +local-data: "127.in-addr.arpa. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" +local-data: "1.0.0.127.in-addr.arpa. 10800 IN PTR localhost." +.fi +.It \fIreverse IPv6 loopback\fR +Default content: +.nf +local-zone: "1.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.ip6.arpa." static +local-data: "1.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.ip6.arpa. 10800 IN NS localhost." +local-data: "1.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.ip6.arpa. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" +local-data: "1.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.ip6.arpa. 10800 IN PTR localhost." +.fi +.It \fIreverse RFC1918 local use zones\fR +Reverse data for zones 10.IN-ADDR.ARPA, 16.172.IN-ADDR.ARPA to +31.172.IN-ADDR.ARPA, 168.192.IN-ADDR.ARPA. +The \fBlocal-zone:\fR is set static and as \fBlocal-data:\fR SOA and NS +records are provided. +.It \fIreverse RFC3330 IP4 this, link-local, testnet and broadcast\fR +Reverse data for zones 0.IN-ADDR.ARPA, 254.169.IN-ADDR.ARPA, +2.0.192.IN-ADDR.ARPA, 255.255.255.255.IN-ADDR.ARPA. +.It \fIreverse RFC4291 IP6 unspecified\fR +Reverse data for zone 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.IP6.ARPA. +.It \fIreverse RFC4193 IPv6 Locally Assigned Local Addresses\fR +Reverse data for zone D.F.IP6.ARPA. +.It \fIreverse RFC4291 IPv6 Link Local Addresses\fR +Reverse data for zones 8.E.F.IP6.ARPA to B.E.F.IP6.ARPA. +.El +.\" End of local-zone listing. +.It \fBlocal-data:\fR "" +Configure local data, which is served in reply to queries for it. +The query has to match exactly unless you configure the local-zone as +redirect. If not matched exactly, the local-zone type determines +further processing. If local-data is configured that is not a subdomain of +a local-zone, a transparent local-zone is configured. .El .Ss Stub Zone Options There may be multiple diff --git a/util/config_file.c b/util/config_file.c index 16ca3e99e..61177f709 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -127,6 +127,9 @@ config_create() cfg->val_permissive_mode = 0; cfg->key_cache_size = 4 * 1024 * 1024; cfg->key_cache_slabs = 4; + cfg->local_zones = NULL; + cfg->local_zones_nodefault = NULL; + cfg->local_data = NULL; if(!(cfg->module_conf = strdup("validator iterator"))) goto error_exit; if(!(cfg->val_nsec3_key_iterations = strdup("1024 150 2048 500 4096 2500"))) goto error_exit; @@ -172,8 +175,7 @@ config_read(struct config_file* cfg, char* filename) return 1; } -/** delete config strlist */ -static void +void config_delstrlist(struct config_strlist* p) { struct config_strlist *np; @@ -185,15 +187,14 @@ config_delstrlist(struct config_strlist* p) } } -/** delete config acl list */ -static void -config_delacllist(struct config_acl* p) +void +config_deldblstrlist(struct config_str2list* p) { - struct config_acl *np; + struct config_str2list *np; while(p) { np = p->next; - free(p->address); - free(p->control); + free(p->str); + free(p->str2); free(p); p = np; } @@ -246,8 +247,11 @@ config_delete(struct config_file* cfg) config_delstrlist(cfg->trust_anchor_file_list); config_delstrlist(cfg->trusted_keys_file_list); config_delstrlist(cfg->trust_anchor_list); - config_delacllist(cfg->acls); + config_deldblstrlist(cfg->acls); free(cfg->val_nsec3_key_iterations); + config_deldblstrlist(cfg->local_zones); + config_delstrlist(cfg->local_zones_nodefault); + config_delstrlist(cfg->local_data); free(cfg); } @@ -297,6 +301,22 @@ cfg_strlist_insert(struct config_strlist** head, char* item) return 1; } +int +cfg_str2list_insert(struct config_str2list** head, char* item, char* i2) +{ + struct config_str2list *s; + if(!item || !i2 || !head) + return 0; + s = (struct config_str2list*)calloc(1, sizeof(struct config_str2list)); + if(!s) + return 0; + s->str = item; + s->str2 = i2; + s->next = *head; + *head = s; + return 1; +} + uint32_t cfg_convert_timeval(const char* str) { diff --git a/util/config_file.h b/util/config_file.h index b9e90022b..4dcf05ece 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -43,7 +43,7 @@ #define UTIL_CONFIG_FILE_H struct config_stub; struct config_strlist; -struct config_acl; +struct config_str2list; /** * The configuration options. @@ -122,7 +122,7 @@ struct config_file { /** list of donotquery addresses, linked list */ struct config_strlist* donotqueryaddrs; /** list of access control entries, linked list */ - struct config_acl* acls; + struct config_str2list* acls; /** use default localhost donotqueryaddr entries */ int donotquery_localhost; @@ -186,6 +186,13 @@ struct config_file { /** slabs in the key cache. */ size_t key_cache_slabs; + /** local zones config */ + struct config_str2list* local_zones; + /** local zones nodefault list */ + struct config_strlist* local_zones_nodefault; + /** local data RRs configged */ + struct config_strlist* local_data; + /** daemonize, i.e. fork into the background. */ int do_daemonize; }; @@ -215,15 +222,15 @@ struct config_strlist { }; /** - * List of access control options + * List of two strings for config options */ -struct config_acl { +struct config_str2list { /** next item in list */ - struct config_acl* next; - /** ip addr string */ - char* address; - /** control string */ - char* control; + struct config_str2list* next; + /** first string */ + char* str; + /** second string */ + char* str2; }; /** @@ -260,6 +267,27 @@ void config_apply(struct config_file* config); */ int cfg_strlist_insert(struct config_strlist** head, char* item); +/** + * Insert string into str2list. + * @param head: pointer to str2list head variable. + * @param item: new item. malloced by caller. If NULL the insertion fails. + * @param item: 2nd string, malloced by caller. If NULL the insertion fails. + * @return: true on success. + */ +int cfg_str2list_insert(struct config_str2list** head, char* item, char* i2); + +/** + * Delete items in config string list. + * @param list: list. + */ +void config_delstrlist(struct config_strlist* list); + +/** + * Delete items in config double string list. + * @param list: list. + */ +void config_deldblstrlist(struct config_str2list* list); + /** * Convert 14digit to time value * @param str: string of 14 digits diff --git a/util/configlexer.c b/util/configlexer.c index 817bfe46d..12a07d211 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -365,8 +365,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 80 -#define YY_END_OF_BUFFER 81 +#define YY_NUM_RULES 82 +#define YY_END_OF_BUFFER 83 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -374,86 +374,88 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[709] = +static yyconst flex_int16_t yy_accept[723] = { 0, - 1, 1, 68, 68, 72, 72, 76, 76, 81, 79, - 1, 66, 67, 2, 80, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 68, 69, 80, 70, 80, 75, 72, 73, - 74, 80, 76, 77, 78, 80, 79, 0, 1, 2, - 2, 2, 2, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 68, 0, 75, 0, 72, 76, 0, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 41, 79, 79, 79, 79, - 6, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 17, 79, 11, 12, 79, 14, 13, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 3, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - - 71, 79, 79, 79, 79, 79, 79, 20, 79, 79, - 79, 79, 79, 79, 21, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 53, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 52, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 18, 79, 79, - 79, 79, 79, 79, 79, 79, 19, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 15, 79, 79, 79, 79, 79, 79, 79, 79, - - 79, 79, 79, 79, 42, 43, 40, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 5, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 22, 79, 79, 79, 79, 65, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 38, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 4, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 45, 46, 44, 79, 79, 79, - - 79, 51, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 57, 79, 79, 79, 79, 79, 79, 79, - 28, 79, 79, 79, 79, 79, 50, 79, 79, 79, - 79, 79, 79, 79, 79, 54, 79, 79, 79, 79, - 79, 79, 7, 79, 79, 79, 79, 79, 79, 59, - 79, 79, 79, 79, 49, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 29, 30, 62, 79, 79, 24, - 79, 79, 79, 79, 8, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - - 79, 79, 79, 63, 23, 25, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 10, 79, 79, 79, 79, 79, 9, - 26, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 31, 79, 79, 27, - 79, 55, 56, 79, 79, 58, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 16, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 35, 79, - 79, 61, 47, 79, 79, 37, 36, 79, 32, 79, - 60, 79, 79, 79, 33, 79, 79, 48, 39, 34, - - 79, 79, 79, 79, 79, 79, 64, 0 + 1, 1, 70, 70, 74, 74, 78, 78, 83, 81, + 1, 68, 69, 2, 82, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 70, 71, 82, 72, 82, 77, 74, 75, + 76, 82, 78, 79, 80, 82, 81, 0, 1, 2, + 2, 2, 2, 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, 70, 0, 77, 0, 74, 78, 0, 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, 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, 41, 81, + 81, 81, 81, 6, 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, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 17, 81, 11, + 12, 81, 14, 13, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 3, 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, 73, 81, 81, 81, + 81, 81, 81, 81, 81, 20, 81, 81, 81, 81, + 81, 81, 21, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 53, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 52, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 18, 81, 81, + 81, 81, 81, 81, 81, 81, 19, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + + 81, 15, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 42, 43, 40, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 5, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 67, 66, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 22, 81, 81, + 81, 81, 65, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 38, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 4, 81, 81, 81, 81, 81, 81, 81, 81, + + 81, 81, 81, 81, 81, 81, 81, 81, 45, 46, + 44, 81, 81, 81, 81, 51, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 57, 81, 81, 81, + 81, 81, 81, 81, 28, 81, 81, 81, 81, 81, + 50, 81, 81, 81, 81, 81, 81, 81, 81, 54, + 81, 81, 81, 81, 81, 81, 7, 81, 81, 81, + 81, 81, 81, 59, 81, 81, 81, 81, 49, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 29, 30, + 62, 81, 81, 24, 81, 81, 81, 81, 8, 81, + + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 63, 23, 25, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 10, 81, 81, + 81, 81, 81, 9, 26, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 31, 81, 81, 27, 81, 55, 56, 81, 81, 58, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 16, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 35, 81, 81, 61, 47, 81, 81, 37, + + 36, 81, 32, 81, 60, 81, 81, 81, 33, 81, + 81, 48, 39, 34, 81, 81, 81, 81, 81, 81, + 64, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -496,173 +498,177 @@ static yyconst flex_int32_t yy_meta[38] = 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[718] = +static yyconst flex_int16_t yy_base[732] = { 0, - 0, 0, 35, 38, 49, 53, 59, 63, 1441, 1428, - 42, 1442, 1442, 68, 72, 34, 66, 69, 33, 70, + 0, 0, 35, 38, 49, 53, 59, 63, 1469, 1456, + 42, 1470, 1470, 68, 72, 34, 66, 69, 33, 70, 72, 75, 73, 77, 81, 84, 88, 86, 89, 92, - 96, 105, 1427, 1442, 1442, 1442, 106, 1426, 1435, 1442, - 1442, 123, 1424, 1442, 1442, 119, 1423, 127, 128, 0, + 96, 105, 1455, 1470, 1470, 1470, 106, 1454, 1463, 1470, + 1470, 123, 1452, 1470, 1470, 119, 1451, 127, 128, 0, 131, 0, 0, 125, 126, 90, 127, 135, 132, 133, - 134, 136, 137, 139, 145, 142, 147, 148, 153, 151, - 155, 157, 158, 161, 164, 162, 166, 167, 168, 169, - 171, 1422, 183, 1421, 199, 1430, 1419, 185, 185, 186, - 184, 195, 193, 196, 197, 199, 203, 208, 207, 205, - - 214, 211, 215, 225, 221, 228, 227, 230, 229, 231, - 232, 233, 238, 239, 241, 247, 249, 243, 251, 252, - 253, 255, 256, 260, 262, 266, 272, 263, 280, 276, - 277, 278, 281, 279, 283, 48, 287, 289, 285, 288, - 294, 293, 300, 306, 303, 305, 314, 311, 312, 315, - 313, 334, 318, 319, 317, 325, 321, 323, 341, 324, - 329, 330, 346, 351, 350, 352, 353, 356, 360, 362, - 366, 358, 370, 354, 372, 1418, 376, 377, 378, 379, - 1417, 380, 386, 382, 383, 392, 398, 389, 394, 400, - 401, 397, 402, 404, 406, 405, 421, 410, 418, 420, - - 426, 428, 435, 432, 437, 429, 443, 440, 441, 439, - 442, 448, 449, 450, 453, 454, 467, 463, 465, 466, - 455, 464, 470, 473, 476, 481, 474, 483, 484, 490, - 486, 488, 489, 491, 493, 494, 496, 504, 495, 502, - 505, 510, 514, 1416, 506, 1415, 1414, 508, 1413, 1412, - 521, 522, 520, 517, 519, 528, 530, 531, 535, 538, - 541, 542, 546, 548, 547, 552, 554, 556, 555, 558, - 559, 563, 1411, 565, 566, 567, 568, 570, 578, 575, - 576, 577, 587, 579, 585, 589, 590, 592, 593, 594, - 595, 596, 598, 600, 603, 604, 610, 608, 611, 625, - - 1410, 620, 627, 622, 626, 628, 631, 1409, 632, 634, - 637, 635, 647, 650, 1408, 641, 649, 651, 643, 653, - 654, 661, 655, 656, 667, 657, 663, 673, 671, 672, - 674, 1407, 677, 683, 680, 682, 685, 686, 691, 684, - 692, 693, 694, 695, 697, 1406, 696, 699, 701, 711, - 704, 718, 715, 717, 724, 721, 723, 722, 725, 730, - 733, 741, 745, 729, 742, 746, 747, 1405, 757, 758, - 760, 756, 749, 762, 759, 763, 1404, 764, 766, 768, - 771, 769, 772, 773, 774, 776, 775, 779, 783, 795, - 797, 1403, 793, 794, 801, 798, 802, 803, 804, 805, - - 808, 806, 810, 813, 1402, 1401, 1400, 812, 814, 819, - 824, 826, 829, 827, 831, 832, 1399, 834, 833, 836, - 838, 839, 841, 842, 849, 854, 844, 853, 856, 861, - 862, 864, 865, 866, 867, 868, 870, 885, 888, 871, - 882, 874, 889, 1398, 897, 893, 878, 896, 1397, 898, - 899, 900, 904, 906, 907, 908, 916, 913, 923, 925, - 926, 1396, 932, 933, 910, 931, 940, 936, 918, 920, - 938, 941, 943, 944, 945, 951, 946, 1395, 955, 962, - 948, 958, 956, 964, 973, 971, 969, 975, 976, 982, - 978, 981, 984, 985, 1394, 1393, 1392, 993, 987, 989, - - 995, 1391, 990, 997, 1001, 1002, 1004, 1005, 1006, 1008, - 1018, 1007, 1014, 1020, 1023, 1012, 1024, 1026, 1030, 1027, - 1031, 1033, 1390, 1034, 1042, 1044, 1037, 1045, 1047, 1051, - 1389, 1054, 1048, 1056, 1057, 1059, 1388, 1060, 1061, 1064, - 1065, 1068, 1070, 1072, 1075, 1387, 1078, 1081, 1082, 1084, - 1085, 1086, 1386, 1088, 1090, 1094, 1092, 1096, 1098, 1385, - 1097, 1099, 1102, 1109, 1384, 1110, 1117, 1111, 1113, 1119, - 1112, 1121, 1123, 1122, 1383, 1382, 1381, 1129, 1133, 1380, - 1135, 1141, 1137, 1139, 1379, 1140, 1142, 1146, 1147, 1148, - 1143, 1149, 1150, 1151, 1153, 1155, 1160, 1161, 1162, 1165, - - 1171, 1167, 1168, 1378, 1377, 1376, 1172, 1173, 1183, 1185, - 1175, 1179, 1187, 1189, 1190, 1195, 1196, 1197, 1198, 1199, - 1205, 1206, 1207, 1375, 1202, 1208, 1213, 1209, 1218, 1374, - 1372, 1222, 1224, 1229, 1231, 1219, 1238, 1235, 1236, 1225, - 1237, 1239, 1241, 1242, 1244, 1247, 1364, 1248, 1250, 1348, - 1251, 1347, 1346, 1255, 1252, 1345, 1257, 1258, 1259, 1263, - 1264, 1269, 1260, 1268, 1272, 1344, 1271, 1279, 1280, 1284, - 1288, 1289, 1291, 1293, 1295, 1297, 1301, 1303, 1342, 1306, - 1308, 1341, 1340, 1298, 1310, 1339, 1337, 1312, 1336, 1315, - 1281, 1309, 1321, 1323, 840, 1325, 1327, 736, 612, 536, - - 1316, 1329, 1318, 1330, 1331, 1334, 445, 1442, 1361, 1365, - 1369, 418, 1373, 1377, 338, 1379, 1381 + 134, 136, 137, 139, 145, 142, 147, 153, 155, 151, + 157, 158, 159, 160, 162, 164, 166, 168, 169, 171, + 172, 1450, 184, 1449, 200, 1458, 1447, 188, 186, 187, + 185, 196, 194, 197, 198, 200, 204, 209, 208, 206, + + 215, 221, 212, 216, 229, 226, 232, 228, 233, 230, + 234, 237, 238, 241, 240, 244, 250, 251, 252, 248, + 255, 257, 258, 263, 265, 269, 264, 273, 275, 281, + 277, 282, 283, 284, 286, 287, 288, 48, 289, 291, + 298, 292, 301, 304, 306, 312, 309, 314, 321, 317, + 310, 318, 320, 337, 324, 323, 325, 331, 327, 330, + 344, 334, 345, 347, 348, 354, 355, 357, 359, 361, + 373, 369, 371, 379, 377, 378, 380, 381, 1446, 384, + 385, 386, 387, 1445, 389, 396, 390, 401, 392, 408, + 394, 405, 410, 412, 399, 335, 414, 415, 416, 425, + + 422, 428, 421, 432, 437, 443, 440, 442, 444, 450, + 447, 449, 446, 452, 453, 456, 460, 455, 468, 469, + 475, 471, 473, 478, 462, 481, 480, 482, 484, 489, + 486, 492, 495, 501, 497, 499, 500, 502, 504, 505, + 507, 508, 515, 516, 517, 519, 520, 1444, 523, 1443, + 1442, 526, 1441, 1440, 529, 527, 528, 535, 536, 544, + 539, 547, 537, 549, 553, 554, 557, 541, 564, 565, + 561, 566, 559, 570, 571, 573, 569, 579, 1439, 577, + 583, 584, 585, 586, 592, 589, 588, 590, 594, 602, + 596, 603, 598, 607, 604, 608, 609, 612, 619, 611, + + 614, 621, 626, 616, 623, 636, 1438, 642, 640, 628, + 638, 647, 648, 630, 645, 1437, 651, 654, 655, 657, + 661, 668, 1436, 656, 664, 669, 670, 671, 672, 678, + 673, 674, 680, 682, 684, 691, 685, 690, 692, 1435, + 693, 701, 695, 698, 704, 705, 707, 709, 710, 711, + 712, 713, 714, 1434, 718, 717, 715, 724, 736, 738, + 739, 737, 741, 743, 749, 745, 747, 746, 748, 756, + 753, 758, 768, 762, 765, 769, 770, 1433, 776, 780, + 783, 779, 772, 785, 782, 786, 1432, 787, 789, 791, + 794, 792, 795, 796, 797, 799, 798, 802, 806, 818, + + 820, 1431, 816, 824, 826, 821, 833, 817, 819, 829, + 830, 831, 832, 838, 841, 844, 1430, 1429, 1428, 842, + 836, 848, 853, 854, 855, 857, 858, 859, 1427, 861, + 860, 863, 864, 865, 866, 869, 876, 880, 870, 882, + 883, 886, 893, 890, 891, 894, 1426, 1425, 895, 897, + 902, 912, 900, 906, 908, 914, 916, 1424, 922, 918, + 919, 921, 1423, 923, 924, 927, 930, 934, 933, 937, + 945, 950, 952, 954, 938, 1422, 960, 961, 868, 958, + 964, 962, 944, 946, 966, 967, 969, 970, 971, 977, + 972, 1421, 981, 988, 974, 982, 984, 990, 999, 997, + + 995, 1000, 1001, 1008, 1005, 1007, 1010, 1011, 1420, 1419, + 1418, 1019, 1013, 720, 1016, 1417, 1017, 1020, 1023, 1024, + 1027, 1028, 1032, 1031, 1041, 1030, 1042, 1044, 1045, 1034, + 1048, 1053, 1049, 1057, 1056, 1058, 1416, 1059, 1061, 1063, + 1062, 1069, 1070, 1077, 1415, 1074, 1079, 1081, 1082, 1083, + 1414, 1084, 1085, 1086, 1088, 1091, 1095, 1101, 1092, 1413, + 1104, 1106, 1096, 1107, 1111, 1112, 1412, 1119, 1108, 1120, + 1113, 1116, 1122, 1411, 1123, 1126, 1128, 1137, 1410, 1130, + 1136, 1138, 1140, 1141, 1143, 1144, 1146, 1148, 1409, 1408, + 1407, 1152, 1156, 1406, 1160, 1166, 1162, 1153, 1405, 1164, + + 1165, 1170, 1171, 1172, 1175, 1173, 1174, 1176, 1177, 1178, + 1180, 1185, 1186, 1190, 1192, 1191, 1195, 1404, 1403, 1402, + 1196, 1200, 1207, 1209, 1199, 1201, 1211, 1214, 1212, 1218, + 1220, 1221, 1222, 1228, 1224, 1229, 1231, 1401, 1230, 1232, + 1237, 1234, 1241, 1400, 1399, 1244, 1249, 1254, 1256, 1245, + 1262, 1260, 1247, 1261, 1263, 1265, 1264, 1266, 1267, 1268, + 1398, 1272, 1274, 1396, 1270, 1388, 1372, 1277, 1275, 1371, + 1281, 1282, 1283, 1288, 1290, 1293, 1285, 1295, 1296, 1369, + 1305, 1306, 1292, 1315, 1319, 1302, 1307, 1322, 1324, 1325, + 1327, 1328, 1367, 1332, 1333, 1366, 1365, 1316, 1336, 1364, + + 1363, 1342, 1362, 1339, 1358, 1334, 1345, 1347, 1309, 1349, + 1352, 1299, 639, 463, 1337, 1350, 1354, 1357, 1355, 1361, + 429, 1470, 1385, 1389, 1393, 369, 1397, 1401, 267, 1403, + 1405 } ; -static yyconst flex_int16_t yy_def[718] = +static yyconst flex_int16_t yy_def[732] = { 0, - 708, 1, 709, 709, 710, 710, 711, 711, 708, 712, - 708, 708, 708, 713, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 714, 708, 708, 708, 714, 715, 708, 708, - 708, 715, 716, 708, 708, 716, 712, 712, 708, 717, - 713, 717, 713, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 714, 714, 715, 715, 708, 716, 716, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, - - 712, 712, 712, 712, 712, 712, 712, 0, 708, 708, - 708, 708, 708, 708, 708, 708, 708 + 722, 1, 723, 723, 724, 724, 725, 725, 722, 726, + 722, 722, 722, 727, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 728, 722, 722, 722, 728, 729, 722, 722, + 722, 729, 730, 722, 722, 730, 726, 726, 722, 731, + 727, 731, 727, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 728, 728, 729, 729, 722, 730, 730, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 0, 722, 722, 722, 722, 722, 722, 722, 722, + 722 } ; -static yyconst flex_int16_t yy_nxt[1480] = +static yyconst flex_int16_t yy_nxt[1508] = { 0, 10, 11, 12, 12, 13, 14, 10, 10, 10, 10, 10, 15, 16, 10, 17, 18, 10, 19, 10, 20, @@ -670,7 +676,7 @@ static yyconst flex_int16_t yy_nxt[1480] = 30, 31, 32, 10, 10, 10, 10, 34, 35, 36, 34, 35, 36, 49, 48, 48, 37, 50, 54, 37, 39, 40, 40, 41, 39, 40, 40, 41, 59, 48, - 42, 44, 44, 45, 42, 44, 44, 45, 172, 52, + 42, 44, 44, 45, 42, 44, 44, 45, 175, 52, 46, 52, 52, 47, 46, 47, 47, 48, 55, 53, 48, 48, 60, 48, 48, 56, 48, 62, 48, 57, 61, 64, 48, 68, 58, 48, 63, 48, 65, 48, @@ -680,163 +686,167 @@ static yyconst flex_int16_t yy_nxt[1480] = 78, 81, 87, 87, 84, 79, 84, 84, 47, 49, 47, 47, 52, 50, 52, 52, 48, 48, 48, 89, 90, 93, 53, 48, 48, 48, 48, 48, 48, 96, - 48, 98, 97, 48, 99, 92, 48, 103, 48, 48, - 94, 95, 48, 102, 48, 104, 48, 100, 48, 48, - 108, 105, 48, 48, 101, 48, 106, 48, 48, 48, - 48, 107, 48, 110, 116, 109, 82, 82, 87, 87, - 111, 117, 112, 113, 114, 48, 48, 48, 115, 118, - - 84, 119, 84, 84, 48, 120, 48, 48, 48, 121, - 48, 122, 128, 123, 48, 129, 48, 124, 48, 48, - 135, 134, 48, 125, 126, 48, 48, 130, 136, 127, - 131, 138, 48, 132, 140, 133, 48, 139, 48, 48, - 48, 48, 48, 48, 48, 141, 137, 142, 145, 48, - 48, 147, 48, 150, 48, 152, 153, 148, 48, 143, - 48, 144, 48, 48, 48, 146, 48, 48, 156, 158, - 149, 48, 154, 48, 48, 151, 161, 48, 157, 164, - 155, 162, 159, 48, 163, 160, 165, 48, 48, 48, - 48, 48, 48, 169, 48, 176, 48, 171, 48, 48, - - 48, 168, 174, 175, 48, 48, 166, 170, 167, 173, - 181, 48, 182, 180, 48, 177, 48, 48, 178, 179, - 185, 184, 48, 48, 48, 48, 48, 186, 48, 48, - 48, 198, 48, 183, 48, 48, 48, 189, 84, 196, - 48, 48, 187, 195, 188, 48, 197, 190, 191, 201, - 202, 199, 48, 200, 203, 204, 205, 48, 192, 193, - 194, 48, 48, 48, 48, 48, 213, 48, 211, 48, - 208, 48, 210, 48, 206, 207, 212, 48, 215, 214, - 216, 48, 209, 48, 219, 218, 217, 48, 48, 48, - 48, 48, 225, 48, 48, 227, 221, 48, 222, 224, - - 48, 223, 228, 48, 231, 48, 234, 220, 48, 48, - 226, 48, 48, 48, 232, 48, 48, 48, 47, 229, - 239, 48, 230, 236, 233, 235, 237, 242, 244, 48, - 241, 48, 48, 243, 238, 240, 246, 48, 247, 48, - 48, 248, 249, 48, 251, 245, 48, 250, 48, 252, - 48, 48, 48, 48, 48, 253, 48, 254, 256, 48, - 48, 48, 261, 258, 48, 48, 48, 262, 259, 255, - 263, 260, 257, 264, 48, 48, 48, 48, 48, 266, - 265, 48, 267, 268, 48, 48, 270, 48, 269, 274, - 272, 273, 48, 271, 48, 48, 277, 48, 278, 48, - - 48, 48, 48, 279, 48, 48, 48, 48, 275, 276, - 283, 282, 284, 48, 281, 48, 48, 48, 280, 48, - 285, 48, 287, 286, 289, 48, 290, 293, 48, 288, - 48, 48, 48, 48, 291, 292, 298, 294, 301, 48, - 295, 48, 48, 303, 296, 299, 48, 48, 302, 48, - 305, 297, 48, 48, 300, 306, 308, 48, 48, 48, - 304, 307, 309, 48, 310, 48, 48, 48, 315, 48, - 48, 311, 313, 314, 48, 317, 48, 48, 48, 48, - 318, 48, 312, 316, 323, 321, 48, 48, 48, 48, - 48, 320, 325, 328, 322, 319, 48, 324, 48, 327, - - 48, 48, 332, 48, 48, 48, 48, 48, 326, 48, - 337, 48, 330, 329, 48, 48, 342, 338, 333, 48, - 331, 48, 48, 48, 340, 341, 347, 336, 334, 343, - 335, 48, 344, 48, 339, 346, 48, 48, 48, 48, - 345, 348, 48, 48, 351, 48, 48, 352, 48, 350, - 354, 349, 48, 355, 48, 356, 358, 353, 48, 357, - 48, 48, 48, 360, 48, 48, 48, 48, 48, 363, - 364, 359, 48, 362, 48, 365, 366, 368, 48, 361, - 371, 367, 48, 48, 48, 48, 369, 370, 48, 376, - 377, 48, 373, 48, 48, 48, 48, 48, 378, 372, - - 379, 375, 48, 48, 48, 48, 48, 48, 48, 374, - 48, 380, 48, 382, 392, 48, 381, 387, 389, 385, - 388, 384, 48, 383, 393, 386, 48, 391, 48, 48, - 396, 390, 48, 48, 48, 48, 48, 397, 398, 394, - 48, 48, 399, 405, 48, 395, 400, 48, 401, 404, - 402, 406, 48, 48, 403, 407, 48, 48, 48, 408, - 48, 409, 410, 412, 413, 411, 414, 48, 48, 48, - 48, 48, 417, 48, 48, 48, 415, 48, 416, 48, - 48, 421, 48, 48, 48, 48, 48, 48, 425, 418, - 48, 426, 420, 419, 48, 423, 428, 422, 424, 431, - - 429, 432, 427, 433, 48, 48, 48, 436, 48, 48, - 430, 435, 48, 48, 48, 48, 48, 48, 443, 48, - 444, 48, 434, 48, 48, 48, 446, 437, 440, 445, - 48, 438, 439, 442, 449, 48, 441, 48, 48, 447, - 48, 451, 48, 48, 48, 48, 453, 48, 452, 48, - 48, 48, 48, 48, 448, 48, 450, 460, 461, 462, - 48, 454, 455, 456, 48, 48, 458, 48, 468, 459, - 463, 457, 48, 48, 464, 48, 48, 48, 48, 48, - 466, 48, 48, 465, 467, 48, 471, 473, 472, 48, - 475, 477, 476, 48, 469, 470, 48, 474, 478, 48, - - 48, 479, 481, 483, 48, 480, 485, 48, 48, 48, - 48, 48, 484, 482, 488, 48, 489, 48, 48, 48, - 490, 48, 494, 495, 48, 486, 491, 48, 487, 48, - 493, 48, 492, 496, 48, 497, 48, 48, 499, 500, - 498, 502, 48, 48, 48, 501, 503, 48, 507, 48, - 508, 48, 48, 510, 48, 48, 48, 48, 504, 48, - 505, 511, 48, 514, 512, 506, 48, 48, 517, 48, - 521, 516, 515, 48, 509, 48, 519, 524, 518, 522, - 48, 513, 48, 523, 48, 520, 48, 48, 528, 48, - 526, 525, 48, 48, 531, 48, 48, 532, 48, 534, - - 48, 48, 536, 530, 48, 537, 48, 533, 48, 539, - 529, 527, 48, 48, 535, 48, 48, 48, 48, 48, - 538, 545, 544, 48, 541, 48, 542, 543, 546, 48, - 548, 48, 540, 549, 48, 48, 553, 48, 48, 550, - 551, 48, 48, 547, 48, 48, 554, 555, 48, 556, - 558, 559, 560, 48, 552, 48, 48, 557, 48, 48, - 563, 565, 48, 564, 561, 48, 562, 48, 48, 566, - 48, 48, 48, 567, 571, 48, 48, 574, 575, 48, - 576, 48, 577, 48, 572, 568, 48, 573, 569, 48, - 570, 580, 48, 48, 579, 48, 48, 48, 585, 48, - - 584, 48, 583, 48, 578, 48, 587, 48, 48, 48, - 48, 581, 582, 48, 593, 594, 589, 588, 590, 592, - 48, 48, 48, 48, 48, 595, 586, 591, 48, 598, - 48, 596, 48, 48, 48, 603, 599, 601, 600, 604, - 48, 597, 602, 605, 48, 606, 48, 607, 48, 608, - 48, 48, 48, 48, 48, 611, 610, 48, 48, 48, - 48, 48, 48, 615, 48, 609, 48, 620, 612, 613, - 614, 48, 48, 48, 618, 624, 48, 625, 48, 48, - 617, 619, 48, 48, 48, 616, 48, 629, 621, 622, - 48, 623, 626, 630, 48, 631, 48, 627, 48, 633, - - 48, 48, 628, 634, 632, 635, 48, 48, 48, 48, - 48, 637, 638, 48, 640, 636, 48, 48, 48, 48, - 48, 641, 639, 647, 48, 642, 643, 644, 648, 48, - 48, 645, 650, 48, 649, 48, 48, 646, 651, 652, - 48, 653, 48, 654, 655, 656, 48, 48, 48, 48, - 48, 657, 48, 48, 658, 48, 659, 661, 48, 48, - 666, 48, 48, 48, 663, 660, 48, 668, 48, 48, - 48, 48, 669, 670, 48, 48, 665, 664, 662, 48, - 48, 679, 48, 48, 672, 675, 667, 671, 678, 673, - 48, 48, 48, 674, 682, 48, 676, 677, 683, 48, - - 48, 680, 48, 686, 48, 687, 48, 685, 48, 48, - 681, 689, 48, 688, 48, 690, 691, 48, 684, 48, - 48, 48, 695, 48, 692, 694, 48, 48, 693, 48, - 696, 698, 48, 699, 48, 700, 48, 697, 48, 701, - 48, 48, 48, 704, 707, 48, 702, 48, 48, 703, - 48, 48, 48, 48, 705, 48, 48, 48, 48, 48, - 706, 33, 33, 33, 33, 38, 38, 38, 38, 43, - 43, 43, 43, 51, 51, 48, 51, 82, 82, 87, - 87, 52, 52, 48, 52, 48, 48, 48, 48, 48, + 48, 98, 97, 48, 99, 92, 48, 104, 48, 102, + 94, 95, 48, 103, 48, 105, 48, 100, 48, 48, + 48, 48, 109, 48, 101, 48, 106, 48, 107, 48, + 48, 108, 48, 48, 111, 117, 110, 82, 82, 112, + 113, 87, 87, 118, 115, 114, 48, 48, 48, 116, + + 119, 84, 120, 84, 84, 48, 121, 48, 48, 48, + 122, 48, 123, 129, 124, 48, 130, 48, 125, 48, + 48, 136, 135, 48, 126, 127, 48, 48, 131, 138, + 128, 132, 48, 137, 133, 140, 134, 48, 142, 48, + 48, 48, 141, 48, 48, 48, 143, 139, 48, 48, + 144, 48, 48, 147, 149, 48, 152, 154, 150, 48, + 145, 48, 48, 48, 146, 155, 48, 84, 48, 48, + 148, 158, 160, 151, 48, 48, 48, 157, 153, 164, + 48, 156, 159, 163, 48, 165, 48, 167, 48, 161, + 162, 166, 48, 48, 48, 48, 171, 48, 48, 48, + + 48, 173, 48, 48, 177, 178, 170, 168, 179, 48, + 174, 176, 48, 169, 172, 48, 184, 48, 185, 180, + 48, 48, 181, 48, 183, 48, 182, 188, 48, 48, + 187, 48, 48, 189, 48, 48, 48, 201, 48, 186, + 190, 48, 48, 199, 192, 48, 48, 191, 48, 198, + 193, 194, 204, 205, 200, 48, 48, 202, 48, 48, + 203, 195, 196, 197, 206, 48, 48, 242, 48, 47, + 48, 207, 48, 208, 214, 211, 209, 213, 210, 216, + 48, 215, 48, 218, 48, 219, 217, 212, 48, 48, + 48, 48, 48, 223, 221, 48, 48, 48, 48, 220, + + 48, 48, 229, 48, 225, 48, 226, 48, 228, 227, + 48, 222, 48, 231, 235, 224, 48, 238, 230, 48, + 232, 48, 234, 48, 236, 48, 48, 48, 241, 237, + 243, 246, 48, 48, 240, 239, 48, 233, 248, 48, + 48, 245, 250, 48, 244, 247, 249, 251, 48, 252, + 253, 48, 254, 48, 48, 48, 256, 48, 48, 255, + 48, 48, 257, 48, 48, 258, 48, 48, 260, 266, + 262, 48, 265, 48, 48, 263, 259, 261, 264, 48, + 48, 270, 48, 267, 48, 269, 48, 272, 271, 48, + 274, 48, 48, 48, 273, 48, 276, 48, 278, 279, + + 48, 280, 277, 48, 268, 275, 48, 283, 48, 284, + 48, 48, 48, 48, 285, 48, 48, 281, 48, 48, + 282, 289, 288, 290, 291, 287, 48, 48, 48, 286, + 48, 48, 296, 295, 48, 299, 293, 48, 48, 48, + 48, 294, 300, 292, 304, 301, 48, 48, 48, 302, + 48, 297, 48, 298, 307, 48, 303, 308, 48, 309, + 48, 311, 310, 305, 48, 48, 315, 312, 48, 314, + 48, 306, 48, 313, 316, 48, 48, 48, 318, 317, + 48, 48, 48, 323, 48, 319, 321, 320, 48, 322, + 48, 325, 326, 324, 48, 48, 48, 48, 331, 48, + + 48, 48, 329, 48, 333, 48, 335, 48, 328, 48, + 330, 332, 327, 48, 48, 48, 336, 340, 48, 48, + 48, 334, 48, 48, 337, 48, 338, 48, 339, 341, + 48, 345, 48, 350, 48, 348, 349, 48, 346, 48, + 352, 48, 342, 344, 343, 351, 354, 48, 355, 48, + 48, 48, 353, 48, 356, 347, 48, 357, 48, 48, + 361, 358, 48, 359, 360, 48, 48, 48, 48, 362, + 364, 365, 48, 367, 368, 48, 363, 366, 370, 48, + 48, 48, 48, 48, 48, 48, 369, 373, 374, 48, + 378, 48, 375, 48, 376, 48, 48, 371, 381, 377, + + 372, 48, 48, 48, 48, 387, 48, 386, 380, 48, + 383, 379, 48, 382, 388, 48, 48, 385, 48, 389, + 48, 48, 48, 48, 48, 48, 48, 384, 48, 48, + 390, 48, 391, 550, 397, 48, 399, 395, 392, 394, + 401, 393, 398, 396, 403, 400, 402, 48, 48, 48, + 48, 404, 48, 405, 48, 408, 48, 48, 48, 48, + 48, 409, 410, 417, 48, 406, 411, 48, 418, 48, + 412, 407, 413, 48, 414, 416, 48, 415, 419, 48, + 48, 48, 424, 48, 421, 422, 425, 48, 423, 426, + 48, 48, 420, 48, 48, 429, 48, 48, 48, 427, + + 48, 428, 48, 48, 433, 48, 48, 48, 48, 48, + 48, 437, 430, 48, 438, 432, 431, 48, 435, 440, + 434, 436, 443, 441, 444, 439, 445, 48, 48, 48, + 48, 48, 48, 442, 447, 48, 448, 48, 449, 450, + 48, 48, 48, 48, 48, 446, 451, 48, 452, 48, + 457, 458, 48, 48, 454, 48, 460, 456, 453, 48, + 459, 461, 455, 463, 48, 48, 48, 465, 48, 48, + 48, 48, 48, 467, 48, 48, 48, 48, 466, 48, + 48, 48, 474, 462, 464, 475, 476, 48, 468, 469, + 470, 48, 472, 48, 48, 473, 477, 48, 471, 482, + + 478, 48, 48, 515, 48, 48, 48, 480, 48, 481, + 492, 48, 479, 48, 485, 487, 486, 48, 491, 48, + 483, 484, 489, 48, 490, 48, 488, 48, 497, 48, + 48, 494, 48, 48, 48, 48, 493, 498, 48, 502, + 496, 48, 495, 503, 48, 48, 504, 499, 48, 48, + 500, 508, 512, 501, 505, 48, 48, 48, 506, 507, + 509, 48, 510, 48, 511, 48, 513, 514, 516, 48, + 517, 48, 48, 48, 521, 48, 522, 48, 48, 524, + 48, 48, 48, 48, 518, 48, 519, 525, 48, 528, + 526, 520, 48, 48, 531, 48, 535, 530, 529, 48, + + 533, 48, 523, 538, 532, 536, 48, 527, 48, 537, + 48, 48, 48, 534, 542, 540, 48, 539, 48, 48, + 545, 48, 48, 546, 48, 548, 551, 48, 48, 544, + 48, 48, 553, 547, 48, 48, 541, 543, 48, 48, + 549, 48, 48, 48, 559, 48, 555, 552, 558, 556, + 557, 560, 48, 48, 554, 48, 48, 563, 562, 48, + 48, 564, 565, 567, 48, 568, 561, 48, 48, 48, + 48, 574, 48, 48, 48, 572, 573, 569, 566, 570, + 48, 48, 571, 575, 577, 48, 578, 579, 48, 580, + 48, 576, 48, 48, 48, 48, 48, 48, 585, 48, + + 588, 589, 48, 48, 581, 590, 48, 48, 586, 587, + 582, 591, 48, 583, 584, 48, 594, 48, 48, 48, + 593, 592, 48, 48, 48, 595, 598, 48, 597, 599, + 48, 48, 601, 48, 48, 596, 603, 48, 602, 48, + 607, 48, 604, 608, 600, 609, 606, 48, 48, 48, + 610, 48, 48, 605, 48, 48, 612, 48, 613, 48, + 615, 617, 618, 48, 48, 616, 619, 48, 611, 614, + 620, 48, 621, 48, 622, 48, 48, 48, 625, 623, + 624, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 634, 48, 626, 627, 628, 629, 48, 48, 639, 632, + + 638, 48, 48, 48, 631, 633, 48, 48, 635, 630, + 48, 48, 48, 636, 643, 637, 640, 644, 48, 645, + 48, 647, 48, 48, 641, 48, 642, 648, 646, 48, + 649, 48, 48, 48, 651, 48, 652, 650, 654, 48, + 48, 48, 48, 48, 656, 48, 653, 661, 48, 657, + 655, 658, 48, 662, 664, 48, 48, 663, 48, 659, + 48, 660, 671, 665, 666, 48, 667, 48, 669, 668, + 670, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 675, 48, 673, 48, 680, 48, 48, 677, 48, 682, + 672, 674, 48, 48, 48, 683, 48, 684, 678, 48, + + 679, 48, 676, 48, 48, 681, 48, 48, 686, 689, + 48, 685, 692, 48, 687, 693, 48, 48, 48, 688, + 48, 690, 695, 699, 691, 696, 48, 48, 694, 697, + 48, 698, 700, 48, 701, 48, 48, 703, 48, 48, + 704, 702, 705, 48, 48, 48, 707, 48, 48, 706, + 48, 708, 709, 48, 710, 712, 48, 713, 48, 714, + 48, 48, 711, 48, 715, 48, 48, 716, 48, 48, + 717, 721, 48, 48, 48, 48, 48, 48, 48, 718, + 48, 719, 48, 48, 720, 33, 33, 33, 33, 38, + 38, 38, 38, 43, 43, 43, 43, 51, 51, 48, + + 51, 82, 82, 87, 87, 52, 52, 48, 52, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 88, 86, 85, 83, 48, 88, 86, 85, 83, 48, - 708, 9, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708 + 48, 48, 48, 48, 48, 48, 48, 48, 88, 86, + 85, 83, 48, 88, 86, 85, 83, 48, 722, 9, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + + 722, 722, 722, 722, 722, 722, 722 } ; -static yyconst flex_int16_t yy_chk[1480] = +static yyconst flex_int16_t yy_chk[1508] = { 0, 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, 3, 3, 3, 4, 4, 4, 11, 19, 16, 3, 11, 16, 4, - 5, 5, 5, 5, 6, 6, 6, 6, 19, 136, - 5, 7, 7, 7, 6, 8, 8, 8, 136, 14, + 5, 5, 5, 5, 6, 6, 6, 6, 19, 138, + 5, 7, 7, 7, 6, 8, 8, 8, 138, 14, 7, 14, 14, 15, 8, 15, 15, 17, 17, 14, 18, 20, 20, 21, 23, 17, 22, 21, 24, 18, 20, 22, 25, 25, 18, 26, 21, 28, 23, 27, @@ -846,152 +856,156 @@ static yyconst flex_int16_t yy_chk[1480] = 30, 32, 46, 46, 42, 31, 42, 42, 48, 49, 48, 48, 51, 49, 51, 51, 54, 55, 57, 54, 55, 58, 51, 59, 60, 61, 58, 62, 63, 61, - 64, 63, 62, 66, 63, 57, 65, 66, 67, 68, - 59, 60, 70, 65, 69, 67, 71, 63, 72, 73, - 71, 68, 74, 76, 64, 75, 69, 77, 78, 79, - 80, 70, 81, 73, 79, 72, 83, 83, 88, 88, - 74, 80, 75, 76, 77, 91, 89, 90, 78, 81, - - 85, 89, 85, 85, 93, 90, 92, 94, 95, 91, - 96, 92, 95, 93, 97, 96, 100, 93, 99, 98, - 101, 100, 102, 93, 93, 101, 103, 97, 102, 94, - 98, 104, 105, 98, 106, 99, 104, 105, 107, 106, - 109, 108, 110, 111, 112, 107, 103, 108, 111, 113, - 114, 113, 115, 116, 118, 117, 118, 114, 116, 109, - 117, 110, 119, 120, 121, 112, 122, 123, 120, 122, - 115, 124, 118, 125, 128, 116, 125, 126, 121, 128, - 119, 126, 123, 127, 127, 124, 129, 130, 131, 132, - 134, 129, 133, 133, 135, 139, 139, 135, 137, 140, - - 138, 132, 138, 138, 142, 141, 130, 134, 131, 137, - 143, 143, 144, 142, 145, 140, 146, 144, 140, 141, - 147, 146, 148, 149, 151, 147, 150, 148, 155, 153, - 154, 156, 157, 145, 158, 160, 156, 151, 715, 154, - 161, 162, 149, 153, 150, 152, 155, 152, 152, 159, - 159, 157, 159, 158, 160, 161, 162, 163, 152, 152, - 152, 165, 164, 166, 167, 174, 169, 168, 167, 172, - 165, 169, 166, 170, 163, 164, 168, 171, 171, 170, - 172, 173, 165, 175, 175, 174, 173, 177, 178, 179, - 180, 182, 183, 184, 185, 185, 178, 183, 179, 182, - - 188, 180, 185, 186, 187, 189, 189, 177, 192, 187, - 184, 190, 191, 193, 187, 194, 196, 195, 712, 185, - 194, 198, 186, 191, 188, 190, 192, 197, 199, 199, - 196, 200, 197, 198, 193, 195, 201, 201, 202, 202, - 206, 203, 204, 204, 206, 200, 203, 205, 205, 207, - 210, 208, 209, 211, 207, 208, 707, 209, 211, 212, - 213, 214, 214, 213, 215, 216, 221, 215, 213, 210, - 216, 213, 212, 217, 218, 222, 219, 220, 217, 219, - 218, 223, 220, 221, 224, 227, 223, 225, 222, 227, - 225, 226, 226, 224, 228, 229, 230, 231, 231, 232, - - 233, 230, 234, 232, 235, 236, 239, 237, 228, 229, - 236, 235, 237, 240, 234, 238, 241, 245, 233, 248, - 238, 242, 240, 239, 242, 243, 243, 251, 254, 241, - 255, 253, 251, 252, 245, 248, 253, 252, 256, 256, - 252, 257, 258, 258, 252, 254, 259, 700, 257, 260, - 260, 252, 261, 262, 255, 261, 263, 263, 265, 264, - 259, 262, 264, 266, 265, 267, 269, 268, 270, 270, - 271, 266, 268, 269, 272, 272, 274, 275, 276, 277, - 274, 278, 267, 271, 279, 277, 280, 281, 282, 279, - 284, 276, 281, 284, 278, 275, 285, 280, 283, 283, - - 286, 287, 288, 288, 289, 290, 291, 292, 282, 293, - 293, 294, 286, 285, 295, 296, 296, 293, 289, 298, - 287, 297, 299, 699, 294, 295, 302, 292, 290, 297, - 291, 302, 298, 304, 293, 300, 300, 305, 303, 306, - 299, 303, 307, 309, 306, 310, 312, 307, 311, 305, - 310, 304, 316, 311, 319, 312, 314, 309, 313, 313, - 317, 314, 318, 317, 320, 321, 323, 324, 326, 320, - 321, 316, 322, 319, 327, 322, 323, 325, 325, 318, - 328, 324, 329, 330, 328, 331, 326, 327, 333, 334, - 335, 335, 330, 336, 334, 340, 337, 338, 336, 329, - - 337, 333, 339, 341, 342, 343, 344, 347, 345, 331, - 348, 338, 349, 340, 351, 351, 339, 345, 348, 343, - 347, 342, 350, 341, 352, 344, 353, 350, 354, 352, - 355, 349, 356, 358, 357, 355, 359, 356, 357, 353, - 364, 360, 358, 361, 361, 354, 358, 698, 358, 360, - 358, 362, 362, 365, 359, 363, 363, 366, 367, 364, - 373, 365, 366, 369, 370, 367, 371, 372, 369, 370, - 375, 371, 374, 374, 376, 378, 372, 379, 373, 380, - 382, 379, 381, 383, 384, 385, 387, 386, 383, 375, - 388, 384, 378, 376, 389, 381, 386, 380, 382, 389, - - 387, 390, 385, 391, 393, 394, 390, 395, 391, 396, - 388, 394, 395, 397, 398, 399, 400, 402, 402, 401, - 403, 403, 393, 408, 404, 409, 408, 396, 399, 404, - 410, 397, 398, 401, 411, 411, 400, 412, 414, 409, - 413, 413, 415, 416, 419, 418, 415, 420, 414, 421, - 422, 695, 423, 424, 410, 427, 412, 423, 424, 425, - 425, 416, 418, 419, 428, 426, 421, 429, 431, 422, - 426, 420, 430, 431, 427, 432, 433, 434, 435, 436, - 429, 437, 440, 428, 430, 442, 434, 435, 434, 447, - 437, 438, 437, 441, 432, 433, 438, 436, 439, 439, - - 443, 440, 442, 445, 446, 441, 447, 448, 445, 450, - 451, 452, 446, 443, 451, 453, 452, 454, 455, 456, - 453, 465, 457, 458, 458, 448, 454, 457, 450, 469, - 456, 470, 455, 459, 459, 460, 460, 461, 463, 464, - 461, 466, 466, 463, 464, 465, 467, 468, 469, 471, - 470, 467, 472, 472, 473, 474, 475, 477, 468, 481, - 468, 473, 476, 476, 474, 468, 479, 483, 480, 482, - 484, 479, 477, 480, 471, 484, 482, 486, 481, 485, - 487, 475, 486, 485, 485, 483, 488, 489, 490, 491, - 488, 487, 492, 490, 493, 493, 494, 494, 499, 498, - - 500, 503, 500, 492, 498, 501, 501, 494, 504, 504, - 491, 489, 505, 506, 499, 507, 508, 509, 512, 510, - 503, 510, 509, 516, 506, 513, 507, 508, 511, 511, - 513, 514, 505, 514, 515, 517, 518, 518, 520, 515, - 516, 519, 521, 512, 522, 524, 519, 520, 527, 520, - 522, 524, 525, 525, 517, 526, 528, 521, 529, 533, - 528, 530, 530, 529, 526, 532, 527, 534, 535, 532, - 536, 538, 539, 533, 538, 540, 541, 541, 542, 542, - 543, 543, 544, 544, 539, 534, 545, 540, 535, 547, - 536, 548, 548, 549, 547, 550, 551, 552, 554, 554, - - 552, 555, 551, 557, 545, 556, 556, 558, 561, 559, - 562, 549, 550, 563, 563, 564, 558, 557, 559, 562, - 564, 566, 568, 571, 569, 566, 555, 561, 567, 569, - 570, 567, 572, 574, 573, 574, 570, 572, 571, 578, - 578, 568, 573, 579, 579, 581, 581, 582, 583, 583, - 584, 586, 582, 587, 591, 587, 586, 588, 589, 590, - 592, 593, 594, 591, 595, 584, 596, 596, 588, 589, - 590, 597, 598, 599, 594, 600, 600, 601, 602, 603, - 593, 595, 601, 607, 608, 592, 611, 608, 597, 598, - 612, 599, 602, 609, 609, 610, 610, 603, 613, 612, - - 614, 615, 607, 613, 611, 614, 616, 617, 618, 619, - 620, 616, 617, 625, 619, 615, 621, 622, 623, 626, - 628, 620, 618, 627, 627, 621, 622, 623, 628, 629, - 636, 625, 632, 632, 629, 633, 640, 626, 633, 634, - 634, 635, 635, 636, 637, 638, 638, 639, 641, 637, - 642, 639, 643, 644, 640, 645, 641, 643, 646, 648, - 649, 649, 651, 655, 645, 642, 654, 654, 657, 658, - 659, 663, 655, 657, 660, 661, 648, 646, 644, 664, - 662, 667, 667, 665, 659, 662, 651, 658, 665, 660, - 668, 669, 691, 661, 670, 670, 663, 664, 671, 671, - - 672, 668, 673, 674, 674, 675, 675, 673, 676, 684, - 669, 677, 677, 676, 678, 678, 680, 680, 672, 681, - 692, 685, 688, 688, 681, 685, 690, 701, 684, 703, - 690, 693, 693, 694, 694, 696, 696, 692, 697, 697, - 702, 704, 705, 703, 706, 706, 701, 689, 687, 702, - 686, 683, 682, 679, 704, 666, 656, 653, 652, 650, - 705, 709, 709, 709, 709, 710, 710, 710, 710, 711, - 711, 711, 711, 713, 713, 647, 713, 714, 714, 716, - 716, 717, 717, 631, 717, 630, 624, 606, 605, 604, - 585, 580, 577, 576, 575, 565, 560, 553, 546, 537, - - 531, 523, 502, 497, 496, 495, 478, 462, 449, 444, - 417, 407, 406, 405, 392, 377, 368, 346, 332, 315, - 308, 301, 273, 250, 249, 247, 246, 244, 181, 176, - 87, 86, 84, 82, 47, 43, 39, 38, 33, 10, - 9, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708 + 64, 63, 62, 66, 63, 57, 65, 66, 67, 65, + 59, 60, 70, 65, 68, 67, 69, 63, 71, 72, + 73, 74, 71, 75, 64, 76, 68, 77, 69, 78, + 79, 70, 80, 81, 73, 79, 72, 83, 83, 74, + 75, 88, 88, 80, 77, 76, 91, 89, 90, 78, + + 81, 85, 89, 85, 85, 93, 90, 92, 94, 95, + 91, 96, 92, 95, 93, 97, 96, 100, 93, 99, + 98, 101, 100, 103, 93, 93, 101, 104, 97, 103, + 94, 98, 102, 102, 98, 105, 99, 106, 107, 108, + 105, 110, 106, 107, 109, 111, 108, 104, 112, 113, + 109, 115, 114, 112, 114, 116, 117, 118, 115, 120, + 110, 117, 118, 119, 111, 119, 121, 729, 122, 123, + 113, 121, 123, 116, 124, 127, 125, 120, 117, 127, + 126, 119, 122, 126, 128, 128, 129, 130, 131, 124, + 125, 129, 130, 132, 133, 134, 134, 135, 136, 137, + + 139, 136, 140, 142, 140, 140, 133, 131, 141, 141, + 137, 139, 143, 132, 135, 144, 145, 145, 146, 142, + 147, 151, 142, 146, 144, 148, 143, 149, 150, 152, + 148, 153, 149, 150, 156, 155, 157, 158, 159, 147, + 151, 160, 158, 156, 153, 162, 196, 152, 154, 155, + 154, 154, 161, 161, 157, 161, 163, 159, 164, 165, + 160, 154, 154, 154, 162, 166, 167, 196, 168, 726, + 169, 163, 170, 164, 169, 167, 165, 168, 166, 171, + 172, 170, 173, 173, 171, 174, 172, 167, 175, 176, + 174, 177, 178, 178, 176, 180, 181, 182, 183, 175, + + 185, 187, 186, 189, 181, 191, 182, 186, 185, 183, + 195, 177, 188, 188, 190, 180, 192, 192, 187, 190, + 188, 193, 189, 194, 190, 197, 198, 199, 195, 191, + 197, 200, 203, 201, 194, 193, 200, 188, 202, 202, + 721, 199, 204, 204, 198, 201, 203, 205, 205, 206, + 207, 207, 208, 208, 206, 209, 210, 213, 211, 209, + 212, 210, 211, 214, 215, 212, 218, 216, 214, 218, + 216, 217, 217, 225, 714, 216, 213, 215, 216, 219, + 220, 221, 222, 219, 223, 220, 221, 223, 222, 224, + 225, 227, 226, 228, 224, 229, 227, 231, 229, 230, + + 230, 231, 228, 232, 219, 226, 233, 234, 235, 235, + 236, 237, 234, 238, 236, 239, 240, 232, 241, 242, + 233, 240, 239, 241, 242, 238, 243, 244, 245, 237, + 246, 247, 247, 246, 249, 255, 244, 252, 256, 257, + 255, 245, 256, 243, 257, 256, 258, 259, 263, 256, + 261, 249, 268, 252, 260, 260, 256, 261, 262, 262, + 264, 264, 263, 258, 265, 266, 268, 265, 267, 267, + 273, 259, 271, 266, 269, 269, 270, 272, 271, 270, + 277, 274, 275, 276, 276, 272, 274, 273, 280, 275, + 278, 278, 280, 277, 281, 282, 283, 284, 285, 287, + + 286, 288, 283, 285, 287, 289, 289, 291, 282, 293, + 284, 286, 281, 290, 292, 295, 290, 294, 294, 296, + 297, 288, 300, 298, 291, 301, 292, 304, 293, 295, + 299, 299, 302, 302, 305, 300, 301, 303, 299, 310, + 304, 314, 296, 298, 297, 303, 306, 306, 308, 311, + 713, 309, 305, 308, 309, 299, 315, 310, 312, 313, + 314, 311, 317, 312, 313, 318, 319, 324, 320, 315, + 318, 319, 321, 321, 322, 325, 317, 320, 325, 322, + 326, 327, 328, 329, 331, 332, 324, 328, 329, 330, + 333, 333, 330, 334, 331, 335, 337, 326, 336, 332, + + 327, 338, 336, 339, 341, 343, 343, 342, 335, 344, + 338, 334, 342, 337, 344, 345, 346, 341, 347, 345, + 348, 349, 350, 351, 352, 353, 357, 339, 356, 355, + 346, 514, 347, 514, 353, 358, 356, 351, 348, 350, + 358, 349, 355, 352, 360, 357, 359, 359, 362, 360, + 361, 361, 363, 362, 364, 365, 366, 368, 367, 369, + 365, 366, 367, 371, 371, 363, 368, 370, 372, 372, + 368, 364, 368, 374, 368, 370, 375, 369, 373, 373, + 376, 377, 379, 383, 375, 376, 380, 379, 377, 381, + 382, 380, 374, 385, 381, 384, 384, 386, 388, 382, + + 389, 383, 390, 392, 389, 391, 393, 394, 395, 397, + 396, 393, 385, 398, 394, 388, 386, 399, 391, 396, + 390, 392, 399, 397, 400, 395, 401, 403, 408, 400, + 409, 401, 406, 398, 404, 404, 405, 405, 406, 407, + 410, 411, 412, 413, 407, 403, 408, 421, 409, 414, + 414, 415, 415, 420, 411, 416, 420, 413, 410, 422, + 416, 421, 412, 423, 423, 424, 425, 425, 426, 427, + 428, 431, 430, 427, 432, 433, 434, 435, 426, 479, + 436, 439, 435, 422, 424, 436, 437, 437, 428, 430, + 431, 438, 433, 440, 441, 434, 438, 442, 432, 443, + + 439, 444, 445, 479, 443, 446, 449, 441, 450, 442, + 453, 453, 440, 451, 446, 449, 446, 454, 452, 455, + 444, 445, 451, 452, 451, 456, 450, 457, 459, 460, + 461, 455, 462, 459, 464, 465, 454, 460, 466, 465, + 457, 467, 456, 466, 469, 468, 467, 461, 470, 475, + 462, 471, 475, 464, 468, 483, 471, 484, 469, 470, + 472, 472, 473, 473, 474, 474, 477, 478, 480, 480, + 481, 477, 478, 482, 483, 481, 484, 485, 486, 486, + 487, 488, 489, 491, 482, 495, 482, 487, 490, 490, + 488, 482, 493, 496, 494, 497, 498, 493, 491, 494, + + 496, 498, 485, 500, 495, 499, 501, 489, 500, 499, + 499, 502, 503, 497, 504, 502, 505, 501, 506, 504, + 507, 507, 508, 508, 513, 512, 515, 515, 517, 506, + 512, 518, 518, 508, 519, 520, 503, 505, 521, 522, + 513, 526, 524, 523, 524, 530, 520, 517, 523, 521, + 522, 525, 525, 527, 519, 528, 529, 528, 527, 531, + 533, 529, 530, 532, 532, 533, 526, 535, 534, 536, + 538, 539, 539, 541, 540, 536, 538, 534, 531, 534, + 542, 543, 535, 540, 542, 546, 543, 544, 544, 546, + 547, 541, 548, 549, 550, 552, 553, 554, 552, 555, + + 555, 556, 556, 559, 547, 557, 557, 563, 553, 554, + 548, 558, 558, 549, 550, 561, 562, 562, 564, 569, + 561, 559, 565, 566, 571, 563, 566, 572, 565, 568, + 568, 570, 570, 573, 575, 564, 572, 576, 571, 577, + 577, 580, 573, 578, 569, 580, 576, 581, 578, 582, + 581, 583, 584, 575, 585, 586, 583, 587, 584, 588, + 586, 588, 592, 592, 598, 587, 593, 593, 582, 585, + 595, 595, 596, 597, 597, 600, 601, 596, 601, 598, + 600, 602, 603, 604, 606, 607, 605, 608, 609, 610, + 610, 611, 602, 603, 604, 605, 612, 613, 615, 608, + + 614, 614, 616, 615, 607, 609, 617, 621, 611, 606, + 625, 622, 626, 612, 622, 613, 616, 623, 623, 624, + 624, 626, 627, 629, 617, 628, 621, 627, 625, 630, + 628, 631, 632, 633, 630, 635, 631, 629, 633, 634, + 636, 639, 637, 640, 635, 642, 632, 641, 641, 636, + 634, 637, 643, 642, 646, 646, 650, 643, 653, 639, + 647, 640, 653, 647, 648, 648, 649, 649, 651, 650, + 652, 652, 654, 651, 655, 657, 656, 658, 659, 660, + 657, 665, 655, 662, 663, 663, 669, 659, 668, 668, + 654, 656, 671, 672, 673, 669, 677, 671, 660, 674, + + 662, 675, 658, 683, 676, 665, 678, 679, 673, 676, + 712, 672, 679, 686, 674, 681, 681, 682, 687, 675, + 709, 677, 683, 687, 678, 684, 684, 698, 682, 685, + 685, 686, 688, 688, 689, 689, 690, 691, 691, 692, + 692, 690, 694, 694, 695, 706, 698, 699, 715, 695, + 704, 699, 702, 702, 704, 707, 707, 708, 708, 710, + 710, 716, 706, 711, 711, 717, 719, 715, 718, 705, + 716, 720, 720, 703, 701, 700, 697, 696, 693, 717, + 680, 718, 670, 667, 719, 723, 723, 723, 723, 724, + 724, 724, 724, 725, 725, 725, 725, 727, 727, 666, + + 727, 728, 728, 730, 730, 731, 731, 664, 731, 661, + 645, 644, 638, 620, 619, 618, 599, 594, 591, 590, + 589, 579, 574, 567, 560, 551, 545, 537, 516, 511, + 510, 509, 492, 476, 463, 458, 448, 447, 429, 419, + 418, 417, 402, 387, 378, 354, 340, 323, 316, 307, + 279, 254, 253, 251, 250, 248, 184, 179, 87, 86, + 84, 82, 47, 43, 39, 38, 33, 10, 9, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + + 722, 722, 722, 722, 722, 722, 722 } ; static yy_state_type yy_last_accepting_state; @@ -1097,7 +1111,7 @@ static void config_end_include(void) #endif -#line 1100 "" +#line 1114 "" #define INITIAL 0 #define quotedstring 1 @@ -1253,7 +1267,7 @@ YY_DECL #line 98 "util/configlexer.lex" -#line 1256 "" +#line 1270 "" if ( !(yy_init) ) { @@ -1312,13 +1326,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 709 ) + if ( yy_current_state >= 723 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 1442 ); + while ( yy_base[yy_current_state] != 1470 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1668,38 +1682,48 @@ YY_RULE_SETUP { YDOUT; return VAR_USE_SYSLOG;} YY_BREAK case 66: -/* rule 66 can match eol */ YY_RULE_SETUP #line 164 "util/configlexer.lex" +{ YDOUT; return VAR_LOCAL_ZONE;} + YY_BREAK +case 67: +YY_RULE_SETUP +#line 165 "util/configlexer.lex" +{ YDOUT; return VAR_LOCAL_DATA;} + YY_BREAK +case 68: +/* rule 68 can match eol */ +YY_RULE_SETUP +#line 166 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 67: +case 69: YY_RULE_SETUP -#line 167 "util/configlexer.lex" +#line 169 "util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 168 "util/configlexer.lex" +#line 170 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 68: +case 70: YY_RULE_SETUP -#line 172 "util/configlexer.lex" +#line 174 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 69: -/* rule 69 can match eol */ +case 71: +/* rule 71 can match eol */ YY_RULE_SETUP -#line 173 "util/configlexer.lex" +#line 175 "util/configlexer.lex" { cfg_parser->line++; yymore(); } YY_BREAK -case 70: +case 72: YY_RULE_SETUP -#line 174 "util/configlexer.lex" +#line 176 "util/configlexer.lex" { LEXOUT(("QE ")); BEGIN(INITIAL); @@ -1711,37 +1735,37 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 71: +case 73: YY_RULE_SETUP -#line 185 "util/configlexer.lex" +#line 187 "util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 186 "util/configlexer.lex" +#line 188 "util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(INITIAL); } YY_BREAK -case 72: +case 74: YY_RULE_SETUP -#line 190 "util/configlexer.lex" +#line 192 "util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 73: -/* rule 73 can match eol */ +case 75: +/* rule 75 can match eol */ YY_RULE_SETUP -#line 191 "util/configlexer.lex" +#line 193 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 74: +case 76: YY_RULE_SETUP -#line 192 "util/configlexer.lex" +#line 194 "util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 75: +case 77: YY_RULE_SETUP -#line 193 "util/configlexer.lex" +#line 195 "util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include(yytext); @@ -1749,26 +1773,26 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 198 "util/configlexer.lex" +#line 200 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 76: +case 78: YY_RULE_SETUP -#line 202 "util/configlexer.lex" +#line 204 "util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 77: -/* rule 77 can match eol */ +case 79: +/* rule 79 can match eol */ YY_RULE_SETUP -#line 203 "util/configlexer.lex" +#line 205 "util/configlexer.lex" { cfg_parser->line++; yymore(); } YY_BREAK -case 78: +case 80: YY_RULE_SETUP -#line 204 "util/configlexer.lex" +#line 206 "util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -1777,7 +1801,7 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 210 "util/configlexer.lex" +#line 212 "util/configlexer.lex" { yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ if (config_include_stack_ptr == 0) { @@ -1788,18 +1812,18 @@ case YY_STATE_EOF(INITIAL): } } YY_BREAK -case 79: +case 81: YY_RULE_SETUP -#line 220 "util/configlexer.lex" +#line 222 "util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); yylval.str = strdup(yytext); return STRING; } YY_BREAK -case 80: +case 82: YY_RULE_SETUP -#line 223 "util/configlexer.lex" +#line 225 "util/configlexer.lex" ECHO; YY_BREAK -#line 1802 "" +#line 1826 "" case YY_END_OF_BUFFER: { @@ -2081,7 +2105,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 >= 709 ) + if ( yy_current_state >= 723 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2109,11 +2133,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 >= 709 ) + if ( yy_current_state >= 723 ) 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 == 708); + yy_is_jam = (yy_current_state == 722); return yy_is_jam ? 0 : yy_current_state; } @@ -2746,7 +2770,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 223 "util/configlexer.lex" +#line 225 "util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 8e510bce2..dc7d12c14 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -161,6 +161,8 @@ key-cache-size{COLON} { YDOUT; return VAR_KEY_CACHE_SIZE;} key-cache-slabs{COLON} { YDOUT; return VAR_KEY_CACHE_SLABS;} val-nsec3-keysize-iterations{COLON} { YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;} use-syslog{COLON} { YDOUT; return VAR_USE_SYSLOG;} +local-zone{COLON} { YDOUT; return VAR_LOCAL_ZONE;} +local-data{COLON} { YDOUT; return VAR_LOCAL_DATA;} {NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++;} /* Quoted strings. Strip leading and ending quotes */ diff --git a/util/configparser.c b/util/configparser.c index ecf3db8b6..64286122b 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -136,7 +136,9 @@ VAR_DO_NOT_QUERY_LOCALHOST = 325, VAR_CACHE_MAX_TTL = 326, VAR_HARDEN_DNNSEC_STRIPPED = 327, - VAR_ACCESS_CONTROL = 328 + VAR_ACCESS_CONTROL = 328, + VAR_LOCAL_ZONE = 329, + VAR_LOCAL_DATA = 330 }; #endif /* Tokens. */ @@ -211,6 +213,8 @@ #define VAR_CACHE_MAX_TTL 326 #define VAR_HARDEN_DNNSEC_STRIPPED 327 #define VAR_ACCESS_CONTROL 328 +#define VAR_LOCAL_ZONE 329 +#define VAR_LOCAL_DATA 330 @@ -269,7 +273,7 @@ typedef union YYSTYPE char* str; } /* Line 187 of yacc.c. */ -#line 273 "util/configparser.c" +#line 277 "util/configparser.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -282,7 +286,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 286 "util/configparser.c" +#line 290 "util/configparser.c" #ifdef short # undef short @@ -497,20 +501,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 127 +#define YYLAST 131 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 74 +#define YYNTOKENS 76 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 73 +#define YYNNTS 75 /* YYNRULES -- Number of rules. */ -#define YYNRULES 137 +#define YYNRULES 141 /* YYNRULES -- Number of states. */ -#define YYNSTATES 200 +#define YYNSTATES 207 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 328 +#define YYMAXUTOK 330 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -550,7 +554,8 @@ static const yytype_uint8 yytranslate[] = 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73 + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75 }; #if YYDEBUG @@ -564,72 +569,76 @@ static const yytype_uint16 yyprhs[] = 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, - 122, 124, 126, 128, 130, 132, 134, 137, 138, 140, - 142, 144, 146, 149, 150, 152, 154, 156, 159, 162, - 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, - 195, 198, 201, 204, 207, 210, 213, 216, 219, 222, - 225, 228, 231, 234, 237, 240, 243, 246, 249, 252, - 255, 258, 261, 264, 267, 270, 273, 276, 279, 282, - 285, 288, 291, 295, 298, 301, 304, 307, 310, 313, - 316, 319, 322, 325, 328, 331, 334, 337 + 122, 124, 126, 128, 130, 132, 134, 136, 138, 141, + 142, 144, 146, 148, 150, 153, 154, 156, 158, 160, + 163, 166, 169, 172, 175, 178, 181, 184, 187, 190, + 193, 196, 199, 202, 205, 208, 211, 214, 217, 220, + 223, 226, 229, 232, 235, 238, 241, 244, 247, 250, + 253, 256, 259, 262, 265, 268, 271, 274, 277, 280, + 283, 286, 289, 292, 295, 299, 302, 305, 308, 311, + 314, 317, 320, 323, 326, 330, 333, 336, 339, 342, + 345, 348 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 75, 0, -1, -1, 75, 76, -1, 77, 78, -1, - 80, 81, -1, 83, 84, -1, 11, -1, 78, 79, - -1, -1, 86, -1, 87, -1, 88, -1, 91, -1, - 92, -1, 95, -1, 96, -1, 97, -1, 98, -1, - 89, -1, 100, -1, 101, -1, 102, -1, 103, -1, - 104, -1, 114, -1, 115, -1, 116, -1, 117, -1, - 118, -1, 93, -1, 119, -1, 120, -1, 123, -1, - 121, -1, 122, -1, 124, -1, 125, -1, 126, -1, - 129, -1, 109, -1, 110, -1, 111, -1, 112, -1, - 127, -1, 132, -1, 106, -1, 108, -1, 133, -1, - 135, -1, 136, -1, 137, -1, 94, -1, 113, -1, - 139, -1, 140, -1, 107, -1, 138, -1, 99, -1, - 90, -1, 105, -1, 130, -1, 134, -1, 128, -1, - 131, -1, 39, -1, 81, 82, -1, -1, 141, -1, - 142, -1, 143, -1, 45, -1, 84, 85, -1, -1, - 144, -1, 145, -1, 146, -1, 13, 10, -1, 12, - 10, -1, 14, 10, -1, 17, 10, -1, 68, 10, - -1, 15, 10, -1, 16, 10, -1, 32, 10, -1, - 61, 10, -1, 18, 10, -1, 19, 10, -1, 20, - 10, -1, 21, 10, -1, 67, 10, -1, 22, 10, - -1, 23, 10, -1, 24, 10, -1, 25, 10, -1, - 26, 10, -1, 69, 10, -1, 55, 10, -1, 65, - 10, -1, 56, 10, -1, 49, 10, -1, 50, 10, - -1, 51, 10, -1, 52, 10, -1, 62, 10, -1, - 27, 10, -1, 28, 10, -1, 29, 10, -1, 30, - 10, -1, 31, 10, -1, 33, 10, -1, 34, 10, - -1, 36, 10, -1, 37, 10, -1, 35, 10, -1, - 42, 10, -1, 43, 10, -1, 44, 10, -1, 53, - 10, -1, 72, 10, -1, 48, 10, -1, 70, 10, - -1, 73, 10, 10, -1, 54, 10, -1, 57, 10, - -1, 71, 10, -1, 58, 10, -1, 59, 10, -1, - 60, 10, -1, 66, 10, -1, 63, 10, -1, 64, - 10, -1, 38, 10, -1, 40, 10, -1, 41, 10, - -1, 38, 10, -1, 46, 10, -1, 47, 10, -1 + 77, 0, -1, -1, 77, 78, -1, 79, 80, -1, + 82, 83, -1, 85, 86, -1, 11, -1, 80, 81, + -1, -1, 88, -1, 89, -1, 90, -1, 93, -1, + 94, -1, 97, -1, 98, -1, 99, -1, 100, -1, + 91, -1, 102, -1, 103, -1, 104, -1, 105, -1, + 106, -1, 116, -1, 117, -1, 118, -1, 119, -1, + 120, -1, 95, -1, 121, -1, 122, -1, 125, -1, + 123, -1, 124, -1, 126, -1, 127, -1, 128, -1, + 131, -1, 111, -1, 112, -1, 113, -1, 114, -1, + 129, -1, 134, -1, 108, -1, 110, -1, 135, -1, + 137, -1, 138, -1, 139, -1, 96, -1, 115, -1, + 141, -1, 142, -1, 109, -1, 140, -1, 101, -1, + 92, -1, 107, -1, 132, -1, 136, -1, 130, -1, + 133, -1, 143, -1, 144, -1, 39, -1, 83, 84, + -1, -1, 145, -1, 146, -1, 147, -1, 45, -1, + 86, 87, -1, -1, 148, -1, 149, -1, 150, -1, + 13, 10, -1, 12, 10, -1, 14, 10, -1, 17, + 10, -1, 68, 10, -1, 15, 10, -1, 16, 10, + -1, 32, 10, -1, 61, 10, -1, 18, 10, -1, + 19, 10, -1, 20, 10, -1, 21, 10, -1, 67, + 10, -1, 22, 10, -1, 23, 10, -1, 24, 10, + -1, 25, 10, -1, 26, 10, -1, 69, 10, -1, + 55, 10, -1, 65, 10, -1, 56, 10, -1, 49, + 10, -1, 50, 10, -1, 51, 10, -1, 52, 10, + -1, 62, 10, -1, 27, 10, -1, 28, 10, -1, + 29, 10, -1, 30, 10, -1, 31, 10, -1, 33, + 10, -1, 34, 10, -1, 36, 10, -1, 37, 10, + -1, 35, 10, -1, 42, 10, -1, 43, 10, -1, + 44, 10, -1, 53, 10, -1, 72, 10, -1, 48, + 10, -1, 70, 10, -1, 73, 10, 10, -1, 54, + 10, -1, 57, 10, -1, 71, 10, -1, 58, 10, + -1, 59, 10, -1, 60, 10, -1, 66, 10, -1, + 63, 10, -1, 64, 10, -1, 74, 10, 10, -1, + 75, 10, -1, 38, 10, -1, 40, 10, -1, 41, + 10, -1, 38, 10, -1, 46, 10, -1, 47, 10, + -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 92, 92, 92, 93, 93, 94, 98, 103, 104, - 105, 105, 105, 106, 106, 106, 107, 107, 107, 108, - 108, 108, 109, 109, 109, 110, 110, 111, 111, 112, - 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, - 117, 118, 118, 118, 119, 119, 119, 120, 120, 120, - 121, 121, 122, 122, 123, 123, 124, 124, 125, 125, - 125, 126, 126, 127, 127, 129, 141, 142, 143, 143, - 143, 145, 157, 158, 159, 159, 159, 161, 170, 179, - 188, 201, 216, 225, 234, 243, 252, 261, 270, 279, - 288, 302, 309, 316, 323, 331, 338, 345, 353, 361, - 368, 377, 386, 393, 400, 411, 420, 433, 442, 451, - 464, 473, 482, 491, 500, 513, 520, 530, 540, 550, - 560, 567, 577, 594, 601, 619, 628, 637, 647, 657, - 664, 673, 686, 693, 700, 707, 714, 721 + 0, 93, 93, 93, 94, 94, 95, 99, 104, 105, + 106, 106, 106, 107, 107, 107, 108, 108, 108, 109, + 109, 109, 110, 110, 110, 111, 111, 112, 112, 113, + 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, + 118, 119, 119, 119, 120, 120, 120, 121, 121, 121, + 122, 122, 123, 123, 124, 124, 125, 125, 126, 126, + 126, 127, 127, 128, 128, 129, 129, 131, 143, 144, + 145, 145, 145, 147, 159, 160, 161, 161, 161, 163, + 172, 181, 190, 203, 218, 227, 236, 245, 254, 263, + 272, 281, 290, 304, 311, 318, 325, 333, 340, 347, + 355, 363, 370, 379, 388, 395, 402, 413, 422, 435, + 444, 453, 466, 475, 484, 493, 502, 515, 522, 532, + 542, 552, 562, 569, 579, 592, 599, 617, 626, 635, + 645, 655, 662, 671, 684, 703, 710, 717, 724, 731, + 738, 745 }; #endif @@ -660,11 +669,12 @@ static const char *const yytname[] = "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG", "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST", "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNNSEC_STRIPPED", "VAR_ACCESS_CONTROL", - "$accept", "toplevelvars", "toplevelvar", "serverstart", - "contents_server", "content_server", "stubstart", "contents_stub", - "content_stub", "forwardstart", "contents_forward", "content_forward", - "server_num_threads", "server_verbosity", "server_port", - "server_interface", "server_outgoing_interface", "server_outgoing_port", + "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "$accept", "toplevelvars", + "toplevelvar", "serverstart", "contents_server", "content_server", + "stubstart", "contents_stub", "content_stub", "forwardstart", + "contents_forward", "content_forward", "server_num_threads", + "server_verbosity", "server_port", "server_interface", + "server_outgoing_interface", "server_outgoing_port", "server_outgoing_range", "server_outgoing_num_tcp", "server_incoming_num_tcp", "server_do_ip4", "server_do_ip6", "server_do_udp", "server_do_tcp", "server_use_syslog", "server_chroot", @@ -685,8 +695,9 @@ static const char *const yytname[] = "server_val_override_date", "server_cache_max_ttl", "server_bogus_ttl", "server_val_clean_additional", "server_val_permissive_mode", "server_val_nsec3_keysize_iterations", "server_key_cache_size", - "server_key_cache_slabs", "stub_name", "stub_host", "stub_addr", - "forward_name", "forward_host", "forward_addr", 0 + "server_key_cache_slabs", "server_local_zone", "server_local_data", + "stub_name", "stub_host", "stub_addr", "forward_name", "forward_host", + "forward_addr", 0 }; #endif @@ -702,27 +713,28 @@ static const yytype_uint16 yytoknum[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328 + 325, 326, 327, 328, 329, 330 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 74, 75, 75, 76, 76, 76, 77, 78, 78, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 80, 81, 81, 82, 82, - 82, 83, 84, 84, 85, 85, 85, 86, 87, 88, + 0, 76, 77, 77, 78, 78, 78, 79, 80, 80, + 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, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 82, 83, 83, + 84, 84, 84, 85, 86, 86, 87, 87, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146 + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -734,14 +746,15 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 2, 0, 1, 1, 1, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 1, 1, 1, 1, 2, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2 + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -749,39 +762,40 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 0, 1, 7, 65, 71, 3, 9, 67, 73, + 2, 0, 1, 7, 67, 73, 3, 9, 69, 75, 4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 10, - 11, 12, 19, 59, 13, 14, 30, 52, 15, 16, - 17, 18, 58, 20, 21, 22, 23, 24, 60, 46, - 56, 47, 40, 41, 42, 43, 53, 25, 26, 27, - 28, 29, 31, 32, 34, 35, 33, 36, 37, 38, - 44, 63, 39, 61, 64, 45, 48, 62, 49, 50, - 51, 57, 54, 55, 0, 0, 0, 66, 68, 69, - 70, 0, 0, 0, 72, 74, 75, 76, 78, 77, - 79, 82, 83, 80, 86, 87, 88, 89, 91, 92, - 93, 94, 95, 105, 106, 107, 108, 109, 84, 110, - 111, 114, 112, 113, 115, 116, 117, 120, 100, 101, - 102, 103, 118, 123, 97, 99, 124, 126, 127, 128, - 85, 104, 130, 131, 98, 129, 90, 81, 96, 121, - 125, 119, 0, 132, 133, 134, 135, 136, 137, 122 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 10, 11, 12, 19, 59, 13, 14, 30, 52, + 15, 16, 17, 18, 58, 20, 21, 22, 23, 24, + 60, 46, 56, 47, 40, 41, 42, 43, 53, 25, + 26, 27, 28, 29, 31, 32, 34, 35, 33, 36, + 37, 38, 44, 63, 39, 61, 64, 45, 48, 62, + 49, 50, 51, 57, 54, 55, 65, 66, 0, 0, + 0, 68, 70, 71, 72, 0, 0, 0, 74, 76, + 77, 78, 80, 79, 81, 84, 85, 82, 88, 89, + 90, 91, 93, 94, 95, 96, 97, 107, 108, 109, + 110, 111, 86, 112, 113, 116, 114, 115, 117, 118, + 119, 122, 102, 103, 104, 105, 120, 125, 99, 101, + 126, 128, 129, 130, 87, 106, 132, 133, 100, 131, + 92, 83, 98, 123, 127, 121, 0, 0, 135, 136, + 137, 138, 139, 140, 141, 124, 134 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 6, 7, 10, 68, 8, 11, 127, 9, - 12, 134, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 128, 129, 130, - 135, 136, 137 + -1, 1, 6, 7, 10, 70, 8, 11, 131, 9, + 12, 138, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 132, + 133, 134, 139, 140, 141 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -789,26 +803,27 @@ static const yytype_int16 yydefgoto[] = #define YYPACT_NINF -13 static const yytype_int8 yypact[] = { - -13, 62, -13, -13, -13, -13, -13, -13, -13, -13, - -12, 26, 25, 16, 17, 18, 19, 23, 24, 55, - 58, 59, 60, 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, - 92, 93, 94, 95, 96, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -13, -13, + -13, 64, -13, -13, -13, -13, -13, -13, -13, -13, + -12, 28, 27, 16, 17, 18, 19, 23, 24, 25, + 57, 60, 61, 62, 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, 94, 95, 96, 97, 98, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -13, -13, -13, 111, 112, 113, -13, -13, -13, - -13, 114, 115, 116, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, 114, 115, + 116, -13, -13, -13, -13, 117, 118, 119, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -13, 117, -13, -13, -13, -13, -13, -13, -13 + -13, -13, -13, -13, -13, -13, 120, 121, -13, -13, + -13, -13, -13, -13, -13, -13, -13 }; /* YYPGOTO[NTERM-NUM]. */ @@ -821,7 +836,7 @@ static const yytype_int8 yypgoto[] = -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -13, -13 + -13, -13, -13, -13, -13 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -833,60 +848,63 @@ static const yytype_uint8 yytable[] = { 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 138, 139, 140, 141, - 39, 40, 41, 142, 143, 0, 42, 43, 44, 45, + 33, 34, 35, 36, 37, 38, 142, 143, 144, 145, + 39, 40, 41, 146, 147, 148, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 2, 131, 124, 144, 125, 126, 145, 146, - 147, 132, 133, 3, 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, 4, 175, 176, 177, 178, 179, 5, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199 + 66, 67, 68, 69, 2, 135, 128, 149, 129, 130, + 150, 151, 152, 136, 137, 3, 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, 4, 180, 181, 182, 183, 184, 5, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206 }; -static const yytype_int8 yycheck[] = +static const yytype_uint8 yycheck[] = { 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, 10, 10, 10, 10, - 42, 43, 44, 10, 10, -1, 48, 49, 50, 51, + 42, 43, 44, 10, 10, 10, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 0, 38, 38, 10, 40, 41, 10, 10, - 10, 46, 47, 11, 10, 10, 10, 10, 10, 10, + 72, 73, 74, 75, 0, 38, 38, 10, 40, 41, + 10, 10, 10, 46, 47, 11, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 39, 10, 10, 10, 10, 10, 45, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 39, 10, 10, 10, 10, 10, 45, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 75, 0, 11, 39, 45, 76, 77, 80, 83, - 78, 81, 84, 12, 13, 14, 15, 16, 17, 18, + 0, 77, 0, 11, 39, 45, 78, 79, 82, 85, + 80, 83, 86, 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, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 79, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 81, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 38, 40, 41, 82, 141, 142, - 143, 38, 46, 47, 85, 144, 145, 146, 10, 10, + 137, 138, 139, 140, 141, 142, 143, 144, 38, 40, + 41, 84, 145, 146, 147, 38, 46, 47, 87, 148, + 149, 150, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10 }; #define yyerrok (yyerrstatus = 0) @@ -1701,14 +1719,14 @@ yyreduce: switch (yyn) { case 7: -#line 99 "util/configparser.y" +#line 100 "util/configparser.y" { OUTYY(("\nP(server:)\n")); } break; - case 65: -#line 130 "util/configparser.y" + case 67: +#line 132 "util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -1721,8 +1739,8 @@ yyreduce: } break; - case 71: -#line 146 "util/configparser.y" + case 73: +#line 148 "util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -1735,8 +1753,8 @@ yyreduce: } break; - case 77: -#line 162 "util/configparser.y" + case 79: +#line 164 "util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -1746,8 +1764,8 @@ yyreduce: } break; - case 78: -#line 171 "util/configparser.y" + case 80: +#line 173 "util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -1757,8 +1775,8 @@ yyreduce: } break; - case 79: -#line 180 "util/configparser.y" + case 81: +#line 182 "util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -1768,8 +1786,8 @@ yyreduce: } break; - case 80: -#line 189 "util/configparser.y" + case 82: +#line 191 "util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -1783,8 +1801,8 @@ yyreduce: } break; - case 81: -#line 202 "util/configparser.y" + case 83: +#line 204 "util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -1800,8 +1818,8 @@ yyreduce: } break; - case 82: -#line 217 "util/configparser.y" + case 84: +#line 219 "util/configparser.y" { OUTYY(("P(server_outgoing_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -1811,8 +1829,8 @@ yyreduce: } break; - case 83: -#line 226 "util/configparser.y" + case 85: +#line 228 "util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -1822,8 +1840,8 @@ yyreduce: } break; - case 84: -#line 235 "util/configparser.y" + case 86: +#line 237 "util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -1833,8 +1851,8 @@ yyreduce: } break; - case 85: -#line 244 "util/configparser.y" + case 87: +#line 246 "util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -1844,8 +1862,8 @@ yyreduce: } break; - case 86: -#line 253 "util/configparser.y" + case 88: +#line 255 "util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1855,8 +1873,8 @@ yyreduce: } break; - case 87: -#line 262 "util/configparser.y" + case 89: +#line 264 "util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1866,8 +1884,8 @@ yyreduce: } break; - case 88: -#line 271 "util/configparser.y" + case 90: +#line 273 "util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1877,8 +1895,8 @@ yyreduce: } break; - case 89: -#line 280 "util/configparser.y" + case 91: +#line 282 "util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1888,8 +1906,8 @@ yyreduce: } break; - case 90: -#line 289 "util/configparser.y" + case 92: +#line 291 "util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1904,8 +1922,8 @@ yyreduce: } break; - case 91: -#line 303 "util/configparser.y" + case 93: +#line 305 "util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->chrootdir); @@ -1913,8 +1931,8 @@ yyreduce: } break; - case 92: -#line 310 "util/configparser.y" + case 94: +#line 312 "util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->username); @@ -1922,8 +1940,8 @@ yyreduce: } break; - case 93: -#line 317 "util/configparser.y" + case 95: +#line 319 "util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->directory); @@ -1931,8 +1949,8 @@ yyreduce: } break; - case 94: -#line 324 "util/configparser.y" + case 96: +#line 326 "util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->logfile); @@ -1941,8 +1959,8 @@ yyreduce: } break; - case 95: -#line 332 "util/configparser.y" + case 97: +#line 334 "util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->pidfile); @@ -1950,8 +1968,8 @@ yyreduce: } break; - case 96: -#line 339 "util/configparser.y" + case 98: +#line 341 "util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str))) @@ -1959,8 +1977,8 @@ yyreduce: } break; - case 97: -#line 346 "util/configparser.y" + case 99: +#line 348 "util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -1969,8 +1987,8 @@ yyreduce: } break; - case 98: -#line 354 "util/configparser.y" + case 100: +#line 356 "util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -1979,8 +1997,8 @@ yyreduce: } break; - case 99: -#line 362 "util/configparser.y" + case 101: +#line 364 "util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str))) @@ -1988,8 +2006,8 @@ yyreduce: } break; - case 100: -#line 369 "util/configparser.y" + case 102: +#line 371 "util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -1999,8 +2017,8 @@ yyreduce: } break; - case 101: -#line 378 "util/configparser.y" + case 103: +#line 380 "util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2010,8 +2028,8 @@ yyreduce: } break; - case 102: -#line 387 "util/configparser.y" + case 104: +#line 389 "util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->identity); @@ -2019,8 +2037,8 @@ yyreduce: } break; - case 103: -#line 394 "util/configparser.y" + case 105: +#line 396 "util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->version); @@ -2028,8 +2046,8 @@ yyreduce: } break; - case 104: -#line 401 "util/configparser.y" + case 106: +#line 403 "util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2041,8 +2059,8 @@ yyreduce: } break; - case 105: -#line 412 "util/configparser.y" + case 107: +#line 414 "util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2052,8 +2070,8 @@ yyreduce: } break; - case 106: -#line 421 "util/configparser.y" + case 108: +#line 423 "util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2067,8 +2085,8 @@ yyreduce: } break; - case 107: -#line 434 "util/configparser.y" + case 109: +#line 436 "util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2078,8 +2096,8 @@ yyreduce: } break; - case 108: -#line 443 "util/configparser.y" + case 110: +#line 445 "util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2089,8 +2107,8 @@ yyreduce: } break; - case 109: -#line 452 "util/configparser.y" + case 111: +#line 454 "util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2104,8 +2122,8 @@ yyreduce: } break; - case 110: -#line 465 "util/configparser.y" + case 112: +#line 467 "util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2115,8 +2133,8 @@ yyreduce: } break; - case 111: -#line 474 "util/configparser.y" + case 113: +#line 476 "util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2126,8 +2144,8 @@ yyreduce: } break; - case 112: -#line 483 "util/configparser.y" + case 114: +#line 485 "util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2137,8 +2155,8 @@ yyreduce: } break; - case 113: -#line 492 "util/configparser.y" + case 115: +#line 494 "util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2148,8 +2166,8 @@ yyreduce: } break; - case 114: -#line 501 "util/configparser.y" + case 116: +#line 503 "util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2163,8 +2181,8 @@ yyreduce: } break; - case 115: -#line 514 "util/configparser.y" + case 117: +#line 516 "util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->target_fetch_policy); @@ -2172,8 +2190,8 @@ yyreduce: } break; - case 116: -#line 521 "util/configparser.y" + case 118: +#line 523 "util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2184,8 +2202,8 @@ yyreduce: } break; - case 117: -#line 531 "util/configparser.y" + case 119: +#line 533 "util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2196,8 +2214,8 @@ yyreduce: } break; - case 118: -#line 541 "util/configparser.y" + case 120: +#line 543 "util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2208,8 +2226,8 @@ yyreduce: } break; - case 119: -#line 551 "util/configparser.y" + case 121: +#line 553 "util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2220,8 +2238,8 @@ yyreduce: } break; - case 120: -#line 561 "util/configparser.y" + case 122: +#line 563 "util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str))) @@ -2229,8 +2247,8 @@ yyreduce: } break; - case 121: -#line 568 "util/configparser.y" + case 123: +#line 570 "util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2241,8 +2259,8 @@ yyreduce: } break; - case 122: -#line 578 "util/configparser.y" + case 124: +#line 580 "util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && @@ -2250,18 +2268,14 @@ yyreduce: yyerror("expected deny, refuse or allow in " "access control action"); } else { - struct config_acl* n = calloc(1, sizeof(*n)); - if(!n) fatal_exit("out of memory adding acl"); - n->address = (yyvsp[(2) - (3)].str); - n->control = (yyvsp[(3) - (3)].str); - n->next = cfg_parser->cfg->acls; - cfg_parser->cfg->acls = n; + if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + fatal_exit("out of memory adding acl"); } } break; - case 123: -#line 595 "util/configparser.y" + case 125: +#line 593 "util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->module_conf); @@ -2269,8 +2283,8 @@ yyreduce: } break; - case 124: -#line 602 "util/configparser.y" + case 126: +#line 600 "util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -2289,8 +2303,8 @@ yyreduce: } break; - case 125: -#line 620 "util/configparser.y" + case 127: +#line 618 "util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2300,8 +2314,8 @@ yyreduce: } break; - case 126: -#line 629 "util/configparser.y" + case 128: +#line 627 "util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2311,8 +2325,8 @@ yyreduce: } break; - case 127: -#line 638 "util/configparser.y" + case 129: +#line 636 "util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2323,8 +2337,8 @@ yyreduce: } break; - case 128: -#line 648 "util/configparser.y" + case 130: +#line 646 "util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2335,8 +2349,8 @@ yyreduce: } break; - case 129: -#line 658 "util/configparser.y" + case 131: +#line 656 "util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); @@ -2344,8 +2358,8 @@ yyreduce: } break; - case 130: -#line 665 "util/configparser.y" + case 132: +#line 663 "util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2355,8 +2369,8 @@ yyreduce: } break; - case 131: -#line 674 "util/configparser.y" + case 133: +#line 672 "util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2370,8 +2384,38 @@ yyreduce: } break; - case 132: -#line 687 "util/configparser.y" + case 134: +#line 685 "util/configparser.y" + { + OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && + strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 && + strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0) + yyerror("local-zone type: expected static, deny, " + "refuse, redirect, transparent or nodefault"); + else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> + local_zones_nodefault, (yyvsp[(2) - (3)].str))) + fatal_exit("out of memory adding local-zone"); + } else { + if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, + (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + fatal_exit("out of memory adding local-zone"); + } + } + break; + + case 135: +#line 704 "util/configparser.y" + { + OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str))) + fatal_exit("out of memory adding local-data"); + } + break; + + case 136: +#line 711 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->stubs->name); @@ -2379,8 +2423,8 @@ yyreduce: } break; - case 133: -#line 694 "util/configparser.y" + case 137: +#line 718 "util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str))) @@ -2388,8 +2432,8 @@ yyreduce: } break; - case 134: -#line 701 "util/configparser.y" + case 138: +#line 725 "util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str))) @@ -2397,8 +2441,8 @@ yyreduce: } break; - case 135: -#line 708 "util/configparser.y" + case 139: +#line 732 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->forwards->name); @@ -2406,8 +2450,8 @@ yyreduce: } break; - case 136: -#line 715 "util/configparser.y" + case 140: +#line 739 "util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str))) @@ -2415,8 +2459,8 @@ yyreduce: } break; - case 137: -#line 722 "util/configparser.y" + case 141: +#line 746 "util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str))) @@ -2426,7 +2470,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 2430 "util/configparser.c" +#line 2474 "util/configparser.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2640,7 +2684,7 @@ yyreturn: } -#line 728 "util/configparser.y" +#line 752 "util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 1e8602e7b..8c4004291 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -109,7 +109,9 @@ VAR_DO_NOT_QUERY_LOCALHOST = 325, VAR_CACHE_MAX_TTL = 326, VAR_HARDEN_DNNSEC_STRIPPED = 327, - VAR_ACCESS_CONTROL = 328 + VAR_ACCESS_CONTROL = 328, + VAR_LOCAL_ZONE = 329, + VAR_LOCAL_DATA = 330 }; #endif /* Tokens. */ @@ -184,6 +186,8 @@ #define VAR_CACHE_MAX_TTL 326 #define VAR_HARDEN_DNNSEC_STRIPPED 327 #define VAR_ACCESS_CONTROL 328 +#define VAR_LOCAL_ZONE 329 +#define VAR_LOCAL_DATA 330 @@ -195,7 +199,7 @@ typedef union YYSTYPE char* str; } /* Line 1489 of yacc.c. */ -#line 199 "util/configparser.h" +#line 203 "util/configparser.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/util/configparser.y b/util/configparser.y index a9a387a22..ceb6bd527 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -87,6 +87,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_VAL_NSEC3_KEYSIZE_ITERATIONS VAR_USE_SYSLOG %token VAR_OUTGOING_INTERFACE VAR_ROOT_HINTS VAR_DO_NOT_QUERY_LOCALHOST %token VAR_CACHE_MAX_TTL VAR_HARDEN_DNNSEC_STRIPPED VAR_ACCESS_CONTROL +%token VAR_LOCAL_ZONE VAR_LOCAL_DATA %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -124,7 +125,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_trusted_keys_file | server_val_nsec3_keysize_iterations | server_use_syslog | server_outgoing_interface | server_root_hints | server_do_not_query_localhost | server_cache_max_ttl | - server_harden_dnssec_stripped | server_access_control + server_harden_dnssec_stripped | server_access_control | + server_local_zone | server_local_data ; stubstart: VAR_STUB_ZONE { @@ -582,12 +584,8 @@ server_access_control: VAR_ACCESS_CONTROL STRING STRING yyerror("expected deny, refuse or allow in " "access control action"); } else { - struct config_acl* n = calloc(1, sizeof(*n)); - if(!n) fatal_exit("out of memory adding acl"); - n->address = $2; - n->control = $3; - n->next = cfg_parser->cfg->acls; - cfg_parser->cfg->acls = n; + if(!cfg_str2list_insert(&cfg_parser->cfg->acls, $2, $3)) + fatal_exit("out of memory adding acl"); } } ; @@ -683,6 +681,32 @@ server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING free($2); } ; +server_local_zone: VAR_LOCAL_ZONE STRING STRING + { + OUTYY(("P(server_local_zone:%s %s)\n", $2, $3)); + if(strcmp($3, "static")!=0 && strcmp($3, "deny")!=0 && + strcmp($3, "refuse")!=0 && strcmp($3, "redirect")!=0 && + strcmp($3, "transparent")!=0 && strcmp($3, "nodefault")!=0) + yyerror("local-zone type: expected static, deny, " + "refuse, redirect, transparent or nodefault"); + else if(strcmp($3, "nodefault")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> + local_zones_nodefault, $2)) + fatal_exit("out of memory adding local-zone"); + } else { + if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, + $2, $3)) + fatal_exit("out of memory adding local-zone"); + } + } + ; +server_local_data: VAR_LOCAL_DATA STRING + { + OUTYY(("P(server_local_data:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, $2)) + fatal_exit("out of memory adding local-data"); + } + ; stub_name: VAR_NAME STRING { OUTYY(("P(name:%s)\n", $2)); -- 2.47.2