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
- added configure (and its files) to svn, so that the trunk is easier
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: ::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
# separated by spaces. "iterator" or "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
indicate a classless delegation netblock, for example like
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">
Module configuration, a list of module names separated by spaces, surround
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* 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(n1->net < n2->net)
return -1;
@ -129,45 +130,57 @@ mask_block(int ip6, struct sockaddr_storage* addr, int net)
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 */
static int
read_donotq(struct iter_donotq* dq, struct config_file* cfg)
{
struct config_strlist* p;
struct sockaddr_storage addr;
int net;
char* s;
socklen_t addrlen;
for(p = cfg->donotqueryaddrs; p; p = p->next) {
log_assert(p->str);
net = (str_is_ip6(p->str)?128:32);
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);
if(!donotq_str_cfg(dq, p->str))
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;
}
@ -245,6 +258,12 @@ donotq_apply_cfg(struct iter_donotq* dq, struct config_file* cfg)
return 0;
if(!read_donotq(dq, cfg))
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);
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->target_fetch_policy = strdup("3 2 1 0 0"))) goto error_exit;
cfg->donotqueryaddrs = NULL;
if(!cfg_strlist_insert(&cfg->donotqueryaddrs, strdup("127.0.0.0/8")))
goto error_exit;
if(!cfg_strlist_insert(&cfg->donotqueryaddrs, strdup("::1")))
goto error_exit;
cfg->donotquery_localhost = 1;
cfg->root_hints = NULL;
cfg->do_daemonize = 1;
cfg->num_ifs = 0;

View file

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

View file

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