Fixup tests.

git-svn-id: file:///svn/unbound/trunk@711 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2007-10-22 06:25:46 +00:00
parent f8dcdf6e3a
commit 280352760c
22 changed files with 742 additions and 621 deletions

View file

@ -1,3 +1,7 @@
22 October 2007: Wouter
- added donotquerylocalhost config option. Can be turned off for
out test cases.
19 October 2007: Wouter 19 October 2007: Wouter
- added configure (and its files) to svn, so that the trunk is easier - added configure (and its files) to svn, so that the trunk is easier
to use. ./configure, config.guess, config.sub, ltmain.sh, to use. ./configure, config.guess, config.sub, ltmain.sh,

View file

@ -170,6 +170,10 @@ server:
# do-not-query-address: 127.0.0.1/8 # do-not-query-address: 127.0.0.1/8
# do-not-query-address: ::1 # do-not-query-address: ::1
# if yes, the above default do-not-query-address entries are present.
# if no, localhost can be queried (for testing and debugging).
# do-not-query-localhost: yes
# module configuration of the server. A string with identifiers # module configuration of the server. A string with identifiers
# separated by spaces. "iterator" or "validator iterator" # separated by spaces. "iterator" or "validator iterator"
# module-config: "validator iterator" # module-config: "validator iterator"

View file

@ -217,6 +217,10 @@ Will trust glue only if it is within the servers authority. Default is on.
Do not query the given IP address. Can be IP4 or IP6. Append /num to Do not query the given IP address. Can be IP4 or IP6. Append /num to
indicate a classless delegation netblock, for example like indicate a classless delegation netblock, for example like
10.2.3.4/24 or 2001::11/64. 10.2.3.4/24 or 2001::11/64.
.It \fBdo-not-query-localhost:\fR <yes or no>
If yes, localhost is added to the do-not-query-address entries, both
IP6 ::1 and IP4 127.0.0.1/8. If no, then localhost can be used to send
queries to. Default is yes.
.It \fBmodule-config:\fR <"module names"> .It \fBmodule-config:\fR <"module names">
Module configuration, a list of module names separated by spaces, surround Module configuration, a list of module names separated by spaces, surround
the string with quotes (""). The modules can be validator, iterator. the string with quotes (""). The modules can be validator, iterator.

View file

@ -53,7 +53,8 @@ donotq_cmp(const void* k1, const void* k2)
{ {
struct iter_donotq_addr* n1 = (struct iter_donotq_addr*)k1; struct iter_donotq_addr* n1 = (struct iter_donotq_addr*)k1;
struct iter_donotq_addr* n2 = (struct iter_donotq_addr*)k2; struct iter_donotq_addr* n2 = (struct iter_donotq_addr*)k2;
int r = sockaddr_cmp(&n1->addr, n1->addrlen, &n2->addr, n2->addrlen); int r = sockaddr_cmp_addr(&n1->addr, n1->addrlen, &n2->addr,
n2->addrlen);
if(r != 0) return r; if(r != 0) return r;
if(n1->net < n2->net) if(n1->net < n2->net)
return -1; return -1;
@ -129,45 +130,57 @@ mask_block(int ip6, struct sockaddr_storage* addr, int net)
s[net/8] &= mask[net&0x7]; s[net/8] &= mask[net&0x7];
} }
/** apply donotq string */
static int
donotq_str_cfg(struct iter_donotq* dq, const char* str)
{
struct sockaddr_storage addr;
int net;
char* s = NULL;
socklen_t addrlen;
net = (str_is_ip6(str)?128:32);
if((s=strchr(str, '/'))) {
if(atoi(s+1) > net) {
log_err("netblock too large: %s", str);
return 0;
}
net = atoi(s+1);
if(net == 0 && strcmp(s+1, "0") != 0) {
log_err("cannot parse donotquery netblock:"
" '%s'", str);
return 0;
}
if(!(s = strdup(str))) {
log_err("out of memory");
return 0;
}
*strchr(s, '/') = '\0';
}
if(!ipstrtoaddr(s?s:str, UNBOUND_DNS_PORT, &addr, &addrlen)) {
free(s);
log_err("cannot parse donotquery ip address: '%s'", str);
return 0;
}
if(s) {
free(s);
mask_block(str_is_ip6(str), &addr, net);
}
if(!donotq_insert(dq, &addr, addrlen, net)) {
log_err("out of memory");
return 0;
}
return 1;
}
/** read donotq config */ /** read donotq config */
static int static int
read_donotq(struct iter_donotq* dq, struct config_file* cfg) read_donotq(struct iter_donotq* dq, struct config_file* cfg)
{ {
struct config_strlist* p; struct config_strlist* p;
struct sockaddr_storage addr;
int net;
char* s;
socklen_t addrlen;
for(p = cfg->donotqueryaddrs; p; p = p->next) { for(p = cfg->donotqueryaddrs; p; p = p->next) {
log_assert(p->str); log_assert(p->str);
net = (str_is_ip6(p->str)?128:32); if(!donotq_str_cfg(dq, p->str))
if((s=strchr(p->str, '/'))) {
if(atoi(s+1) > net) {
log_err("netblock too large: %s", p->str);
return 0;
}
net = atoi(s+1);
if(net == 0 && strcmp(s+1, "0") != 0) {
log_err("cannot parse donotquery netblock:"
" '%s'", p->str);
return 0;
}
*s = '\0';
}
if(!ipstrtoaddr(p->str, UNBOUND_DNS_PORT, &addr, &addrlen)) {
if(s) *s = '/';
log_err("cannot parse donotquery ip address: '%s'",
p->str);
return 0; return 0;
}
if(s) {
*s = '/';
mask_block(str_is_ip6(p->str), &addr, net);
}
if(!donotq_insert(dq, &addr, addrlen, net)) {
log_err("out of memory");
return 0;
}
} }
return 1; return 1;
} }
@ -245,6 +258,12 @@ donotq_apply_cfg(struct iter_donotq* dq, struct config_file* cfg)
return 0; return 0;
if(!read_donotq(dq, cfg)) if(!read_donotq(dq, cfg))
return 0; return 0;
if(cfg->donotquery_localhost) {
if(!donotq_str_cfg(dq, "127.0.0.0/8"))
return 0;
if(!donotq_str_cfg(dq, "::1"))
return 0;
}
donotq_init_parents(dq); donotq_init_parents(dq);
return 1; return 1;
} }

Binary file not shown.

Binary file not shown.

BIN
testdata/fwd_tcp.tpkg vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
testdata/fwd_udp.tpkg vendored

Binary file not shown.

View file

@ -99,10 +99,7 @@ config_create()
if(!(cfg->pidfile = strdup("unbound.pid"))) goto error_exit; if(!(cfg->pidfile = strdup("unbound.pid"))) goto error_exit;
if(!(cfg->target_fetch_policy = strdup("3 2 1 0 0"))) goto error_exit; if(!(cfg->target_fetch_policy = strdup("3 2 1 0 0"))) goto error_exit;
cfg->donotqueryaddrs = NULL; cfg->donotqueryaddrs = NULL;
if(!cfg_strlist_insert(&cfg->donotqueryaddrs, strdup("127.0.0.0/8"))) cfg->donotquery_localhost = 1;
goto error_exit;
if(!cfg_strlist_insert(&cfg->donotqueryaddrs, strdup("::1")))
goto error_exit;
cfg->root_hints = NULL; cfg->root_hints = NULL;
cfg->do_daemonize = 1; cfg->do_daemonize = 1;
cfg->num_ifs = 0; cfg->num_ifs = 0;

View file

@ -120,6 +120,8 @@ struct config_file {
struct config_stub* forwards; struct config_stub* forwards;
/** list of donotquery addresses, linked list */ /** list of donotquery addresses, linked list */
struct config_strlist* donotqueryaddrs; struct config_strlist* donotqueryaddrs;
/** use default localhost donotqueryaddr entries */
int donotquery_localhost;
/** harden against very small edns buffer sizes */ /** harden against very small edns buffer sizes */
int harden_short_bufsize; int harden_short_bufsize;

View file

@ -365,8 +365,8 @@ static void yy_fatal_error (yyconst char msg[] );
*yy_cp = '\0'; \ *yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp; (yy_c_buf_p) = yy_cp;
#define YY_NUM_RULES 76 #define YY_NUM_RULES 77
#define YY_END_OF_BUFFER 77 #define YY_END_OF_BUFFER 78
/* This struct is not used in this scanner, /* This struct is not used in this scanner,
but its presence is necessary. */ but its presence is necessary. */
struct yy_trans_info struct yy_trans_info
@ -374,80 +374,81 @@ struct yy_trans_info
flex_int32_t yy_verify; flex_int32_t yy_verify;
flex_int32_t yy_nxt; flex_int32_t yy_nxt;
}; };
static yyconst flex_int16_t yy_accept[655] = static yyconst flex_int16_t yy_accept[665] =
{ 0, { 0,
1, 1, 64, 64, 68, 68, 72, 72, 77, 75, 1, 1, 65, 65, 69, 69, 73, 73, 78, 76,
1, 62, 63, 2, 76, 75, 75, 75, 75, 75, 1, 63, 64, 2, 77, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 64, 65, 76, 66, 76, 71, 68, 69, 70, 76, 65, 66, 77, 67, 77, 72, 69, 70, 71,
76, 72, 73, 74, 76, 75, 0, 1, 2, 2, 77, 73, 74, 75, 77, 76, 0, 1, 2, 2,
2, 2, 75, 75, 75, 75, 75, 75, 75, 75, 2, 2, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 64, 0, 76, 76, 76, 76, 76, 76, 76, 76, 65, 0,
71, 0, 68, 72, 0, 75, 75, 75, 75, 75, 72, 0, 69, 73, 0, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 39, 75, 75, 75, 76, 76, 76, 76, 76, 76, 39, 76, 76, 76,
75, 6, 75, 75, 75, 75, 75, 75, 75, 75, 76, 6, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
17, 75, 11, 12, 75, 14, 13, 75, 75, 75, 17, 76, 11, 12, 76, 14, 13, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 3, 76, 76, 76, 76, 76, 76, 76, 76, 76, 3,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 67, 75, 75, 75, 75, 75, 76, 76, 76, 76, 68, 76, 76, 76, 76, 76,
75, 20, 75, 75, 75, 75, 75, 75, 21, 75, 76, 20, 76, 76, 76, 76, 76, 76, 21, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 49, 75, 75, 75, 75, 76, 76, 76, 76, 76, 50, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 48, 75, 75, 75, 76, 76, 76, 76, 76, 76, 49, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 18, 75, 76, 76, 76, 76, 76, 76, 76, 76, 18, 76,
75, 75, 75, 75, 75, 19, 75, 75, 75, 75, 76, 76, 76, 76, 76, 19, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 15, 76, 76, 76, 76, 76, 76, 76, 76, 76, 15,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 40, 41, 38, 75, 75, 75, 75, 75, 76, 76, 40, 41, 38, 76, 76, 76, 76, 76,
75, 75, 75, 75, 5, 75, 75, 75, 75, 75, 76, 76, 76, 76, 5, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 22, 75, 76, 76, 76, 76, 76, 76, 76, 76, 22, 76,
75, 75, 75, 61, 75, 75, 75, 75, 75, 75, 76, 76, 76, 62, 76, 76, 76, 76, 76, 76,
75, 75, 75, 37, 75, 75, 75, 75, 75, 75, 76, 76, 76, 37, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 4, 76, 76, 76, 76, 76, 76, 76, 76, 76, 4,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 43, 44, 42, 75, 75, 75, 76, 76, 76, 76, 43, 44, 42, 76, 76, 76,
47, 75, 75, 75, 75, 75, 75, 75, 75, 75, 48, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 53, 75, 75, 75, 75, 75, 75, 75, 75, 76, 54, 76, 76, 76, 76, 76, 76, 76, 76,
75, 46, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 47, 76, 76, 76, 76, 76, 76, 76,
50, 75, 75, 75, 75, 75, 75, 7, 75, 75, 76, 51, 76, 76, 76, 76, 76, 76, 7, 76,
75, 75, 75, 75, 55, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 56, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 28, 29, 58, 75, 76, 76, 76, 76, 76, 76, 76, 76, 28, 29,
75, 24, 75, 75, 75, 75, 8, 75, 75, 75, 59, 76, 76, 24, 76, 76, 76, 76, 8, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 75, 75, 59, 23, 25, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 60, 23, 25, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
75, 10, 75, 75, 75, 75, 75, 9, 26, 75, 76, 76, 76, 76, 76, 10, 76, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 9, 26, 76, 76, 76, 76, 76, 76, 76,
75, 75, 30, 75, 75, 27, 75, 51, 52, 75, 76, 76, 76, 76, 76, 76, 76, 30, 76, 76,
75, 54, 75, 75, 75, 75, 75, 75, 75, 16, 27, 76, 52, 53, 76, 76, 55, 76, 76, 76,
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 16, 76, 76, 76, 76,
34, 75, 75, 57, 45, 36, 35, 75, 31, 75, 76, 76, 76, 76, 76, 76, 76, 34, 76, 76,
56, 75, 32, 75, 75, 33, 75, 75, 75, 75, 58, 45, 76, 36, 35, 76, 31, 76, 57, 76,
75, 75, 60, 0 76, 32, 76, 76, 46, 33, 76, 76, 76, 76,
76, 76, 61, 0
} ; } ;
static yyconst flex_int32_t yy_ec[256] = static yyconst flex_int32_t yy_ec[256] =
@ -490,17 +491,17 @@ static yyconst flex_int32_t yy_meta[37] =
1, 1, 1, 1, 1, 1 1, 1, 1, 1, 1, 1
} ; } ;
static yyconst flex_int16_t yy_base[664] = static yyconst flex_int16_t yy_base[674] =
{ 0, { 0,
0, 0, 34, 37, 48, 52, 58, 62, 1333, 1320, 0, 0, 34, 37, 48, 52, 58, 62, 1353, 1340,
41, 1334, 1334, 67, 71, 65, 66, 32, 68, 70, 41, 1354, 1354, 67, 71, 65, 66, 32, 68, 70,
71, 33, 72, 78, 36, 82, 85, 84, 87, 92, 71, 33, 72, 78, 36, 82, 85, 84, 87, 92,
100, 1319, 1334, 1334, 1334, 101, 1318, 1327, 1334, 1334, 100, 1339, 1354, 1354, 1354, 101, 1338, 1347, 1354, 1354,
116, 1316, 1334, 1334, 119, 1315, 123, 124, 0, 127, 116, 1336, 1354, 1354, 119, 1335, 123, 124, 0, 127,
0, 0, 107, 121, 128, 122, 125, 126, 129, 137, 0, 0, 107, 121, 128, 122, 125, 126, 129, 137,
131, 141, 132, 144, 133, 135, 146, 149, 150, 81, 131, 141, 132, 144, 133, 135, 146, 149, 150, 81,
152, 155, 157, 158, 159, 161, 160, 163, 1314, 176, 152, 155, 157, 158, 159, 161, 160, 163, 1334, 176,
1313, 191, 1322, 1311, 181, 162, 182, 185, 164, 188, 1333, 191, 1342, 1331, 181, 162, 182, 185, 164, 188,
190, 178, 189, 193, 196, 202, 206, 199, 213, 209, 190, 178, 189, 193, 196, 202, 206, 199, 213, 209,
216, 215, 217, 207, 218, 220, 221, 227, 224, 228, 216, 215, 217, 207, 218, 220, 221, 227, 224, 228,
@ -509,142 +510,144 @@ static yyconst flex_int16_t yy_base[664] =
272, 283, 271, 278, 276, 289, 291, 284, 293, 299, 272, 283, 271, 278, 276, 289, 291, 284, 293, 299,
295, 296, 301, 297, 320, 302, 304, 305, 306, 311, 295, 296, 301, 297, 320, 302, 304, 305, 306, 311,
307, 312, 314, 321, 317, 328, 331, 332, 339, 346, 307, 312, 314, 321, 317, 328, 331, 332, 339, 346,
344, 342, 345, 347, 351, 353, 1310, 355, 357, 358, 344, 342, 345, 347, 351, 353, 1330, 355, 357, 358,
359, 1309, 360, 366, 362, 372, 363, 369, 376, 377, 359, 1329, 360, 366, 362, 372, 363, 369, 376, 377,
381, 383, 384, 385, 386, 387, 389, 393, 390, 398, 381, 383, 384, 385, 386, 387, 389, 393, 390, 398,
401, 412, 409, 411, 413, 419, 416, 418, 415, 421, 401, 412, 409, 411, 413, 419, 416, 418, 415, 421,
422, 425, 429, 424, 432, 443, 439, 441, 442, 431, 422, 425, 429, 424, 432, 443, 439, 441, 442, 431,
440, 446, 449, 452, 457, 450, 459, 460, 466, 462, 440, 446, 449, 452, 457, 450, 459, 460, 466, 462,
464, 465, 467, 469, 470, 472, 480, 471, 478, 481, 464, 465, 467, 469, 470, 472, 480, 471, 478, 481,
1308, 482, 1307, 1306, 484, 1305, 1304, 491, 490, 493, 1328, 482, 1327, 1326, 484, 1325, 1324, 491, 490, 493,
489, 492, 496, 502, 503, 505, 510, 513, 512, 518, 489, 492, 496, 502, 503, 505, 510, 513, 512, 518,
521, 522, 523, 525, 527, 507, 530, 526, 533, 1303, 521, 522, 523, 525, 527, 507, 530, 526, 533, 1323,
536, 535, 537, 538, 541, 548, 545, 546, 547, 557, 536, 535, 537, 538, 541, 548, 545, 546, 547, 557,
549, 555, 559, 560, 562, 563, 564, 565, 569, 574, 549, 555, 559, 560, 562, 563, 564, 565, 569, 574,
568, 570, 577, 582, 1302, 590, 588, 578, 587, 592, 568, 570, 577, 582, 1322, 590, 588, 578, 587, 592,
593, 1301, 594, 600, 601, 602, 603, 612, 1300, 609, 593, 1321, 594, 600, 601, 602, 603, 612, 1320, 609,
610, 614, 615, 616, 617, 620, 619, 618, 625, 626, 610, 614, 615, 616, 617, 620, 619, 618, 625, 626,
627, 637, 630, 636, 635, 1299, 639, 641, 648, 642, 627, 637, 630, 636, 635, 1319, 639, 641, 648, 642,
643, 649, 650, 651, 653, 654, 1298, 655, 662, 659, 643, 649, 650, 651, 653, 654, 1318, 655, 662, 659,
661, 674, 676, 664, 675, 684, 680, 682, 681, 683, 661, 674, 676, 664, 675, 684, 680, 682, 681, 683,
687, 689, 700, 703, 691, 697, 704, 706, 1297, 712, 687, 689, 700, 703, 691, 697, 704, 706, 1317, 712,
716, 719, 708, 715, 721, 1296, 718, 722, 723, 724, 716, 719, 708, 715, 721, 1316, 718, 722, 723, 724,
725, 727, 728, 729, 732, 731, 739, 747, 748, 1295, 725, 727, 728, 729, 732, 731, 739, 747, 748, 1315,
736, 749, 757, 740, 750, 753, 756, 759, 760, 761, 736, 749, 757, 740, 750, 753, 756, 759, 760, 761,
764, 765, 1294, 1293, 1292, 772, 766, 767, 777, 773, 764, 765, 1314, 1313, 1312, 772, 766, 767, 777, 773,
781, 778, 783, 784, 1291, 785, 786, 791, 789, 796, 781, 778, 783, 784, 1311, 785, 786, 791, 789, 796,
793, 797, 799, 800, 805, 806, 804, 807, 811, 812, 793, 797, 799, 800, 805, 806, 804, 807, 811, 812,
809, 819, 829, 815, 825, 831, 832, 833, 1290, 839, 809, 819, 829, 815, 825, 831, 832, 833, 1310, 839,
837, 835, 836, 1289, 838, 847, 848, 850, 856, 863, 837, 835, 836, 1309, 838, 847, 848, 850, 856, 863,
841, 860, 862, 1288, 869, 871, 867, 873, 875, 868, 841, 860, 862, 1308, 869, 871, 867, 873, 875, 868,
874, 876, 877, 882, 878, 880, 884, 887, 891, 1287, 874, 876, 877, 882, 878, 880, 884, 887, 891, 1307,
892, 899, 896, 898, 900, 907, 914, 916, 910, 919, 892, 899, 896, 898, 900, 907, 914, 916, 910, 919,
903, 917, 904, 927, 1286, 1285, 1284, 920, 922, 930, 903, 917, 904, 927, 1306, 1305, 1304, 920, 922, 930,
1283, 931, 932, 934, 935, 937, 938, 939, 940, 952, 1303, 931, 932, 934, 935, 937, 940, 939, 941, 953,
941, 953, 943, 955, 947, 956, 962, 963, 967, 957, 942, 955, 945, 956, 957, 949, 959, 962, 964, 963,
971, 1282, 973, 970, 974, 966, 981, 982, 986, 980, 965, 1302, 970, 980, 972, 969, 982, 983, 985, 977,
988, 1281, 989, 991, 993, 994, 997, 999, 1002, 1004, 984, 990, 1301, 992, 993, 994, 996, 999, 1001, 1003,
1280, 1006, 1010, 1007, 1012, 1013, 1014, 1279, 1016, 1018, 1007, 1300, 1008, 1012, 1009, 1014, 1015, 1016, 1299, 1018,
1020, 1023, 1024, 1026, 1278, 1027, 1030, 1031, 1041, 1034, 1020, 1022, 1024, 1026, 1028, 1298, 1029, 1030, 1032, 1041,
1040, 1043, 1044, 1047, 1048, 1051, 1277, 1276, 1275, 1055, 1042, 1040, 1045, 1047, 1034, 1051, 1052, 1055, 1297, 1296,
1058, 1274, 1061, 1067, 1063, 1050, 1273, 1066, 1068, 1069, 1295, 1059, 1062, 1294, 1064, 1070, 1066, 1054, 1293, 1068,
1072, 1073, 1076, 1074, 1075, 1077, 1078, 1079, 1081, 1087, 1072, 1071, 1075, 1076, 1079, 1077, 1078, 1080, 1081, 1083,
1093, 1090, 1082, 1272, 1270, 1262, 1091, 1102, 1107, 1109, 1085, 1089, 1091, 1099, 1095, 1093, 1292, 1291, 1290, 1096,
1097, 1092, 1111, 1112, 1113, 1114, 1118, 1120, 1121, 1122, 1100, 1105, 1113, 1106, 1108, 1114, 1116, 1118, 1120, 1122,
1124, 1246, 1125, 1128, 1130, 1132, 1136, 1245, 1244, 1138, 1123, 1126, 1128, 1129, 1133, 1289, 1130, 1134, 1136, 1141,
1139, 1145, 1148, 1149, 1155, 1152, 1153, 1154, 1156, 1135, 1140, 1288, 1287, 1144, 1147, 1154, 1156, 1146, 1162, 1161,
1158, 1160, 1243, 1163, 1165, 1242, 1166, 1238, 1237, 1168, 1163, 1151, 1158, 1165, 1164, 1168, 1171, 1285, 1172, 1174,
1173, 1234, 1170, 1174, 1176, 1178, 1171, 1181, 1185, 1233, 1277, 1175, 1261, 1260, 1178, 1176, 1259, 1181, 1182, 1180,
1187, 1177, 1184, 1197, 1201, 1205, 1207, 1193, 1209, 1210, 1183, 1187, 1184, 1191, 1197, 1256, 1196, 1193, 1199, 1206,
1232, 1213, 1214, 1202, 1191, 1103, 1028, 1216, 959, 1217, 1211, 1203, 1213, 1215, 1217, 1220, 1223, 1255, 1226, 1227,
842, 1218, 693, 1223, 1224, 660, 1220, 1227, 1226, 1228, 1254, 1253, 1216, 1250, 1249, 1229, 1207, 1230, 1110, 1231,
1229, 1231, 388, 1334, 1259, 1263, 1267, 329, 1271, 1275, 1237, 842, 1239, 1240, 693, 660, 1233, 1242, 1243, 1245,
108, 1277, 1279 1244, 1247, 388, 1354, 1274, 1278, 1282, 329, 1286, 1290,
108, 1292, 1294
} ; } ;
static yyconst flex_int16_t yy_def[664] = static yyconst flex_int16_t yy_def[674] =
{ 0, { 0,
654, 1, 655, 655, 656, 656, 657, 657, 654, 658, 664, 1, 665, 665, 666, 666, 667, 667, 664, 668,
654, 654, 654, 659, 658, 658, 658, 658, 658, 658, 664, 664, 664, 669, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 660, 654, 654, 654, 660, 661, 654, 654, 654, 668, 670, 664, 664, 664, 670, 671, 664, 664, 664,
661, 662, 654, 654, 662, 658, 658, 654, 663, 659, 671, 672, 664, 664, 672, 668, 668, 664, 673, 669,
663, 659, 658, 658, 658, 658, 658, 658, 658, 658, 673, 669, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 660, 660, 668, 668, 668, 668, 668, 668, 668, 668, 670, 670,
661, 661, 654, 662, 662, 658, 658, 658, 658, 658, 671, 671, 664, 672, 672, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
658, 658, 658, 0, 654, 654, 654, 654, 654, 654, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
654, 654, 654 668, 668, 668, 0, 664, 664, 664, 664, 664, 664,
664, 664, 664
} ; } ;
static yyconst flex_int16_t yy_nxt[1371] = static yyconst flex_int16_t yy_nxt[1391] =
{ 0, { 0,
10, 11, 12, 12, 13, 14, 10, 10, 10, 10, 10, 11, 12, 12, 13, 14, 10, 10, 10, 10,
10, 15, 10, 10, 16, 17, 10, 18, 10, 19, 10, 15, 10, 10, 16, 17, 10, 18, 10, 19,
@ -748,57 +751,59 @@ static yyconst flex_int16_t yy_nxt[1371] =
481, 470, 47, 47, 476, 486, 477, 47, 485, 47, 481, 470, 47, 47, 476, 486, 477, 47, 485, 47,
47, 47, 478, 490, 47, 47, 488, 484, 47, 482, 47, 47, 478, 490, 47, 47, 488, 484, 47, 482,
491, 47, 493, 497, 492, 47, 487, 47, 47, 489, 491, 47, 493, 497, 492, 47, 487, 47, 47, 489,
47, 47, 494, 47, 495, 501, 498, 496, 47, 499, 47, 47, 494, 47, 495, 502, 498, 496, 47, 499,
502, 47, 47, 47, 504, 47, 47, 500, 47, 47, 503, 47, 47, 47, 505, 47, 47, 501, 47, 500,
47, 47, 47, 510, 47, 509, 514, 506, 47, 507, 47, 47, 47, 47, 511, 510, 47, 507, 515, 508,
508, 503, 511, 47, 47, 505, 47, 47, 47, 513, 47, 504, 509, 512, 47, 506, 47, 47, 47, 519,
47, 515, 518, 47, 47, 516, 512, 47, 47, 519, 47, 514, 516, 47, 47, 47, 47, 513, 520, 518,
525, 47, 47, 522, 47, 47, 517, 520, 523, 521, 47, 47, 524, 47, 521, 517, 522, 525, 47, 523,
524, 47, 47, 47, 526, 527, 528, 47, 529, 47, 526, 47, 527, 47, 47, 47, 47, 529, 528, 530,
47, 530, 47, 533, 47, 47, 536, 537, 47, 538, 531, 47, 532, 47, 47, 47, 535, 47, 538, 539,
47, 531, 539, 47, 534, 47, 535, 47, 47, 532, 47, 540, 47, 541, 47, 533, 536, 537, 47, 47,
542, 47, 541, 47, 47, 47, 547, 47, 546, 47, 47, 534, 544, 47, 543, 47, 47, 47, 549, 47,
545, 47, 549, 540, 47, 47, 543, 47, 47, 47, 548, 47, 547, 47, 551, 47, 542, 47, 545, 47,
544, 47, 47, 555, 551, 47, 552, 556, 550, 557, 47, 47, 546, 47, 557, 47, 553, 558, 554, 552,
554, 47, 47, 548, 47, 47, 558, 553, 47, 47, 556, 47, 47, 47, 560, 550, 47, 559, 47, 555,
559, 47, 47, 561, 563, 564, 47, 562, 565, 47, 563, 561, 47, 47, 562, 47, 47, 564, 566, 567,
560, 566, 47, 567, 47, 568, 569, 47, 47, 47, 47, 565, 568, 47, 569, 47, 570, 47, 571, 47,
47, 571, 570, 47, 47, 47, 47, 47, 47, 47, 572, 47, 47, 47, 573, 574, 47, 47, 47, 47,
47, 572, 47, 47, 573, 574, 575, 582, 47, 583, 47, 47, 47, 575, 47, 583, 47, 576, 577, 578,
578, 47, 47, 47, 47, 577, 579, 580, 47, 576, 47, 586, 47, 581, 47, 587, 47, 47, 580, 582,
581, 585, 591, 47, 47, 584, 587, 588, 47, 589, 47, 47, 579, 584, 591, 592, 47, 47, 585, 47,
47, 586, 47, 47, 47, 47, 590, 592, 593, 47, 588, 47, 589, 593, 47, 47, 590, 47, 595, 47,
595, 47, 47, 47, 596, 47, 47, 598, 594, 47, 596, 47, 597, 47, 47, 594, 599, 47, 600, 47,
603, 47, 599, 47, 600, 597, 47, 47, 606, 47, 47, 47, 602, 598, 47, 47, 608, 47, 601, 604,
47, 604, 605, 607, 601, 608, 47, 602, 609, 47, 603, 47, 47, 605, 611, 47, 610, 47, 47, 606,
47, 611, 612, 47, 47, 47, 47, 47, 613, 47, 609, 612, 47, 607, 613, 47, 614, 47, 616, 47,
616, 47, 615, 610, 47, 620, 47, 47, 617, 47, 615, 617, 47, 47, 47, 47, 47, 620, 618, 47,
622, 47, 47, 614, 47, 47, 624, 47, 47, 47, 619, 621, 47, 47, 626, 47, 47, 47, 623, 47,
618, 619, 47, 623, 627, 47, 47, 631, 47, 632, 628, 47, 47, 47, 47, 47, 629, 630, 47, 622,
625, 624, 47, 634, 47, 632, 638, 47, 47, 627,
47, 631, 633, 637, 47, 639, 641, 47, 47, 635,
636, 642, 47, 644, 47, 645, 47, 47, 47, 640,
647, 47, 643, 646, 47, 648, 649, 47, 47, 652,
47, 47, 47, 650, 47, 653, 651, 655, 47, 656,
47, 47, 657, 47, 47, 47, 47, 663, 47, 654,
47, 47, 659, 658, 47, 47, 47, 47, 660, 661,
47, 47, 47, 662, 32, 32, 32, 32, 37, 37,
37, 37, 42, 42, 42, 42, 50, 50, 47, 50,
79, 79, 84, 84, 51, 51, 47, 51, 47, 47,
621, 630, 47, 625, 47, 626, 628, 634, 47, 638,
629, 635, 47, 47, 633, 636, 47, 637, 47, 639,
47, 47, 640, 641, 47, 47, 643, 47, 47, 47,
642, 47, 644, 646, 47, 47, 647, 47, 47, 47,
47, 653, 47, 47, 47, 47, 645, 649, 47, 47,
648, 650, 651, 47, 47, 47, 47, 47, 652, 32,
32, 32, 32, 37, 37, 37, 37, 42, 42, 42,
42, 50, 50, 47, 50, 79, 79, 84, 84, 51,
51, 47, 51, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
47, 47, 85, 83, 82, 80, 47, 85, 83, 82, 47, 47, 85, 83, 82, 80, 47, 85, 83, 82,
80, 47, 654, 9, 654, 654, 654, 654, 654, 654, 80, 47, 664, 9, 664, 664, 664, 664, 664, 664,
654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
654, 654, 654, 654, 654, 654, 654, 654, 654, 654 664, 664, 664, 664, 664, 664, 664, 664, 664, 664
} ; } ;
static yyconst flex_int16_t yy_chk[1371] = static yyconst flex_int16_t yy_chk[1391] =
{ 0, { 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, 1, 1, 1,
@ -811,7 +816,7 @@ static yyconst flex_int16_t yy_chk[1371] =
19, 20, 21, 23, 16, 20, 17, 21, 19, 24, 19, 20, 21, 23, 16, 20, 17, 21, 19, 24,
24, 17, 70, 26, 20, 28, 27, 23, 29, 29, 24, 17, 70, 26, 20, 28, 27, 23, 29, 29,
28, 23, 26, 30, 36, 36, 70, 26, 661, 24, 28, 23, 26, 30, 36, 36, 70, 26, 671, 24,
27, 31, 31, 27, 28, 29, 31, 41, 53, 41, 27, 31, 31, 27, 28, 29, 31, 41, 53, 41,
41, 30, 45, 45, 47, 48, 47, 47, 50, 48, 41, 30, 45, 45, 47, 48, 47, 47, 50, 48,
50, 50, 54, 56, 55, 53, 57, 58, 50, 55, 50, 50, 54, 56, 55, 53, 57, 58, 50, 55,
@ -835,14 +840,14 @@ static yyconst flex_int16_t yy_chk[1371] =
136, 133, 137, 134, 139, 140, 141, 142, 144, 139, 136, 133, 137, 134, 139, 140, 141, 142, 144, 139,
140, 141, 143, 146, 138, 147, 148, 149, 151, 150, 140, 141, 143, 146, 138, 147, 148, 149, 151, 150,
150, 144, 150, 152, 147, 153, 142, 146, 155, 658, 150, 144, 150, 152, 147, 153, 142, 146, 155, 668,
143, 145, 154, 145, 145, 148, 149, 151, 152, 156, 143, 145, 154, 145, 145, 148, 149, 151, 152, 156,
153, 155, 157, 158, 145, 145, 145, 158, 156, 154, 153, 155, 157, 158, 145, 145, 145, 158, 156, 154,
159, 157, 160, 162, 162, 161, 163, 160, 164, 159, 159, 157, 160, 162, 162, 161, 163, 160, 164, 159,
156, 161, 165, 164, 166, 166, 168, 163, 169, 170, 156, 161, 165, 164, 166, 166, 168, 163, 169, 170,
171, 173, 174, 175, 177, 178, 169, 174, 170, 173, 171, 173, 174, 175, 177, 178, 169, 174, 170, 173,
178, 171, 165, 176, 176, 178, 168, 179, 180, 180, 178, 171, 165, 176, 176, 178, 168, 179, 180, 180,
175, 176, 181, 177, 182, 183, 184, 185, 186, 653, 175, 176, 181, 177, 182, 183, 184, 185, 186, 663,
187, 189, 185, 188, 188, 182, 181, 176, 190, 190, 187, 189, 185, 188, 188, 182, 181, 176, 190, 190,
179, 191, 191, 183, 187, 189, 186, 184, 192, 193, 179, 191, 191, 183, 187, 189, 186, 184, 192, 193,
@ -873,11 +878,11 @@ static yyconst flex_int16_t yy_chk[1371] =
307, 313, 302, 308, 312, 303, 315, 314, 312, 317, 307, 313, 302, 308, 312, 303, 315, 314, 312, 317,
317, 311, 318, 320, 321, 310, 314, 318, 313, 319, 317, 311, 318, 320, 321, 310, 314, 318, 313, 319,
322, 323, 324, 319, 325, 326, 328, 320, 321, 315, 322, 323, 324, 319, 325, 326, 328, 320, 321, 315,
330, 646, 331, 329, 326, 334, 324, 331, 323, 328, 330, 656, 331, 329, 326, 334, 324, 331, 323, 328,
322, 329, 333, 325, 332, 332, 335, 333, 334, 330, 322, 329, 333, 325, 332, 332, 335, 333, 334, 330,
336, 337, 339, 338, 340, 336, 337, 338, 341, 342, 336, 337, 339, 338, 340, 336, 337, 338, 341, 342,
342, 339, 345, 335, 643, 339, 341, 339, 346, 339, 342, 339, 345, 335, 655, 339, 341, 339, 346, 339,
343, 343, 340, 344, 344, 347, 346, 348, 350, 353, 343, 343, 340, 344, 344, 347, 346, 348, 350, 353,
347, 345, 351, 350, 348, 352, 354, 351, 353, 357, 347, 345, 351, 350, 348, 352, 354, 351, 353, 357,
352, 355, 355, 358, 359, 360, 361, 358, 362, 363, 352, 355, 355, 358, 359, 360, 361, 358, 362, 363,
@ -893,7 +898,7 @@ static yyconst flex_int16_t yy_chk[1371] =
411, 398, 409, 410, 404, 414, 414, 402, 405, 403, 411, 398, 409, 410, 404, 414, 414, 402, 405, 403,
412, 409, 410, 409, 407, 413, 415, 408, 411, 412, 412, 409, 410, 409, 407, 413, 415, 408, 411, 412,
413, 412, 416, 417, 418, 420, 422, 423, 421, 425, 413, 412, 416, 417, 418, 420, 422, 423, 421, 425,
420, 431, 431, 641, 416, 415, 421, 418, 426, 427, 420, 431, 431, 652, 416, 415, 421, 418, 426, 427,
417, 428, 426, 422, 427, 423, 428, 429, 425, 430, 417, 428, 426, 422, 427, 423, 428, 429, 425, 430,
432, 432, 433, 433, 430, 435, 429, 436, 437, 440, 432, 432, 433, 433, 430, 435, 429, 436, 437, 440,
435, 439, 436, 438, 438, 441, 439, 442, 443, 445, 435, 439, 436, 438, 438, 441, 439, 442, 443, 445,
@ -903,53 +908,55 @@ static yyconst flex_int16_t yy_chk[1371] =
452, 455, 443, 456, 461, 463, 454, 449, 456, 447, 452, 455, 443, 456, 461, 463, 454, 449, 456, 447,
457, 459, 458, 462, 457, 457, 453, 458, 462, 455, 457, 459, 458, 462, 457, 457, 453, 458, 462, 455,
460, 468, 459, 469, 460, 469, 463, 461, 464, 464, 460, 468, 459, 469, 460, 469, 463, 461, 464, 464,
470, 470, 472, 473, 473, 474, 475, 468, 476, 477, 470, 470, 472, 473, 473, 474, 475, 468, 476, 464,
478, 479, 481, 479, 483, 478, 483, 475, 485, 476, 478, 477, 479, 481, 479, 478, 483, 475, 483, 476,
477, 472, 480, 480, 482, 474, 484, 486, 490, 482, 486, 472, 477, 480, 480, 474, 482, 484, 485, 487,
639, 484, 487, 487, 488, 485, 481, 496, 489, 488, 487, 482, 484, 488, 490, 489, 491, 481, 488, 486,
494, 494, 491, 490, 493, 495, 486, 489, 491, 489, 496, 493, 491, 495, 489, 485, 489, 493, 500, 490,
493, 500, 497, 498, 495, 496, 497, 499, 498, 501, 494, 494, 495, 497, 498, 501, 499, 497, 496, 498,
503, 499, 504, 503, 505, 506, 506, 507, 507, 508, 499, 502, 500, 504, 505, 506, 504, 507, 507, 508,
508, 500, 509, 509, 504, 510, 505, 512, 514, 501, 508, 509, 509, 510, 510, 501, 505, 506, 511, 513,
513, 513, 512, 515, 516, 517, 519, 519, 517, 520, 515, 502, 514, 514, 513, 516, 517, 518, 520, 520,
516, 521, 521, 510, 522, 523, 514, 524, 526, 637, 518, 521, 517, 522, 522, 523, 511, 524, 515, 525,
515, 527, 528, 528, 523, 530, 524, 529, 522, 530, 527, 528, 516, 529, 529, 535, 524, 530, 525, 523,
527, 531, 529, 520, 532, 533, 531, 526, 534, 535, 528, 532, 530, 531, 532, 521, 533, 531, 534, 527,
532, 546, 536, 534, 536, 540, 540, 535, 541, 541, 535, 533, 536, 537, 534, 548, 538, 536, 538, 542,
533, 543, 543, 544, 545, 545, 546, 548, 544, 549, 542, 537, 543, 543, 545, 545, 546, 547, 547, 550,
550, 549, 548, 551, 552, 554, 555, 553, 556, 557, 548, 546, 552, 551, 550, 551, 553, 554, 556, 557,
558, 550, 559, 563, 551, 552, 553, 560, 560, 561, 555, 558, 559, 552, 560, 560, 561, 553, 554, 555,
556, 562, 567, 572, 561, 555, 557, 558, 571, 554, 562, 563, 563, 558, 566, 564, 565, 570, 557, 559,
559, 563, 572, 568, 636, 562, 568, 569, 569, 570, 564, 571, 556, 561, 571, 572, 572, 574, 562, 575,
570, 567, 573, 574, 575, 576, 571, 573, 574, 577, 565, 649, 566, 573, 573, 576, 570, 577, 575, 578,
576, 578, 579, 580, 577, 581, 583, 579, 575, 584, 576, 579, 577, 580, 581, 574, 579, 582, 580, 583,
585, 585, 580, 586, 581, 578, 600, 587, 590, 590, 584, 587, 582, 578, 585, 588, 589, 589, 581, 584,
591, 586, 587, 591, 583, 592, 592, 584, 593, 593, 583, 591, 590, 585, 594, 594, 591, 598, 595, 587,
594, 595, 596, 596, 597, 598, 595, 599, 597, 601, 590, 595, 602, 588, 596, 596, 597, 597, 599, 603,
600, 602, 599, 594, 604, 605, 605, 607, 601, 610, 598, 600, 600, 599, 601, 605, 604, 603, 601, 606,
610, 613, 617, 598, 611, 614, 613, 615, 622, 616, 602, 604, 607, 609, 610, 610, 612, 616, 606, 615,
602, 604, 618, 611, 616, 623, 619, 621, 621, 622, 615, 620, 618, 619, 621, 623, 616, 618, 622, 605,
607, 619, 635, 614, 628, 615, 617, 624, 624, 628, 609, 607, 624, 622, 628, 620, 627, 627, 625, 612,
618, 625, 625, 634, 623, 626, 626, 627, 627, 629, 629, 619, 621, 625, 632, 628, 630, 630, 647, 623,
629, 630, 630, 632, 632, 633, 638, 638, 640, 642, 624, 631, 631, 633, 633, 634, 634, 643, 635, 629,
633, 647, 640, 644, 644, 645, 645, 649, 648, 650, 636, 636, 632, 635, 637, 637, 639, 639, 640, 646,
651, 652, 652, 631, 620, 612, 642, 648, 609, 608, 646, 648, 650, 640, 657, 648, 643, 651, 651, 653,
647, 649, 650, 606, 603, 589, 588, 582, 651, 655, 653, 654, 654, 658, 659, 661, 660, 662, 662, 650,
655, 655, 655, 656, 656, 656, 656, 657, 657, 657, 645, 644, 658, 657, 642, 641, 638, 626, 659, 660,
657, 659, 659, 566, 659, 660, 660, 662, 662, 663, 617, 614, 613, 661, 665, 665, 665, 665, 666, 666,
663, 565, 663, 564, 547, 542, 539, 538, 537, 525, 666, 666, 667, 667, 667, 667, 669, 669, 611, 669,
518, 511, 502, 492, 471, 467, 466, 465, 450, 434, 670, 670, 672, 672, 673, 673, 608, 673, 593, 592,
586, 569, 568, 567, 549, 544, 541, 540, 539, 526,
519, 512, 503, 492, 471, 467, 466, 465, 450, 434,
424, 419, 395, 385, 384, 383, 370, 356, 349, 327, 424, 419, 395, 385, 384, 383, 370, 356, 349, 327,
316, 299, 292, 285, 260, 237, 236, 234, 233, 231, 316, 299, 292, 285, 260, 237, 236, 234, 233, 231,
172, 167, 84, 83, 81, 79, 46, 42, 38, 37, 172, 167, 84, 83, 81, 79, 46, 42, 38, 37,
32, 10, 9, 654, 654, 654, 654, 654, 654, 654, 32, 10, 9, 664, 664, 664, 664, 664, 664, 664,
654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
654, 654, 654, 654, 654, 654, 654, 654, 654, 654 664, 664, 664, 664, 664, 664, 664, 664, 664, 664
} ; } ;
static yy_state_type yy_last_accepting_state; static yy_state_type yy_last_accepting_state;
@ -1055,7 +1062,7 @@ static void config_end_include(void)
#endif #endif
#line 1058 "<stdout>" #line 1065 "<stdout>"
#define INITIAL 0 #define INITIAL 0
#define quotedstring 1 #define quotedstring 1
@ -1211,7 +1218,7 @@ YY_DECL
#line 98 "util/configlexer.lex" #line 98 "util/configlexer.lex"
#line 1214 "<stdout>" #line 1221 "<stdout>"
if ( !(yy_init) ) if ( !(yy_init) )
{ {
@ -1270,13 +1277,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 655 ) if ( yy_current_state >= 665 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp; ++yy_cp;
} }
while ( yy_base[yy_current_state] != 1334 ); while ( yy_base[yy_current_state] != 1354 );
yy_find_action: yy_find_action:
yy_act = yy_accept[yy_current_state]; yy_act = yy_accept[yy_current_state];
@ -1528,116 +1535,121 @@ YY_RULE_SETUP
case 46: case 46:
YY_RULE_SETUP YY_RULE_SETUP
#line 144 "util/configlexer.lex" #line 144 "util/configlexer.lex"
{ YDOUT; return VAR_HIDE_IDENTITY;} { YDOUT; return VAR_DO_NOT_QUERY_LOCALHOST;}
YY_BREAK YY_BREAK
case 47: case 47:
YY_RULE_SETUP YY_RULE_SETUP
#line 145 "util/configlexer.lex" #line 145 "util/configlexer.lex"
{ YDOUT; return VAR_HIDE_VERSION;} { YDOUT; return VAR_HIDE_IDENTITY;}
YY_BREAK YY_BREAK
case 48: case 48:
YY_RULE_SETUP YY_RULE_SETUP
#line 146 "util/configlexer.lex" #line 146 "util/configlexer.lex"
{ YDOUT; return VAR_IDENTITY;} { YDOUT; return VAR_HIDE_VERSION;}
YY_BREAK YY_BREAK
case 49: case 49:
YY_RULE_SETUP YY_RULE_SETUP
#line 147 "util/configlexer.lex" #line 147 "util/configlexer.lex"
{ YDOUT; return VAR_VERSION;} { YDOUT; return VAR_IDENTITY;}
YY_BREAK YY_BREAK
case 50: case 50:
YY_RULE_SETUP YY_RULE_SETUP
#line 148 "util/configlexer.lex" #line 148 "util/configlexer.lex"
{ YDOUT; return VAR_MODULE_CONF;} { YDOUT; return VAR_VERSION;}
YY_BREAK YY_BREAK
case 51: case 51:
YY_RULE_SETUP YY_RULE_SETUP
#line 149 "util/configlexer.lex" #line 149 "util/configlexer.lex"
{ YDOUT; return VAR_TRUST_ANCHOR_FILE;} { YDOUT; return VAR_MODULE_CONF;}
YY_BREAK YY_BREAK
case 52: case 52:
YY_RULE_SETUP YY_RULE_SETUP
#line 150 "util/configlexer.lex" #line 150 "util/configlexer.lex"
{ YDOUT; return VAR_TRUSTED_KEYS_FILE;} { YDOUT; return VAR_TRUST_ANCHOR_FILE;}
YY_BREAK YY_BREAK
case 53: case 53:
YY_RULE_SETUP YY_RULE_SETUP
#line 151 "util/configlexer.lex" #line 151 "util/configlexer.lex"
{ YDOUT; return VAR_TRUST_ANCHOR;} { YDOUT; return VAR_TRUSTED_KEYS_FILE;}
YY_BREAK YY_BREAK
case 54: case 54:
YY_RULE_SETUP YY_RULE_SETUP
#line 152 "util/configlexer.lex" #line 152 "util/configlexer.lex"
{ YDOUT; return VAR_VAL_OVERRIDE_DATE;} { YDOUT; return VAR_TRUST_ANCHOR;}
YY_BREAK YY_BREAK
case 55: case 55:
YY_RULE_SETUP YY_RULE_SETUP
#line 153 "util/configlexer.lex" #line 153 "util/configlexer.lex"
{ YDOUT; return VAR_BOGUS_TTL;} { YDOUT; return VAR_VAL_OVERRIDE_DATE;}
YY_BREAK YY_BREAK
case 56: case 56:
YY_RULE_SETUP YY_RULE_SETUP
#line 154 "util/configlexer.lex" #line 154 "util/configlexer.lex"
{ YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;} { YDOUT; return VAR_BOGUS_TTL;}
YY_BREAK YY_BREAK
case 57: case 57:
YY_RULE_SETUP YY_RULE_SETUP
#line 155 "util/configlexer.lex" #line 155 "util/configlexer.lex"
{ YDOUT; return VAR_VAL_PERMISSIVE_MODE;} { YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;}
YY_BREAK YY_BREAK
case 58: case 58:
YY_RULE_SETUP YY_RULE_SETUP
#line 156 "util/configlexer.lex" #line 156 "util/configlexer.lex"
{ YDOUT; return VAR_KEY_CACHE_SIZE;} { YDOUT; return VAR_VAL_PERMISSIVE_MODE;}
YY_BREAK YY_BREAK
case 59: case 59:
YY_RULE_SETUP YY_RULE_SETUP
#line 157 "util/configlexer.lex" #line 157 "util/configlexer.lex"
{ YDOUT; return VAR_KEY_CACHE_SLABS;} { YDOUT; return VAR_KEY_CACHE_SIZE;}
YY_BREAK YY_BREAK
case 60: case 60:
YY_RULE_SETUP YY_RULE_SETUP
#line 158 "util/configlexer.lex" #line 158 "util/configlexer.lex"
{ YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;} { YDOUT; return VAR_KEY_CACHE_SLABS;}
YY_BREAK YY_BREAK
case 61: case 61:
YY_RULE_SETUP YY_RULE_SETUP
#line 159 "util/configlexer.lex" #line 159 "util/configlexer.lex"
{ YDOUT; return VAR_USE_SYSLOG;} { YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;}
YY_BREAK YY_BREAK
case 62: case 62:
/* rule 62 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 160 "util/configlexer.lex" #line 160 "util/configlexer.lex"
{ YDOUT; return VAR_USE_SYSLOG;}
YY_BREAK
case 63:
/* rule 63 can match eol */
YY_RULE_SETUP
#line 161 "util/configlexer.lex"
{ LEXOUT(("NL\n")); cfg_parser->line++;} { LEXOUT(("NL\n")); cfg_parser->line++;}
YY_BREAK YY_BREAK
/* Quoted strings. Strip leading and ending quotes */ /* Quoted strings. Strip leading and ending quotes */
case 63: case 64:
YY_RULE_SETUP YY_RULE_SETUP
#line 163 "util/configlexer.lex" #line 164 "util/configlexer.lex"
{ BEGIN(quotedstring); LEXOUT(("QS ")); } { BEGIN(quotedstring); LEXOUT(("QS ")); }
YY_BREAK YY_BREAK
case YY_STATE_EOF(quotedstring): case YY_STATE_EOF(quotedstring):
#line 164 "util/configlexer.lex" #line 165 "util/configlexer.lex"
{ {
yyerror("EOF inside quoted string"); yyerror("EOF inside quoted string");
BEGIN(INITIAL); BEGIN(INITIAL);
} }
YY_BREAK YY_BREAK
case 64:
YY_RULE_SETUP
#line 168 "util/configlexer.lex"
{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
YY_BREAK
case 65: case 65:
/* rule 65 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 169 "util/configlexer.lex" #line 169 "util/configlexer.lex"
{ cfg_parser->line++; yymore(); } { LEXOUT(("STR(%s) ", yytext)); yymore(); }
YY_BREAK YY_BREAK
case 66: case 66:
/* rule 66 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 170 "util/configlexer.lex" #line 170 "util/configlexer.lex"
{ cfg_parser->line++; yymore(); }
YY_BREAK
case 67:
YY_RULE_SETUP
#line 171 "util/configlexer.lex"
{ {
LEXOUT(("QE ")); LEXOUT(("QE "));
BEGIN(INITIAL); BEGIN(INITIAL);
@ -1649,37 +1661,37 @@ YY_RULE_SETUP
} }
YY_BREAK YY_BREAK
/* include: directive */ /* include: directive */
case 67: case 68:
YY_RULE_SETUP YY_RULE_SETUP
#line 181 "util/configlexer.lex" #line 182 "util/configlexer.lex"
{ LEXOUT(("v(%s) ", yytext)); BEGIN(include); } { LEXOUT(("v(%s) ", yytext)); BEGIN(include); }
YY_BREAK YY_BREAK
case YY_STATE_EOF(include): case YY_STATE_EOF(include):
#line 182 "util/configlexer.lex" #line 183 "util/configlexer.lex"
{ {
yyerror("EOF inside include directive"); yyerror("EOF inside include directive");
BEGIN(INITIAL); BEGIN(INITIAL);
} }
YY_BREAK YY_BREAK
case 68:
YY_RULE_SETUP
#line 186 "util/configlexer.lex"
{ LEXOUT(("ISP ")); /* ignore */ }
YY_BREAK
case 69: case 69:
/* rule 69 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 187 "util/configlexer.lex" #line 187 "util/configlexer.lex"
{ LEXOUT(("NL\n")); cfg_parser->line++;} { LEXOUT(("ISP ")); /* ignore */ }
YY_BREAK YY_BREAK
case 70: case 70:
/* rule 70 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 188 "util/configlexer.lex" #line 188 "util/configlexer.lex"
{ LEXOUT(("IQS ")); BEGIN(include_quoted); } { LEXOUT(("NL\n")); cfg_parser->line++;}
YY_BREAK YY_BREAK
case 71: case 71:
YY_RULE_SETUP YY_RULE_SETUP
#line 189 "util/configlexer.lex" #line 189 "util/configlexer.lex"
{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
YY_BREAK
case 72:
YY_RULE_SETUP
#line 190 "util/configlexer.lex"
{ {
LEXOUT(("Iunquotedstr(%s) ", yytext)); LEXOUT(("Iunquotedstr(%s) ", yytext));
config_start_include(yytext); config_start_include(yytext);
@ -1687,26 +1699,26 @@ YY_RULE_SETUP
} }
YY_BREAK YY_BREAK
case YY_STATE_EOF(include_quoted): case YY_STATE_EOF(include_quoted):
#line 194 "util/configlexer.lex" #line 195 "util/configlexer.lex"
{ {
yyerror("EOF inside quoted string"); yyerror("EOF inside quoted string");
BEGIN(INITIAL); BEGIN(INITIAL);
} }
YY_BREAK YY_BREAK
case 72:
YY_RULE_SETUP
#line 198 "util/configlexer.lex"
{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
YY_BREAK
case 73: case 73:
/* rule 73 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 199 "util/configlexer.lex" #line 199 "util/configlexer.lex"
{ cfg_parser->line++; yymore(); } { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
YY_BREAK YY_BREAK
case 74: case 74:
/* rule 74 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 200 "util/configlexer.lex" #line 200 "util/configlexer.lex"
{ cfg_parser->line++; yymore(); }
YY_BREAK
case 75:
YY_RULE_SETUP
#line 201 "util/configlexer.lex"
{ {
LEXOUT(("IQE ")); LEXOUT(("IQE "));
yytext[yyleng - 1] = '\0'; yytext[yyleng - 1] = '\0';
@ -1715,7 +1727,7 @@ YY_RULE_SETUP
} }
YY_BREAK YY_BREAK
case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INITIAL):
#line 206 "util/configlexer.lex" #line 207 "util/configlexer.lex"
{ {
yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ yy_set_bol(1); /* Set beginning of line, so "^" rules match. */
if (config_include_stack_ptr == 0) { if (config_include_stack_ptr == 0) {
@ -1726,18 +1738,18 @@ case YY_STATE_EOF(INITIAL):
} }
} }
YY_BREAK YY_BREAK
case 75: case 76:
YY_RULE_SETUP YY_RULE_SETUP
#line 216 "util/configlexer.lex" #line 217 "util/configlexer.lex"
{ LEXOUT(("unquotedstr(%s) ", yytext)); { LEXOUT(("unquotedstr(%s) ", yytext));
yylval.str = strdup(yytext); return STRING; } yylval.str = strdup(yytext); return STRING; }
YY_BREAK YY_BREAK
case 76: case 77:
YY_RULE_SETUP YY_RULE_SETUP
#line 219 "util/configlexer.lex" #line 220 "util/configlexer.lex"
ECHO; ECHO;
YY_BREAK YY_BREAK
#line 1740 "<stdout>" #line 1752 "<stdout>"
case YY_END_OF_BUFFER: case YY_END_OF_BUFFER:
{ {
@ -2019,7 +2031,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 655 ) if ( yy_current_state >= 665 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@ -2047,11 +2059,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 655 ) if ( yy_current_state >= 665 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 654); yy_is_jam = (yy_current_state == 664);
return yy_is_jam ? 0 : yy_current_state; return yy_is_jam ? 0 : yy_current_state;
} }
@ -2684,7 +2696,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables" #define YYTABLES_NAME "yytables"
#line 219 "util/configlexer.lex" #line 220 "util/configlexer.lex"

View file

@ -141,6 +141,7 @@ forward-zone{COLON} { YDOUT; return VAR_FORWARD_ZONE;}
forward-addr{COLON} { YDOUT; return VAR_FORWARD_ADDR;} forward-addr{COLON} { YDOUT; return VAR_FORWARD_ADDR;}
forward-host{COLON} { YDOUT; return VAR_FORWARD_HOST;} forward-host{COLON} { YDOUT; return VAR_FORWARD_HOST;}
do-not-query-address{COLON} { YDOUT; return VAR_DO_NOT_QUERY_ADDRESS;} do-not-query-address{COLON} { YDOUT; return VAR_DO_NOT_QUERY_ADDRESS;}
do-not-query-localhost{COLON} { YDOUT; return VAR_DO_NOT_QUERY_LOCALHOST;}
hide-identity{COLON} { YDOUT; return VAR_HIDE_IDENTITY;} hide-identity{COLON} { YDOUT; return VAR_HIDE_IDENTITY;}
hide-version{COLON} { YDOUT; return VAR_HIDE_VERSION;} hide-version{COLON} { YDOUT; return VAR_HIDE_VERSION;}
identity{COLON} { YDOUT; return VAR_IDENTITY;} identity{COLON} { YDOUT; return VAR_IDENTITY;}

File diff suppressed because it is too large Load diff

View file

@ -105,7 +105,8 @@
VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 321, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 321,
VAR_USE_SYSLOG = 322, VAR_USE_SYSLOG = 322,
VAR_OUTGOING_INTERFACE = 323, VAR_OUTGOING_INTERFACE = 323,
VAR_ROOT_HINTS = 324 VAR_ROOT_HINTS = 324,
VAR_DO_NOT_QUERY_LOCALHOST = 325
}; };
#endif #endif
/* Tokens. */ /* Tokens. */
@ -176,6 +177,7 @@
#define VAR_USE_SYSLOG 322 #define VAR_USE_SYSLOG 322
#define VAR_OUTGOING_INTERFACE 323 #define VAR_OUTGOING_INTERFACE 323
#define VAR_ROOT_HINTS 324 #define VAR_ROOT_HINTS 324
#define VAR_DO_NOT_QUERY_LOCALHOST 325
@ -187,7 +189,7 @@ typedef union YYSTYPE
char* str; char* str;
} }
/* Line 1489 of yacc.c. */ /* Line 1489 of yacc.c. */
#line 191 "util/configparser.h" #line 193 "util/configparser.h"
YYSTYPE; YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1

View file

@ -85,7 +85,7 @@ extern struct config_parser_state* cfg_parser;
%token VAR_INCOMING_NUM_TCP VAR_MSG_BUFFER_SIZE VAR_KEY_CACHE_SIZE %token VAR_INCOMING_NUM_TCP VAR_MSG_BUFFER_SIZE VAR_KEY_CACHE_SIZE
%token VAR_KEY_CACHE_SLABS VAR_TRUSTED_KEYS_FILE %token VAR_KEY_CACHE_SLABS VAR_TRUSTED_KEYS_FILE
%token VAR_VAL_NSEC3_KEYSIZE_ITERATIONS VAR_USE_SYSLOG %token VAR_VAL_NSEC3_KEYSIZE_ITERATIONS VAR_USE_SYSLOG
%token VAR_OUTGOING_INTERFACE VAR_ROOT_HINTS %token VAR_OUTGOING_INTERFACE VAR_ROOT_HINTS VAR_DO_NOT_QUERY_LOCALHOST
%% %%
toplevelvars: /* empty */ | toplevelvars toplevelvar ; toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@ -121,7 +121,8 @@ content_server: server_num_threads | server_verbosity | server_port |
server_incoming_num_tcp | server_msg_buffer_size | server_incoming_num_tcp | server_msg_buffer_size |
server_key_cache_size | server_key_cache_slabs | server_key_cache_size | server_key_cache_slabs |
server_trusted_keys_file | server_val_nsec3_keysize_iterations | server_trusted_keys_file | server_val_nsec3_keysize_iterations |
server_use_syslog | server_outgoing_interface | server_root_hints server_use_syslog | server_outgoing_interface | server_root_hints |
server_do_not_query_localhost
; ;
stubstart: VAR_STUB_ZONE stubstart: VAR_STUB_ZONE
{ {
@ -551,6 +552,16 @@ server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING
yyerror("out of memory"); yyerror("out of memory");
} }
; ;
server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING
{
OUTYY(("P(server_do_not_query_localhost:%s)\n", $2));
if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->donotquery_localhost =
(strcmp($2, "yes")==0);
free($2);
}
;
server_module_conf: VAR_MODULE_CONF STRING server_module_conf: VAR_MODULE_CONF STRING
{ {
OUTYY(("P(server_module_conf:%s)\n", $2)); OUTYY(("P(server_module_conf:%s)\n", $2));

View file

@ -335,6 +335,36 @@ sockaddr_cmp(struct sockaddr_storage* addr1, socklen_t len1,
} }
} }
int
sockaddr_cmp_addr(struct sockaddr_storage* addr1, socklen_t len1,
struct sockaddr_storage* addr2, socklen_t len2)
{
struct sockaddr_in* p1_in = (struct sockaddr_in*)addr1;
struct sockaddr_in* p2_in = (struct sockaddr_in*)addr2;
struct sockaddr_in6* p1_in6 = (struct sockaddr_in6*)addr1;
struct sockaddr_in6* p2_in6 = (struct sockaddr_in6*)addr2;
if(len1 < len2)
return -1;
if(len1 > len2)
return 1;
log_assert(len1 == len2);
if( p1_in->sin_family < p2_in->sin_family)
return -1;
if( p1_in->sin_family > p2_in->sin_family)
return 1;
log_assert( p1_in->sin_family == p2_in->sin_family );
/* compare ip4 */
if( p1_in->sin_family == AF_INET ) {
return memcmp(&p1_in->sin_addr, &p2_in->sin_addr, INET_SIZE);
} else if (p1_in6->sin6_family == AF_INET6) {
return memcmp(&p1_in6->sin6_addr, &p2_in6->sin6_addr,
INET6_SIZE);
} else {
/* eek unknown type, perform this comparison for sanity. */
return memcmp(addr1, addr2, len1);
}
}
int int
addr_is_ip6(struct sockaddr_storage* addr, socklen_t len) addr_is_ip6(struct sockaddr_storage* addr, socklen_t len)
{ {

View file

@ -199,6 +199,7 @@ void log_nametypeclass(enum verbosity_value v, const char* str,
/** /**
* Compare two sockaddrs. Imposes an ordering on the addresses. * Compare two sockaddrs. Imposes an ordering on the addresses.
* Compares address and port.
* @param addr1: address 1. * @param addr1: address 1.
* @param len1: lengths of addr1. * @param len1: lengths of addr1.
* @param addr2: address 2. * @param addr2: address 2.
@ -208,6 +209,17 @@ void log_nametypeclass(enum verbosity_value v, const char* str,
int sockaddr_cmp(struct sockaddr_storage* addr1, socklen_t len1, int sockaddr_cmp(struct sockaddr_storage* addr1, socklen_t len1,
struct sockaddr_storage* addr2, socklen_t len2); struct sockaddr_storage* addr2, socklen_t len2);
/**
* Compare two sockaddrs. Compares address, not the port.
* @param addr1: address 1.
* @param len1: lengths of addr1.
* @param addr2: address 2.
* @param len2: lengths of addr2.
* @return: 0 if addr1 == addr2. -1 if addr1 is smaller, +1 if larger.
*/
int sockaddr_cmp_addr(struct sockaddr_storage* addr1, socklen_t len1,
struct sockaddr_storage* addr2, socklen_t len2);
/** /**
* Checkout address family. * Checkout address family.
* @param addr: the sockaddr to examine. * @param addr: the sockaddr to examine.