From: michael Date: Wed, 7 Jan 2015 17:59:47 +0000 (+0000) Subject: - Added options::negcache_rebuild configuration option X-Git-Tag: 1.0.2~19 X-Git-Url: http://git.serene-ircd.net/?a=commitdiff_plain;h=dfcf2f27cafd5eafce16a795a09710f8b46bedbf;p=hopm.git - Added options::negcache_rebuild configuration option git-svn-id: svn://svn.ircd-hybrid.org/svnroot/hopm/branches/1.0.x@5331 82007160-df01-0410-b94d-b575c5fd34c7 --- diff --git a/NEWS b/NEWS index b3ffc52..b77d399 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +-- Noteworthy changes in version 1.0.2 (2015-??-??) +o) Added options::negcache_rebuild configuration option + + -- Noteworthy changes in version 1.0.1 (2015-01-06) o) Fixed build on OS X o) More code cleanups, no user-visible changes diff --git a/doc/reference.conf b/doc/reference.conf index 724f52c..754d267 100644 --- a/doc/reference.conf +++ b/doc/reference.conf @@ -42,6 +42,14 @@ options { */ # negcache = 1 hour; + /* + * How long between rebuilds of the negative cache. The negcache + * is only rebuilt to free up memory used by entries that are too old. + * You probably don't need to tweak this unless you have huge amounts + * of people connecting (hundreds per minute). Default is 12 hours. + */ + negcache_rebuild = 12 hours; + /* * Amount of file descriptors to allocate to asynchronous DNS. 64 * should be plenty for almost anyone. diff --git a/src/config-lexer.c b/src/config-lexer.c index 4c7ada6..0e5c521 100644 --- a/src/config-lexer.c +++ b/src/config-lexer.c @@ -365,8 +365,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 90 -#define YY_END_OF_BUFFER 91 +#define YY_NUM_RULES 91 +#define YY_END_OF_BUFFER 92 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -374,47 +374,47 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[352] = +static yyconst flex_int16_t yy_accept[360] = { 0, - 88, 88, 91, 89, 88, 87, 89, 2, 89, 80, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 88, 87, 0, 3, 2, 1, 2, 80, 0, 0, + 89, 89, 92, 90, 89, 88, 90, 2, 90, 81, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 89, 88, 0, 3, 2, 1, 2, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, - 0, 0, 0, 68, 0, 0, 0, 0, 73, 0, - 0, 0, 0, 0, 0, 85, 0, 83, 0, 0, + 0, 0, 0, 69, 0, 0, 0, 0, 74, 0, + 0, 0, 0, 0, 0, 86, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 15, 0, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 86, 0, 26, 0, + 0, 0, 0, 0, 0, 0, 87, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 82, 4, 0, 0, 63, 0, 0, 54, - 0, 0, 0, 0, 57, 74, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 20, 0, 21, 0, 23, - 25, 0, 0, 0, 0, 31, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 81, 44, - 45, 0, 53, 0, 49, 0, 0, 62, 0, 0, - - 0, 0, 0, 84, 56, 0, 0, 67, 0, 16, - 0, 72, 0, 0, 51, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 47, 52, 0, 48, 0, - 0, 0, 0, 0, 0, 12, 0, 14, 66, 0, - 0, 71, 0, 59, 50, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 0, 0, 61, 0, 39, - 76, 77, 0, 0, 0, 0, 0, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, - 27, 0, 29, 30, 0, 0, 0, 36, 37, 60, - - 0, 0, 43, 0, 78, 0, 0, 0, 0, 11, - 0, 75, 65, 19, 70, 22, 24, 28, 32, 0, - 34, 38, 0, 0, 0, 46, 0, 6, 8, 0, - 0, 64, 69, 0, 40, 0, 0, 0, 10, 0, - 0, 0, 0, 5, 9, 33, 41, 0, 0, 42, - 0 + 0, 0, 83, 4, 0, 0, 64, 0, 0, 55, + 0, 0, 0, 0, 58, 75, 0, 0, 0, 0, + 18, 0, 0, 0, 0, 20, 0, 21, 0, 24, + 26, 0, 0, 0, 0, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 45, + 46, 0, 54, 0, 50, 0, 0, 63, 0, 0, + + 0, 0, 0, 85, 57, 0, 0, 68, 0, 16, + 0, 73, 0, 0, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 53, 0, 49, 0, + 0, 0, 0, 0, 0, 12, 0, 14, 67, 0, + 0, 72, 0, 60, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 0, 0, 62, 0, 40, + 77, 78, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, + 28, 0, 30, 31, 0, 0, 0, 37, 38, 61, + + 0, 0, 44, 0, 79, 0, 0, 0, 0, 11, + 0, 76, 66, 19, 71, 22, 25, 29, 33, 0, + 35, 39, 0, 0, 0, 47, 0, 6, 8, 0, + 0, 65, 70, 0, 0, 41, 0, 0, 0, 10, + 0, 0, 0, 0, 0, 5, 9, 0, 34, 42, + 0, 0, 0, 0, 43, 0, 0, 23, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -459,93 +459,95 @@ static yyconst flex_int32_t yy_meta[58] = 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[355] = +static yyconst flex_int16_t yy_base[363] = { 0, - 0, 0, 169, 708, 165, 0, 55, 0, 54, 54, + 0, 0, 239, 727, 167, 0, 55, 0, 54, 54, 34, 55, 49, 57, 37, 60, 51, 55, 94, 129, 99, 103, 167, 72, 112, 155, 43, 59, 116, 68, - 160, 0, 81, 708, 0, 708, 0, 148, 97, 98, - 111, 133, 152, 147, 138, 146, 160, 155, 708, 150, + 165, 0, 81, 727, 0, 727, 0, 148, 97, 98, + 111, 133, 152, 147, 138, 146, 160, 155, 727, 150, 152, 153, 171, 156, 159, 175, 182, 182, 178, 201, - 196, 207, 200, 206, 211, 708, 210, 708, 212, 201, + 196, 207, 200, 206, 211, 727, 210, 727, 212, 201, 203, 217, 206, 212, 238, 208, 230, 244, 231, 233, - 240, 237, 244, 256, 248, 259, 252, 265, 244, 120, + 240, 237, 244, 256, 248, 259, 252, 265, 244, 128, 265, 264, 257, 259, 257, 273, 266, 262, 271, 280, - 291, 708, 283, 708, 290, 292, 297, 95, 290, 308, - 291, 307, 295, 309, 312, 306, 708, 301, 708, 309, + 291, 727, 283, 727, 290, 292, 297, 120, 290, 308, + 291, 307, 295, 309, 312, 306, 727, 301, 727, 309, 303, 315, 316, 305, 308, 344, 316, 312, 322, 329, 345, 332, 343, 349, 352, 353, 355, 345, 345, 353, - 357, 349, 708, 708, 347, 358, 352, 357, 355, 708, + 357, 349, 727, 727, 347, 358, 352, 357, 355, 727, 363, 369, 363, 378, 374, 381, 379, 395, 399, 398, - 708, 388, 400, 404, 390, 708, 401, 708, 409, 394, - 708, 398, 392, 400, 407, 708, 403, 400, 406, 399, - 418, 437, 418, 427, 439, 428, 444, 437, 708, 708, - 439, 435, 437, 455, 440, 445, 448, 708, 455, 456, + 727, 388, 400, 404, 390, 727, 401, 727, 409, 394, + 727, 398, 392, 400, 407, 727, 403, 400, 406, 399, + 418, 437, 418, 427, 439, 428, 444, 437, 727, 727, + 439, 435, 437, 455, 440, 445, 448, 727, 455, 456, - 90, 458, 446, 708, 708, 451, 461, 450, 447, 708, + 95, 458, 446, 727, 727, 451, 461, 450, 447, 727, 466, 462, 464, 487, 476, 493, 492, 485, 485, 484, - 490, 499, 495, 504, 708, 490, 493, 503, 505, 509, - 496, 107, 495, 495, 514, 708, 708, 500, 708, 509, - 518, 524, 533, 535, 533, 708, 528, 708, 708, 528, - 546, 708, 530, 532, 708, 542, 536, 537, 539, 544, - 552, 544, 548, 549, 708, 555, 547, 549, 558, 708, - 708, 708, 52, 557, 571, 583, 576, 575, 708, 588, - 578, 581, 587, 579, 593, 596, 596, 708, 597, 583, - 708, 600, 708, 708, 594, 601, 603, 708, 708, 708, - - 598, 622, 708, 605, 708, 597, 596, 601, 622, 708, - 628, 708, 624, 708, 625, 708, 708, 708, 708, 629, - 708, 708, 629, 631, 628, 708, 627, 708, 708, 637, - 641, 708, 708, 632, 708, 636, 637, 641, 708, 638, - 639, 640, 650, 708, 708, 708, 708, 649, 664, 708, - 708, 81, 705, 71 + 490, 499, 495, 504, 727, 490, 493, 503, 505, 509, + 496, 107, 495, 495, 514, 727, 727, 500, 727, 509, + 518, 524, 533, 535, 533, 727, 528, 727, 727, 528, + 546, 727, 530, 532, 727, 542, 536, 537, 539, 544, + 552, 544, 548, 549, 727, 555, 547, 549, 558, 727, + 727, 727, 90, 557, 571, 583, 576, 575, 727, 588, + 578, 581, 587, 579, 593, 596, 596, 727, 597, 583, + 727, 600, 727, 727, 594, 601, 603, 727, 727, 727, + + 598, 622, 727, 605, 727, 597, 596, 601, 622, 727, + 628, 727, 624, 727, 625, 52, 727, 727, 727, 629, + 727, 727, 629, 631, 628, 727, 627, 727, 727, 637, + 641, 727, 727, 635, 633, 727, 637, 638, 643, 727, + 639, 653, 641, 644, 662, 727, 727, 677, 727, 727, + 671, 666, 680, 679, 727, 678, 686, 727, 727, 81, + 724, 71 } ; -static yyconst flex_int16_t yy_def[355] = +static yyconst flex_int16_t yy_def[363] = { 0, - 351, 1, 351, 351, 351, 352, 353, 354, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 352, 353, 351, 354, 351, 354, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 0, 351, 351, 351 + 359, 1, 359, 359, 359, 360, 361, 362, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 360, 361, 359, 362, 359, 362, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 0, 359, + 359, 359 } ; -static yyconst flex_int16_t yy_nxt[766] = +static yyconst flex_int16_t yy_nxt[785] = { 0, 4, 5, 6, 7, 8, 4, 9, 10, 10, 10, 11, 12, 13, 14, 15, 16, 4, 17, 18, 19, @@ -555,16 +557,16 @@ static yyconst flex_int16_t yy_nxt[766] = 25, 26, 27, 28, 29, 4, 30, 34, 34, 36, 37, 38, 38, 38, 39, 40, 43, 45, 47, 84, 48, 35, 44, 49, 50, 41, 85, 52, 51, 46, - 53, 32, 88, 34, 34, 302, 75, 42, 39, 40, + 53, 32, 88, 34, 34, 334, 75, 42, 39, 40, 43, 45, 47, 84, 48, 76, 44, 49, 50, 41, 85, 52, 51, 46, 53, 54, 88, 89, 55, 63, 75, 42, 56, 64, 57, 271, 272, 65, 67, 76, - 90, 91, 66, 244, 77, 68, 78, 69, 162, 54, + 90, 91, 66, 302, 77, 68, 78, 69, 244, 54, 86, 89, 55, 63, 87, 79, 56, 64, 57, 58, 59, 65, 67, 60, 90, 91, 66, 61, 77, 68, - 78, 69, 62, 145, 86, 38, 38, 38, 87, 79, - 92, 31, 93, 58, 59, 80, 31, 60, 351, 94, + 78, 69, 62, 162, 86, 38, 38, 38, 87, 79, + 92, 145, 93, 58, 59, 80, 31, 60, 31, 94, 95, 61, 96, 81, 97, 98, 62, 70, 99, 100, 82, 71, 101, 102, 92, 72, 93, 83, 103, 80, 73, 104, 74, 94, 95, 105, 96, 81, 97, 98, @@ -572,7 +574,7 @@ static yyconst flex_int16_t yy_nxt[766] = 106, 70, 99, 100, 82, 71, 101, 102, 107, 72, 109, 83, 103, 108, 73, 104, 74, 110, 111, 105, 112, 114, 115, 116, 106, 117, 118, 121, 122, 113, - 123, 124, 107, 119, 109, 125, 128, 108, 351, 120, + 123, 124, 107, 119, 109, 125, 128, 108, 359, 120, 129, 110, 111, 133, 112, 114, 115, 116, 126, 117, 118, 121, 122, 113, 123, 124, 130, 119, 134, 125, 128, 135, 127, 120, 129, 136, 131, 133, 137, 132, @@ -594,7 +596,7 @@ static yyconst flex_int16_t yy_nxt[766] = 205, 197, 198, 199, 200, 206, 207, 201, 202, 208, 209, 203, 210, 211, 212, 213, 204, 214, 215, 216, 217, 218, 219, 220, 205, 221, 222, 223, 224, 206, - 207, 225, 226, 208, 209, 351, 210, 211, 212, 213, + 207, 225, 226, 208, 209, 359, 210, 211, 212, 213, 229, 214, 215, 216, 217, 218, 219, 220, 230, 221, 222, 223, 224, 231, 232, 225, 226, 227, 233, 228, 234, 235, 236, 237, 229, 238, 239, 240, 241, 242, @@ -615,25 +617,27 @@ static yyconst flex_int16_t yy_nxt[766] = 301, 307, 308, 309, 310, 311, 312, 313, 303, 314, 315, 316, 317, 318, 319, 320, 304, 321, 322, 326, - 327, 305, 306, 328, 351, 307, 308, 309, 310, 311, + 327, 305, 306, 328, 359, 307, 308, 309, 310, 311, 312, 313, 329, 314, 315, 316, 317, 318, 319, 320, 323, 321, 322, 326, 327, 330, 324, 328, 325, 331, - 332, 333, 334, 335, 336, 337, 329, 338, 339, 340, - 341, 342, 343, 344, 323, 345, 346, 347, 348, 330, - 324, 349, 325, 331, 332, 333, 334, 335, 336, 337, - 350, 338, 339, 340, 341, 342, 343, 344, 351, 345, - 346, 347, 348, 351, 351, 349, 351, 351, 351, 351, - - 351, 351, 351, 351, 350, 33, 33, 3, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351 + 332, 333, 335, 336, 337, 338, 329, 339, 340, 341, + 342, 343, 344, 345, 323, 346, 347, 348, 349, 330, + 324, 350, 325, 331, 332, 333, 335, 336, 337, 338, + 351, 339, 340, 341, 342, 343, 344, 345, 352, 346, + 347, 348, 349, 353, 354, 350, 355, 356, 357, 358, + + 359, 359, 359, 359, 351, 359, 359, 359, 359, 359, + 359, 359, 352, 359, 359, 359, 359, 353, 354, 359, + 355, 356, 357, 358, 33, 33, 3, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359 } ; -static yyconst flex_int16_t yy_chk[766] = +static yyconst flex_int16_t yy_chk[785] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -642,17 +646,17 @@ static yyconst flex_int16_t yy_chk[766] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 9, 9, 10, 10, 10, 11, 12, 13, 14, 15, 27, - 16, 354, 13, 16, 17, 12, 28, 18, 17, 14, - 18, 352, 30, 33, 33, 273, 24, 12, 11, 12, + 16, 362, 13, 16, 17, 12, 28, 18, 17, 14, + 18, 360, 30, 33, 33, 316, 24, 12, 11, 12, 13, 14, 15, 27, 16, 24, 13, 16, 17, 12, 28, 18, 17, 14, 18, 19, 30, 39, 19, 21, 24, 12, 19, 21, 19, 232, 232, 21, 22, 24, - 40, 41, 21, 201, 25, 22, 25, 22, 108, 19, + 40, 41, 21, 273, 25, 22, 25, 22, 201, 19, 29, 39, 19, 21, 29, 25, 19, 21, 19, 20, 20, 21, 22, 20, 40, 41, 21, 20, 25, 22, - 25, 22, 20, 90, 29, 38, 38, 38, 29, 25, - 42, 31, 43, 20, 20, 26, 5, 20, 3, 44, + 25, 22, 20, 108, 29, 38, 38, 38, 29, 25, + 42, 90, 43, 20, 20, 26, 31, 20, 5, 44, 45, 20, 46, 26, 47, 48, 20, 23, 50, 51, 26, 23, 52, 53, 42, 23, 43, 26, 54, 26, 23, 55, 23, 44, 45, 56, 46, 26, 47, 48, @@ -660,7 +664,7 @@ static yyconst flex_int16_t yy_chk[766] = 57, 23, 50, 51, 26, 23, 52, 53, 58, 23, 59, 26, 54, 58, 23, 55, 23, 60, 61, 56, 62, 63, 64, 65, 57, 67, 69, 70, 71, 62, - 72, 73, 58, 69, 59, 74, 76, 58, 0, 69, + 72, 73, 58, 69, 59, 74, 76, 58, 3, 69, 77, 60, 61, 79, 62, 63, 64, 65, 75, 67, 69, 70, 71, 62, 72, 73, 78, 69, 80, 74, 76, 81, 75, 69, 77, 82, 78, 79, 83, 78, @@ -707,18 +711,20 @@ static yyconst flex_int16_t yy_chk[766] = 284, 285, 308, 286, 287, 289, 290, 292, 295, 296, 302, 297, 301, 304, 306, 309, 302, 307, 302, 311, 313, 315, 320, 323, 324, 325, 308, 327, 330, 331, - 334, 336, 337, 338, 302, 340, 341, 342, 343, 309, - 302, 348, 302, 311, 313, 315, 320, 323, 324, 325, - 349, 327, 330, 331, 334, 336, 337, 338, 0, 340, - 341, 342, 343, 0, 0, 348, 0, 0, 0, 0, - - 0, 0, 0, 0, 349, 353, 353, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 351 + 334, 335, 337, 338, 302, 339, 341, 342, 343, 309, + 302, 344, 302, 311, 313, 315, 320, 323, 324, 325, + 345, 327, 330, 331, 334, 335, 337, 338, 348, 339, + 341, 342, 343, 351, 352, 344, 353, 354, 356, 357, + + 0, 0, 0, 0, 345, 0, 0, 0, 0, 0, + 0, 0, 348, 0, 0, 0, 0, 351, 352, 0, + 353, 354, 356, 357, 361, 361, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359 } ; static yy_state_type yy_last_accepting_state; @@ -777,7 +783,7 @@ void ccomment(void); int linenum = 1; char linebuf[512]; -#line 781 "config-lexer.c" +#line 787 "config-lexer.c" #define INITIAL 0 @@ -987,7 +993,7 @@ YY_DECL #line 51 "config-lexer.l" -#line 991 "config-lexer.c" +#line 997 "config-lexer.c" while ( 1 ) /* loops until end-of-file is reached */ { @@ -1020,13 +1026,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 >= 352 ) + if ( yy_current_state >= 360 ) 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] != 708 ); + while ( yy_base[yy_current_state] != 727 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1201,132 +1207,132 @@ YY_RULE_SETUP case 23: YY_RULE_SETUP #line 115 "config-lexer.l" -{ return NICK; } +{ return NEGCACHE_REBUILD; } YY_BREAK case 24: YY_RULE_SETUP #line 116 "config-lexer.l" -{ return NICKSERV; } +{ return NICK; } YY_BREAK case 25: YY_RULE_SETUP #line 117 "config-lexer.l" -{ return OPER; } +{ return NICKSERV; } YY_BREAK case 26: YY_RULE_SETUP #line 118 "config-lexer.l" -{ return OPM; } +{ return OPER; } YY_BREAK case 27: YY_RULE_SETUP #line 119 "config-lexer.l" -{ return OPTIONS; } +{ return OPM; } YY_BREAK case 28: YY_RULE_SETUP #line 120 "config-lexer.l" -{ return PASSWORD; } +{ return OPTIONS; } YY_BREAK case 29: YY_RULE_SETUP #line 121 "config-lexer.l" -{ return PERFORM; } +{ return PASSWORD; } YY_BREAK case 30: YY_RULE_SETUP #line 122 "config-lexer.l" -{ return PIDFILE; } +{ return PERFORM; } YY_BREAK case 31: YY_RULE_SETUP #line 123 "config-lexer.l" -{ return PORT; } +{ return PIDFILE; } YY_BREAK case 32: YY_RULE_SETUP #line 124 "config-lexer.l" -{ return PROTOCOL; } +{ return PORT; } YY_BREAK case 33: YY_RULE_SETUP #line 125 "config-lexer.l" -{ return READTIMEOUT; } +{ return PROTOCOL; } YY_BREAK case 34: YY_RULE_SETUP #line 126 "config-lexer.l" -{ return REALNAME; } +{ return READTIMEOUT; } YY_BREAK case 35: YY_RULE_SETUP #line 127 "config-lexer.l" -{ return REPLY; } +{ return REALNAME; } YY_BREAK case 36: YY_RULE_SETUP #line 128 "config-lexer.l" -{ return SCANLOG; } +{ return REPLY; } YY_BREAK case 37: YY_RULE_SETUP #line 129 "config-lexer.l" -{ return SCANNER; } +{ return SCANLOG; } YY_BREAK case 38: YY_RULE_SETUP #line 130 "config-lexer.l" -{ return SENDMAIL; } +{ return SCANNER; } YY_BREAK case 39: YY_RULE_SETUP #line 131 "config-lexer.l" -{ return SERVER; } +{ return SENDMAIL; } YY_BREAK case 40: YY_RULE_SETUP #line 132 "config-lexer.l" -{ return TARGET_IP; } +{ return SERVER; } YY_BREAK case 41: YY_RULE_SETUP #line 133 "config-lexer.l" -{ return TARGET_PORT; } +{ return TARGET_IP; } YY_BREAK case 42: YY_RULE_SETUP #line 134 "config-lexer.l" -{ return TARGET_STRING;} +{ return TARGET_PORT; } YY_BREAK case 43: YY_RULE_SETUP #line 135 "config-lexer.l" -{ return TIMEOUT; } +{ return TARGET_STRING;} YY_BREAK case 44: YY_RULE_SETUP #line 136 "config-lexer.l" -{ return TYPE; } +{ return TIMEOUT; } YY_BREAK case 45: YY_RULE_SETUP #line 137 "config-lexer.l" -{ return USER; } +{ return TYPE; } YY_BREAK case 46: YY_RULE_SETUP #line 138 "config-lexer.l" -{ return USERNAME; } +{ return USER; } YY_BREAK case 47: YY_RULE_SETUP #line 139 "config-lexer.l" -{ return VHOST; } +{ return USERNAME; } YY_BREAK case 48: YY_RULE_SETUP -#line 141 "config-lexer.l" -{ return YEARS; } +#line 140 "config-lexer.l" +{ return VHOST; } YY_BREAK case 49: YY_RULE_SETUP @@ -1336,7 +1342,7 @@ YY_RULE_SETUP case 50: YY_RULE_SETUP #line 143 "config-lexer.l" -{ return MONTHS; } +{ return YEARS; } YY_BREAK case 51: YY_RULE_SETUP @@ -1346,7 +1352,7 @@ YY_RULE_SETUP case 52: YY_RULE_SETUP #line 145 "config-lexer.l" -{ return WEEKS; } +{ return MONTHS; } YY_BREAK case 53: YY_RULE_SETUP @@ -1356,7 +1362,7 @@ YY_RULE_SETUP case 54: YY_RULE_SETUP #line 147 "config-lexer.l" -{ return DAYS; } +{ return WEEKS; } YY_BREAK case 55: YY_RULE_SETUP @@ -1366,7 +1372,7 @@ YY_RULE_SETUP case 56: YY_RULE_SETUP #line 149 "config-lexer.l" -{ return HOURS; } +{ return DAYS; } YY_BREAK case 57: YY_RULE_SETUP @@ -1376,7 +1382,7 @@ YY_RULE_SETUP case 58: YY_RULE_SETUP #line 151 "config-lexer.l" -{ return MINUTES; } +{ return HOURS; } YY_BREAK case 59: YY_RULE_SETUP @@ -1386,7 +1392,7 @@ YY_RULE_SETUP case 60: YY_RULE_SETUP #line 153 "config-lexer.l" -{ return SECONDS; } +{ return MINUTES; } YY_BREAK case 61: YY_RULE_SETUP @@ -1395,8 +1401,8 @@ YY_RULE_SETUP YY_BREAK case 62: YY_RULE_SETUP -#line 156 "config-lexer.l" -{ return BYTES; } +#line 155 "config-lexer.l" +{ return SECONDS; } YY_BREAK case 63: YY_RULE_SETUP @@ -1406,7 +1412,7 @@ YY_RULE_SETUP case 64: YY_RULE_SETUP #line 158 "config-lexer.l" -{ return KBYTES; } +{ return BYTES; } YY_BREAK case 65: YY_RULE_SETUP @@ -1431,7 +1437,7 @@ YY_RULE_SETUP case 69: YY_RULE_SETUP #line 163 "config-lexer.l" -{ return MBYTES; } +{ return KBYTES; } YY_BREAK case 70: YY_RULE_SETUP @@ -1455,134 +1461,139 @@ YY_RULE_SETUP YY_BREAK case 74: YY_RULE_SETUP -#line 169 "config-lexer.l" +#line 168 "config-lexer.l" +{ return MBYTES; } + YY_BREAK +case 75: +YY_RULE_SETUP +#line 170 "config-lexer.l" { yylval.number = OPM_TYPE_HTTP; return PROTOCOLTYPE; } YY_BREAK -case 75: +case 76: YY_RULE_SETUP -#line 174 "config-lexer.l" +#line 175 "config-lexer.l" { yylval.number = OPM_TYPE_HTTPPOST; return PROTOCOLTYPE; } YY_BREAK -case 76: +case 77: YY_RULE_SETUP -#line 179 "config-lexer.l" +#line 180 "config-lexer.l" { yylval.number = OPM_TYPE_SOCKS4; return PROTOCOLTYPE; } YY_BREAK -case 77: +case 78: YY_RULE_SETUP -#line 184 "config-lexer.l" +#line 185 "config-lexer.l" { yylval.number = OPM_TYPE_SOCKS5; return PROTOCOLTYPE; } YY_BREAK -case 78: +case 79: YY_RULE_SETUP -#line 189 "config-lexer.l" +#line 190 "config-lexer.l" { yylval.number = OPM_TYPE_WINGATE; return PROTOCOLTYPE; } YY_BREAK -case 79: +case 80: YY_RULE_SETUP -#line 194 "config-lexer.l" +#line 195 "config-lexer.l" { yylval.number = OPM_TYPE_ROUTER; return PROTOCOLTYPE; } YY_BREAK -case 80: +case 81: YY_RULE_SETUP -#line 200 "config-lexer.l" +#line 201 "config-lexer.l" { yylval.number=atoi(yytext); return NUMBER; } YY_BREAK -case 81: +case 82: YY_RULE_SETUP -#line 209 "config-lexer.l" +#line 210 "config-lexer.l" { yylval.number=1; return NUMBER; } YY_BREAK -case 82: +case 83: YY_RULE_SETUP -#line 213 "config-lexer.l" +#line 214 "config-lexer.l" { yylval.number=1; return NUMBER; } YY_BREAK -case 83: +case 84: YY_RULE_SETUP -#line 217 "config-lexer.l" +#line 218 "config-lexer.l" { yylval.number=1; return NUMBER; } YY_BREAK -case 84: +case 85: YY_RULE_SETUP -#line 224 "config-lexer.l" +#line 225 "config-lexer.l" { yylval.number=0; return NUMBER; } YY_BREAK -case 85: +case 86: YY_RULE_SETUP -#line 229 "config-lexer.l" +#line 230 "config-lexer.l" { yylval.number=0; return NUMBER; } YY_BREAK -case 86: +case 87: YY_RULE_SETUP -#line 234 "config-lexer.l" +#line 235 "config-lexer.l" { yylval.number=0; return NUMBER; } YY_BREAK -case 87: -/* rule 87 can match eol */ +case 88: +/* rule 88 can match eol */ YY_RULE_SETUP -#line 240 "config-lexer.l" +#line 241 "config-lexer.l" { strlcpy(linebuf, yytext + 1, sizeof(linebuf)); ++linenum; yyless(1); } YY_BREAK -case 88: +case 89: YY_RULE_SETUP -#line 246 "config-lexer.l" +#line 247 "config-lexer.l" /* ignore whitespace */; YY_BREAK -case 89: +case 90: YY_RULE_SETUP -#line 248 "config-lexer.l" +#line 249 "config-lexer.l" return yytext[0]; YY_BREAK -case 90: +case 91: YY_RULE_SETUP -#line 250 "config-lexer.l" +#line 251 "config-lexer.l" ECHO; YY_BREAK -#line 1586 "config-lexer.c" +#line 1597 "config-lexer.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1875,7 +1886,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 >= 352 ) + if ( yy_current_state >= 360 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1903,11 +1914,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 >= 352 ) + if ( yy_current_state >= 360 ) 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 == 351); + yy_is_jam = (yy_current_state == 359); return yy_is_jam ? 0 : yy_current_state; } @@ -2540,7 +2551,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 250 "config-lexer.l" +#line 251 "config-lexer.l" diff --git a/src/config-lexer.l b/src/config-lexer.l index 0d51e6a..b7a4ba6 100644 --- a/src/config-lexer.l +++ b/src/config-lexer.l @@ -112,6 +112,7 @@ MAX_READ { return MAX_READ; } MODE { return MODE; } NAME { return NAME; } NEGCACHE { return NEGCACHE; } +NEGCACHE_REBUILD { return NEGCACHE_REBUILD; } NICK { return NICK; } NICKSERV { return NICKSERV; } OPER { return OPER; } diff --git a/src/config-parser.c b/src/config-parser.c index 78b57f7..7fe45da 100644 --- a/src/config-parser.c +++ b/src/config-parser.c @@ -132,41 +132,42 @@ extern int yydebug; MODE = 277, NAME = 278, NEGCACHE = 279, - NICK = 280, - NICKSERV = 281, - OPER = 282, - OPM = 283, - OPTIONS = 284, - PASSWORD = 285, - PERFORM = 286, - PIDFILE = 287, - PORT = 288, - PROTOCOL = 289, - READTIMEOUT = 290, - REALNAME = 291, - REPLY = 292, - SCANLOG = 293, - SCANNER = 294, - SECONDS = 295, - MINUTES = 296, - HOURS = 297, - DAYS = 298, - WEEKS = 299, - MONTHS = 300, - YEARS = 301, - SENDMAIL = 302, - SERVER = 303, - TARGET_IP = 304, - TARGET_PORT = 305, - TARGET_STRING = 306, - TIMEOUT = 307, - TYPE = 308, - USERNAME = 309, - USER = 310, - VHOST = 311, - NUMBER = 312, - STRING = 313, - PROTOCOLTYPE = 314 + NEGCACHE_REBUILD = 280, + NICK = 281, + NICKSERV = 282, + OPER = 283, + OPM = 284, + OPTIONS = 285, + PASSWORD = 286, + PERFORM = 287, + PIDFILE = 288, + PORT = 289, + PROTOCOL = 290, + READTIMEOUT = 291, + REALNAME = 292, + REPLY = 293, + SCANLOG = 294, + SCANNER = 295, + SECONDS = 296, + MINUTES = 297, + HOURS = 298, + DAYS = 299, + WEEKS = 300, + MONTHS = 301, + YEARS = 302, + SENDMAIL = 303, + SERVER = 304, + TARGET_IP = 305, + TARGET_PORT = 306, + TARGET_STRING = 307, + TIMEOUT = 308, + TYPE = 309, + USERNAME = 310, + USER = 311, + VHOST = 312, + NUMBER = 313, + STRING = 314, + PROTOCOLTYPE = 315 }; #endif /* Tokens. */ @@ -192,53 +193,54 @@ extern int yydebug; #define MODE 277 #define NAME 278 #define NEGCACHE 279 -#define NICK 280 -#define NICKSERV 281 -#define OPER 282 -#define OPM 283 -#define OPTIONS 284 -#define PASSWORD 285 -#define PERFORM 286 -#define PIDFILE 287 -#define PORT 288 -#define PROTOCOL 289 -#define READTIMEOUT 290 -#define REALNAME 291 -#define REPLY 292 -#define SCANLOG 293 -#define SCANNER 294 -#define SECONDS 295 -#define MINUTES 296 -#define HOURS 297 -#define DAYS 298 -#define WEEKS 299 -#define MONTHS 300 -#define YEARS 301 -#define SENDMAIL 302 -#define SERVER 303 -#define TARGET_IP 304 -#define TARGET_PORT 305 -#define TARGET_STRING 306 -#define TIMEOUT 307 -#define TYPE 308 -#define USERNAME 309 -#define USER 310 -#define VHOST 311 -#define NUMBER 312 -#define STRING 313 -#define PROTOCOLTYPE 314 +#define NEGCACHE_REBUILD 280 +#define NICK 281 +#define NICKSERV 282 +#define OPER 283 +#define OPM 284 +#define OPTIONS 285 +#define PASSWORD 286 +#define PERFORM 287 +#define PIDFILE 288 +#define PORT 289 +#define PROTOCOL 290 +#define READTIMEOUT 291 +#define REALNAME 292 +#define REPLY 293 +#define SCANLOG 294 +#define SCANNER 295 +#define SECONDS 296 +#define MINUTES 297 +#define HOURS 298 +#define DAYS 299 +#define WEEKS 300 +#define MONTHS 301 +#define YEARS 302 +#define SENDMAIL 303 +#define SERVER 304 +#define TARGET_IP 305 +#define TARGET_PORT 306 +#define TARGET_STRING 307 +#define TIMEOUT 308 +#define TYPE 309 +#define USERNAME 310 +#define USER 311 +#define VHOST 312 +#define NUMBER 313 +#define STRING 314 +#define PROTOCOLTYPE 315 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE YYSTYPE; union YYSTYPE { -#line 86 "config-parser.y" /* yacc.c:355 */ +#line 87 "config-parser.y" /* yacc.c:355 */ int number; char *string; -#line 242 "config-parser.c" /* yacc.c:355 */ +#line 244 "config-parser.c" /* yacc.c:355 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -253,7 +255,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 257 "config-parser.c" /* yacc.c:358 */ +#line 259 "config-parser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -495,21 +497,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 306 +#define YYLAST 311 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 65 +#define YYNTOKENS 66 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 79 +#define YYNNTS 80 /* YYNRULES -- Number of rules. */ -#define YYNRULES 149 +#define YYNRULES 151 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 324 +#define YYNSTATES 329 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 314 +#define YYMAXUTOK 315 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -523,14 +525,14 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 64, 62, - 2, 63, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 65, 63, + 2, 64, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 60, 2, 61, 2, 2, 2, 2, + 2, 2, 2, 61, 2, 62, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -549,28 +551,29 @@ static const yytype_uint8 yytranslate[] = 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59 + 55, 56, 57, 58, 59, 60 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 101, 101, 102, 105, 106, 107, 108, 109, 110, - 112, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 123, 123, 124, 125, 126, 127, 132, 134, 135, 137, - 138, 139, 140, 141, 143, 148, 154, 159, 167, 169, - 170, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 190, 196, - 202, 208, 214, 220, 226, 232, 240, 245, 250, 256, - 262, 268, 274, 284, 284, 301, 302, 304, 305, 306, - 308, 316, 324, 335, 335, 351, 352, 354, 355, 356, - 358, 368, 381, 381, 426, 427, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 440, 447, 454, 461, - 477, 483, 489, 495, 501, 520, 522, 523, 525, 526, - 527, 528, 529, 531, 537, 543, 552, 552, 571, 572, - 574, 575, 576, 577, 578, 579, 581, 588, 595, 606, - 612, 614, 615, 617, 635, 637, 638, 640, 641, 643 + 0, 102, 102, 103, 106, 107, 108, 109, 110, 111, + 113, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 124, 124, 125, 126, 127, 128, 133, 135, 136, 138, + 139, 140, 141, 142, 143, 145, 150, 155, 161, 166, + 174, 176, 177, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 197, 203, 209, 215, 221, 227, 233, 239, 247, 252, + 257, 263, 269, 275, 281, 291, 291, 308, 309, 311, + 312, 313, 315, 323, 331, 342, 342, 358, 359, 361, + 362, 363, 365, 375, 388, 388, 433, 434, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 447, 454, + 461, 468, 484, 490, 496, 502, 508, 527, 529, 530, + 532, 533, 534, 535, 536, 538, 544, 550, 559, 559, + 578, 579, 581, 582, 583, 584, 585, 586, 588, 595, + 602, 613, 619, 621, 622, 624, 642, 644, 645, 647, + 648, 650 }; #endif @@ -582,18 +585,18 @@ static const char *const yytname[] = "$end", "error", "$undefined", "AWAY", "BAN_UNKNOWN", "BLACKLIST", "BYTES", "KBYTES", "MBYTES", "CHANNEL", "CONNREGEX", "DNS_FDLIMIT", "DNSBL_FROM", "DNSBL_TO", "EXEMPT", "FD", "INVITE", "IRC", "KLINE", - "KEY", "MASK", "MAX_READ", "MODE", "NAME", "NEGCACHE", "NICK", - "NICKSERV", "OPER", "OPM", "OPTIONS", "PASSWORD", "PERFORM", "PIDFILE", - "PORT", "PROTOCOL", "READTIMEOUT", "REALNAME", "REPLY", "SCANLOG", - "SCANNER", "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS", "MONTHS", - "YEARS", "SENDMAIL", "SERVER", "TARGET_IP", "TARGET_PORT", - "TARGET_STRING", "TIMEOUT", "TYPE", "USERNAME", "USER", "VHOST", - "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='", "':'", - "$accept", "config", "config_items", "timespec_", "timespec", + "KEY", "MASK", "MAX_READ", "MODE", "NAME", "NEGCACHE", + "NEGCACHE_REBUILD", "NICK", "NICKSERV", "OPER", "OPM", "OPTIONS", + "PASSWORD", "PERFORM", "PIDFILE", "PORT", "PROTOCOL", "READTIMEOUT", + "REALNAME", "REPLY", "SCANLOG", "SCANNER", "SECONDS", "MINUTES", "HOURS", + "DAYS", "WEEKS", "MONTHS", "YEARS", "SENDMAIL", "SERVER", "TARGET_IP", + "TARGET_PORT", "TARGET_STRING", "TIMEOUT", "TYPE", "USERNAME", "USER", + "VHOST", "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='", + "':'", "$accept", "config", "config_items", "timespec_", "timespec", "sizespec_", "sizespec", "options_entry", "options_items", - "options_item", "options_negcache", "options_pidfile", - "options_dns_fdlimit", "options_scanlog", "irc_entry", "irc_items", - "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick", + "options_item", "options_negcache", "options_negcache_rebuild", + "options_pidfile", "options_dns_fdlimit", "options_scanlog", "irc_entry", + "irc_items", "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick", "irc_nickserv", "irc_oper", "irc_password", "irc_perform", "irc_port", "irc_readtimeout", "irc_realname", "irc_server", "irc_username", "irc_vhost", "irc_connregex", "channel_entry", "$@1", "channel_items", @@ -623,16 +626,16 @@ static const yytype_uint16 yytoknum[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 123, 125, 59, 61, 58 + 315, 123, 125, 59, 61, 58 }; # endif -#define YYPACT_NINF -149 +#define YYPACT_NINF -125 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-149))) + (!!((Yystate) == (-125))) -#define YYTABLE_NINF -127 +#define YYTABLE_NINF -129 #define yytable_value_is_error(Yytable_value) \ 0 @@ -641,39 +644,39 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -149, 122, -149, -53, -52, -46, -44, -149, -149, -149, - -149, -50, -149, -22, -149, -149, 43, 73, 113, 130, - -41, -32, -149, -34, 3, -149, -149, -149, -31, -26, - -24, -18, -17, -14, -13, -11, 4, 9, 14, 21, - 22, 25, 33, 0, -149, -149, -149, -149, -149, -149, - -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, - -149, 57, -149, 39, 47, 49, 46, -149, -149, -149, - -149, -149, 108, -149, 53, 65, 75, 77, 54, -149, - -149, -149, -149, -149, 104, 96, 86, 87, -149, 95, - 97, 99, 100, 101, 106, 107, 109, 111, 114, 131, - 129, 134, 135, 136, 127, -149, 137, 138, 140, 141, - 139, -149, 142, 143, 131, 145, 146, 144, -149, -149, - 128, 132, 40, -149, -149, -149, -149, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 19, -149, -149, -149, - -149, -149, -149, -149, -149, -149, -149, 158, -149, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 133, - 169, 170, 171, 172, 173, -149, 147, 174, 175, 176, - -149, 119, 177, 178, 179, 180, -149, 185, 186, 183, - -149, 189, 190, 191, 192, 194, 193, 195, 131, 196, - 197, -149, -149, -149, -149, -149, -149, -149, -149, -149, - -149, -149, -149, 131, 131, 131, 131, 131, 131, 131, - -149, -149, -149, -149, -149, -149, -149, 198, 199, 200, - 71, -149, -149, -149, -149, -149, -149, -149, -149, 201, - 202, 203, 188, 204, 20, -149, -149, -149, -149, -149, - -149, -149, -149, -149, -149, 206, 207, -149, 208, 5, - 209, 210, 211, 212, 214, 215, 216, 217, -149, -149, - -149, -149, -149, -149, -149, -149, 222, 223, 224, 221, - -149, 227, 228, 229, 231, 232, 230, -149, -149, -149, - -149, 190, 190, 190, -149, -149, -149, -149, 234, -149, - -149, -149, -149, -149, 233, 235, 236, -149, 237, 238, - 239, 226, -55, -149, 240, -149, -149, -149, -149, 241, - -149, -149, -149, -149, -149, -149, 246, 243, -149, -149, - -149, 244, -149, -149 + -125, 127, -125, -53, -49, -47, -38, -125, -125, -125, + -125, -27, -125, 7, -125, -125, 34, 83, 77, 136, + -23, -21, -125, -14, 1, -125, -125, -125, -13, -3, + 2, 8, 9, 13, 24, 30, 42, 44, 48, 57, + 64, 65, 67, 0, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, 74, -125, 70, 71, 75, 12, -125, -125, -125, + -125, -125, 93, -125, 78, 82, 84, 86, 91, 19, + -125, -125, -125, -125, -125, -125, 47, 101, 17, 96, + -125, 106, 109, 111, 112, 113, 114, 115, 131, 132, + 87, 108, 133, 137, 138, 139, 140, -125, 134, 141, + 142, 143, 144, -125, 145, 146, 108, 108, 149, 150, + 147, -125, -125, 130, 148, 45, -125, -125, -125, -125, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 18, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + 161, -125, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 135, 172, 173, 174, 175, 176, -125, 107, + 177, 178, 179, -125, 95, 180, 181, 182, 183, 184, + -125, 189, 190, 187, -125, 193, 194, 195, 196, 198, + 197, 199, 108, 200, 201, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, 108, 108, 108, + 108, 108, 108, 108, -125, -125, -125, -125, -125, -125, + -125, 202, 203, 204, 81, -125, -125, -125, -125, -125, + -125, -125, -125, 205, 206, 207, 192, 208, 41, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + 210, 211, -125, 212, -2, 213, 214, 215, 216, 218, + 219, 220, 221, -125, -125, -125, -125, -125, -125, -125, + -125, 226, 227, 228, 225, -125, 231, 232, 233, 235, + 236, 234, -125, -125, -125, -125, 194, 194, 194, -125, + -125, -125, -125, 238, -125, -125, -125, -125, -125, 237, + 239, 240, -125, 241, 242, 243, 230, -51, -125, 244, + -125, -125, -125, -125, 245, -125, -125, -125, -125, -125, + -125, 250, 247, -125, -125, -125, 248, -125, -125 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -681,65 +684,65 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 83, 1, 0, 0, 0, 0, 3, 5, 4, + 2, 85, 1, 0, 0, 0, 0, 3, 5, 4, 7, 0, 8, 0, 6, 9, 0, 0, 0, 0, - 0, 0, 148, 0, 0, 146, 147, 57, 0, 0, + 0, 0, 150, 0, 0, 148, 149, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 40, 41, 43, 46, 44, 45, - 47, 48, 55, 49, 50, 51, 52, 53, 54, 42, - 56, 0, 122, 0, 0, 0, 0, 117, 118, 119, - 120, 121, 0, 33, 0, 0, 0, 0, 0, 28, - 29, 30, 31, 32, 0, 0, 0, 0, 145, 0, + 0, 0, 0, 0, 42, 43, 45, 48, 46, 47, + 49, 50, 57, 51, 52, 53, 54, 55, 56, 44, + 58, 0, 124, 0, 0, 0, 0, 119, 120, 121, + 122, 123, 0, 34, 0, 0, 0, 0, 0, 0, + 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, + 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, + 0, 27, 91, 0, 0, 0, 88, 89, 90, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, - 0, 116, 0, 0, 0, 0, 0, 0, 27, 89, - 0, 0, 0, 86, 87, 88, 105, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 95, 96, 97, - 99, 101, 98, 100, 103, 104, 102, 0, 144, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, - 115, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 94, 149, 58, 72, 59, 60, 61, 62, 63, - 64, 65, 66, 10, 10, 10, 10, 10, 10, 10, - 12, 11, 67, 68, 69, 70, 71, 0, 0, 0, - 0, 76, 77, 78, 79, 123, 124, 125, 135, 0, - 0, 0, 0, 0, 0, 129, 130, 132, 131, 133, - 134, 36, 34, 35, 37, 0, 0, 84, 0, 20, - 0, 0, 0, 0, 0, 0, 0, 0, 93, 13, - 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, - 75, 0, 0, 0, 0, 0, 0, 128, 90, 91, - 110, 20, 20, 20, 22, 21, 113, 106, 0, 108, - 111, 109, 112, 107, 0, 0, 0, 74, 0, 0, - 0, 0, 0, 142, 0, 127, 23, 24, 25, 0, - 82, 81, 80, 139, 137, 136, 0, 0, 141, 138, - 114, 0, 140, 143 + 97, 98, 99, 101, 103, 100, 102, 105, 106, 104, + 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 0, 0, 0, 0, 0, 40, 0, + 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 151, 60, 74, 61, + 62, 63, 64, 65, 66, 67, 68, 10, 10, 10, + 10, 10, 10, 10, 12, 11, 69, 70, 71, 72, + 73, 0, 0, 0, 0, 78, 79, 80, 81, 125, + 126, 127, 137, 0, 0, 0, 0, 0, 0, 131, + 132, 134, 133, 135, 136, 38, 35, 36, 37, 39, + 0, 0, 86, 0, 20, 0, 0, 0, 0, 0, + 0, 0, 0, 95, 13, 14, 15, 16, 17, 18, + 19, 0, 0, 0, 0, 77, 0, 0, 0, 0, + 0, 0, 130, 92, 93, 112, 20, 20, 20, 22, + 21, 115, 108, 0, 110, 113, 111, 114, 109, 0, + 0, 0, 76, 0, 0, 0, 0, 0, 144, 0, + 129, 23, 24, 25, 0, 84, 83, 82, 141, 139, + 138, 0, 0, 143, 140, 116, 0, 142, 145 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -149, -149, -149, -23, -99, -148, 23, -149, -149, 182, - -149, -149, -149, -149, -149, -149, 213, -149, -149, -149, - -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, - -149, -149, -149, -149, -149, -12, -149, -149, -149, -149, - -149, -149, 85, -149, -149, -149, -149, -149, 74, -149, - -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, - 219, -149, -149, -149, -149, -149, -149, -25, -149, -149, - -149, -149, -149, -149, -47, -149, -149, 249, -149 + -125, -125, -125, -24, -101, -124, 25, -125, -125, 120, + -125, -125, -125, -125, -125, -125, -125, 217, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -19, -125, -125, -125, + -125, -125, -125, 88, -125, -125, -125, -125, -125, 122, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, 224, -125, -125, -125, -125, -125, -125, 27, -125, + -125, -125, -125, -125, -125, -93, -125, -125, 254, -125 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 7, 210, 211, 284, 285, 8, 78, 79, - 80, 81, 82, 83, 9, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 220, 221, 222, 223, 224, 10, - 11, 122, 123, 124, 125, 12, 13, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 14, 66, - 67, 68, 69, 70, 71, 72, 234, 235, 236, 237, - 238, 239, 240, 302, 303, 15, 24, 25, 26 + -1, 1, 7, 214, 215, 289, 290, 8, 79, 80, + 81, 82, 83, 84, 85, 9, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 224, 225, 226, 227, 228, + 10, 11, 125, 126, 127, 128, 12, 13, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 14, + 66, 67, 68, 69, 70, 71, 72, 238, 239, 240, + 241, 242, 243, 244, 307, 308, 15, 24, 25, 26 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -747,131 +750,134 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 160, 27, 301, 28, 22, 20, 317, 16, 17, -73, - 29, 281, 282, 283, 18, 173, 19, 21, 30, 84, - 126, 228, 31, 23, 229, 32, 33, 34, 85, 86, - 35, 36, 89, 37, 127, 38, 39, 90, 230, 91, - 128, 119, 129, 231, 22, 92, 93, 62, 40, 94, - 95, -126, 96, 130, 41, 73, 42, 232, 63, 64, - 120, 104, 249, 23, 87, 74, 106, 97, 131, 132, - 133, 134, 98, 233, 27, 135, 28, 99, 75, 121, - 190, 276, -73, 29, 100, 101, 76, 217, 102, 256, - 218, 30, 77, 65, 219, 31, 103, 126, 32, 33, - 34, 179, 107, 35, 36, 119, 37, 110, 38, 39, - 108, 127, 109, 112, 62, 117, 113, 128, -126, 129, - 228, 40, 2, 229, 120, 63, 64, 41, 114, 42, - 130, 73, 269, 306, 307, 308, 3, 230, 115, 4, - 116, 74, 231, 121, 147, 131, 132, 133, 134, 148, - 5, 6, 135, 149, 75, 150, 232, 151, 152, 153, - 65, -92, 76, 217, 154, 155, 218, 156, 77, 157, - 219, 158, 233, 203, 204, 205, 206, 207, 208, 209, - 259, 260, 261, 262, 263, 264, 265, 161, 159, 165, - 159, 177, 162, 163, 164, 178, 167, 166, 168, 169, - 172, 170, 171, 174, 175, 250, 176, 180, 270, 277, - 191, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 212, 213, 214, 215, 216, 225, 226, 227, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 274, 251, - 254, 252, 253, 255, 257, 318, 105, 0, 0, 258, - 118, 266, 267, 268, 271, 272, 273, 275, 278, 279, - 280, 286, 287, 88, 289, 288, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 111, 299, 300, 301, 316, - 304, 309, 305, 0, 0, 310, 0, 311, 312, 313, - 314, 315, 319, 320, 321, 322, 323 + 163, 27, 22, 28, 286, 287, 288, 306, 16, -75, + 29, 322, 17, 62, 18, 176, 177, -128, 30, 129, + 73, 23, 31, 19, 63, 64, 32, 33, 34, 20, + 74, 35, 36, 130, 37, 22, 38, 39, 86, 131, + 87, 132, 232, 75, 76, 233, 122, 21, 122, 40, + 88, 91, 77, 133, 23, 41, 254, 42, 78, 234, + 65, 92, 106, 89, 235, 123, 93, 123, 134, 135, + 136, 137, 94, 95, 112, 138, 150, 96, 62, 236, + 194, 120, -128, 108, 27, 124, 28, 124, 97, 63, + 64, 261, -75, 29, 98, 237, 232, 221, 114, 233, + 222, 30, 129, 281, 223, 31, 99, 183, 100, 32, + 33, 34, 101, 234, 35, 36, 130, 37, 235, 38, + 39, 102, 131, 221, 132, 65, 222, 2, 103, 104, + 223, 105, 40, 236, 109, 110, 133, 73, 41, 111, + 42, 3, 115, 274, 4, 161, 116, 74, 117, 237, + 118, 134, 135, 136, 137, 119, 5, 6, 138, 151, + 75, 76, 311, 312, 313, 152, 162, -94, 153, 77, + 154, 155, 156, 157, 158, 78, 207, 208, 209, 210, + 211, 212, 213, 264, 265, 266, 267, 268, 269, 270, + 159, 160, 164, 162, 181, 169, 165, 166, 167, 121, + 170, 171, 172, 168, 175, 275, 174, 173, 178, 179, + 180, 255, 182, 184, 323, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 216, 217, 218, 219, 220, + 229, 230, 231, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 279, 256, 259, 257, 258, 260, 262, + 107, 195, 0, 0, 263, 282, 271, 272, 273, 276, + 277, 278, 280, 283, 284, 285, 291, 292, 90, 294, + 293, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 113, 304, 305, 306, 321, 309, 314, 310, 0, 0, + 315, 0, 316, 317, 318, 319, 320, 324, 325, 326, + 327, 328 }; static const yytype_int16 yycheck[] = { - 99, 1, 57, 3, 1, 55, 61, 60, 60, 9, - 10, 6, 7, 8, 60, 114, 60, 39, 18, 60, - 1, 1, 22, 20, 4, 25, 26, 27, 60, 63, - 30, 31, 63, 33, 15, 35, 36, 63, 18, 63, - 21, 1, 23, 23, 1, 63, 63, 1, 48, 63, - 63, 5, 63, 34, 54, 1, 56, 37, 12, 13, - 20, 61, 57, 20, 61, 11, 9, 63, 49, 50, - 51, 52, 63, 53, 1, 56, 3, 63, 24, 39, - 61, 61, 9, 10, 63, 63, 32, 16, 63, 188, - 19, 18, 38, 47, 23, 22, 63, 1, 25, 26, - 27, 61, 63, 30, 31, 1, 33, 61, 35, 36, - 63, 15, 63, 5, 1, 61, 63, 21, 5, 23, - 1, 48, 0, 4, 20, 12, 13, 54, 63, 56, - 34, 1, 61, 281, 282, 283, 14, 18, 63, 17, - 63, 11, 23, 39, 58, 49, 50, 51, 52, 62, - 28, 29, 56, 58, 24, 58, 37, 58, 58, 58, - 47, 39, 32, 16, 58, 58, 19, 58, 38, 58, - 23, 57, 53, 40, 41, 42, 43, 44, 45, 46, - 203, 204, 205, 206, 207, 208, 209, 58, 57, 62, - 57, 63, 58, 58, 58, 63, 58, 60, 58, 58, - 57, 62, 60, 58, 58, 182, 62, 122, 220, 234, - 136, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 58, 58, 62, 57, 57, 60, 58, - 57, 59, 58, 58, 58, 302, 43, -1, -1, 62, - 78, 63, 63, 63, 63, 63, 63, 63, 62, 62, - 62, 62, 62, 24, 62, 64, 62, 62, 62, 62, - 58, 58, 58, 62, 57, 66, 58, 58, 57, 63, - 58, 57, 62, -1, -1, 62, -1, 62, 62, 62, - 62, 62, 62, 62, 58, 62, 62 + 101, 1, 1, 3, 6, 7, 8, 58, 61, 9, + 10, 62, 61, 1, 61, 116, 117, 5, 18, 1, + 1, 20, 22, 61, 12, 13, 26, 27, 28, 56, + 11, 31, 32, 15, 34, 1, 36, 37, 61, 21, + 61, 23, 1, 24, 25, 4, 1, 40, 1, 49, + 64, 64, 33, 35, 20, 55, 58, 57, 39, 18, + 48, 64, 62, 62, 23, 20, 64, 20, 50, 51, + 52, 53, 64, 64, 62, 57, 59, 64, 1, 38, + 62, 62, 5, 9, 1, 40, 3, 40, 64, 12, + 13, 192, 9, 10, 64, 54, 1, 16, 5, 4, + 19, 18, 1, 62, 23, 22, 64, 62, 64, 26, + 27, 28, 64, 18, 31, 32, 15, 34, 23, 36, + 37, 64, 21, 16, 23, 48, 19, 0, 64, 64, + 23, 64, 49, 38, 64, 64, 35, 1, 55, 64, + 57, 14, 64, 62, 17, 58, 64, 11, 64, 54, + 64, 50, 51, 52, 53, 64, 29, 30, 57, 63, + 24, 25, 286, 287, 288, 59, 58, 40, 59, 33, + 59, 59, 59, 59, 59, 39, 41, 42, 43, 44, + 45, 46, 47, 207, 208, 209, 210, 211, 212, 213, + 59, 59, 59, 58, 64, 61, 59, 59, 59, 79, + 59, 59, 59, 63, 58, 224, 61, 63, 59, 59, + 63, 186, 64, 125, 307, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 59, 59, + 63, 58, 58, 61, 59, 58, 60, 59, 59, 59, + 43, 139, -1, -1, 63, 238, 64, 64, 64, 64, + 64, 64, 64, 63, 63, 63, 63, 63, 24, 63, + 65, 63, 63, 63, 63, 59, 59, 59, 63, 58, + 66, 59, 59, 58, 64, 59, 58, 63, -1, -1, + 63, -1, 63, 63, 63, 63, 63, 63, 63, 59, + 63, 63 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 66, 0, 14, 17, 28, 29, 67, 72, 79, - 104, 105, 110, 111, 123, 140, 60, 60, 60, 60, - 55, 39, 1, 20, 141, 142, 143, 1, 3, 10, - 18, 22, 25, 26, 27, 30, 31, 33, 35, 36, - 48, 54, 56, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 1, 12, 13, 47, 124, 125, 126, 127, - 128, 129, 130, 1, 11, 24, 32, 38, 73, 74, - 75, 76, 77, 78, 60, 60, 63, 61, 142, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 61, 81, 9, 63, 63, 63, - 61, 125, 5, 63, 63, 63, 63, 61, 74, 1, - 20, 39, 106, 107, 108, 109, 1, 15, 21, 23, - 34, 49, 50, 51, 52, 56, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 58, 62, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 57, 57, - 69, 58, 58, 58, 58, 62, 60, 58, 58, 58, - 62, 60, 57, 69, 58, 58, 62, 63, 63, 61, - 107, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 61, 113, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 40, 41, 42, 43, 44, 45, 46, - 68, 69, 62, 62, 62, 62, 62, 16, 19, 23, - 99, 100, 101, 102, 103, 62, 62, 62, 1, 4, - 18, 23, 37, 53, 131, 132, 133, 134, 135, 136, - 137, 62, 62, 62, 62, 58, 58, 62, 57, 57, - 71, 58, 59, 58, 57, 58, 69, 58, 62, 68, - 68, 68, 68, 68, 68, 68, 63, 63, 63, 61, - 100, 63, 63, 63, 60, 63, 61, 132, 62, 62, - 62, 6, 7, 8, 70, 71, 62, 62, 64, 62, - 62, 62, 62, 62, 58, 58, 58, 62, 57, 58, - 58, 57, 138, 139, 58, 62, 70, 70, 70, 57, - 62, 62, 62, 62, 62, 62, 63, 61, 139, 62, - 62, 58, 62, 62 + 0, 67, 0, 14, 17, 29, 30, 68, 73, 81, + 106, 107, 112, 113, 125, 142, 61, 61, 61, 61, + 56, 40, 1, 20, 143, 144, 145, 1, 3, 10, + 18, 22, 26, 27, 28, 31, 32, 34, 36, 37, + 49, 55, 57, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 1, 12, 13, 48, 126, 127, 128, 129, + 130, 131, 132, 1, 11, 24, 25, 33, 39, 74, + 75, 76, 77, 78, 79, 80, 61, 61, 64, 62, + 144, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 62, 83, 9, 64, + 64, 64, 62, 127, 5, 64, 64, 64, 64, 64, + 62, 75, 1, 20, 40, 108, 109, 110, 111, 1, + 15, 21, 23, 35, 50, 51, 52, 53, 57, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 59, 63, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 58, 58, 70, 59, 59, 59, 59, 63, 61, + 59, 59, 59, 63, 61, 58, 70, 70, 59, 59, + 63, 64, 64, 62, 109, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 62, 115, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 41, 42, 43, + 44, 45, 46, 47, 69, 70, 63, 63, 63, 63, + 63, 16, 19, 23, 101, 102, 103, 104, 105, 63, + 63, 63, 1, 4, 18, 23, 38, 54, 133, 134, + 135, 136, 137, 138, 139, 63, 63, 63, 63, 63, + 59, 59, 63, 58, 58, 72, 59, 60, 59, 58, + 59, 70, 59, 63, 69, 69, 69, 69, 69, 69, + 69, 64, 64, 64, 62, 102, 64, 64, 64, 61, + 64, 62, 134, 63, 63, 63, 6, 7, 8, 71, + 72, 63, 63, 65, 63, 63, 63, 63, 63, 59, + 59, 59, 63, 58, 59, 59, 58, 140, 141, 59, + 63, 71, 71, 71, 58, 63, 63, 63, 63, 63, + 63, 64, 62, 141, 63, 63, 59, 63, 63 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 65, 66, 66, 67, 67, 67, 67, 67, 67, - 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, - 70, 70, 71, 71, 71, 71, 72, 73, 73, 74, - 74, 74, 74, 74, 75, 76, 77, 78, 79, 80, - 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 82, 83, + 0, 66, 67, 67, 68, 68, 68, 68, 68, 68, + 69, 69, 70, 70, 70, 70, 70, 70, 70, 70, + 71, 71, 72, 72, 72, 72, 73, 74, 74, 75, + 75, 75, 75, 75, 75, 76, 77, 78, 79, 80, + 81, 82, 82, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 98, 97, 99, 99, 100, 100, 100, - 101, 102, 103, 105, 104, 106, 106, 107, 107, 107, - 108, 109, 111, 110, 112, 112, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 124, 125, 125, - 125, 125, 125, 126, 127, 128, 130, 129, 131, 131, - 132, 132, 132, 132, 132, 132, 133, 134, 135, 136, - 137, 138, 138, 139, 140, 141, 141, 142, 142, 143 + 94, 95, 96, 97, 98, 100, 99, 101, 101, 102, + 102, 102, 103, 104, 105, 107, 106, 108, 108, 109, + 109, 109, 110, 111, 113, 112, 114, 114, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 126, + 127, 127, 127, 127, 127, 128, 129, 130, 132, 131, + 133, 133, 134, 134, 134, 134, 134, 134, 135, 136, + 137, 138, 139, 140, 140, 141, 142, 143, 143, 144, + 144, 145 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -880,18 +886,19 @@ static const yytype_uint8 yyr2[] = 0, 2, 0, 2, 1, 1, 1, 1, 1, 1, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 0, 1, 2, 3, 3, 3, 5, 2, 1, 1, - 1, 1, 1, 1, 4, 4, 4, 4, 5, 2, + 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, + 5, 2, 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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 0, 6, 2, 1, 1, 1, 1, - 4, 4, 4, 0, 6, 2, 1, 1, 1, 1, - 4, 4, 0, 6, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, - 4, 4, 4, 4, 6, 5, 2, 1, 1, 1, - 1, 1, 1, 4, 4, 4, 0, 6, 2, 1, - 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, - 5, 2, 1, 4, 5, 2, 1, 1, 1, 4 + 4, 4, 4, 4, 4, 0, 6, 2, 1, 1, + 1, 1, 4, 4, 4, 0, 6, 2, 1, 1, + 1, 1, 4, 4, 0, 6, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, + 4, 4, 4, 4, 4, 4, 6, 5, 2, 1, + 1, 1, 1, 1, 1, 4, 4, 4, 0, 6, + 2, 1, 1, 1, 1, 1, 1, 1, 4, 4, + 4, 4, 5, 2, 1, 4, 5, 2, 1, 1, + 1, 4 }; @@ -1568,260 +1575,268 @@ yyreduce: switch (yyn) { case 10: -#line 112 "config-parser.y" /* yacc.c:1646 */ +#line 113 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = 0; } -#line 1574 "config-parser.c" /* yacc.c:1646 */ +#line 1581 "config-parser.c" /* yacc.c:1646 */ break; case 12: -#line 113 "config-parser.y" /* yacc.c:1646 */ +#line 114 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); } -#line 1580 "config-parser.c" /* yacc.c:1646 */ +#line 1587 "config-parser.c" /* yacc.c:1646 */ break; case 13: -#line 114 "config-parser.y" /* yacc.c:1646 */ +#line 115 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); } -#line 1586 "config-parser.c" /* yacc.c:1646 */ +#line 1593 "config-parser.c" /* yacc.c:1646 */ break; case 14: -#line 115 "config-parser.y" /* yacc.c:1646 */ +#line 116 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); } -#line 1592 "config-parser.c" /* yacc.c:1646 */ +#line 1599 "config-parser.c" /* yacc.c:1646 */ break; case 15: -#line 116 "config-parser.y" /* yacc.c:1646 */ +#line 117 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); } -#line 1598 "config-parser.c" /* yacc.c:1646 */ +#line 1605 "config-parser.c" /* yacc.c:1646 */ break; case 16: -#line 117 "config-parser.y" /* yacc.c:1646 */ +#line 118 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); } -#line 1604 "config-parser.c" /* yacc.c:1646 */ +#line 1611 "config-parser.c" /* yacc.c:1646 */ break; case 17: -#line 118 "config-parser.y" /* yacc.c:1646 */ +#line 119 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); } -#line 1610 "config-parser.c" /* yacc.c:1646 */ +#line 1617 "config-parser.c" /* yacc.c:1646 */ break; case 18: -#line 119 "config-parser.y" /* yacc.c:1646 */ +#line 120 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); } -#line 1616 "config-parser.c" /* yacc.c:1646 */ +#line 1623 "config-parser.c" /* yacc.c:1646 */ break; case 19: -#line 120 "config-parser.y" /* yacc.c:1646 */ +#line 121 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); } -#line 1622 "config-parser.c" /* yacc.c:1646 */ +#line 1629 "config-parser.c" /* yacc.c:1646 */ break; case 20: -#line 123 "config-parser.y" /* yacc.c:1646 */ +#line 124 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = 0; } -#line 1628 "config-parser.c" /* yacc.c:1646 */ +#line 1635 "config-parser.c" /* yacc.c:1646 */ break; case 22: -#line 124 "config-parser.y" /* yacc.c:1646 */ +#line 125 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); } -#line 1634 "config-parser.c" /* yacc.c:1646 */ +#line 1641 "config-parser.c" /* yacc.c:1646 */ break; case 23: -#line 125 "config-parser.y" /* yacc.c:1646 */ +#line 126 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); } -#line 1640 "config-parser.c" /* yacc.c:1646 */ +#line 1647 "config-parser.c" /* yacc.c:1646 */ break; case 24: -#line 126 "config-parser.y" /* yacc.c:1646 */ +#line 127 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); } -#line 1646 "config-parser.c" /* yacc.c:1646 */ +#line 1653 "config-parser.c" /* yacc.c:1646 */ break; case 25: -#line 127 "config-parser.y" /* yacc.c:1646 */ +#line 128 "config-parser.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); } -#line 1652 "config-parser.c" /* yacc.c:1646 */ +#line 1659 "config-parser.c" /* yacc.c:1646 */ break; - case 34: -#line 144 "config-parser.y" /* yacc.c:1646 */ + case 35: +#line 146 "config-parser.y" /* yacc.c:1646 */ { OptionsItem->negcache = (yyvsp[-1].number); } -#line 1660 "config-parser.c" /* yacc.c:1646 */ +#line 1667 "config-parser.c" /* yacc.c:1646 */ break; - case 35: -#line 149 "config-parser.y" /* yacc.c:1646 */ + case 36: +#line 151 "config-parser.y" /* yacc.c:1646 */ + { + OptionsItem->negcache_rebuild = (yyvsp[-1].number); +} +#line 1675 "config-parser.c" /* yacc.c:1646 */ + break; + + case 37: +#line 156 "config-parser.y" /* yacc.c:1646 */ { MyFree(OptionsItem->pidfile); OptionsItem->pidfile = xstrdup((yyvsp[-1].string)); } -#line 1669 "config-parser.c" /* yacc.c:1646 */ +#line 1684 "config-parser.c" /* yacc.c:1646 */ break; - case 36: -#line 155 "config-parser.y" /* yacc.c:1646 */ + case 38: +#line 162 "config-parser.y" /* yacc.c:1646 */ { OptionsItem->dns_fdlimit = (yyvsp[-1].number); } -#line 1677 "config-parser.c" /* yacc.c:1646 */ +#line 1692 "config-parser.c" /* yacc.c:1646 */ break; - case 37: -#line 160 "config-parser.y" /* yacc.c:1646 */ + case 39: +#line 167 "config-parser.y" /* yacc.c:1646 */ { MyFree(OptionsItem->scanlog); OptionsItem->scanlog = xstrdup((yyvsp[-1].string)); } -#line 1686 "config-parser.c" /* yacc.c:1646 */ +#line 1701 "config-parser.c" /* yacc.c:1646 */ break; - case 58: -#line 191 "config-parser.y" /* yacc.c:1646 */ + case 60: +#line 198 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->away); IRCItem->away = xstrdup((yyvsp[-1].string)); } -#line 1695 "config-parser.c" /* yacc.c:1646 */ +#line 1710 "config-parser.c" /* yacc.c:1646 */ break; - case 59: -#line 197 "config-parser.y" /* yacc.c:1646 */ + case 61: +#line 204 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->kline); IRCItem->kline = xstrdup((yyvsp[-1].string)); } -#line 1704 "config-parser.c" /* yacc.c:1646 */ +#line 1719 "config-parser.c" /* yacc.c:1646 */ break; - case 60: -#line 203 "config-parser.y" /* yacc.c:1646 */ + case 62: +#line 210 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->mode); IRCItem->mode = xstrdup((yyvsp[-1].string)); } -#line 1713 "config-parser.c" /* yacc.c:1646 */ +#line 1728 "config-parser.c" /* yacc.c:1646 */ break; - case 61: -#line 209 "config-parser.y" /* yacc.c:1646 */ + case 63: +#line 216 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->nick); IRCItem->nick = xstrdup((yyvsp[-1].string)); } -#line 1722 "config-parser.c" /* yacc.c:1646 */ +#line 1737 "config-parser.c" /* yacc.c:1646 */ break; - case 62: -#line 215 "config-parser.y" /* yacc.c:1646 */ + case 64: +#line 222 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->nickserv); IRCItem->nickserv = xstrdup((yyvsp[-1].string)); } -#line 1731 "config-parser.c" /* yacc.c:1646 */ +#line 1746 "config-parser.c" /* yacc.c:1646 */ break; - case 63: -#line 221 "config-parser.y" /* yacc.c:1646 */ + case 65: +#line 228 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->oper); IRCItem->oper = xstrdup((yyvsp[-1].string)); } -#line 1740 "config-parser.c" /* yacc.c:1646 */ +#line 1755 "config-parser.c" /* yacc.c:1646 */ break; - case 64: -#line 227 "config-parser.y" /* yacc.c:1646 */ + case 66: +#line 234 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->password); IRCItem->password = xstrdup((yyvsp[-1].string)); } -#line 1749 "config-parser.c" /* yacc.c:1646 */ +#line 1764 "config-parser.c" /* yacc.c:1646 */ break; - case 65: -#line 233 "config-parser.y" /* yacc.c:1646 */ + case 67: +#line 240 "config-parser.y" /* yacc.c:1646 */ { node_t *node; node = node_create(xstrdup((yyvsp[-1].string))); list_add(IRCItem->performs, node); } -#line 1760 "config-parser.c" /* yacc.c:1646 */ +#line 1775 "config-parser.c" /* yacc.c:1646 */ break; - case 66: -#line 241 "config-parser.y" /* yacc.c:1646 */ + case 68: +#line 248 "config-parser.y" /* yacc.c:1646 */ { IRCItem->port = (yyvsp[-1].number); } -#line 1768 "config-parser.c" /* yacc.c:1646 */ +#line 1783 "config-parser.c" /* yacc.c:1646 */ break; - case 67: -#line 246 "config-parser.y" /* yacc.c:1646 */ + case 69: +#line 253 "config-parser.y" /* yacc.c:1646 */ { IRCItem->readtimeout = (yyvsp[-1].number); } -#line 1776 "config-parser.c" /* yacc.c:1646 */ +#line 1791 "config-parser.c" /* yacc.c:1646 */ break; - case 68: -#line 251 "config-parser.y" /* yacc.c:1646 */ + case 70: +#line 258 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->realname); IRCItem->realname = xstrdup((yyvsp[-1].string)); } -#line 1785 "config-parser.c" /* yacc.c:1646 */ +#line 1800 "config-parser.c" /* yacc.c:1646 */ break; - case 69: -#line 257 "config-parser.y" /* yacc.c:1646 */ + case 71: +#line 264 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->server); IRCItem->server = xstrdup((yyvsp[-1].string)); } -#line 1794 "config-parser.c" /* yacc.c:1646 */ +#line 1809 "config-parser.c" /* yacc.c:1646 */ break; - case 70: -#line 263 "config-parser.y" /* yacc.c:1646 */ + case 72: +#line 270 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->username); IRCItem->username = xstrdup((yyvsp[-1].string)); } -#line 1803 "config-parser.c" /* yacc.c:1646 */ +#line 1818 "config-parser.c" /* yacc.c:1646 */ break; - case 71: -#line 269 "config-parser.y" /* yacc.c:1646 */ + case 73: +#line 276 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->vhost); IRCItem->vhost = xstrdup((yyvsp[-1].string)); } -#line 1812 "config-parser.c" /* yacc.c:1646 */ +#line 1827 "config-parser.c" /* yacc.c:1646 */ break; - case 72: -#line 275 "config-parser.y" /* yacc.c:1646 */ + case 74: +#line 282 "config-parser.y" /* yacc.c:1646 */ { MyFree(IRCItem->connregex); IRCItem->connregex = xstrdup((yyvsp[-1].string)); } -#line 1821 "config-parser.c" /* yacc.c:1646 */ +#line 1836 "config-parser.c" /* yacc.c:1646 */ break; - case 73: -#line 284 "config-parser.y" /* yacc.c:1646 */ + case 75: +#line 291 "config-parser.y" /* yacc.c:1646 */ { node_t *node; struct ChannelConf *item; @@ -1837,44 +1852,44 @@ yyreduce: tmp = item; } -#line 1841 "config-parser.c" /* yacc.c:1646 */ +#line 1856 "config-parser.c" /* yacc.c:1646 */ break; - case 80: -#line 309 "config-parser.y" /* yacc.c:1646 */ + case 82: +#line 316 "config-parser.y" /* yacc.c:1646 */ { struct ChannelConf *item = tmp; MyFree(item->name); item->name = xstrdup((yyvsp[-1].string)); } -#line 1852 "config-parser.c" /* yacc.c:1646 */ +#line 1867 "config-parser.c" /* yacc.c:1646 */ break; - case 81: -#line 317 "config-parser.y" /* yacc.c:1646 */ + case 83: +#line 324 "config-parser.y" /* yacc.c:1646 */ { struct ChannelConf *item = tmp; MyFree(item->key); item->key = xstrdup((yyvsp[-1].string)); } -#line 1863 "config-parser.c" /* yacc.c:1646 */ +#line 1878 "config-parser.c" /* yacc.c:1646 */ break; - case 82: -#line 325 "config-parser.y" /* yacc.c:1646 */ + case 84: +#line 332 "config-parser.y" /* yacc.c:1646 */ { struct ChannelConf *item = tmp; MyFree(item->invite); item->invite = xstrdup((yyvsp[-1].string)); } -#line 1874 "config-parser.c" /* yacc.c:1646 */ +#line 1889 "config-parser.c" /* yacc.c:1646 */ break; - case 83: -#line 335 "config-parser.y" /* yacc.c:1646 */ + case 85: +#line 342 "config-parser.y" /* yacc.c:1646 */ { node_t *node; struct UserConf *item; @@ -1889,11 +1904,11 @@ yyreduce: tmp = item; } -#line 1893 "config-parser.c" /* yacc.c:1646 */ +#line 1908 "config-parser.c" /* yacc.c:1646 */ break; - case 90: -#line 359 "config-parser.y" /* yacc.c:1646 */ + case 92: +#line 366 "config-parser.y" /* yacc.c:1646 */ { struct UserConf *item = tmp; node_t *node; @@ -1902,11 +1917,11 @@ yyreduce: list_add(item->masks, node); } -#line 1906 "config-parser.c" /* yacc.c:1646 */ +#line 1921 "config-parser.c" /* yacc.c:1646 */ break; - case 91: -#line 369 "config-parser.y" /* yacc.c:1646 */ + case 93: +#line 376 "config-parser.y" /* yacc.c:1646 */ { struct UserConf *item = tmp; node_t *node; @@ -1915,11 +1930,11 @@ yyreduce: list_add(item->scanners, node); } -#line 1919 "config-parser.c" /* yacc.c:1646 */ +#line 1934 "config-parser.c" /* yacc.c:1646 */ break; - case 92: -#line 381 "config-parser.y" /* yacc.c:1646 */ + case 94: +#line 388 "config-parser.y" /* yacc.c:1646 */ { node_t *node; struct ScannerConf *item, *olditem; @@ -1963,41 +1978,41 @@ yyreduce: list_add(ScannerItemList, node); tmp = item; } -#line 1967 "config-parser.c" /* yacc.c:1646 */ +#line 1982 "config-parser.c" /* yacc.c:1646 */ break; - case 106: -#line 441 "config-parser.y" /* yacc.c:1646 */ + case 108: +#line 448 "config-parser.y" /* yacc.c:1646 */ { struct ScannerConf *item = tmp; MyFree(item->name); item->name = xstrdup((yyvsp[-1].string)); } -#line 1977 "config-parser.c" /* yacc.c:1646 */ +#line 1992 "config-parser.c" /* yacc.c:1646 */ break; - case 107: -#line 448 "config-parser.y" /* yacc.c:1646 */ + case 109: +#line 455 "config-parser.y" /* yacc.c:1646 */ { struct ScannerConf *item = tmp; MyFree(item->vhost); item->vhost = xstrdup((yyvsp[-1].string)); } -#line 1987 "config-parser.c" /* yacc.c:1646 */ +#line 2002 "config-parser.c" /* yacc.c:1646 */ break; - case 108: -#line 455 "config-parser.y" /* yacc.c:1646 */ + case 110: +#line 462 "config-parser.y" /* yacc.c:1646 */ { struct ScannerConf *item = tmp; MyFree(item->target_ip); item->target_ip = xstrdup((yyvsp[-1].string)); } -#line 1997 "config-parser.c" /* yacc.c:1646 */ +#line 2012 "config-parser.c" /* yacc.c:1646 */ break; - case 109: -#line 462 "config-parser.y" /* yacc.c:1646 */ + case 111: +#line 469 "config-parser.y" /* yacc.c:1646 */ { struct ScannerConf *item = tmp; @@ -2012,47 +2027,47 @@ yyreduce: list_add(item->target_string, node); } -#line 2016 "config-parser.c" /* yacc.c:1646 */ +#line 2031 "config-parser.c" /* yacc.c:1646 */ break; - case 110: -#line 478 "config-parser.y" /* yacc.c:1646 */ + case 112: +#line 485 "config-parser.y" /* yacc.c:1646 */ { struct ScannerConf *item = tmp; item->fd = (yyvsp[-1].number); } -#line 2025 "config-parser.c" /* yacc.c:1646 */ +#line 2040 "config-parser.c" /* yacc.c:1646 */ break; - case 111: -#line 484 "config-parser.y" /* yacc.c:1646 */ + case 113: +#line 491 "config-parser.y" /* yacc.c:1646 */ { struct ScannerConf *item = tmp; item->target_port = (yyvsp[-1].number); } -#line 2034 "config-parser.c" /* yacc.c:1646 */ +#line 2049 "config-parser.c" /* yacc.c:1646 */ break; - case 112: -#line 490 "config-parser.y" /* yacc.c:1646 */ + case 114: +#line 497 "config-parser.y" /* yacc.c:1646 */ { struct ScannerConf *item = tmp; item->timeout = (yyvsp[-1].number); } -#line 2043 "config-parser.c" /* yacc.c:1646 */ +#line 2058 "config-parser.c" /* yacc.c:1646 */ break; - case 113: -#line 496 "config-parser.y" /* yacc.c:1646 */ + case 115: +#line 503 "config-parser.y" /* yacc.c:1646 */ { struct ScannerConf *item = tmp; item->max_read = (yyvsp[-1].number); } -#line 2052 "config-parser.c" /* yacc.c:1646 */ +#line 2067 "config-parser.c" /* yacc.c:1646 */ break; - case 114: -#line 502 "config-parser.y" /* yacc.c:1646 */ + case 116: +#line 509 "config-parser.y" /* yacc.c:1646 */ { struct ProtocolConf *item; struct ScannerConf *item2; @@ -2068,38 +2083,38 @@ yyreduce: node = node_create(item); list_add(item2->protocols, node); } -#line 2072 "config-parser.c" /* yacc.c:1646 */ +#line 2087 "config-parser.c" /* yacc.c:1646 */ break; - case 123: -#line 532 "config-parser.y" /* yacc.c:1646 */ + case 125: +#line 539 "config-parser.y" /* yacc.c:1646 */ { MyFree(OpmItem->dnsbl_from); OpmItem->dnsbl_from = xstrdup((yyvsp[-1].string)); } -#line 2081 "config-parser.c" /* yacc.c:1646 */ +#line 2096 "config-parser.c" /* yacc.c:1646 */ break; - case 124: -#line 538 "config-parser.y" /* yacc.c:1646 */ + case 126: +#line 545 "config-parser.y" /* yacc.c:1646 */ { MyFree(OpmItem->dnsbl_to); OpmItem->dnsbl_to = xstrdup((yyvsp[-1].string)); } -#line 2090 "config-parser.c" /* yacc.c:1646 */ +#line 2105 "config-parser.c" /* yacc.c:1646 */ break; - case 125: -#line 544 "config-parser.y" /* yacc.c:1646 */ + case 127: +#line 551 "config-parser.y" /* yacc.c:1646 */ { MyFree(OpmItem->sendmail); OpmItem->sendmail = xstrdup((yyvsp[-1].string)); } -#line 2099 "config-parser.c" /* yacc.c:1646 */ +#line 2114 "config-parser.c" /* yacc.c:1646 */ break; - case 126: -#line 552 "config-parser.y" /* yacc.c:1646 */ + case 128: +#line 559 "config-parser.y" /* yacc.c:1646 */ { node_t *node; struct BlacklistConf *item; @@ -2117,33 +2132,33 @@ yyreduce: tmp = item; } -#line 2121 "config-parser.c" /* yacc.c:1646 */ +#line 2136 "config-parser.c" /* yacc.c:1646 */ break; - case 136: -#line 581 "config-parser.y" /* yacc.c:1646 */ + case 138: +#line 588 "config-parser.y" /* yacc.c:1646 */ { struct BlacklistConf *item = tmp; MyFree(item->name); item->name = xstrdup((yyvsp[-1].string)); } -#line 2132 "config-parser.c" /* yacc.c:1646 */ +#line 2147 "config-parser.c" /* yacc.c:1646 */ break; - case 137: -#line 588 "config-parser.y" /* yacc.c:1646 */ + case 139: +#line 595 "config-parser.y" /* yacc.c:1646 */ { struct BlacklistConf *item = tmp; MyFree(item->kline); item->kline = xstrdup((yyvsp[-1].string)); } -#line 2143 "config-parser.c" /* yacc.c:1646 */ +#line 2158 "config-parser.c" /* yacc.c:1646 */ break; - case 138: -#line 595 "config-parser.y" /* yacc.c:1646 */ + case 140: +#line 602 "config-parser.y" /* yacc.c:1646 */ { struct BlacklistConf *item = tmp; @@ -2154,21 +2169,21 @@ yyreduce: else yyerror("Unknown blacklist type defined"); } -#line 2158 "config-parser.c" /* yacc.c:1646 */ +#line 2173 "config-parser.c" /* yacc.c:1646 */ break; - case 139: -#line 606 "config-parser.y" /* yacc.c:1646 */ + case 141: +#line 613 "config-parser.y" /* yacc.c:1646 */ { struct BlacklistConf *item = tmp; item->ban_unknown = (yyvsp[-1].number); } -#line 2168 "config-parser.c" /* yacc.c:1646 */ +#line 2183 "config-parser.c" /* yacc.c:1646 */ break; - case 143: -#line 618 "config-parser.y" /* yacc.c:1646 */ + case 145: +#line 625 "config-parser.y" /* yacc.c:1646 */ { struct BlacklistReplyConf *item; struct BlacklistConf *blacklist = tmp; @@ -2182,22 +2197,22 @@ yyreduce: node = node_create(item); list_add(blacklist->reply, node); } -#line 2186 "config-parser.c" /* yacc.c:1646 */ +#line 2201 "config-parser.c" /* yacc.c:1646 */ break; - case 149: -#line 644 "config-parser.y" /* yacc.c:1646 */ + case 151: +#line 651 "config-parser.y" /* yacc.c:1646 */ { node_t *node; node = node_create(xstrdup((yyvsp[-1].string))); list_add(ExemptItem->masks, node); } -#line 2197 "config-parser.c" /* yacc.c:1646 */ +#line 2212 "config-parser.c" /* yacc.c:1646 */ break; -#line 2201 "config-parser.c" /* yacc.c:1646 */ +#line 2216 "config-parser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2425,5 +2440,5 @@ yyreturn: #endif return yyresult; } -#line 651 "config-parser.y" /* yacc.c:1906 */ +#line 658 "config-parser.y" /* yacc.c:1906 */ diff --git a/src/config-parser.h b/src/config-parser.h index fcdf311..2e22615 100644 --- a/src/config-parser.h +++ b/src/config-parser.h @@ -67,41 +67,42 @@ extern int yydebug; MODE = 277, NAME = 278, NEGCACHE = 279, - NICK = 280, - NICKSERV = 281, - OPER = 282, - OPM = 283, - OPTIONS = 284, - PASSWORD = 285, - PERFORM = 286, - PIDFILE = 287, - PORT = 288, - PROTOCOL = 289, - READTIMEOUT = 290, - REALNAME = 291, - REPLY = 292, - SCANLOG = 293, - SCANNER = 294, - SECONDS = 295, - MINUTES = 296, - HOURS = 297, - DAYS = 298, - WEEKS = 299, - MONTHS = 300, - YEARS = 301, - SENDMAIL = 302, - SERVER = 303, - TARGET_IP = 304, - TARGET_PORT = 305, - TARGET_STRING = 306, - TIMEOUT = 307, - TYPE = 308, - USERNAME = 309, - USER = 310, - VHOST = 311, - NUMBER = 312, - STRING = 313, - PROTOCOLTYPE = 314 + NEGCACHE_REBUILD = 280, + NICK = 281, + NICKSERV = 282, + OPER = 283, + OPM = 284, + OPTIONS = 285, + PASSWORD = 286, + PERFORM = 287, + PIDFILE = 288, + PORT = 289, + PROTOCOL = 290, + READTIMEOUT = 291, + REALNAME = 292, + REPLY = 293, + SCANLOG = 294, + SCANNER = 295, + SECONDS = 296, + MINUTES = 297, + HOURS = 298, + DAYS = 299, + WEEKS = 300, + MONTHS = 301, + YEARS = 302, + SENDMAIL = 303, + SERVER = 304, + TARGET_IP = 305, + TARGET_PORT = 306, + TARGET_STRING = 307, + TIMEOUT = 308, + TYPE = 309, + USERNAME = 310, + USER = 311, + VHOST = 312, + NUMBER = 313, + STRING = 314, + PROTOCOLTYPE = 315 }; #endif /* Tokens. */ @@ -127,53 +128,54 @@ extern int yydebug; #define MODE 277 #define NAME 278 #define NEGCACHE 279 -#define NICK 280 -#define NICKSERV 281 -#define OPER 282 -#define OPM 283 -#define OPTIONS 284 -#define PASSWORD 285 -#define PERFORM 286 -#define PIDFILE 287 -#define PORT 288 -#define PROTOCOL 289 -#define READTIMEOUT 290 -#define REALNAME 291 -#define REPLY 292 -#define SCANLOG 293 -#define SCANNER 294 -#define SECONDS 295 -#define MINUTES 296 -#define HOURS 297 -#define DAYS 298 -#define WEEKS 299 -#define MONTHS 300 -#define YEARS 301 -#define SENDMAIL 302 -#define SERVER 303 -#define TARGET_IP 304 -#define TARGET_PORT 305 -#define TARGET_STRING 306 -#define TIMEOUT 307 -#define TYPE 308 -#define USERNAME 309 -#define USER 310 -#define VHOST 311 -#define NUMBER 312 -#define STRING 313 -#define PROTOCOLTYPE 314 +#define NEGCACHE_REBUILD 280 +#define NICK 281 +#define NICKSERV 282 +#define OPER 283 +#define OPM 284 +#define OPTIONS 285 +#define PASSWORD 286 +#define PERFORM 287 +#define PIDFILE 288 +#define PORT 289 +#define PROTOCOL 290 +#define READTIMEOUT 291 +#define REALNAME 292 +#define REPLY 293 +#define SCANLOG 294 +#define SCANNER 295 +#define SECONDS 296 +#define MINUTES 297 +#define HOURS 298 +#define DAYS 299 +#define WEEKS 300 +#define MONTHS 301 +#define YEARS 302 +#define SENDMAIL 303 +#define SERVER 304 +#define TARGET_IP 305 +#define TARGET_PORT 306 +#define TARGET_STRING 307 +#define TIMEOUT 308 +#define TYPE 309 +#define USERNAME 310 +#define USER 311 +#define VHOST 312 +#define NUMBER 313 +#define STRING 314 +#define PROTOCOLTYPE 315 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE YYSTYPE; union YYSTYPE { -#line 86 "config-parser.y" /* yacc.c:1909 */ +#line 87 "config-parser.y" /* yacc.c:1909 */ int number; char *string; -#line 177 "config-parser.h" /* yacc.c:1909 */ +#line 179 "config-parser.h" /* yacc.c:1909 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 diff --git a/src/config-parser.y b/src/config-parser.y index 2f7ae5c..67c67e5 100644 --- a/src/config-parser.y +++ b/src/config-parser.y @@ -55,6 +55,7 @@ void *tmp; /* Variable to temporarily hold nodes before insertion to list %token MODE %token NAME %token NEGCACHE +%token NEGCACHE_REBUILD %token NICK %token NICKSERV %token OPER @@ -135,6 +136,7 @@ options_items: options_items options_item | options_item; options_item: options_negcache | + options_negcache_rebuild | options_pidfile | options_dns_fdlimit | options_scanlog | @@ -145,6 +147,11 @@ options_negcache: NEGCACHE '=' timespec ';' OptionsItem->negcache = $3; }; +options_negcache_rebuild: NEGCACHE_REBUILD '=' timespec ';' +{ + OptionsItem->negcache_rebuild = $3; +}; + options_pidfile: PIDFILE '=' STRING ';' { MyFree(OptionsItem->pidfile); diff --git a/src/config.c b/src/config.c index f89686e..423d00a 100644 --- a/src/config.c +++ b/src/config.c @@ -92,6 +92,7 @@ config_setup(void) /* Setup options block defaults */ OptionsItem->negcache = 0; /* 0 disabled negcache */ + OptionsItem->negcache_rebuild = 43200; OptionsItem->pidfile = xstrdup("hopm.pid"); OptionsItem->dns_fdlimit = 50; OptionsItem->scanlog = NULL; diff --git a/src/config.h b/src/config.h index 5e56b81..b3a7ab4 100644 --- a/src/config.h +++ b/src/config.h @@ -43,6 +43,7 @@ struct ChannelConf struct OptionsConf { int negcache; + time_t negcache_rebuild; unsigned int dns_fdlimit; char *pidfile; char *scanlog; diff --git a/src/options.h b/src/options.h index 67425e0..7d11bef 100644 --- a/src/options.h +++ b/src/options.h @@ -25,11 +25,4 @@ /* Interval in how often we try to reconnect (in seconds) */ #define RECONNECTINTERVAL 30 - -/* How long (in seconds) between rebuilds of the negative cache. The negcache - * is only rebuilt to free up memory used by entries that are too old. You - * probably don't need to tweak this unless you have huge amounts of people - * connecting (hundreds per minute). Default is 12 hours. - */ -#define NEG_CACHE_REBUILD (60 * 60 * 12) #endif /* OPTIONS_H */ diff --git a/src/scan.c b/src/scan.c index 6eabd6e..b3d3a5b 100644 --- a/src/scan.c +++ b/src/scan.c @@ -113,15 +113,14 @@ scan_cycle(void) void scan_timer(void) { - static unsigned int nc_counter; + static time_t nc_counter; if (OptionsItem->negcache > 0) { - if (nc_counter++ >= NEG_CACHE_REBUILD) + if (nc_counter++ >= OptionsItem->negcache_rebuild) { /* - * Time to rebuild the negative - * cache. + * Time to rebuild the negative cache. */ if (OPT_DEBUG) log_printf("SCAN -> Rebuilding negative cache");