diff options
| author | 2020-11-19 19:43:38 -0500 | |
|---|---|---|
| committer | 2020-11-19 19:43:38 -0500 | |
| commit | 63e4f9bb7cea4f73a091431407d042ec9ae8b5f7 (patch) | |
| tree | d56703bf5e2a0932e7519843589d31c228d0314e /src | |
| parent | 79783ce4f83642ba748824dc02ecc1d897df347a (diff) | |
| parent | 6a0204e95aa5358ef2bf7714559ccd366dba4617 (diff) | |
Update upstream source from tag 'upstream/1.1.9'
Update to upstream version '1.1.9'
with Debian dir f87a15f8b0e0242659f92e8bd07df9e123305fbe
Diffstat (limited to 'src')
| -rw-r--r-- | src/Makefile.am | 1 | ||||
| -rw-r--r-- | src/Makefile.in | 1 | ||||
| -rw-r--r-- | src/config-lexer.c | 1039 | ||||
| -rw-r--r-- | src/config-lexer.l | 4 | ||||
| -rw-r--r-- | src/config-parser.c | 1705 | ||||
| -rw-r--r-- | src/config-parser.h | 279 | ||||
| -rw-r--r-- | src/config-parser.y | 39 | ||||
| -rw-r--r-- | src/config.c | 8 | ||||
| -rw-r--r-- | src/config.h | 6 | ||||
| -rw-r--r-- | src/irc.c | 104 | ||||
| -rw-r--r-- | src/libopm/src/config.c | 33 | ||||
| -rw-r--r-- | src/libopm/src/libopm.c | 66 | ||||
| -rw-r--r-- | src/libopm/src/libopm.h | 3 | ||||
| -rw-r--r-- | src/patchlevel.h | 2 | ||||
| -rw-r--r-- | src/scan.c | 2 | ||||
| -rw-r--r-- | src/serno.h | 1 |
16 files changed, 1779 insertions, 1514 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index ec9337c..858547d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -39,7 +39,6 @@ hopm_SOURCES = compat.c \ patricia.h \ scan.c \ scan.h \ - serno.h \ stats.c \ stats.h diff --git a/src/Makefile.in b/src/Makefile.in index e0bb65e..5da1450 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -421,7 +421,6 @@ hopm_SOURCES = compat.c \ patricia.h \ scan.c \ scan.h \ - serno.h \ stats.c \ stats.h diff --git a/src/config-lexer.c b/src/config-lexer.c index 7ede571..4987d2a 100644 --- a/src/config-lexer.c +++ b/src/config-lexer.c @@ -355,8 +355,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 110 -#define YY_END_OF_BUFFER 111 +#define YY_NUM_RULES 112 +#define YY_END_OF_BUFFER 113 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -364,63 +364,66 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[493] = +static const flex_int16_t yy_accept[526] = { 0, - 7, 7, 0, 0, 111, 109, 7, 6, 109, 8, - 109, 109, 9, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 3, 4, 3, 7, 6, 0, 10, - 8, 0, 1, 8, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, - 0, 0, 0, 87, 0, 0, 0, 0, 92, 0, - 0, 0, 0, 0, 0, 107, 0, 105, 0, 0, + 7, 7, 0, 0, 113, 111, 7, 6, 111, 8, + 111, 111, 9, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 3, 4, 3, 7, 6, 0, 10, 8, + 0, 1, 8, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, + 0, 0, 0, 89, 0, 0, 0, 0, 94, 0, + 0, 0, 0, 0, 0, 109, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 29, - 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 108, 0, 42, 0, 0, + 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 32, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 110, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 102, 0, 0, 61, 0, 0, 0, - 0, 0, 0, 0, 104, 0, 0, 12, 0, 0, - 82, 0, 0, 0, 73, 0, 0, 0, 0, 0, - 76, 93, 0, 27, 28, 0, 0, 0, 32, 0, - 0, 0, 0, 34, 0, 35, 0, 38, 0, 41, - - 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, - 63, 64, 0, 72, 0, 68, 0, 0, 0, 0, - 81, 0, 0, 0, 0, 0, 0, 0, 0, 106, - 75, 0, 95, 0, 86, 0, 30, 0, 91, 0, - 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 66, 71, 0, 67, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 0, 0, 26, 85, 0, 0, 90, 0, 78, + 0, 0, 0, 0, 0, 104, 0, 0, 63, 0, + 0, 0, 0, 0, 0, 106, 0, 0, 12, 0, + 14, 0, 84, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 78, 95, 0, 28, 29, 0, 0, 0, + 33, 0, 0, 0, 0, 35, 0, 36, 0, 39, - 69, 0, 0, 40, 0, 0, 0, 0, 0, 0, - 0, 0, 100, 0, 0, 80, 0, 56, 97, 98, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 42, 0, 0, 0, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 105, 66, 67, 74, 0, 70, 0, 0, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 77, 0, 97, 0, 88, 0, 31, 0, + 93, 0, 0, 72, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, + 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 25, 0, 0, 27, 87, 0, 0, + + 92, 0, 80, 71, 0, 0, 41, 0, 0, 0, + 0, 0, 0, 0, 0, 102, 0, 0, 0, 82, + 0, 58, 99, 100, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, + 44, 0, 46, 47, 0, 0, 0, 0, 0, 55, + 56, 81, 0, 0, 62, 0, 0, 0, 101, 0, + 0, 0, 0, 0, 0, 0, 24, 0, 0, 103, + 96, 0, 86, 34, 91, 37, 40, 45, 49, 0, + 51, 0, 0, 57, 0, 0, 0, 0, 0, 68, + + 0, 0, 0, 0, 0, 15, 0, 0, 0, 20, + 0, 0, 0, 98, 85, 90, 0, 0, 0, 0, + 59, 0, 0, 0, 0, 0, 5, 0, 5, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, + 21, 22, 0, 50, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 0, 0, 43, 0, 45, 46, 0, - 0, 0, 0, 53, 54, 79, 0, 0, 60, 0, - 0, 99, 0, 0, 0, 0, 0, 0, 0, 23, - 0, 0, 101, 94, 0, 84, 33, 89, 36, 39, - 44, 48, 0, 50, 0, 55, 0, 0, 0, 0, - 65, 0, 0, 0, 0, 0, 14, 0, 0, 0, - - 19, 0, 0, 0, 96, 83, 88, 0, 0, 0, - 57, 0, 0, 0, 0, 5, 0, 5, 0, 0, - 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 20, 21, 0, - 49, 0, 58, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, - 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 16, 0, 37, 0, 0, 0, - 51, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 62, 0 + 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 0, 0, 0, 0, 0, 17, 0, 38, + 0, 0, 0, 0, 0, 52, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 0, 54, 64, 0, 0, + 0, 0, 0, 65, 0 } ; static const YY_CHAR yy_ec[256] = @@ -466,243 +469,259 @@ static const YY_CHAR yy_meta[66] = 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[499] = +static const flex_int16_t yy_base[532] = { 0, - 0, 0, 63, 64, 963, 972, 957, 0, 68, 0, - 45, 67, 67, 56, 65, 59, 68, 45, 70, 56, - 93, 107, 144, 112, 116, 184, 74, 151, 227, 54, - 69, 128, 119, 972, 972, 950, 954, 0, 93, 972, - 0, 112, 972, 0, 207, 136, 140, 147, 160, 143, - 163, 161, 144, 152, 176, 178, 181, 972, 177, 187, - 187, 192, 211, 192, 193, 209, 212, 208, 198, 222, - 217, 237, 221, 228, 234, 226, 243, 972, 253, 235, - 243, 262, 251, 255, 282, 253, 273, 290, 275, 272, - 265, 275, 270, 269, 275, 291, 287, 297, 292, 316, - - 972, 307, 295, 294, 915, 317, 316, 311, 313, 313, - 312, 333, 331, 325, 321, 323, 326, 333, 132, 972, - 326, 972, 334, 336, 343, 911, 335, 354, 337, 357, - 345, 364, 367, 362, 364, 972, 359, 972, 368, 360, - 376, 378, 366, 367, 383, 375, 380, 373, 380, 383, - 396, 380, 395, 972, 399, 402, 910, 404, 409, 399, - 403, 412, 417, 408, 972, 417, 424, 972, 410, 424, - 418, 424, 437, 422, 972, 430, 438, 431, 430, 441, - 431, 443, 433, 972, 972, 448, 457, 461, 972, 451, - 468, 472, 457, 972, 469, 972, 479, 463, 479, 972, - - 472, 466, 475, 481, 972, 477, 474, 482, 483, 473, - 493, 498, 488, 492, 500, 492, 508, 504, 512, 972, - 972, 512, 507, 510, 528, 514, 513, 516, 525, 529, - 972, 536, 529, 538, 909, 541, 538, 546, 530, 972, - 972, 536, 538, 551, 539, 537, 972, 557, 545, 541, - 565, 554, 574, 573, 575, 568, 570, 568, 575, 587, - 583, 592, 581, 972, 578, 583, 594, 596, 600, 585, - 94, 586, 588, 595, 612, 972, 972, 595, 972, 611, - 599, 612, 615, 618, 626, 625, 627, 625, 625, 624, - 972, 624, 630, 972, 972, 626, 646, 972, 630, 633, - - 972, 644, 636, 972, 636, 640, 648, 656, 651, 654, - 655, 664, 972, 667, 659, 663, 673, 972, 972, 972, - 908, 665, 667, 676, 684, 685, 905, 681, 678, 972, - 903, 692, 681, 685, 692, 698, 681, 686, 688, 704, - 708, 708, 972, 712, 697, 972, 715, 972, 972, 710, - 721, 723, 730, 972, 972, 972, 723, 731, 972, 717, - 732, 972, 765, 735, 728, 729, 742, 727, 742, 972, - 745, 751, 972, 972, 750, 752, 972, 753, 255, 972, - 972, 972, 759, 972, 759, 972, 764, 766, 762, 772, - 972, 802, 235, 212, 785, 766, 972, 776, 773, 785, - - 972, 786, 791, 782, 972, 972, 972, 786, 788, 800, - 972, 793, 796, 815, 220, 188, 177, 176, 805, 805, - 802, 817, 811, 972, 806, 808, 825, 812, 819, 814, - 828, 826, 831, 972, 836, 825, 841, 972, 972, 848, - 972, 833, 972, 841, 850, 849, 844, 857, 851, 848, - 864, 863, 101, 849, 853, 97, 855, 868, 862, 972, - 861, 972, 882, 866, 866, 878, 869, 887, 882, 888, - 972, 894, 901, 887, 972, 881, 972, 896, 903, 908, - 972, 908, 972, 908, 917, 920, 903, 916, 912, 914, - 972, 972, 967, 133, 969, 132, 100, 97 - + 0, 0, 63, 64, 1026, 1038, 1023, 0, 68, 0, + 45, 67, 67, 56, 65, 59, 68, 45, 71, 63, + 97, 111, 148, 116, 113, 188, 65, 155, 231, 53, + 124, 101, 1038, 1038, 1016, 1020, 0, 98, 1038, 0, + 105, 1038, 0, 168, 131, 140, 155, 157, 171, 155, + 176, 168, 154, 164, 180, 182, 179, 1038, 171, 173, + 180, 188, 207, 188, 196, 210, 215, 207, 202, 226, + 221, 240, 225, 232, 238, 224, 239, 1038, 268, 231, + 240, 258, 247, 258, 281, 256, 276, 277, 288, 282, + 278, 272, 280, 275, 274, 280, 292, 295, 294, 323, + + 1038, 306, 297, 292, 981, 321, 325, 324, 317, 320, + 321, 318, 335, 337, 327, 325, 327, 330, 337, 351, + 1038, 329, 1038, 338, 340, 347, 980, 340, 365, 348, + 368, 356, 371, 374, 370, 372, 1038, 365, 1038, 375, + 368, 381, 382, 370, 371, 387, 379, 384, 377, 979, + 384, 386, 400, 384, 399, 1038, 404, 413, 978, 415, + 420, 410, 418, 422, 415, 1038, 422, 429, 1038, 416, + 1038, 428, 421, 427, 440, 425, 1038, 432, 442, 433, + 432, 444, 432, 462, 433, 1038, 1038, 451, 455, 458, + 1038, 453, 467, 477, 462, 1038, 476, 1038, 484, 468, + + 485, 1038, 476, 469, 478, 484, 1038, 480, 476, 484, + 486, 476, 496, 487, 502, 491, 496, 504, 504, 519, + 515, 528, 1038, 1038, 519, 515, 536, 520, 520, 524, + 530, 533, 1038, 540, 533, 542, 976, 545, 542, 550, + 534, 1038, 1038, 540, 541, 555, 543, 541, 1038, 562, + 556, 552, 576, 565, 581, 580, 583, 576, 576, 575, + 583, 592, 587, 596, 585, 1038, 582, 584, 589, 599, + 601, 605, 591, 94, 593, 593, 612, 605, 625, 1038, + 609, 1038, 629, 617, 626, 628, 629, 637, 635, 638, + 635, 635, 634, 1038, 631, 636, 1038, 1038, 632, 652, + + 1038, 636, 638, 1038, 650, 643, 1038, 646, 648, 657, + 666, 664, 668, 673, 682, 1038, 679, 682, 675, 675, + 685, 1038, 1038, 1038, 975, 677, 681, 681, 688, 696, + 697, 974, 690, 687, 1038, 973, 702, 691, 695, 701, + 707, 693, 698, 703, 718, 726, 727, 1038, 732, 718, + 1038, 736, 1038, 1038, 730, 739, 740, 743, 727, 1038, + 1038, 1038, 739, 742, 1038, 733, 734, 749, 1038, 774, + 749, 745, 742, 773, 745, 755, 1038, 763, 770, 1038, + 1038, 769, 772, 1038, 773, 972, 1038, 1038, 1038, 779, + 1038, 777, 796, 1038, 783, 785, 781, 793, 790, 1038, + + 821, 1007, 996, 803, 783, 1038, 793, 787, 803, 1038, + 801, 812, 807, 1038, 1038, 1038, 817, 815, 827, 818, + 1038, 823, 824, 836, 842, 271, 264, 229, 222, 832, + 832, 827, 843, 837, 1038, 831, 832, 847, 835, 842, + 851, 838, 849, 850, 852, 856, 1038, 868, 859, 881, + 1038, 1038, 885, 1038, 869, 188, 1038, 876, 889, 888, + 883, 878, 891, 883, 878, 895, 891, 895, 902, 145, + 880, 885, 111, 887, 899, 892, 905, 1038, 892, 895, + 1038, 916, 907, 912, 927, 918, 916, 936, 939, 934, + 937, 1038, 943, 947, 108, 105, 932, 1038, 925, 1038, + + 941, 947, 948, 946, 951, 1038, 949, 950, 954, 1038, + 950, 951, 954, 963, 964, 974, 1038, 1038, 982, 971, + 982, 978, 980, 1038, 1038, 1033, 140, 1035, 137, 136, + 97 } ; -static const flex_int16_t yy_def[499] = +static const flex_int16_t yy_def[532] = { 0, - 492, 1, 493, 493, 492, 492, 492, 494, 495, 496, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 494, 495, 492, - 496, 492, 492, 496, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 497, 498, 492, 492, 492, 492, 492, 492, - - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 497, 497, 498, 498, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 0, 492, 492, 492, 492, 492, 492 - + 525, 1, 526, 526, 525, 525, 525, 527, 528, 529, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 527, 528, 525, 529, + 525, 525, 529, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + + 525, 530, 531, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 530, 530, 531, 531, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 0, 525, 525, 525, 525, 525, + 525 } ; -static const flex_int16_t yy_nxt[1038] = +static const flex_int16_t yy_nxt[1104] = { 0, 6, 7, 8, 9, 10, 6, 11, 12, 13, 13, 13, 13, 6, 6, 14, 15, 16, 17, 18, 19, 6, 20, 21, 22, 6, 23, 24, 25, 26, 6, - 27, 28, 29, 30, 31, 32, 6, 33, 6, 6, + 27, 28, 29, 30, 6, 31, 6, 32, 6, 6, 14, 15, 16, 17, 18, 19, 6, 20, 21, 22, 6, 23, 24, 25, 26, 6, 27, 28, 29, 30, - 31, 32, 6, 33, 6, 35, 35, 42, 36, 36, - 40, 40, 43, 46, 44, 45, 45, 45, 45, 48, - 51, 56, 53, 59, 57, 96, 52, 58, 60, 49, - 97, 47, 85, 42, 54, 40, 40, 417, 55, 46, - - 415, 86, 50, 319, 320, 48, 51, 56, 53, 59, - 57, 96, 52, 58, 60, 49, 97, 47, 85, 61, - 54, 62, 64, 63, 55, 65, 73, 86, 50, 66, - 74, 67, 41, 38, 75, 77, 464, 100, 102, 76, - 461, 184, 78, 185, 79, 61, 98, 62, 64, 63, - 99, 65, 73, 103, 104, 66, 74, 67, 68, 69, - 75, 77, 70, 100, 102, 76, 71, 87, 78, 88, - 79, 72, 98, 105, 106, 107, 99, 108, 89, 103, - 104, 111, 90, 112, 68, 69, 109, 110, 70, 418, - 418, 416, 71, 87, 113, 88, 114, 72, 80, 105, - - 106, 107, 81, 108, 89, 115, 82, 111, 90, 112, - 116, 83, 109, 110, 84, 45, 45, 45, 45, 117, - 113, 118, 114, 416, 80, 418, 119, 120, 81, 121, - 122, 115, 82, 123, 124, 127, 116, 83, 416, 125, - 84, 91, 128, 129, 126, 117, 132, 118, 133, 92, - 134, 93, 119, 120, 130, 121, 122, 94, 135, 123, - 124, 127, 136, 131, 95, 125, 140, 91, 128, 129, - 126, 137, 132, 141, 133, 92, 134, 93, 138, 142, - 130, 143, 144, 94, 135, 139, 148, 149, 136, 131, - 95, 153, 140, 154, 408, 155, 145, 137, 146, 141, - - 156, 157, 158, 159, 138, 142, 150, 143, 144, 160, - 147, 139, 148, 149, 161, 162, 151, 153, 163, 154, - 152, 155, 145, 166, 146, 167, 156, 157, 158, 159, - 164, 168, 150, 170, 171, 160, 147, 172, 173, 174, - 161, 162, 151, 175, 163, 178, 152, 165, 176, 166, - 179, 167, 180, 181, 182, 183, 164, 168, 186, 170, - 171, 187, 188, 172, 173, 174, 189, 191, 192, 175, - 193, 178, 177, 165, 176, 194, 179, 195, 180, 181, - 182, 183, 196, 197, 186, 198, 199, 187, 188, 200, - 201, 202, 189, 191, 192, 203, 193, 204, 205, 206, - - 207, 194, 209, 195, 210, 211, 212, 208, 196, 197, - 213, 198, 199, 214, 215, 200, 201, 202, 216, 217, - 218, 203, 220, 204, 205, 206, 207, 221, 209, 222, - 210, 211, 212, 208, 223, 224, 213, 225, 226, 214, - 215, 227, 228, 229, 216, 217, 218, 230, 220, 231, - 232, 233, 234, 221, 235, 222, 238, 236, 239, 240, - 223, 224, 241, 225, 226, 244, 245, 227, 228, 229, - 237, 242, 246, 230, 243, 231, 232, 233, 234, 247, - 235, 248, 238, 236, 239, 240, 249, 250, 241, 251, - 252, 244, 245, 253, 254, 255, 237, 242, 246, 256, - - 243, 257, 258, 259, 260, 247, 261, 248, 262, 263, - 264, 265, 249, 250, 268, 251, 252, 269, 270, 253, - 254, 255, 266, 271, 267, 256, 272, 257, 258, 259, - 260, 273, 261, 274, 262, 263, 264, 265, 275, 276, - 268, 277, 278, 269, 270, 279, 280, 281, 266, 271, - 267, 282, 272, 283, 284, 285, 286, 273, 288, 274, - 289, 290, 291, 292, 275, 276, 293, 277, 278, 294, - 295, 279, 280, 281, 296, 297, 298, 282, 299, 283, - 284, 285, 286, 300, 288, 301, 289, 290, 291, 292, - 302, 303, 293, 304, 305, 294, 295, 306, 307, 308, - - 296, 297, 298, 309, 299, 310, 311, 312, 313, 300, - 314, 301, 315, 316, 317, 318, 302, 303, 321, 304, - 305, 322, 323, 306, 307, 308, 324, 325, 326, 309, - 327, 310, 311, 312, 313, 328, 314, 329, 315, 316, - 317, 318, 330, 331, 321, 332, 333, 322, 323, 335, - 336, 337, 324, 325, 326, 338, 327, 339, 340, 334, - 341, 328, 342, 329, 343, 344, 345, 346, 330, 331, - 347, 332, 333, 348, 349, 335, 336, 337, 350, 351, - 352, 338, 353, 339, 340, 334, 341, 354, 342, 355, - 343, 344, 345, 346, 356, 357, 347, 359, 360, 348, - - 349, 361, 362, 363, 350, 351, 352, 365, 353, 366, - 368, 369, 370, 354, 371, 355, 372, 373, 374, 375, - 356, 357, 376, 359, 360, 377, 378, 361, 362, 363, - 379, 380, 381, 365, 382, 366, 368, 369, 370, 383, - 371, 384, 372, 373, 374, 375, 385, 386, 376, 390, - 391, 377, 378, 387, 395, 396, 379, 380, 381, 388, - 382, 397, 389, 401, 398, 383, 392, 384, 393, 402, - 403, 399, 385, 386, 400, 390, 391, 394, 404, 387, - 395, 396, 405, 406, 407, 388, 409, 397, 389, 401, - 398, 410, 411, 412, 413, 402, 403, 399, 414, 419, - - 400, 420, 421, 392, 404, 393, 422, 423, 405, 406, - 407, 424, 409, 425, 394, 426, 427, 410, 411, 412, - 413, 428, 429, 430, 414, 419, 431, 420, 421, 432, - 433, 434, 422, 423, 435, 436, 437, 424, 438, 425, - 439, 426, 427, 440, 441, 442, 443, 428, 429, 430, - 444, 445, 431, 446, 447, 432, 433, 434, 448, 449, - 435, 436, 437, 450, 438, 451, 439, 452, 453, 440, - 441, 442, 443, 454, 455, 456, 444, 445, 457, 446, - 447, 458, 459, 460, 448, 449, 462, 463, 465, 450, - 466, 451, 467, 452, 453, 468, 469, 470, 471, 454, - - 455, 456, 472, 473, 457, 474, 475, 458, 459, 460, - 476, 477, 462, 463, 465, 478, 466, 479, 467, 480, - 481, 468, 469, 470, 471, 482, 483, 484, 472, 473, - 485, 474, 475, 486, 487, 488, 476, 477, 489, 490, - 491, 478, 367, 479, 364, 480, 481, 358, 287, 219, - 190, 482, 483, 484, 169, 37, 485, 101, 37, 486, - 487, 488, 492, 492, 489, 490, 491, 34, 34, 39, - 39, 5, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492 + 6, 31, 6, 32, 6, 34, 34, 41, 35, 35, + 39, 39, 42, 45, 43, 44, 44, 44, 44, 47, + 51, 56, 53, 85, 97, 57, 52, 48, 58, 49, + 59, 46, 86, 41, 54, 60, 87, 428, 55, 45, + + 39, 39, 50, 323, 324, 47, 51, 56, 53, 85, + 97, 57, 52, 48, 58, 49, 59, 46, 86, 100, + 54, 60, 87, 61, 55, 62, 64, 63, 50, 65, + 73, 102, 77, 66, 74, 67, 426, 40, 75, 78, + 37, 79, 98, 76, 503, 100, 99, 502, 103, 61, + 483, 62, 64, 63, 104, 65, 73, 102, 77, 66, + 74, 67, 68, 69, 75, 78, 70, 79, 98, 76, + 71, 88, 99, 89, 103, 72, 44, 44, 44, 44, + 104, 105, 90, 106, 480, 107, 91, 108, 68, 69, + 109, 112, 70, 110, 111, 113, 71, 88, 114, 89, + + 115, 72, 80, 116, 117, 118, 81, 105, 90, 106, + 82, 107, 91, 108, 119, 83, 109, 112, 84, 110, + 111, 113, 120, 121, 114, 122, 115, 467, 80, 116, + 117, 118, 81, 123, 124, 429, 82, 125, 126, 128, + 119, 83, 429, 127, 84, 92, 129, 130, 120, 121, + 133, 122, 134, 93, 135, 94, 136, 131, 137, 123, + 124, 95, 141, 125, 126, 128, 132, 427, 96, 127, + 142, 92, 129, 130, 427, 143, 133, 144, 134, 93, + 135, 94, 136, 131, 137, 145, 138, 95, 141, 149, + 150, 151, 132, 139, 96, 146, 142, 147, 155, 156, + + 140, 143, 157, 144, 152, 158, 159, 160, 161, 148, + 162, 145, 138, 163, 153, 149, 150, 151, 154, 139, + 164, 146, 167, 147, 155, 156, 140, 168, 157, 169, + 152, 158, 159, 160, 161, 148, 162, 165, 171, 163, + 153, 172, 173, 174, 154, 175, 164, 176, 167, 177, + 178, 180, 181, 168, 166, 169, 182, 183, 184, 185, + 186, 188, 187, 165, 171, 189, 190, 172, 173, 174, + 191, 175, 193, 176, 179, 177, 178, 180, 181, 194, + 166, 195, 182, 183, 184, 185, 196, 188, 197, 198, + 199, 189, 190, 200, 201, 202, 191, 203, 193, 204, + + 205, 206, 207, 208, 209, 194, 211, 195, 212, 213, + 215, 210, 196, 216, 197, 198, 199, 217, 218, 200, + 201, 202, 219, 203, 220, 204, 205, 206, 207, 208, + 209, 221, 211, 223, 212, 213, 215, 210, 224, 216, + 225, 226, 227, 217, 218, 228, 229, 230, 219, 231, + 220, 232, 233, 234, 235, 236, 237, 221, 240, 223, + 241, 238, 242, 243, 224, 246, 225, 226, 227, 247, + 248, 228, 229, 230, 239, 231, 249, 232, 233, 234, + 235, 236, 237, 250, 240, 251, 241, 238, 242, 243, + 244, 246, 252, 245, 253, 247, 248, 254, 255, 256, + + 239, 257, 249, 258, 259, 260, 261, 262, 263, 250, + 264, 251, 265, 266, 267, 268, 244, 271, 252, 245, + 253, 272, 273, 254, 255, 256, 269, 257, 270, 258, + 259, 260, 261, 262, 263, 274, 264, 275, 265, 266, + 267, 268, 276, 271, 277, 279, 280, 272, 273, 278, + 281, 282, 269, 283, 270, 284, 285, 286, 287, 288, + 289, 274, 291, 275, 292, 293, 294, 295, 276, 296, + 277, 279, 280, 297, 298, 278, 281, 282, 299, 283, + 300, 284, 285, 286, 287, 288, 289, 301, 291, 302, + 292, 293, 294, 295, 303, 296, 304, 305, 306, 297, + + 298, 307, 308, 309, 299, 310, 300, 311, 312, 313, + 314, 315, 316, 301, 317, 302, 318, 319, 320, 321, + 303, 322, 304, 305, 306, 325, 326, 307, 308, 309, + 327, 310, 328, 311, 312, 313, 314, 315, 316, 329, + 317, 330, 318, 319, 320, 321, 331, 322, 332, 333, + 334, 325, 326, 335, 336, 337, 327, 338, 328, 340, + 341, 342, 343, 344, 345, 329, 346, 330, 347, 348, + 339, 349, 331, 350, 332, 333, 334, 351, 352, 335, + 336, 337, 353, 338, 354, 340, 341, 342, 343, 344, + 345, 355, 346, 356, 347, 348, 339, 349, 357, 350, + + 358, 359, 360, 351, 352, 361, 362, 363, 353, 365, + 354, 366, 367, 368, 369, 370, 372, 355, 373, 356, + 375, 376, 377, 378, 357, 379, 358, 359, 360, 380, + 381, 361, 362, 363, 382, 365, 383, 366, 367, 368, + 369, 370, 372, 384, 373, 385, 375, 376, 377, 378, + 386, 379, 387, 388, 389, 380, 381, 390, 391, 392, + 382, 393, 383, 394, 395, 398, 399, 400, 404, 384, + 396, 385, 405, 397, 406, 401, 386, 402, 387, 388, + 389, 410, 411, 390, 391, 392, 403, 393, 412, 394, + 395, 398, 399, 400, 404, 407, 396, 413, 405, 397, + + 406, 414, 408, 415, 416, 409, 418, 410, 411, 419, + 420, 421, 422, 423, 412, 424, 425, 430, 431, 432, + 433, 407, 401, 413, 402, 434, 435, 414, 408, 415, + 416, 409, 418, 403, 436, 419, 420, 421, 422, 423, + 437, 424, 425, 430, 431, 432, 433, 438, 439, 440, + 441, 434, 435, 442, 443, 444, 445, 446, 447, 448, + 436, 449, 450, 451, 452, 453, 437, 454, 455, 456, + 457, 458, 459, 438, 439, 440, 441, 460, 461, 442, + 443, 444, 445, 446, 447, 448, 462, 449, 450, 451, + 452, 453, 463, 454, 455, 456, 457, 458, 459, 464, + + 465, 466, 468, 460, 461, 469, 470, 471, 472, 473, + 474, 475, 462, 476, 477, 478, 479, 481, 463, 482, + 484, 485, 486, 487, 488, 464, 465, 466, 468, 489, + 490, 469, 470, 471, 472, 473, 474, 475, 491, 476, + 477, 478, 479, 481, 492, 482, 484, 485, 486, 487, + 488, 493, 494, 495, 496, 489, 490, 497, 498, 499, + 500, 501, 504, 505, 491, 506, 507, 508, 509, 510, + 492, 511, 512, 513, 514, 515, 516, 493, 494, 495, + 496, 517, 518, 497, 498, 499, 500, 501, 504, 505, + 519, 506, 507, 508, 509, 510, 520, 511, 512, 513, + + 514, 515, 516, 521, 522, 523, 524, 517, 518, 429, + 427, 417, 374, 371, 364, 290, 519, 222, 214, 192, + 170, 36, 520, 101, 36, 525, 525, 525, 525, 521, + 522, 523, 524, 33, 33, 38, 38, 5, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + + 525, 525, 525 } ; -static const flex_int16_t yy_chk[1038] = +static const flex_int16_t yy_chk[1104] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -712,112 +731,120 @@ static const flex_int16_t yy_chk[1038] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 11, 3, 4, 9, 9, 12, 14, 12, 13, 13, 13, 13, 15, - 16, 18, 17, 20, 19, 30, 16, 19, 20, 15, - 31, 14, 27, 11, 17, 39, 39, 498, 17, 14, - - 497, 27, 15, 271, 271, 15, 16, 18, 17, 20, - 19, 30, 16, 19, 20, 15, 31, 14, 27, 21, - 17, 21, 22, 21, 17, 22, 24, 27, 15, 22, - 24, 22, 496, 494, 24, 25, 456, 33, 42, 24, - 453, 119, 25, 119, 25, 21, 32, 21, 22, 21, - 32, 22, 24, 46, 47, 22, 24, 22, 23, 23, - 24, 25, 23, 33, 42, 24, 23, 28, 25, 28, - 25, 23, 32, 48, 49, 50, 32, 51, 28, 46, - 47, 53, 28, 54, 23, 23, 52, 52, 23, 418, - 417, 416, 23, 28, 55, 28, 56, 23, 26, 48, - - 49, 50, 26, 51, 28, 57, 26, 53, 28, 54, - 59, 26, 52, 52, 26, 45, 45, 45, 45, 60, - 55, 61, 56, 415, 26, 394, 62, 63, 26, 64, - 65, 57, 26, 66, 67, 69, 59, 26, 393, 68, - 26, 29, 70, 71, 68, 60, 73, 61, 74, 29, - 75, 29, 62, 63, 72, 64, 65, 29, 76, 66, - 67, 69, 77, 72, 29, 68, 80, 29, 70, 71, - 68, 79, 73, 81, 74, 29, 75, 29, 79, 82, - 72, 83, 84, 29, 76, 79, 86, 87, 77, 72, - 29, 89, 80, 90, 379, 91, 85, 79, 85, 81, - - 92, 93, 94, 95, 79, 82, 88, 83, 84, 96, - 85, 79, 86, 87, 97, 98, 88, 89, 99, 90, - 88, 91, 85, 102, 85, 103, 92, 93, 94, 95, - 100, 104, 88, 106, 107, 96, 85, 108, 109, 110, - 97, 98, 88, 111, 99, 113, 88, 100, 112, 102, - 114, 103, 115, 116, 117, 118, 100, 104, 121, 106, - 107, 123, 124, 108, 109, 110, 125, 127, 128, 111, - 129, 113, 112, 100, 112, 130, 114, 131, 115, 116, - 117, 118, 132, 133, 121, 134, 135, 123, 124, 137, - 139, 140, 125, 127, 128, 141, 129, 142, 143, 144, - - 145, 130, 146, 131, 147, 148, 149, 145, 132, 133, - 150, 134, 135, 151, 152, 137, 139, 140, 153, 155, - 156, 141, 158, 142, 143, 144, 145, 159, 146, 160, - 147, 148, 149, 145, 161, 162, 150, 163, 164, 151, - 152, 166, 167, 169, 153, 155, 156, 170, 158, 171, - 172, 173, 174, 159, 176, 160, 178, 177, 179, 180, - 161, 162, 181, 163, 164, 183, 186, 166, 167, 169, - 177, 182, 187, 170, 182, 171, 172, 173, 174, 188, - 176, 190, 178, 177, 179, 180, 191, 192, 181, 193, - 195, 183, 186, 197, 198, 199, 177, 182, 187, 201, - - 182, 202, 203, 204, 206, 188, 207, 190, 208, 209, - 210, 211, 191, 192, 213, 193, 195, 214, 215, 197, - 198, 199, 212, 216, 212, 201, 217, 202, 203, 204, - 206, 218, 207, 219, 208, 209, 210, 211, 222, 223, - 213, 224, 225, 214, 215, 226, 227, 228, 212, 216, - 212, 229, 217, 230, 232, 233, 234, 218, 236, 219, - 237, 238, 239, 242, 222, 223, 243, 224, 225, 244, - 245, 226, 227, 228, 246, 248, 249, 229, 250, 230, - 232, 233, 234, 251, 236, 252, 237, 238, 239, 242, - 253, 254, 243, 255, 256, 244, 245, 257, 258, 259, - - 246, 248, 249, 260, 250, 261, 262, 263, 265, 251, - 266, 252, 267, 268, 269, 270, 253, 254, 272, 255, - 256, 273, 274, 257, 258, 259, 275, 278, 280, 260, - 281, 261, 262, 263, 265, 282, 266, 283, 267, 268, - 269, 270, 284, 285, 272, 286, 287, 273, 274, 288, - 289, 290, 275, 278, 280, 292, 281, 293, 296, 287, - 297, 282, 299, 283, 300, 302, 303, 305, 284, 285, - 306, 286, 287, 307, 308, 288, 289, 290, 309, 310, - 311, 292, 312, 293, 296, 287, 297, 314, 299, 315, - 300, 302, 303, 305, 316, 317, 306, 322, 323, 307, - - 308, 324, 325, 326, 309, 310, 311, 328, 312, 329, - 332, 333, 334, 314, 335, 315, 336, 337, 338, 339, - 316, 317, 340, 322, 323, 341, 342, 324, 325, 326, - 344, 345, 347, 328, 350, 329, 332, 333, 334, 351, - 335, 352, 336, 337, 338, 339, 353, 357, 340, 360, - 361, 341, 342, 358, 364, 365, 344, 345, 347, 358, - 350, 366, 358, 368, 367, 351, 363, 352, 363, 369, - 371, 367, 353, 357, 367, 360, 361, 363, 372, 358, - 364, 365, 375, 376, 378, 358, 383, 366, 358, 368, - 367, 385, 387, 388, 389, 369, 371, 367, 390, 395, - - 367, 396, 398, 392, 372, 392, 399, 400, 375, 376, - 378, 402, 383, 403, 392, 404, 408, 385, 387, 388, - 389, 409, 410, 412, 390, 395, 413, 396, 398, 414, - 419, 420, 399, 400, 421, 422, 423, 402, 425, 403, - 426, 404, 408, 427, 428, 429, 430, 409, 410, 412, - 431, 432, 413, 433, 435, 414, 419, 420, 436, 437, - 421, 422, 423, 440, 425, 442, 426, 444, 445, 427, - 428, 429, 430, 446, 447, 448, 431, 432, 449, 433, - 435, 450, 451, 452, 436, 437, 454, 455, 457, 440, - 458, 442, 459, 444, 445, 461, 463, 464, 465, 446, - - 447, 448, 466, 467, 449, 468, 469, 450, 451, 452, - 470, 472, 454, 455, 457, 473, 458, 474, 459, 476, - 478, 461, 463, 464, 465, 479, 480, 482, 466, 467, - 484, 468, 469, 485, 486, 487, 470, 472, 488, 489, - 490, 473, 331, 474, 327, 476, 478, 321, 235, 157, - 126, 479, 480, 482, 105, 37, 484, 36, 7, 485, - 486, 487, 5, 0, 488, 489, 490, 493, 493, 495, - 495, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492 + 16, 18, 17, 27, 30, 19, 16, 15, 19, 15, + 20, 14, 27, 11, 17, 20, 27, 531, 17, 14, + + 38, 38, 15, 274, 274, 15, 16, 18, 17, 27, + 30, 19, 16, 15, 19, 15, 20, 14, 27, 32, + 17, 20, 27, 21, 17, 21, 22, 21, 15, 22, + 24, 41, 25, 22, 24, 22, 530, 529, 24, 25, + 527, 25, 31, 24, 496, 32, 31, 495, 45, 21, + 473, 21, 22, 21, 46, 22, 24, 41, 25, 22, + 24, 22, 23, 23, 24, 25, 23, 25, 31, 24, + 23, 28, 31, 28, 45, 23, 44, 44, 44, 44, + 46, 47, 28, 48, 470, 49, 28, 50, 23, 23, + 51, 53, 23, 52, 52, 54, 23, 28, 55, 28, + + 56, 23, 26, 57, 59, 60, 26, 47, 28, 48, + 26, 49, 28, 50, 61, 26, 51, 53, 26, 52, + 52, 54, 62, 63, 55, 64, 56, 456, 26, 57, + 59, 60, 26, 65, 66, 429, 26, 67, 68, 69, + 61, 26, 428, 68, 26, 29, 70, 71, 62, 63, + 73, 64, 74, 29, 75, 29, 76, 72, 77, 65, + 66, 29, 80, 67, 68, 69, 72, 427, 29, 68, + 81, 29, 70, 71, 426, 82, 73, 83, 74, 29, + 75, 29, 76, 72, 77, 84, 79, 29, 80, 86, + 87, 88, 72, 79, 29, 85, 81, 85, 90, 91, + + 79, 82, 92, 83, 89, 93, 94, 95, 96, 85, + 97, 84, 79, 98, 89, 86, 87, 88, 89, 79, + 99, 85, 102, 85, 90, 91, 79, 103, 92, 104, + 89, 93, 94, 95, 96, 85, 97, 100, 106, 98, + 89, 107, 108, 109, 89, 110, 99, 111, 102, 112, + 113, 114, 115, 103, 100, 104, 116, 117, 118, 119, + 120, 122, 120, 100, 106, 124, 125, 107, 108, 109, + 126, 110, 128, 111, 113, 112, 113, 114, 115, 129, + 100, 130, 116, 117, 118, 119, 131, 122, 132, 133, + 134, 124, 125, 135, 136, 138, 126, 140, 128, 141, + + 142, 143, 144, 145, 146, 129, 147, 130, 148, 149, + 151, 146, 131, 152, 132, 133, 134, 153, 154, 135, + 136, 138, 155, 140, 157, 141, 142, 143, 144, 145, + 146, 158, 147, 160, 148, 149, 151, 146, 161, 152, + 162, 163, 164, 153, 154, 165, 167, 168, 155, 170, + 157, 172, 173, 174, 175, 176, 178, 158, 180, 160, + 181, 179, 182, 183, 161, 185, 162, 163, 164, 188, + 189, 165, 167, 168, 179, 170, 190, 172, 173, 174, + 175, 176, 178, 192, 180, 193, 181, 179, 182, 183, + 184, 185, 194, 184, 195, 188, 189, 197, 199, 200, + + 179, 201, 190, 203, 204, 205, 206, 208, 209, 192, + 210, 193, 211, 212, 213, 214, 184, 216, 194, 184, + 195, 217, 218, 197, 199, 200, 215, 201, 215, 203, + 204, 205, 206, 208, 209, 219, 210, 220, 211, 212, + 213, 214, 221, 216, 222, 225, 226, 217, 218, 222, + 227, 228, 215, 229, 215, 230, 231, 232, 234, 235, + 236, 219, 238, 220, 239, 240, 241, 244, 221, 245, + 222, 225, 226, 246, 247, 222, 227, 228, 248, 229, + 250, 230, 231, 232, 234, 235, 236, 251, 238, 252, + 239, 240, 241, 244, 253, 245, 254, 255, 256, 246, + + 247, 257, 258, 259, 248, 260, 250, 261, 262, 263, + 264, 265, 267, 251, 268, 252, 269, 270, 271, 272, + 253, 273, 254, 255, 256, 275, 276, 257, 258, 259, + 277, 260, 278, 261, 262, 263, 264, 265, 267, 279, + 268, 281, 269, 270, 271, 272, 283, 273, 284, 285, + 286, 275, 276, 287, 288, 289, 277, 290, 278, 291, + 292, 293, 295, 296, 299, 279, 300, 281, 302, 303, + 290, 305, 283, 306, 284, 285, 286, 308, 309, 287, + 288, 289, 310, 290, 311, 291, 292, 293, 295, 296, + 299, 312, 300, 313, 302, 303, 290, 305, 314, 306, + + 315, 317, 318, 308, 309, 319, 320, 321, 310, 326, + 311, 327, 328, 329, 330, 331, 333, 312, 334, 313, + 337, 338, 339, 340, 314, 341, 315, 317, 318, 342, + 343, 319, 320, 321, 344, 326, 345, 327, 328, 329, + 330, 331, 333, 346, 334, 347, 337, 338, 339, 340, + 349, 341, 350, 352, 355, 342, 343, 356, 357, 358, + 344, 359, 345, 363, 364, 366, 367, 368, 371, 346, + 364, 347, 372, 364, 373, 370, 349, 370, 350, 352, + 355, 375, 376, 356, 357, 358, 370, 359, 378, 363, + 364, 366, 367, 368, 371, 374, 364, 379, 372, 364, + + 373, 382, 374, 383, 385, 374, 390, 375, 376, 392, + 393, 395, 396, 397, 378, 398, 399, 404, 405, 407, + 408, 374, 401, 379, 401, 409, 411, 382, 374, 383, + 385, 374, 390, 401, 412, 392, 393, 395, 396, 397, + 413, 398, 399, 404, 405, 407, 408, 417, 418, 419, + 420, 409, 411, 422, 423, 424, 425, 430, 431, 432, + 412, 433, 434, 436, 437, 438, 413, 439, 440, 441, + 442, 443, 444, 417, 418, 419, 420, 445, 446, 422, + 423, 424, 425, 430, 431, 432, 448, 433, 434, 436, + 437, 438, 449, 439, 440, 441, 442, 443, 444, 450, + + 453, 455, 458, 445, 446, 459, 460, 461, 462, 463, + 464, 465, 448, 466, 467, 468, 469, 471, 449, 472, + 474, 475, 476, 477, 479, 450, 453, 455, 458, 480, + 482, 459, 460, 461, 462, 463, 464, 465, 483, 466, + 467, 468, 469, 471, 484, 472, 474, 475, 476, 477, + 479, 485, 486, 487, 488, 480, 482, 489, 490, 491, + 493, 494, 497, 499, 483, 501, 502, 503, 504, 505, + 484, 507, 508, 509, 511, 512, 513, 485, 486, 487, + 488, 514, 515, 489, 490, 491, 493, 494, 497, 499, + 516, 501, 502, 503, 504, 505, 519, 507, 508, 509, + + 511, 512, 513, 520, 521, 522, 523, 514, 515, 403, + 402, 386, 336, 332, 325, 237, 516, 159, 150, 127, + 105, 36, 519, 35, 7, 5, 0, 0, 0, 520, + 521, 522, 523, 526, 526, 528, 528, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + + 525, 525, 525 } ; static yy_state_type yy_last_accepting_state; @@ -909,8 +936,8 @@ conf_yy_fatal_error(const char *msg) { return 0; } -#line 913 "config-lexer.c" -#line 914 "config-lexer.c" +#line 940 "config-lexer.c" +#line 941 "config-lexer.c" #define INITIAL 0 #define IN_COMMENT 1 @@ -1129,7 +1156,7 @@ YY_DECL #line 88 "config-lexer.l" -#line 1133 "config-lexer.c" +#line 1160 "config-lexer.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1162,13 +1189,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 >= 493 ) + if ( yy_current_state >= 526 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 492 ); + while ( yy_current_state != 525 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -1302,357 +1329,357 @@ YY_RULE_SETUP case 14: YY_RULE_SETUP #line 145 "config-lexer.l" -{ return BLACKLIST; } +{ return BIND; } YY_BREAK case 15: YY_RULE_SETUP #line 146 "config-lexer.l" -{ return CHANNEL; } +{ return BLACKLIST; } YY_BREAK case 16: YY_RULE_SETUP #line 147 "config-lexer.l" -{ return COMMAND_INTERVAL; } +{ return CHANNEL; } YY_BREAK case 17: YY_RULE_SETUP #line 148 "config-lexer.l" -{ return COMMAND_QUEUE_SIZE; } +{ return COMMAND_INTERVAL; } YY_BREAK case 18: YY_RULE_SETUP #line 149 "config-lexer.l" -{ return COMMAND_TIMEOUT; } +{ return COMMAND_QUEUE_SIZE; } YY_BREAK case 19: YY_RULE_SETUP #line 150 "config-lexer.l" -{ return CONNREGEX; } +{ return COMMAND_TIMEOUT; } YY_BREAK case 20: YY_RULE_SETUP #line 151 "config-lexer.l" -{ return DNS_FDLIMIT; } +{ return CONNREGEX; } YY_BREAK case 21: YY_RULE_SETUP #line 152 "config-lexer.l" -{ return DNS_TIMEOUT; } +{ return DNS_FDLIMIT; } YY_BREAK case 22: YY_RULE_SETUP #line 153 "config-lexer.l" -{ return DNSBL_FROM; } +{ return DNS_TIMEOUT; } YY_BREAK case 23: YY_RULE_SETUP #line 154 "config-lexer.l" -{ return DNSBL_TO; } +{ return DNSBL_FROM; } YY_BREAK case 24: YY_RULE_SETUP #line 155 "config-lexer.l" -{ return EXEMPT; } +{ return DNSBL_TO; } YY_BREAK case 25: YY_RULE_SETUP #line 156 "config-lexer.l" -{ return FD; } +{ return EXEMPT; } YY_BREAK case 26: YY_RULE_SETUP #line 157 "config-lexer.l" -{ return INVITE; } +{ return FD; } YY_BREAK case 27: YY_RULE_SETUP #line 158 "config-lexer.l" -{ return IPV4; } +{ return INVITE; } YY_BREAK case 28: YY_RULE_SETUP #line 159 "config-lexer.l" -{ return IPV6; } +{ return IPV4; } YY_BREAK case 29: YY_RULE_SETUP #line 160 "config-lexer.l" -{ return IRC; } +{ return IPV6; } YY_BREAK case 30: YY_RULE_SETUP #line 161 "config-lexer.l" -{ return KLINE; } +{ return IRC; } YY_BREAK case 31: YY_RULE_SETUP #line 162 "config-lexer.l" -{ return KEY; } +{ return KLINE; } YY_BREAK case 32: YY_RULE_SETUP #line 163 "config-lexer.l" -{ return MASK; } +{ return KEY; } YY_BREAK case 33: YY_RULE_SETUP #line 164 "config-lexer.l" -{ return MAX_READ; } +{ return MASK; } YY_BREAK case 34: YY_RULE_SETUP #line 165 "config-lexer.l" -{ return MODE; } +{ return MAX_READ; } YY_BREAK case 35: YY_RULE_SETUP #line 166 "config-lexer.l" -{ return NAME; } +{ return MODE; } YY_BREAK case 36: YY_RULE_SETUP #line 167 "config-lexer.l" -{ return NEGCACHE; } +{ return NAME; } YY_BREAK case 37: YY_RULE_SETUP #line 168 "config-lexer.l" -{ return NEGCACHE_REBUILD; } +{ return NEGCACHE; } YY_BREAK case 38: YY_RULE_SETUP #line 169 "config-lexer.l" -{ return NICK; } +{ return NEGCACHE_REBUILD; } YY_BREAK case 39: YY_RULE_SETUP #line 170 "config-lexer.l" -{ return NICKSERV; } +{ return NICK; } YY_BREAK case 40: YY_RULE_SETUP #line 171 "config-lexer.l" -{ return NOTICE; } +{ return NICKSERV; } YY_BREAK case 41: YY_RULE_SETUP #line 172 "config-lexer.l" -{ return OPER; } +{ return NOTICE; } YY_BREAK case 42: YY_RULE_SETUP #line 173 "config-lexer.l" -{ return OPM; } +{ return OPER; } YY_BREAK case 43: YY_RULE_SETUP #line 174 "config-lexer.l" -{ return OPTIONS; } +{ return OPM; } YY_BREAK case 44: YY_RULE_SETUP #line 175 "config-lexer.l" -{ return PASSWORD; } +{ return OPTIONS; } YY_BREAK case 45: YY_RULE_SETUP #line 176 "config-lexer.l" -{ return PERFORM; } +{ return PASSWORD; } YY_BREAK case 46: YY_RULE_SETUP #line 177 "config-lexer.l" -{ return PIDFILE; } +{ return PERFORM; } YY_BREAK case 47: YY_RULE_SETUP #line 178 "config-lexer.l" -{ return PORT; } +{ return PIDFILE; } YY_BREAK case 48: YY_RULE_SETUP #line 179 "config-lexer.l" -{ return PROTOCOL; } +{ return PORT; } YY_BREAK case 49: YY_RULE_SETUP #line 180 "config-lexer.l" -{ return READTIMEOUT; } +{ return PROTOCOL; } YY_BREAK case 50: YY_RULE_SETUP #line 181 "config-lexer.l" -{ return REALNAME; } +{ return READTIMEOUT; } YY_BREAK case 51: YY_RULE_SETUP #line 182 "config-lexer.l" -{ return RECONNECTINTERVAL; } +{ return REALNAME; } YY_BREAK case 52: YY_RULE_SETUP #line 183 "config-lexer.l" -{ return REPLY; } +{ return RECONNECTINTERVAL; } YY_BREAK case 53: YY_RULE_SETUP #line 184 "config-lexer.l" -{ return SCANLOG; } +{ return REPLY; } YY_BREAK case 54: YY_RULE_SETUP #line 185 "config-lexer.l" -{ return SCANNER; } +{ return RSA_PRIVATE_KEY_FILE; } YY_BREAK case 55: YY_RULE_SETUP #line 186 "config-lexer.l" -{ return SENDMAIL; } +{ return SCANLOG; } YY_BREAK case 56: YY_RULE_SETUP #line 187 "config-lexer.l" -{ return SERVER; } +{ return SCANNER; } YY_BREAK case 57: YY_RULE_SETUP #line 188 "config-lexer.l" -{ return TARGET_IP; } +{ return SENDMAIL; } YY_BREAK case 58: YY_RULE_SETUP #line 189 "config-lexer.l" -{ return TARGET_PORT; } +{ return SERVER; } YY_BREAK case 59: YY_RULE_SETUP #line 190 "config-lexer.l" -{ return TARGET_STRING;} +{ return TARGET_IP; } YY_BREAK case 60: YY_RULE_SETUP #line 191 "config-lexer.l" -{ return TIMEOUT; } +{ return TARGET_PORT; } YY_BREAK case 61: YY_RULE_SETUP #line 192 "config-lexer.l" -{ return TLS; } +{ return TARGET_STRING;} YY_BREAK case 62: YY_RULE_SETUP #line 193 "config-lexer.l" -{ return TLS_HOSTNAME_VERIFICATION; } +{ return TIMEOUT; } YY_BREAK case 63: YY_RULE_SETUP #line 194 "config-lexer.l" -{ return TYPE; } +{ return TLS; } YY_BREAK case 64: YY_RULE_SETUP #line 195 "config-lexer.l" -{ return USER; } +{ return TLS_CERTIFICATE_FILE; } YY_BREAK case 65: YY_RULE_SETUP #line 196 "config-lexer.l" -{ return USERNAME; } +{ return TLS_HOSTNAME_VERIFICATION; } YY_BREAK case 66: YY_RULE_SETUP #line 197 "config-lexer.l" -{ return VHOST; } +{ return TYPE; } YY_BREAK case 67: YY_RULE_SETUP -#line 199 "config-lexer.l" -{ return YEARS; } +#line 198 "config-lexer.l" +{ return USER; } YY_BREAK case 68: YY_RULE_SETUP -#line 200 "config-lexer.l" -{ return YEARS; } +#line 199 "config-lexer.l" +{ return USERNAME; } YY_BREAK case 69: YY_RULE_SETUP #line 201 "config-lexer.l" -{ return MONTHS; } +{ return YEARS; } YY_BREAK case 70: YY_RULE_SETUP #line 202 "config-lexer.l" -{ return MONTHS; } +{ return YEARS; } YY_BREAK case 71: YY_RULE_SETUP #line 203 "config-lexer.l" -{ return WEEKS; } +{ return MONTHS; } YY_BREAK case 72: YY_RULE_SETUP #line 204 "config-lexer.l" -{ return WEEKS; } +{ return MONTHS; } YY_BREAK case 73: YY_RULE_SETUP #line 205 "config-lexer.l" -{ return DAYS; } +{ return WEEKS; } YY_BREAK case 74: YY_RULE_SETUP #line 206 "config-lexer.l" -{ return DAYS; } +{ return WEEKS; } YY_BREAK case 75: YY_RULE_SETUP #line 207 "config-lexer.l" -{ return HOURS; } +{ return DAYS; } YY_BREAK case 76: YY_RULE_SETUP #line 208 "config-lexer.l" -{ return HOURS; } +{ return DAYS; } YY_BREAK case 77: YY_RULE_SETUP #line 209 "config-lexer.l" -{ return MINUTES; } +{ return HOURS; } YY_BREAK case 78: YY_RULE_SETUP #line 210 "config-lexer.l" -{ return MINUTES; } +{ return HOURS; } YY_BREAK case 79: YY_RULE_SETUP #line 211 "config-lexer.l" -{ return SECONDS; } +{ return MINUTES; } YY_BREAK case 80: YY_RULE_SETUP #line 212 "config-lexer.l" -{ return SECONDS; } +{ return MINUTES; } YY_BREAK case 81: YY_RULE_SETUP -#line 214 "config-lexer.l" -{ return BYTES; } +#line 213 "config-lexer.l" +{ return SECONDS; } YY_BREAK case 82: YY_RULE_SETUP -#line 215 "config-lexer.l" -{ return BYTES; } +#line 214 "config-lexer.l" +{ return SECONDS; } YY_BREAK case 83: YY_RULE_SETUP #line 216 "config-lexer.l" -{ return KBYTES; } +{ return BYTES; } YY_BREAK case 84: YY_RULE_SETUP #line 217 "config-lexer.l" -{ return KBYTES; } +{ return BYTES; } YY_BREAK case 85: YY_RULE_SETUP @@ -1672,12 +1699,12 @@ YY_RULE_SETUP case 88: YY_RULE_SETUP #line 221 "config-lexer.l" -{ return MBYTES; } +{ return KBYTES; } YY_BREAK case 89: YY_RULE_SETUP #line 222 "config-lexer.l" -{ return MBYTES; } +{ return KBYTES; } YY_BREAK case 90: YY_RULE_SETUP @@ -1696,147 +1723,157 @@ YY_RULE_SETUP YY_BREAK case 93: YY_RULE_SETUP +#line 226 "config-lexer.l" +{ return MBYTES; } + YY_BREAK +case 94: +YY_RULE_SETUP #line 227 "config-lexer.l" +{ return MBYTES; } + YY_BREAK +case 95: +YY_RULE_SETUP +#line 229 "config-lexer.l" { yylval.number = OPM_TYPE_HTTP; return PROTOCOLTYPE; } YY_BREAK -case 94: +case 96: YY_RULE_SETUP -#line 232 "config-lexer.l" +#line 234 "config-lexer.l" { yylval.number = OPM_TYPE_HTTPPOST; return PROTOCOLTYPE; } YY_BREAK -case 95: +case 97: YY_RULE_SETUP -#line 237 "config-lexer.l" +#line 239 "config-lexer.l" { yylval.number = OPM_TYPE_HTTPS; return PROTOCOLTYPE; } YY_BREAK -case 96: +case 98: YY_RULE_SETUP -#line 242 "config-lexer.l" +#line 244 "config-lexer.l" { yylval.number = OPM_TYPE_HTTPSPOST; return PROTOCOLTYPE; } YY_BREAK -case 97: +case 99: YY_RULE_SETUP -#line 247 "config-lexer.l" +#line 249 "config-lexer.l" { yylval.number = OPM_TYPE_SOCKS4; return PROTOCOLTYPE; } YY_BREAK -case 98: +case 100: YY_RULE_SETUP -#line 252 "config-lexer.l" +#line 254 "config-lexer.l" { yylval.number = OPM_TYPE_SOCKS5; return PROTOCOLTYPE; } YY_BREAK -case 99: +case 101: YY_RULE_SETUP -#line 257 "config-lexer.l" +#line 259 "config-lexer.l" { yylval.number = OPM_TYPE_WINGATE; return PROTOCOLTYPE; } YY_BREAK -case 100: +case 102: YY_RULE_SETUP -#line 262 "config-lexer.l" +#line 264 "config-lexer.l" { yylval.number = OPM_TYPE_ROUTER; return PROTOCOLTYPE; } YY_BREAK -case 101: +case 103: YY_RULE_SETUP -#line 267 "config-lexer.l" +#line 269 "config-lexer.l" { yylval.number = OPM_TYPE_DREAMBOX; return PROTOCOLTYPE; } YY_BREAK -case 102: +case 104: YY_RULE_SETUP -#line 273 "config-lexer.l" +#line 275 "config-lexer.l" { yylval.number = OPM_TYPE_SSH; return PROTOCOLTYPE; } YY_BREAK -case 103: +case 105: YY_RULE_SETUP -#line 278 "config-lexer.l" +#line 280 "config-lexer.l" { yylval.number=1; return NUMBER; } YY_BREAK -case 104: +case 106: YY_RULE_SETUP -#line 282 "config-lexer.l" +#line 284 "config-lexer.l" { yylval.number=1; return NUMBER; } YY_BREAK -case 105: +case 107: YY_RULE_SETUP -#line 286 "config-lexer.l" +#line 288 "config-lexer.l" { yylval.number=1; return NUMBER; } YY_BREAK -case 106: +case 108: YY_RULE_SETUP -#line 293 "config-lexer.l" +#line 295 "config-lexer.l" { yylval.number=0; return NUMBER; } YY_BREAK -case 107: +case 109: YY_RULE_SETUP -#line 298 "config-lexer.l" +#line 300 "config-lexer.l" { yylval.number=0; return NUMBER; } YY_BREAK -case 108: +case 110: YY_RULE_SETUP -#line 303 "config-lexer.l" +#line 305 "config-lexer.l" { yylval.number=0; return NUMBER; } YY_BREAK -case 109: +case 111: YY_RULE_SETUP -#line 308 "config-lexer.l" +#line 310 "config-lexer.l" { return yytext[0]; } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 309 "config-lexer.l" +#line 311 "config-lexer.l" { if (conf_eof()) yyterminate(); } YY_BREAK -case 110: +case 112: YY_RULE_SETUP -#line 311 "config-lexer.l" +#line 313 "config-lexer.l" ECHO; YY_BREAK -#line 1840 "config-lexer.c" +#line 1877 "config-lexer.c" case YY_END_OF_BUFFER: { @@ -2132,7 +2169,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 >= 493 ) + if ( yy_current_state >= 526 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2160,11 +2197,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 >= 493 ) + if ( yy_current_state >= 526 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 492); + yy_is_jam = (yy_current_state == 525); return yy_is_jam ? 0 : yy_current_state; } @@ -2803,7 +2840,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 311 "config-lexer.l" +#line 313 "config-lexer.l" static void diff --git a/src/config-lexer.l b/src/config-lexer.l index 58fa98e..e7a9afc 100644 --- a/src/config-lexer.l +++ b/src/config-lexer.l @@ -142,6 +142,7 @@ include \.include{WS}(\<.*\>|\".*\") ADDRESS_FAMILY { return ADDRESS_FAMILY; } AWAY { return AWAY; } BAN_UNKNOWN { return BAN_UNKNOWN; } +BIND { return BIND; } BLACKLIST { return BLACKLIST; } CHANNEL { return CHANNEL; } COMMAND_INTERVAL { return COMMAND_INTERVAL; } @@ -181,6 +182,7 @@ READTIMEOUT { return READTIMEOUT; } REALNAME { return REALNAME; } RECONNECTINTERVAL { return RECONNECTINTERVAL; } REPLY { return REPLY; } +RSA_PRIVATE_KEY_FILE { return RSA_PRIVATE_KEY_FILE; } SCANLOG { return SCANLOG; } SCANNER { return SCANNER; } SENDMAIL { return SENDMAIL; } @@ -190,11 +192,11 @@ TARGET_PORT { return TARGET_PORT; } TARGET_STRING { return TARGET_STRING;} TIMEOUT { return TIMEOUT; } TLS { return TLS; } +TLS_CERTIFICATE_FILE { return TLS_CERTIFICATE_FILE; } TLS_HOSTNAME_VERIFICATION { return TLS_HOSTNAME_VERIFICATION; } TYPE { return TYPE; } USER { return USER; } USERNAME { return USERNAME; } -VHOST { return VHOST; } years { return YEARS; } year { return YEARS; } diff --git a/src/config-parser.c b/src/config-parser.c index 221da4b..f9802a4 100644 --- a/src/config-parser.c +++ b/src/config-parser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.3.2" +#define YYBISON_VERSION "3.5.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -66,7 +66,7 @@ /* First part of user prologue. */ -#line 21 "config-parser.y" /* yacc.c:337 */ +#line 21 "config-parser.y" #include <string.h> @@ -78,7 +78,17 @@ int yylex(void); static void *tmp; /* Variable to temporarily hold nodes before insertion to list */ -#line 82 "config-parser.c" /* yacc.c:337 */ +#line 82 "config-parser.c" + +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast<Type> (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -99,8 +109,8 @@ static void *tmp; /* Variable to temporarily hold nodes before insertion to lis # define YYERROR_VERBOSE 0 #endif -/* In a future release of Bison, this section will be replaced - by #include "y.tab.h". */ +/* Use api.header.include to #include this header + instead of duplicating it here. */ #ifndef YY_YY_CONFIG_PARSER_H_INCLUDED # define YY_YY_CONFIG_PARSER_H_INCLUDED /* Debug traces. */ @@ -119,158 +129,161 @@ extern int yydebug; ADDRESS_FAMILY = 258, AWAY = 259, BAN_UNKNOWN = 260, - BLACKLIST = 261, - BYTES = 262, - KBYTES = 263, - MBYTES = 264, - CHANNEL = 265, - COMMAND_INTERVAL = 266, - COMMAND_QUEUE_SIZE = 267, - COMMAND_TIMEOUT = 268, - CONNREGEX = 269, - DNS_FDLIMIT = 270, - DNS_TIMEOUT = 271, - DNSBL_FROM = 272, - DNSBL_TO = 273, - EXEMPT = 274, - FD = 275, - INVITE = 276, - IPV4 = 277, - IPV6 = 278, - IRC = 279, - KLINE = 280, - KEY = 281, - MASK = 282, - MAX_READ = 283, - MODE = 284, - NAME = 285, - NEGCACHE = 286, - NEGCACHE_REBUILD = 287, - NICK = 288, - NICKSERV = 289, - NOTICE = 290, - OPER = 291, - OPM = 292, - OPTIONS = 293, - PASSWORD = 294, - PERFORM = 295, - PIDFILE = 296, - PORT = 297, - PROTOCOL = 298, - READTIMEOUT = 299, - REALNAME = 300, - RECONNECTINTERVAL = 301, - REPLY = 302, - SCANLOG = 303, - SCANNER = 304, - SECONDS = 305, - MINUTES = 306, - HOURS = 307, - DAYS = 308, - WEEKS = 309, - MONTHS = 310, - YEARS = 311, - SENDMAIL = 312, - SERVER = 313, - TARGET_IP = 314, - TARGET_PORT = 315, - TARGET_STRING = 316, - TIMEOUT = 317, - TLS = 318, - TLS_HOSTNAME_VERIFICATION = 319, - TYPE = 320, - USERNAME = 321, - USER = 322, - VHOST = 323, - NUMBER = 324, - STRING = 325, - PROTOCOLTYPE = 326 + BIND = 261, + BLACKLIST = 262, + BYTES = 263, + KBYTES = 264, + MBYTES = 265, + CHANNEL = 266, + COMMAND_INTERVAL = 267, + COMMAND_QUEUE_SIZE = 268, + COMMAND_TIMEOUT = 269, + CONNREGEX = 270, + DNS_FDLIMIT = 271, + DNS_TIMEOUT = 272, + DNSBL_FROM = 273, + DNSBL_TO = 274, + EXEMPT = 275, + FD = 276, + INVITE = 277, + IPV4 = 278, + IPV6 = 279, + IRC = 280, + KLINE = 281, + KEY = 282, + MASK = 283, + MAX_READ = 284, + MODE = 285, + NAME = 286, + NEGCACHE = 287, + NEGCACHE_REBUILD = 288, + NICK = 289, + NICKSERV = 290, + NOTICE = 291, + OPER = 292, + OPM = 293, + OPTIONS = 294, + PASSWORD = 295, + PERFORM = 296, + PIDFILE = 297, + PORT = 298, + PROTOCOL = 299, + RSA_PRIVATE_KEY_FILE = 300, + READTIMEOUT = 301, + REALNAME = 302, + RECONNECTINTERVAL = 303, + REPLY = 304, + SCANLOG = 305, + SCANNER = 306, + SECONDS = 307, + MINUTES = 308, + HOURS = 309, + DAYS = 310, + WEEKS = 311, + MONTHS = 312, + YEARS = 313, + SENDMAIL = 314, + SERVER = 315, + TARGET_IP = 316, + TARGET_PORT = 317, + TARGET_STRING = 318, + TIMEOUT = 319, + TLS = 320, + TLS_CERTIFICATE_FILE = 321, + TLS_HOSTNAME_VERIFICATION = 322, + TYPE = 323, + USERNAME = 324, + USER = 325, + NUMBER = 326, + STRING = 327, + PROTOCOLTYPE = 328 }; #endif /* Tokens. */ #define ADDRESS_FAMILY 258 #define AWAY 259 #define BAN_UNKNOWN 260 -#define BLACKLIST 261 -#define BYTES 262 -#define KBYTES 263 -#define MBYTES 264 -#define CHANNEL 265 -#define COMMAND_INTERVAL 266 -#define COMMAND_QUEUE_SIZE 267 -#define COMMAND_TIMEOUT 268 -#define CONNREGEX 269 -#define DNS_FDLIMIT 270 -#define DNS_TIMEOUT 271 -#define DNSBL_FROM 272 -#define DNSBL_TO 273 -#define EXEMPT 274 -#define FD 275 -#define INVITE 276 -#define IPV4 277 -#define IPV6 278 -#define IRC 279 -#define KLINE 280 -#define KEY 281 -#define MASK 282 -#define MAX_READ 283 -#define MODE 284 -#define NAME 285 -#define NEGCACHE 286 -#define NEGCACHE_REBUILD 287 -#define NICK 288 -#define NICKSERV 289 -#define NOTICE 290 -#define OPER 291 -#define OPM 292 -#define OPTIONS 293 -#define PASSWORD 294 -#define PERFORM 295 -#define PIDFILE 296 -#define PORT 297 -#define PROTOCOL 298 -#define READTIMEOUT 299 -#define REALNAME 300 -#define RECONNECTINTERVAL 301 -#define REPLY 302 -#define SCANLOG 303 -#define SCANNER 304 -#define SECONDS 305 -#define MINUTES 306 -#define HOURS 307 -#define DAYS 308 -#define WEEKS 309 -#define MONTHS 310 -#define YEARS 311 -#define SENDMAIL 312 -#define SERVER 313 -#define TARGET_IP 314 -#define TARGET_PORT 315 -#define TARGET_STRING 316 -#define TIMEOUT 317 -#define TLS 318 -#define TLS_HOSTNAME_VERIFICATION 319 -#define TYPE 320 -#define USERNAME 321 -#define USER 322 -#define VHOST 323 -#define NUMBER 324 -#define STRING 325 -#define PROTOCOLTYPE 326 +#define BIND 261 +#define BLACKLIST 262 +#define BYTES 263 +#define KBYTES 264 +#define MBYTES 265 +#define CHANNEL 266 +#define COMMAND_INTERVAL 267 +#define COMMAND_QUEUE_SIZE 268 +#define COMMAND_TIMEOUT 269 +#define CONNREGEX 270 +#define DNS_FDLIMIT 271 +#define DNS_TIMEOUT 272 +#define DNSBL_FROM 273 +#define DNSBL_TO 274 +#define EXEMPT 275 +#define FD 276 +#define INVITE 277 +#define IPV4 278 +#define IPV6 279 +#define IRC 280 +#define KLINE 281 +#define KEY 282 +#define MASK 283 +#define MAX_READ 284 +#define MODE 285 +#define NAME 286 +#define NEGCACHE 287 +#define NEGCACHE_REBUILD 288 +#define NICK 289 +#define NICKSERV 290 +#define NOTICE 291 +#define OPER 292 +#define OPM 293 +#define OPTIONS 294 +#define PASSWORD 295 +#define PERFORM 296 +#define PIDFILE 297 +#define PORT 298 +#define PROTOCOL 299 +#define RSA_PRIVATE_KEY_FILE 300 +#define READTIMEOUT 301 +#define REALNAME 302 +#define RECONNECTINTERVAL 303 +#define REPLY 304 +#define SCANLOG 305 +#define SCANNER 306 +#define SECONDS 307 +#define MINUTES 308 +#define HOURS 309 +#define DAYS 310 +#define WEEKS 311 +#define MONTHS 312 +#define YEARS 313 +#define SENDMAIL 314 +#define SERVER 315 +#define TARGET_IP 316 +#define TARGET_PORT 317 +#define TARGET_STRING 318 +#define TIMEOUT 319 +#define TLS 320 +#define TLS_CERTIFICATE_FILE 321 +#define TLS_HOSTNAME_VERIFICATION 322 +#define TYPE 323 +#define USERNAME 324 +#define USER 325 +#define NUMBER 326 +#define STRING 327 +#define PROTOCOLTYPE 328 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - union YYSTYPE { -#line 93 "config-parser.y" /* yacc.c:352 */ +#line 95 "config-parser.y" int number; char *string; -#line 272 "config-parser.c" /* yacc.c:352 */ -}; +#line 285 "config-parser.c" +}; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -289,28 +302,75 @@ int yyparse (void); # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + <limits.h> and (if available) <stdint.h> are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include <limits.h> /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include <stdint.h> /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else -typedef unsigned short yytype_uint16; +typedef short yytype_int16; +#endif + +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; #endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; #else -typedef short yytype_int16; +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif #endif #ifndef YYSIZE_T @@ -318,7 +378,7 @@ typedef short yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -326,7 +386,19 @@ typedef short yytype_int16; # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + +/* Stored state numbers (used for stacks). */ +typedef yytype_int16 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -340,22 +412,20 @@ typedef short yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else -# define YY_ATTRIBUTE(Spec) /* empty */ +# define YY_ATTRIBUTE_PURE # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif #endif /* Suppress unused-variable warnings by "using" E. */ @@ -367,11 +437,11 @@ typedef short yytype_int16; #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -384,6 +454,20 @@ typedef short yytype_int16; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + + +#define YY_ASSERT(E) ((void) (0 && (E))) #if ! defined yyoverflow || YYERROR_VERBOSE @@ -460,17 +544,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; + yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -483,11 +567,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYSIZE_T yynewbytes; \ + YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) @@ -499,12 +583,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYSIZE_T yyi; \ + YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -516,42 +600,43 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 355 +#define YYLAST 374 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 78 +#define YYNTOKENS 80 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 92 +#define YYNNTS 94 /* YYNRULES -- Number of rules. */ -#define YYNRULES 174 +#define YYNRULES 178 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 380 +#define YYNSTATES 390 #define YYUNDEFTOK 2 -#define YYMAXUTOK 326 +#define YYMAXUTOK 328 + /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_uint8 yytranslate[] = +static const yytype_int8 yytranslate[] = { 0, 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, 77, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 76, 74, - 2, 75, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 79, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 78, 76, + 2, 77, 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, 72, 2, 73, 2, 2, 2, 2, + 2, 2, 2, 74, 2, 75, 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, @@ -571,31 +656,31 @@ static const yytype_uint8 yytranslate[] = 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71 + 65, 66, 67, 68, 69, 70, 71, 72, 73 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = -{ - 0, 108, 108, 109, 112, 113, 114, 115, 116, 117, - 119, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 130, 130, 131, 132, 133, 134, 139, 141, 142, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 155, - 160, 165, 171, 176, 181, 187, 192, 197, 204, 206, - 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 231, 237, 243, 249, 255, 261, 267, 273, - 278, 283, 288, 293, 298, 303, 308, 314, 320, 326, - 332, 341, 341, 354, 355, 357, 358, 359, 361, 369, - 377, 388, 388, 398, 399, 401, 402, 403, 405, 412, - 422, 422, 457, 458, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 471, 479, 487, 495, 508, 515, - 522, 529, 536, 552, 554, 555, 557, 558, 559, 560, - 561, 563, 569, 575, 584, 584, 600, 601, 603, 604, - 605, 606, 607, 608, 609, 611, 620, 619, 627, 627, - 628, 633, 640, 648, 660, 667, 669, 670, 672, 686, - 688, 689, 691, 692, 694 +static const yytype_int16 yyrline[] = +{ + 0, 110, 110, 111, 114, 115, 116, 117, 118, 119, + 121, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 132, 132, 133, 134, 135, 136, 141, 143, 144, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, + 162, 167, 173, 178, 183, 189, 194, 199, 206, 208, + 209, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 235, 241, 247, 253, 259, 265, + 271, 277, 282, 287, 292, 297, 304, 310, 315, 320, + 325, 331, 337, 343, 349, 358, 358, 371, 372, 374, + 375, 376, 378, 386, 394, 405, 405, 415, 416, 418, + 419, 420, 422, 429, 439, 439, 474, 475, 477, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 488, 496, + 504, 512, 525, 532, 539, 546, 553, 569, 571, 572, + 574, 575, 576, 577, 578, 580, 586, 592, 601, 601, + 617, 618, 620, 621, 622, 623, 624, 625, 626, 628, + 637, 636, 644, 644, 645, 650, 657, 665, 677, 684, + 686, 687, 689, 703, 705, 706, 708, 709, 711 }; #endif @@ -605,32 +690,34 @@ static const yytype_uint16 yyrline[] = static const char *const yytname[] = { "$end", "error", "$undefined", "ADDRESS_FAMILY", "AWAY", "BAN_UNKNOWN", - "BLACKLIST", "BYTES", "KBYTES", "MBYTES", "CHANNEL", "COMMAND_INTERVAL", - "COMMAND_QUEUE_SIZE", "COMMAND_TIMEOUT", "CONNREGEX", "DNS_FDLIMIT", - "DNS_TIMEOUT", "DNSBL_FROM", "DNSBL_TO", "EXEMPT", "FD", "INVITE", - "IPV4", "IPV6", "IRC", "KLINE", "KEY", "MASK", "MAX_READ", "MODE", - "NAME", "NEGCACHE", "NEGCACHE_REBUILD", "NICK", "NICKSERV", "NOTICE", - "OPER", "OPM", "OPTIONS", "PASSWORD", "PERFORM", "PIDFILE", "PORT", - "PROTOCOL", "READTIMEOUT", "REALNAME", "RECONNECTINTERVAL", "REPLY", - "SCANLOG", "SCANNER", "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS", - "MONTHS", "YEARS", "SENDMAIL", "SERVER", "TARGET_IP", "TARGET_PORT", - "TARGET_STRING", "TIMEOUT", "TLS", "TLS_HOSTNAME_VERIFICATION", "TYPE", - "USERNAME", "USER", "VHOST", "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", - "'}'", "';'", "'='", "':'", "','", "$accept", "config", "config_items", - "timespec_", "timespec", "sizespec_", "sizespec", "options_entry", - "options_items", "options_item", "options_negcache", - "options_negcache_rebuild", "options_pidfile", "options_dns_fdlimit", - "options_dns_timeout", "options_scanlog", "options_command_queue_size", + "BIND", "BLACKLIST", "BYTES", "KBYTES", "MBYTES", "CHANNEL", + "COMMAND_INTERVAL", "COMMAND_QUEUE_SIZE", "COMMAND_TIMEOUT", "CONNREGEX", + "DNS_FDLIMIT", "DNS_TIMEOUT", "DNSBL_FROM", "DNSBL_TO", "EXEMPT", "FD", + "INVITE", "IPV4", "IPV6", "IRC", "KLINE", "KEY", "MASK", "MAX_READ", + "MODE", "NAME", "NEGCACHE", "NEGCACHE_REBUILD", "NICK", "NICKSERV", + "NOTICE", "OPER", "OPM", "OPTIONS", "PASSWORD", "PERFORM", "PIDFILE", + "PORT", "PROTOCOL", "RSA_PRIVATE_KEY_FILE", "READTIMEOUT", "REALNAME", + "RECONNECTINTERVAL", "REPLY", "SCANLOG", "SCANNER", "SECONDS", "MINUTES", + "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SENDMAIL", "SERVER", + "TARGET_IP", "TARGET_PORT", "TARGET_STRING", "TIMEOUT", "TLS", + "TLS_CERTIFICATE_FILE", "TLS_HOSTNAME_VERIFICATION", "TYPE", "USERNAME", + "USER", "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='", + "':'", "','", "$accept", "config", "config_items", "timespec_", + "timespec", "sizespec_", "sizespec", "options_entry", "options_items", + "options_item", "options_negcache", "options_negcache_rebuild", + "options_pidfile", "options_dns_fdlimit", "options_dns_timeout", + "options_scanlog", "options_command_queue_size", "options_command_interval", "options_command_timeout", "irc_entry", "irc_items", "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick", "irc_nickserv", "irc_oper", "irc_password", "irc_perform", "irc_notice", - "irc_port", "irc_tls", "irc_tls_hostname_verification", + "irc_port", "irc_tls", "irc_rsa_private_key_file", + "irc_tls_certificate_file", "irc_tls_hostname_verification", "irc_readtimeout", "irc_reconnectinterval", "irc_realname", "irc_server", - "irc_username", "irc_vhost", "irc_connregex", "channel_entry", "$@1", + "irc_username", "irc_bind", "irc_connregex", "channel_entry", "$@1", "channel_items", "channel_item", "channel_name", "channel_key", "channel_invite", "user_entry", "$@2", "user_items", "user_item", "user_mask", "user_scanner", "scanner_entry", "$@3", "scanner_items", - "scanner_item", "scanner_name", "scanner_vhost", "scanner_target_ip", + "scanner_item", "scanner_name", "scanner_bind", "scanner_target_ip", "scanner_target_string", "scanner_fd", "scanner_target_port", "scanner_timeout", "scanner_max_read", "scanner_protocol", "opm_entry", "opm_items", "opm_item", "opm_dnsbl_from", "opm_dnsbl_to", @@ -646,7 +733,7 @@ static const char *const yytname[] = # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -655,62 +742,63 @@ static const yytype_uint16 yytoknum[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 123, 125, 59, 61, 58, 44 + 325, 326, 327, 328, 123, 125, 59, 61, 58, 44 }; # endif -#define YYPACT_NINF -304 +#define YYPACT_NINF (-209) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-304))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -145 +#define YYTABLE_NINF (-149) -#define yytable_value_is_error(Yytable_value) \ +#define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - -304, 164, -304, -65, -56, -52, -48, -304, -304, -304, - -304, -37, -304, -6, -304, -304, 10, 123, 83, 183, - -23, -22, -304, -13, 4, -304, -304, -304, -5, 1, - 7, 11, 17, 18, 20, 27, 28, 29, 33, 34, - 36, 39, 41, 43, 47, 50, 51, 0, -304, -304, - -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, - -304, -304, -304, -304, -304, -304, -304, -304, -304, 59, - -304, 56, 60, 61, 73, -304, -304, -304, -304, -304, - 69, -304, 63, 66, 68, 70, 74, 75, 78, 79, - 85, 40, -304, -304, -304, -304, -304, -304, -304, -304, - -304, -304, 93, 150, 64, 92, -304, 101, 103, 104, - 106, 107, 112, 115, 120, 122, 127, 131, 134, 135, - 134, 136, 138, 139, 146, 147, 98, -304, 132, 149, - 151, 152, 153, -304, 148, 134, 154, 134, 156, 134, - 134, 134, 158, 159, 172, -304, -304, 155, 173, 5, - -304, -304, -304, -304, 174, 175, 177, 178, 179, 180, - 181, 184, 185, 37, -304, -304, -304, -304, -304, -304, - -304, -304, -304, -304, 187, -304, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 182, 199, 200, - 201, 202, 203, 204, 205, 206, -304, -18, 207, 208, - 209, -304, 114, 210, 211, 212, 213, 214, 215, 216, - 217, 218, -304, 223, 224, 221, -304, 157, 227, 228, - 176, 229, 231, 232, 134, 233, 230, -304, -304, -304, - -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, - 134, 134, 134, 134, 134, 134, 134, -304, -304, -304, - -304, -304, -304, -304, -304, -304, -304, 222, 226, 234, - 102, -304, -304, -304, -304, -304, -304, -304, -304, -304, - 235, 236, 237, 186, 238, 82, -304, -304, -304, -304, - -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, - -304, -304, 240, 241, -304, 242, 52, 243, 244, 245, - 246, 248, 249, 250, 251, -304, -304, -304, -304, -304, - -304, -304, -304, 256, 257, 258, 255, -304, 259, 239, - 260, 261, 263, 265, 262, -304, -304, -304, -304, 227, - 227, 227, -304, -304, -304, -304, 264, -304, -304, -304, - -304, -304, 266, 267, 268, -304, 25, 269, 270, 271, - 272, -60, -304, 274, -304, -304, -304, -304, 275, -304, - -304, -304, -304, -304, -59, -304, -304, -304, -304, 276, - 277, -304, -304, -304, -304, 25, 278, -304, -304, -304 + -209, 77, -209, -69, -67, -61, -49, -209, -209, -209, + -209, -28, -209, -7, -209, -209, 63, 116, 71, 183, + -25, -17, -209, 10, 30, -209, -209, -209, 15, 23, + 27, 41, 42, 44, 49, 59, 60, 61, 62, 64, + 66, 67, 68, 70, 72, 96, 97, 98, 101, 0, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, 75, -209, 102, 110, 112, 9, -209, + -209, -209, -209, -209, 92, -209, 114, 117, 121, 124, + 125, 127, 135, 136, 137, 38, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, 31, 159, 36, 78, + -209, 120, 145, 146, 147, 154, 155, 156, 157, 158, + 160, 162, 122, 163, 165, 166, 165, 167, 169, 170, + 172, 173, 161, -209, 174, 175, 177, 178, 168, -209, + 179, 165, 180, 165, 181, 165, 165, 165, 182, 184, + 185, -209, -209, 164, 186, 28, -209, -209, -209, -209, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 32, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + 197, -209, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 153, 211, 212, 213, 214, + 215, 216, 217, 218, -209, -19, 219, 220, 221, -209, + 109, 222, 223, 224, 225, 226, 227, 228, 229, 230, + -209, 235, 236, 233, -209, 238, 240, 241, 242, 243, + 245, 244, 246, 165, 237, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + 165, 165, 165, 165, 165, 165, 165, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, 247, 248, 249, + -13, -209, -209, -209, -209, -209, -209, -209, -209, -209, + 250, 251, 252, 256, 254, 80, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, 257, 258, -209, 259, 260, 115, 261, 262, + 263, 264, 266, 267, 268, -209, -209, -209, -209, -209, + -209, -209, -209, 273, 274, 275, 272, -209, 255, 278, + 279, 280, 282, 283, 281, -209, -209, -209, -209, -209, + 241, 241, 241, -209, -209, -209, -209, 285, -209, -209, + -209, -209, 284, 286, 287, -209, 50, 288, 289, 290, + 277, -51, -209, 291, -209, -209, -209, -209, 292, -209, + -209, -209, -209, -209, 22, -209, -209, -209, -209, 297, + 294, -209, -209, -209, -209, 50, 295, -209, -209, -209 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -718,74 +806,75 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 101, 1, 0, 0, 0, 0, 3, 5, 4, + 2, 105, 1, 0, 0, 0, 0, 3, 5, 4, 7, 0, 8, 0, 6, 9, 0, 0, 0, 0, - 0, 0, 173, 0, 0, 171, 172, 71, 0, 0, + 0, 0, 177, 0, 0, 175, 176, 73, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 50, 51, 53, 56, 54, 55, 57, 58, 70, 71, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 52, 72, 0, 144, 0, 0, 0, 0, 139, + 140, 141, 142, 143, 0, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 0, 0, 0, 0, + 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 0, 0, 0, 0, 0, 138, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 111, 0, 0, 0, 108, 109, 110, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, - 53, 56, 54, 55, 57, 58, 68, 69, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 52, 70, 0, - 140, 0, 0, 0, 0, 135, 136, 137, 138, 139, - 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 0, 0, 0, 0, 170, 0, 0, 0, + 117, 118, 119, 121, 123, 120, 122, 125, 126, 124, + 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, - 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 27, 107, 0, 0, 0, - 104, 105, 106, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 113, 114, 115, 117, 119, 116, - 118, 121, 122, 120, 0, 169, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, - 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, - 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 26, 0, 0, 0, 103, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 112, 174, 72, - 90, 73, 74, 75, 76, 80, 77, 78, 79, 81, - 10, 10, 10, 10, 10, 10, 10, 12, 11, 84, - 86, 85, 87, 82, 83, 88, 89, 0, 0, 0, - 0, 94, 95, 96, 97, 141, 142, 143, 154, 156, - 0, 0, 0, 0, 0, 0, 147, 148, 149, 151, - 150, 152, 153, 46, 45, 47, 42, 43, 39, 40, - 41, 44, 0, 0, 102, 0, 20, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 13, 14, 15, 16, - 17, 18, 19, 0, 0, 0, 0, 93, 0, 0, - 0, 0, 0, 0, 0, 146, 108, 109, 128, 20, - 20, 20, 22, 21, 131, 124, 0, 126, 129, 127, - 130, 125, 0, 0, 0, 92, 0, 0, 0, 0, - 0, 0, 167, 0, 145, 23, 24, 25, 0, 100, - 99, 98, 160, 161, 0, 159, 164, 162, 155, 0, - 0, 166, 163, 132, 157, 0, 0, 165, 158, 168 + 26, 0, 0, 0, 107, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 116, 178, 74, 93, 94, + 75, 76, 77, 78, 82, 79, 80, 81, 83, 85, + 10, 10, 10, 10, 10, 10, 10, 12, 11, 88, + 90, 89, 91, 84, 86, 87, 92, 0, 0, 0, + 0, 98, 99, 100, 101, 145, 146, 147, 158, 160, + 0, 0, 0, 0, 0, 0, 151, 152, 153, 155, + 154, 156, 157, 46, 45, 47, 42, 43, 39, 40, + 41, 44, 0, 0, 106, 0, 0, 20, 0, 0, + 0, 0, 0, 0, 0, 115, 13, 14, 15, 16, + 17, 18, 19, 0, 0, 0, 0, 97, 0, 0, + 0, 0, 0, 0, 0, 150, 112, 113, 129, 132, + 20, 20, 20, 22, 21, 135, 128, 0, 130, 133, + 131, 134, 0, 0, 0, 96, 0, 0, 0, 0, + 0, 0, 171, 0, 149, 23, 24, 25, 0, 104, + 103, 102, 164, 165, 0, 163, 168, 166, 159, 0, + 0, 170, 167, 136, 161, 0, 0, 169, 162, 172 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -304, -304, -304, -1, -118, -303, 87, -304, -304, 166, - -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, - -304, 290, -304, -304, -304, -304, -304, -304, -304, -304, - -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, - -304, -304, -304, -304, 46, -304, -304, -304, -304, -304, - -304, 170, -304, -304, -304, -304, -304, 144, -304, -304, - -304, -304, -304, -304, -304, -304, -304, -304, -304, 279, - -304, -304, -304, -304, -304, -304, 80, -304, -304, -304, - -304, -36, -304, -304, -304, -304, -304, 3, -304, -304, - 314, -304 + -209, -209, -209, -84, -124, -208, 4, -209, -209, 151, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, 270, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -15, -209, -209, -209, + -209, -209, -209, 103, -209, -209, -209, -209, -209, 88, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, 296, -209, -209, -209, -209, -209, -209, -26, -209, + -209, -209, -209, -125, -209, -209, -209, -209, -209, -99, + -209, -209, 298, -209 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 7, 247, 248, 332, 333, 8, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 9, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 260, 261, 262, 263, 264, 10, 11, - 149, 150, 151, 152, 12, 13, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 14, 74, 75, - 76, 77, 78, 79, 80, 275, 276, 277, 278, 318, - 364, 365, 279, 280, 281, 282, 351, 352, 15, 24, - 25, 26 + -1, 1, 7, 257, 258, 343, 344, 8, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 9, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 270, 271, 272, 273, 274, + 10, 11, 155, 156, 157, 158, 12, 13, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 14, + 78, 79, 80, 81, 82, 83, 84, 285, 286, 287, + 288, 328, 374, 375, 289, 290, 291, 292, 361, 362, + 15, 24, 25, 26 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -793,153 +882,158 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 188, 27, 190, 257, 28, 22, 146, 16, 258, 350, - -91, 22, 259, 370, 29, 374, 17, 203, 375, 205, - 18, 207, 208, 209, 19, 30, 355, 356, 357, 31, - 20, 23, 147, 32, 33, 34, 35, 23, 153, 36, - 37, 81, 38, 21, 39, 40, 41, 362, 363, 102, - 103, 82, 83, 84, 148, 85, 86, 154, 42, 329, - 330, 331, 104, 43, 44, 155, 45, 156, 46, 128, - 107, 87, 88, 126, 70, 134, 108, 105, 215, -144, - 157, 89, 109, 268, 70, 269, 110, 270, 90, -144, - 71, 72, 111, 112, 146, 113, 158, 159, 160, 161, - 71, 72, 114, 115, 116, 162, 303, 271, 117, 118, - 226, 119, 272, 144, 120, 268, 121, 269, 122, 270, - 147, 296, 123, 257, 27, 124, 125, 28, 258, 273, - 73, 129, 259, -91, 174, 130, 131, 29, 135, 271, - 73, 136, 148, 137, 272, 138, 132, 274, 30, 139, - 140, 153, 31, 141, 142, 324, 32, 33, 34, 35, - 143, 273, 36, 37, 2, 38, 175, 39, 40, 41, - 154, 176, 196, 177, 178, 316, 179, 180, 155, 274, - 156, 42, 181, 3, 81, 182, 43, 44, 4, 45, - 183, 46, 184, 157, 82, 83, 84, 185, 85, 86, - 186, 5, 6, 187, 197, 189, 191, 192, 193, 158, - 159, 160, 161, -110, 87, 88, 194, 195, 162, 198, - 202, 199, 200, 204, 89, 206, 295, 201, 210, 211, - 213, 90, 240, 241, 242, 243, 244, 245, 246, 306, - 307, 308, 309, 310, 311, 312, 212, 299, 214, 217, - 218, 187, 219, 220, 221, 222, 223, 145, 322, 224, - 225, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 249, 250, 251, 252, 253, 254, 255, - 256, 265, 266, 267, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 296, 313, 298, 300, - 301, 314, 302, 304, 305, 297, 317, 227, 347, 315, - 319, 320, 321, 323, 326, 327, 328, 334, 335, 216, - 337, 336, 338, 339, 340, 341, 342, 343, 344, 345, - 348, 349, 350, 358, 346, 353, 354, 127, 106, 378, - 359, 360, 361, 366, 367, 368, 376, 369, 372, 373, - 0, 377, 379, 133, 371, 325 + 196, 27, 198, 267, 28, 16, 29, 17, 268, 267, + 74, -95, 269, 18, 268, 30, -148, 211, 269, 213, + 360, 215, 216, 217, 380, 19, 31, 75, 76, 152, + 32, 22, 152, 159, 33, 34, 35, 36, 160, 85, + 37, 38, 20, 39, 21, 40, 41, 42, 43, 106, + 86, 87, 88, 161, 89, 90, 153, 107, 23, 153, + 44, 162, 326, 163, 22, 45, 46, 47, 77, 48, + 91, 92, 74, 372, 373, 132, 164, 2, -148, 154, + 93, 278, 154, 279, 138, 280, 134, 108, 94, 75, + 76, 23, 111, 165, 166, 167, 168, 3, 384, 140, + 112, 385, 4, 223, 113, 109, 281, 234, 180, 314, + 278, 282, 279, 150, 280, 5, 6, 27, 114, 115, + 28, 116, 29, 340, 341, 342, 117, -95, -114, 283, + 77, 30, 365, 366, 367, 281, 118, 119, 120, 121, + 282, 122, 31, 123, 124, 125, 32, 126, 284, 127, + 33, 34, 35, 36, 181, 334, 37, 38, 283, 39, + 159, 40, 41, 42, 43, 160, 316, 317, 318, 319, + 320, 321, 322, 128, 129, 130, 44, 284, 131, 135, + 161, 45, 46, 47, 85, 48, 307, 136, 162, 137, + 163, 141, 182, 193, 142, 86, 87, 88, 143, 89, + 90, 144, 145, 164, 146, 250, 251, 252, 253, 254, + 255, 256, 147, 148, 149, 91, 92, 183, 184, 185, + 165, 166, 167, 168, 195, 93, 186, 187, 188, 189, + 190, 308, 191, 94, 192, 194, 195, 204, 197, 199, + 200, 221, 201, 202, 209, 203, 151, 206, 205, 207, + 208, 212, 214, 210, 218, 327, 219, 235, 224, 335, + 388, 220, 381, 222, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 259, 260, 261, + 262, 263, 264, 265, 266, 275, 276, 277, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 315, 309, 312, 310, 311, 313, 133, + 0, 0, 110, 0, 323, 324, 325, 329, 330, 331, + 332, 333, 356, 336, 337, 338, 339, 345, 346, 0, + 348, 347, 349, 350, 351, 352, 353, 354, 355, 357, + 0, 358, 359, 360, 379, 363, 368, 364, 0, 0, + 369, 0, 370, 371, 376, 377, 378, 382, 383, 386, + 387, 389, 0, 0, 139 }; static const yytype_int16 yycheck[] = { - 118, 1, 120, 21, 4, 1, 1, 72, 26, 69, - 10, 1, 30, 73, 14, 74, 72, 135, 77, 137, - 72, 139, 140, 141, 72, 25, 329, 330, 331, 29, - 67, 27, 27, 33, 34, 35, 36, 27, 1, 39, - 40, 1, 42, 49, 44, 45, 46, 22, 23, 72, - 72, 11, 12, 13, 49, 15, 16, 20, 58, 7, - 8, 9, 75, 63, 64, 28, 66, 30, 68, 10, - 75, 31, 32, 73, 1, 6, 75, 73, 73, 6, - 43, 41, 75, 1, 1, 3, 75, 5, 48, 6, - 17, 18, 75, 75, 1, 75, 59, 60, 61, 62, - 17, 18, 75, 75, 75, 68, 224, 25, 75, 75, - 73, 75, 30, 73, 75, 1, 75, 3, 75, 5, - 27, 69, 75, 21, 1, 75, 75, 4, 26, 47, - 57, 75, 30, 10, 70, 75, 75, 14, 75, 25, - 57, 75, 49, 75, 30, 75, 73, 65, 25, 75, - 75, 1, 29, 75, 75, 73, 33, 34, 35, 36, - 75, 47, 39, 40, 0, 42, 74, 44, 45, 46, - 20, 70, 74, 70, 70, 73, 70, 70, 28, 65, - 30, 58, 70, 19, 1, 70, 63, 64, 24, 66, - 70, 68, 70, 43, 11, 12, 13, 70, 15, 16, - 69, 37, 38, 69, 72, 70, 70, 69, 69, 59, - 60, 61, 62, 49, 31, 32, 70, 70, 68, 70, - 72, 70, 70, 69, 41, 69, 69, 74, 70, 70, - 75, 48, 50, 51, 52, 53, 54, 55, 56, 240, - 241, 242, 243, 244, 245, 246, 74, 71, 75, 75, - 75, 69, 75, 75, 75, 75, 75, 91, 72, 75, - 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 70, 70, 74, 69, 75, 70, 70, - 69, 75, 70, 70, 74, 218, 260, 163, 69, 75, - 75, 75, 75, 75, 74, 74, 74, 74, 74, 149, - 74, 76, 74, 74, 74, 74, 70, 70, 70, 74, - 70, 70, 69, 69, 75, 70, 74, 47, 24, 375, - 74, 74, 74, 74, 74, 74, 70, 75, 74, 74, - -1, 74, 74, 74, 351, 275 + 124, 1, 126, 22, 4, 74, 6, 74, 27, 22, + 1, 11, 31, 74, 27, 15, 7, 141, 31, 143, + 71, 145, 146, 147, 75, 74, 26, 18, 19, 1, + 30, 1, 1, 1, 34, 35, 36, 37, 6, 1, + 40, 41, 70, 43, 51, 45, 46, 47, 48, 74, + 12, 13, 14, 21, 16, 17, 28, 74, 28, 28, + 60, 29, 75, 31, 1, 65, 66, 67, 59, 69, + 32, 33, 1, 23, 24, 75, 44, 0, 7, 51, + 42, 1, 51, 3, 75, 5, 11, 77, 50, 18, + 19, 28, 77, 61, 62, 63, 64, 20, 76, 7, + 77, 79, 25, 75, 77, 75, 26, 75, 72, 233, + 1, 31, 3, 75, 5, 38, 39, 1, 77, 77, + 4, 77, 6, 8, 9, 10, 77, 11, 51, 49, + 59, 15, 340, 341, 342, 26, 77, 77, 77, 77, + 31, 77, 26, 77, 77, 77, 30, 77, 68, 77, + 34, 35, 36, 37, 76, 75, 40, 41, 49, 43, + 1, 45, 46, 47, 48, 6, 250, 251, 252, 253, + 254, 255, 256, 77, 77, 77, 60, 68, 77, 77, + 21, 65, 66, 67, 1, 69, 71, 77, 29, 77, + 31, 77, 72, 71, 77, 12, 13, 14, 77, 16, + 17, 77, 77, 44, 77, 52, 53, 54, 55, 56, + 57, 58, 77, 77, 77, 32, 33, 72, 72, 72, + 61, 62, 63, 64, 71, 42, 72, 72, 72, 72, + 72, 227, 72, 50, 72, 72, 71, 76, 72, 72, + 71, 77, 72, 71, 76, 72, 95, 72, 74, 72, + 72, 71, 71, 74, 72, 270, 72, 169, 155, 285, + 385, 76, 361, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 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, 72, 72, 76, + 72, 71, 71, 76, 72, 71, 73, 72, 72, 49, + -1, -1, 24, -1, 77, 77, 77, 77, 77, 77, + 74, 77, 77, 76, 76, 76, 76, 76, 76, -1, + 76, 78, 76, 76, 76, 72, 72, 72, 76, 71, + -1, 72, 72, 71, 77, 72, 71, 76, -1, -1, + 76, -1, 76, 76, 76, 76, 76, 76, 76, 72, + 76, 76, -1, -1, 78 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 79, 0, 19, 24, 37, 38, 80, 85, 97, - 126, 127, 132, 133, 145, 166, 72, 72, 72, 72, - 67, 49, 1, 27, 167, 168, 169, 1, 4, 14, - 25, 29, 33, 34, 35, 36, 39, 40, 42, 44, - 45, 46, 58, 63, 64, 66, 68, 98, 99, 100, + 0, 81, 0, 20, 25, 38, 39, 82, 87, 99, + 130, 131, 136, 137, 149, 170, 74, 74, 74, 74, + 70, 51, 1, 28, 171, 172, 173, 1, 4, 6, + 15, 26, 30, 34, 35, 36, 37, 40, 41, 43, + 45, 46, 47, 48, 60, 65, 66, 67, 69, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 1, 17, 18, 57, 146, 147, 148, 149, 150, 151, - 152, 1, 11, 12, 13, 15, 16, 31, 32, 41, - 48, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 72, 72, 75, 73, 168, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 73, 99, 10, 75, - 75, 75, 73, 147, 6, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 73, 87, 1, 27, 49, 128, - 129, 130, 131, 1, 20, 28, 30, 43, 59, 60, - 61, 62, 68, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 70, 74, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 69, 69, 82, 70, - 82, 70, 69, 69, 70, 70, 74, 72, 70, 70, - 70, 74, 72, 82, 69, 82, 69, 82, 82, 82, - 70, 70, 74, 75, 75, 73, 129, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 73, 135, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 50, 51, 52, 53, 54, 55, 56, 81, 82, 74, - 74, 74, 74, 74, 74, 74, 74, 21, 26, 30, - 121, 122, 123, 124, 125, 74, 74, 74, 1, 3, - 5, 25, 30, 47, 65, 153, 154, 155, 156, 160, - 161, 162, 163, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 70, 70, 74, 69, 69, 84, 70, 71, - 70, 69, 70, 82, 70, 74, 81, 81, 81, 81, - 81, 81, 81, 75, 75, 75, 73, 122, 157, 75, - 75, 75, 72, 75, 73, 154, 74, 74, 74, 7, - 8, 9, 83, 84, 74, 74, 76, 74, 74, 74, - 74, 74, 70, 70, 70, 74, 75, 69, 70, 70, - 69, 164, 165, 70, 74, 83, 83, 83, 69, 74, - 74, 74, 22, 23, 158, 159, 74, 74, 74, 75, - 73, 165, 74, 74, 74, 77, 70, 74, 159, 74 + 121, 122, 123, 124, 1, 18, 19, 59, 150, 151, + 152, 153, 154, 155, 156, 1, 12, 13, 14, 16, + 17, 32, 33, 42, 50, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 74, 74, 77, 75, + 172, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 75, 101, 11, 77, 77, 77, 75, 151, + 7, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 75, 89, 1, 28, 51, 132, 133, 134, 135, 1, + 6, 21, 29, 31, 44, 61, 62, 63, 64, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 72, 76, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 71, 72, 71, 84, 72, 84, 72, + 71, 72, 71, 72, 76, 74, 72, 72, 72, 76, + 74, 84, 71, 84, 71, 84, 84, 84, 72, 72, + 76, 77, 77, 75, 133, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 75, 139, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 52, 53, 54, 55, 56, 57, 58, 83, 84, 76, + 76, 76, 76, 76, 76, 76, 76, 22, 27, 31, + 125, 126, 127, 128, 129, 76, 76, 76, 1, 3, + 5, 26, 31, 49, 68, 157, 158, 159, 160, 164, + 165, 166, 167, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 72, 72, 76, 72, 71, 71, 86, 72, + 73, 72, 71, 72, 84, 76, 83, 83, 83, 83, + 83, 83, 83, 77, 77, 77, 75, 126, 161, 77, + 77, 77, 74, 77, 75, 158, 76, 76, 76, 76, + 8, 9, 10, 85, 86, 76, 76, 78, 76, 76, + 76, 76, 72, 72, 72, 76, 77, 71, 72, 72, + 71, 168, 169, 72, 76, 85, 85, 85, 71, 76, + 76, 76, 23, 24, 162, 163, 76, 76, 76, 77, + 75, 169, 76, 76, 76, 79, 72, 76, 163, 76 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 78, 79, 79, 80, 80, 80, 80, 80, 80, - 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, - 83, 83, 84, 84, 84, 84, 85, 86, 86, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 0, 80, 81, 81, 82, 82, 82, 82, 82, 82, + 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, + 85, 85, 86, 86, 86, 86, 87, 88, 88, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 100, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 120, 119, 121, 121, 122, 122, 122, 123, 124, - 125, 127, 126, 128, 128, 129, 129, 129, 130, 131, - 133, 132, 134, 134, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 146, 147, 147, 147, 147, - 147, 148, 149, 150, 152, 151, 153, 153, 154, 154, - 154, 154, 154, 154, 154, 155, 157, 156, 158, 158, - 159, 159, 160, 161, 162, 163, 164, 164, 165, 166, - 167, 167, 168, 168, 169 + 118, 119, 120, 121, 122, 124, 123, 125, 125, 126, + 126, 126, 127, 128, 129, 131, 130, 132, 132, 133, + 133, 133, 134, 135, 137, 136, 138, 138, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 150, + 151, 151, 151, 151, 151, 152, 153, 154, 156, 155, + 157, 157, 158, 158, 158, 158, 158, 158, 158, 159, + 161, 160, 162, 162, 163, 163, 164, 165, 166, 167, + 168, 168, 169, 170, 171, 171, 172, 172, 173 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 1, 1, 1, 1, 1, 1, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, @@ -948,17 +1042,17 @@ static const yytype_uint8 yyr2[] = 4, 4, 4, 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, 4, 4, 4, 4, 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, 1, 4, 0, 5, 3, 1, - 1, 1, 4, 4, 4, 5, 2, 1, 4, 5, - 2, 1, 1, 1, 4 + 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, 1, 4, + 0, 5, 3, 1, 1, 1, 4, 4, 4, 5, + 2, 1, 4, 5, 2, 1, 1, 1, 4 }; @@ -1044,7 +1138,9 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) if (yytype < YYNTOKENS) YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -1068,7 +1164,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -1091,19 +1187,19 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long yylno = yyrline[yyrule]; + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], + yystos[+yyssp[yyi + 1 - yynrhs]], &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); @@ -1148,13 +1244,13 @@ int yydebug; # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen +# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) # else /* Return the length of YYSTR. */ -static YYSIZE_T +static YYPTRDIFF_T yystrlen (const char *yystr) { - YYSIZE_T yylen; + YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -1190,12 +1286,12 @@ yystpcpy (char *yydest, const char *yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYSIZE_T +static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYSIZE_T yyn = 0; + YYPTRDIFF_T yyn = 0; char const *yyp = yystr; for (;;) @@ -1226,10 +1322,10 @@ yytnamerr (char *yyres, const char *yystr) do_not_strip_quotes: ; } - if (! yyres) + if (yyres) + return yystpcpy (yyres, yystr) - yyres; + else return yystrlen (yystr); - - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -1242,19 +1338,19 @@ yytnamerr (char *yyres, const char *yystr) *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) +yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, + yy_state_t *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ + /* Arguments of yyformat: reported tokens (one for the "unexpected", + one per "expected"). */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ + /* Actual size of YYARG. */ int yycount = 0; + /* Cumulated lengths of YYARG. */ + YYPTRDIFF_T yysize = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then @@ -1281,7 +1377,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, */ if (yytoken != YYEMPTY) { - int yyn = yypact[*yyssp]; + int yyn = yypact[+*yyssp]; + YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + yysize = yysize0; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { @@ -1306,7 +1404,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYPTRDIFF_T yysize1 + = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -1333,7 +1432,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + /* Don't count the "%s"s in the final size, but reserve room for + the terminator. */ + YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -1363,8 +1464,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } else { - yyp++; - yyformat++; + ++yyp; + ++yyformat; } } return 0; @@ -1407,7 +1508,7 @@ int yynerrs; int yyparse (void) { - int yystate; + yy_state_fast_t yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -1419,16 +1520,16 @@ yyparse (void) to reallocate them elsewhere. */ /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss; + yy_state_t *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; - YYSIZE_T yystacksize; + YYPTRDIFF_T yystacksize; int yyn; int yyresult; @@ -1442,7 +1543,7 @@ yyparse (void) /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; + YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -1474,10 +1575,14 @@ yynewstate: /*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | +| yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: - *yyssp = (yytype_int16) yystate; + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -1485,23 +1590,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ + yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -1515,9 +1620,10 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; + yy_state_t *yyss1 = yyss; union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); @@ -1531,16 +1637,16 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - if (yystate == YYFINAL) YYACCEPT; @@ -1600,15 +1706,13 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -1643,331 +1747,349 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 10: -#line 119 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = 0; } -#line 1650 "config-parser.c" /* yacc.c:1652 */ + case 10: +#line 121 "config-parser.y" + { (yyval.number) = 0; } +#line 1754 "config-parser.c" break; case 12: -#line 120 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); } -#line 1656 "config-parser.c" /* yacc.c:1652 */ +#line 122 "config-parser.y" + { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); } +#line 1760 "config-parser.c" break; case 13: -#line 121 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); } -#line 1662 "config-parser.c" /* yacc.c:1652 */ +#line 123 "config-parser.y" + { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); } +#line 1766 "config-parser.c" break; case 14: -#line 122 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); } -#line 1668 "config-parser.c" /* yacc.c:1652 */ +#line 124 "config-parser.y" + { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); } +#line 1772 "config-parser.c" break; case 15: -#line 123 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); } -#line 1674 "config-parser.c" /* yacc.c:1652 */ +#line 125 "config-parser.y" + { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); } +#line 1778 "config-parser.c" break; case 16: -#line 124 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); } -#line 1680 "config-parser.c" /* yacc.c:1652 */ +#line 126 "config-parser.y" + { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); } +#line 1784 "config-parser.c" break; case 17: -#line 125 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); } -#line 1686 "config-parser.c" /* yacc.c:1652 */ +#line 127 "config-parser.y" + { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); } +#line 1790 "config-parser.c" break; case 18: -#line 126 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); } -#line 1692 "config-parser.c" /* yacc.c:1652 */ +#line 128 "config-parser.y" + { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); } +#line 1796 "config-parser.c" break; case 19: -#line 127 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); } -#line 1698 "config-parser.c" /* yacc.c:1652 */ +#line 129 "config-parser.y" + { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); } +#line 1802 "config-parser.c" break; case 20: -#line 130 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = 0; } -#line 1704 "config-parser.c" /* yacc.c:1652 */ +#line 132 "config-parser.y" + { (yyval.number) = 0; } +#line 1808 "config-parser.c" break; case 22: -#line 131 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); } -#line 1710 "config-parser.c" /* yacc.c:1652 */ +#line 133 "config-parser.y" + { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); } +#line 1814 "config-parser.c" break; case 23: -#line 132 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); } -#line 1716 "config-parser.c" /* yacc.c:1652 */ +#line 134 "config-parser.y" + { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); } +#line 1820 "config-parser.c" break; case 24: -#line 133 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); } -#line 1722 "config-parser.c" /* yacc.c:1652 */ +#line 135 "config-parser.y" + { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); } +#line 1826 "config-parser.c" break; case 25: -#line 134 "config-parser.y" /* yacc.c:1652 */ - { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); } -#line 1728 "config-parser.c" /* yacc.c:1652 */ +#line 136 "config-parser.y" + { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); } +#line 1832 "config-parser.c" break; case 39: -#line 156 "config-parser.y" /* yacc.c:1652 */ - { +#line 158 "config-parser.y" +{ OptionsItem.negcache = (yyvsp[-1].number); } -#line 1736 "config-parser.c" /* yacc.c:1652 */ +#line 1840 "config-parser.c" break; case 40: -#line 161 "config-parser.y" /* yacc.c:1652 */ - { +#line 163 "config-parser.y" +{ OptionsItem.negcache_rebuild = (yyvsp[-1].number); } -#line 1744 "config-parser.c" /* yacc.c:1652 */ +#line 1848 "config-parser.c" break; case 41: -#line 166 "config-parser.y" /* yacc.c:1652 */ - { +#line 168 "config-parser.y" +{ xfree(OptionsItem.pidfile); OptionsItem.pidfile = xstrdup((yyvsp[-1].string)); } -#line 1753 "config-parser.c" /* yacc.c:1652 */ +#line 1857 "config-parser.c" break; case 42: -#line 172 "config-parser.y" /* yacc.c:1652 */ - { +#line 174 "config-parser.y" +{ OptionsItem.dns_fdlimit = (yyvsp[-1].number); } -#line 1761 "config-parser.c" /* yacc.c:1652 */ +#line 1865 "config-parser.c" break; case 43: -#line 177 "config-parser.y" /* yacc.c:1652 */ - { +#line 179 "config-parser.y" +{ OptionsItem.dns_timeout = (yyvsp[-1].number); } -#line 1769 "config-parser.c" /* yacc.c:1652 */ +#line 1873 "config-parser.c" break; case 44: -#line 182 "config-parser.y" /* yacc.c:1652 */ - { +#line 184 "config-parser.y" +{ xfree(OptionsItem.scanlog); OptionsItem.scanlog = xstrdup((yyvsp[-1].string)); } -#line 1778 "config-parser.c" /* yacc.c:1652 */ +#line 1882 "config-parser.c" break; case 45: -#line 188 "config-parser.y" /* yacc.c:1652 */ - { +#line 190 "config-parser.y" +{ OptionsItem.command_queue_size = (yyvsp[-1].number); } -#line 1786 "config-parser.c" /* yacc.c:1652 */ +#line 1890 "config-parser.c" break; case 46: -#line 193 "config-parser.y" /* yacc.c:1652 */ - { +#line 195 "config-parser.y" +{ OptionsItem.command_interval = (yyvsp[-1].number); } -#line 1794 "config-parser.c" /* yacc.c:1652 */ +#line 1898 "config-parser.c" break; case 47: -#line 198 "config-parser.y" /* yacc.c:1652 */ - { +#line 200 "config-parser.y" +{ OptionsItem.command_timeout = (yyvsp[-1].number); } -#line 1802 "config-parser.c" /* yacc.c:1652 */ +#line 1906 "config-parser.c" break; - case 72: -#line 232 "config-parser.y" /* yacc.c:1652 */ - { + case 74: +#line 236 "config-parser.y" +{ xfree(IRCItem.away); IRCItem.away = xstrdup((yyvsp[-1].string)); } -#line 1811 "config-parser.c" /* yacc.c:1652 */ +#line 1915 "config-parser.c" break; - case 73: -#line 238 "config-parser.y" /* yacc.c:1652 */ - { + case 75: +#line 242 "config-parser.y" +{ xfree(IRCItem.kline); IRCItem.kline = xstrdup((yyvsp[-1].string)); } -#line 1820 "config-parser.c" /* yacc.c:1652 */ +#line 1924 "config-parser.c" break; - case 74: -#line 244 "config-parser.y" /* yacc.c:1652 */ - { + case 76: +#line 248 "config-parser.y" +{ xfree(IRCItem.mode); IRCItem.mode = xstrdup((yyvsp[-1].string)); } -#line 1829 "config-parser.c" /* yacc.c:1652 */ +#line 1933 "config-parser.c" break; - case 75: -#line 250 "config-parser.y" /* yacc.c:1652 */ - { + case 77: +#line 254 "config-parser.y" +{ xfree(IRCItem.nick); IRCItem.nick = xstrdup((yyvsp[-1].string)); } -#line 1838 "config-parser.c" /* yacc.c:1652 */ +#line 1942 "config-parser.c" break; - case 76: -#line 256 "config-parser.y" /* yacc.c:1652 */ - { + case 78: +#line 260 "config-parser.y" +{ xfree(IRCItem.nickserv); IRCItem.nickserv = xstrdup((yyvsp[-1].string)); } -#line 1847 "config-parser.c" /* yacc.c:1652 */ +#line 1951 "config-parser.c" break; - case 77: -#line 262 "config-parser.y" /* yacc.c:1652 */ - { + case 79: +#line 266 "config-parser.y" +{ xfree(IRCItem.oper); IRCItem.oper = xstrdup((yyvsp[-1].string)); } -#line 1856 "config-parser.c" /* yacc.c:1652 */ +#line 1960 "config-parser.c" break; - case 78: -#line 268 "config-parser.y" /* yacc.c:1652 */ - { + case 80: +#line 272 "config-parser.y" +{ xfree(IRCItem.password); IRCItem.password = xstrdup((yyvsp[-1].string)); } -#line 1865 "config-parser.c" /* yacc.c:1652 */ +#line 1969 "config-parser.c" break; - case 79: -#line 274 "config-parser.y" /* yacc.c:1652 */ - { + case 81: +#line 278 "config-parser.y" +{ list_add(xstrdup((yyvsp[-1].string)), node_create(), &IRCItem.performs); } -#line 1873 "config-parser.c" /* yacc.c:1652 */ +#line 1977 "config-parser.c" break; - case 80: -#line 279 "config-parser.y" /* yacc.c:1652 */ - { + case 82: +#line 283 "config-parser.y" +{ list_add(xstrdup((yyvsp[-1].string)), node_create(), &IRCItem.notices); } -#line 1881 "config-parser.c" /* yacc.c:1652 */ +#line 1985 "config-parser.c" break; - case 81: -#line 284 "config-parser.y" /* yacc.c:1652 */ - { + case 83: +#line 288 "config-parser.y" +{ IRCItem.port = (yyvsp[-1].number); } -#line 1889 "config-parser.c" /* yacc.c:1652 */ +#line 1993 "config-parser.c" break; - case 82: -#line 289 "config-parser.y" /* yacc.c:1652 */ - { + case 84: +#line 293 "config-parser.y" +{ IRCItem.tls = (yyvsp[-1].number); } -#line 1897 "config-parser.c" /* yacc.c:1652 */ +#line 2001 "config-parser.c" break; - case 83: -#line 294 "config-parser.y" /* yacc.c:1652 */ - { + case 85: +#line 298 "config-parser.y" +{ + xfree(IRCItem.rsa_private_key_file); + IRCItem.rsa_private_key_file = xstrdup((yyvsp[-1].string)); +} +#line 2010 "config-parser.c" + break; + + case 86: +#line 305 "config-parser.y" +{ + xfree(IRCItem.tls_certificate_file); + IRCItem.tls_certificate_file = xstrdup((yyvsp[-1].string)); +} +#line 2019 "config-parser.c" + break; + + case 87: +#line 311 "config-parser.y" +{ IRCItem.tls_hostname_verification = (yyvsp[-1].number); } -#line 1905 "config-parser.c" /* yacc.c:1652 */ +#line 2027 "config-parser.c" break; - case 84: -#line 299 "config-parser.y" /* yacc.c:1652 */ - { + case 88: +#line 316 "config-parser.y" +{ IRCItem.readtimeout = (yyvsp[-1].number); } -#line 1913 "config-parser.c" /* yacc.c:1652 */ +#line 2035 "config-parser.c" break; - case 85: -#line 304 "config-parser.y" /* yacc.c:1652 */ - { + case 89: +#line 321 "config-parser.y" +{ IRCItem.reconnectinterval = (yyvsp[-1].number); } -#line 1921 "config-parser.c" /* yacc.c:1652 */ +#line 2043 "config-parser.c" break; - case 86: -#line 309 "config-parser.y" /* yacc.c:1652 */ - { + case 90: +#line 326 "config-parser.y" +{ xfree(IRCItem.realname); IRCItem.realname = xstrdup((yyvsp[-1].string)); } -#line 1930 "config-parser.c" /* yacc.c:1652 */ +#line 2052 "config-parser.c" break; - case 87: -#line 315 "config-parser.y" /* yacc.c:1652 */ - { + case 91: +#line 332 "config-parser.y" +{ xfree(IRCItem.server); IRCItem.server = xstrdup((yyvsp[-1].string)); } -#line 1939 "config-parser.c" /* yacc.c:1652 */ +#line 2061 "config-parser.c" break; - case 88: -#line 321 "config-parser.y" /* yacc.c:1652 */ - { + case 92: +#line 338 "config-parser.y" +{ xfree(IRCItem.username); IRCItem.username = xstrdup((yyvsp[-1].string)); } -#line 1948 "config-parser.c" /* yacc.c:1652 */ +#line 2070 "config-parser.c" break; - case 89: -#line 327 "config-parser.y" /* yacc.c:1652 */ - { - xfree(IRCItem.vhost); - IRCItem.vhost = xstrdup((yyvsp[-1].string)); + case 93: +#line 344 "config-parser.y" +{ + xfree(IRCItem.bind); + IRCItem.bind = xstrdup((yyvsp[-1].string)); } -#line 1957 "config-parser.c" /* yacc.c:1652 */ +#line 2079 "config-parser.c" break; - case 90: -#line 333 "config-parser.y" /* yacc.c:1652 */ - { + case 94: +#line 350 "config-parser.y" +{ xfree(IRCItem.connregex); IRCItem.connregex = xstrdup((yyvsp[-1].string)); } -#line 1966 "config-parser.c" /* yacc.c:1652 */ +#line 2088 "config-parser.c" break; - case 91: -#line 341 "config-parser.y" /* yacc.c:1652 */ - { + case 95: +#line 358 "config-parser.y" +{ struct ChannelConf *item; item = xcalloc(sizeof(*item)); @@ -1978,45 +2100,45 @@ yyreduce: list_add(item, &item->node, &IRCItem.channels); tmp = item; } -#line 1982 "config-parser.c" /* yacc.c:1652 */ +#line 2104 "config-parser.c" break; - case 98: -#line 362 "config-parser.y" /* yacc.c:1652 */ - { + case 102: +#line 379 "config-parser.y" +{ struct ChannelConf *item = tmp; xfree(item->name); item->name = xstrdup((yyvsp[-1].string)); } -#line 1993 "config-parser.c" /* yacc.c:1652 */ +#line 2115 "config-parser.c" break; - case 99: -#line 370 "config-parser.y" /* yacc.c:1652 */ - { + case 103: +#line 387 "config-parser.y" +{ struct ChannelConf *item = tmp; xfree(item->key); item->key = xstrdup((yyvsp[-1].string)); } -#line 2004 "config-parser.c" /* yacc.c:1652 */ +#line 2126 "config-parser.c" break; - case 100: -#line 378 "config-parser.y" /* yacc.c:1652 */ - { + case 104: +#line 395 "config-parser.y" +{ struct ChannelConf *item = tmp; xfree(item->invite); item->invite = xstrdup((yyvsp[-1].string)); } -#line 2015 "config-parser.c" /* yacc.c:1652 */ +#line 2137 "config-parser.c" break; - case 101: -#line 388 "config-parser.y" /* yacc.c:1652 */ - { + case 105: +#line 405 "config-parser.y" +{ struct UserConf *item; item = xcalloc(sizeof(*item)); @@ -2024,32 +2146,32 @@ yyreduce: list_add(item, &item->node, &UserItemList); tmp = item; } -#line 2028 "config-parser.c" /* yacc.c:1652 */ +#line 2150 "config-parser.c" break; - case 108: -#line 406 "config-parser.y" /* yacc.c:1652 */ - { + case 112: +#line 423 "config-parser.y" +{ struct UserConf *item = tmp; list_add(xstrdup((yyvsp[-1].string)), node_create(), &item->masks); } -#line 2038 "config-parser.c" /* yacc.c:1652 */ +#line 2160 "config-parser.c" break; - case 109: -#line 413 "config-parser.y" /* yacc.c:1652 */ - { + case 113: +#line 430 "config-parser.y" +{ struct UserConf *item = tmp; list_add(xstrdup((yyvsp[-1].string)), node_create(), &item->scanners); } -#line 2048 "config-parser.c" /* yacc.c:1652 */ +#line 2170 "config-parser.c" break; - case 110: -#line 422 "config-parser.y" /* yacc.c:1652 */ - { + case 114: +#line 439 "config-parser.y" +{ struct ScannerConf *item, *olditem; item = xcalloc(sizeof(*item)); @@ -2061,7 +2183,7 @@ yyreduce: { olditem = ScannerItemList.tail->data; - item->vhost = xstrdup(olditem->vhost); + item->bind = xstrdup(olditem->bind); item->fd = olditem->fd; item->target_ip = xstrdup(olditem->target_ip); item->target_port = olditem->target_port; @@ -2071,7 +2193,7 @@ yyreduce: } else { - item->vhost = xstrdup("0.0.0.0"); + item->bind = xstrdup("0.0.0.0"); item->fd = 512; item->target_ip = xstrdup("127.0.0.1"); item->target_port = 6667; @@ -2082,45 +2204,45 @@ yyreduce: list_add(item, &item->node, &ScannerItemList); tmp = item; } -#line 2086 "config-parser.c" /* yacc.c:1652 */ +#line 2208 "config-parser.c" break; - case 124: -#line 472 "config-parser.y" /* yacc.c:1652 */ - { + case 128: +#line 489 "config-parser.y" +{ struct ScannerConf *item = tmp; xfree(item->name); item->name = xstrdup((yyvsp[-1].string)); } -#line 2097 "config-parser.c" /* yacc.c:1652 */ +#line 2219 "config-parser.c" break; - case 125: -#line 480 "config-parser.y" /* yacc.c:1652 */ - { + case 129: +#line 497 "config-parser.y" +{ struct ScannerConf *item = tmp; - xfree(item->vhost); - item->vhost = xstrdup((yyvsp[-1].string)); + xfree(item->bind); + item->bind = xstrdup((yyvsp[-1].string)); } -#line 2108 "config-parser.c" /* yacc.c:1652 */ +#line 2230 "config-parser.c" break; - case 126: -#line 488 "config-parser.y" /* yacc.c:1652 */ - { + case 130: +#line 505 "config-parser.y" +{ struct ScannerConf *item = tmp; xfree(item->target_ip); item->target_ip = xstrdup((yyvsp[-1].string)); } -#line 2119 "config-parser.c" /* yacc.c:1652 */ +#line 2241 "config-parser.c" break; - case 127: -#line 496 "config-parser.y" /* yacc.c:1652 */ - { + case 131: +#line 513 "config-parser.y" +{ struct ScannerConf *item = tmp; if (item->target_string_created == 0) @@ -2131,52 +2253,52 @@ yyreduce: list_add(xstrdup((yyvsp[-1].string)), node_create(), &item->target_string); } -#line 2135 "config-parser.c" /* yacc.c:1652 */ +#line 2257 "config-parser.c" break; - case 128: -#line 509 "config-parser.y" /* yacc.c:1652 */ - { + case 132: +#line 526 "config-parser.y" +{ struct ScannerConf *item = tmp; item->fd = (yyvsp[-1].number); } -#line 2145 "config-parser.c" /* yacc.c:1652 */ +#line 2267 "config-parser.c" break; - case 129: -#line 516 "config-parser.y" /* yacc.c:1652 */ - { + case 133: +#line 533 "config-parser.y" +{ struct ScannerConf *item = tmp; item->target_port = (yyvsp[-1].number); } -#line 2155 "config-parser.c" /* yacc.c:1652 */ +#line 2277 "config-parser.c" break; - case 130: -#line 523 "config-parser.y" /* yacc.c:1652 */ - { + case 134: +#line 540 "config-parser.y" +{ struct ScannerConf *item = tmp; item->timeout = (yyvsp[-1].number); } -#line 2165 "config-parser.c" /* yacc.c:1652 */ +#line 2287 "config-parser.c" break; - case 131: -#line 530 "config-parser.y" /* yacc.c:1652 */ - { + case 135: +#line 547 "config-parser.y" +{ struct ScannerConf *item = tmp; item->max_read = (yyvsp[-1].number); } -#line 2175 "config-parser.c" /* yacc.c:1652 */ +#line 2297 "config-parser.c" break; - case 132: -#line 537 "config-parser.y" /* yacc.c:1652 */ - { + case 136: +#line 554 "config-parser.y" +{ struct ProtocolConf *item; struct ScannerConf *item2; @@ -2188,39 +2310,39 @@ yyreduce: list_add(item, node_create(), &item2->protocols); } -#line 2192 "config-parser.c" /* yacc.c:1652 */ +#line 2314 "config-parser.c" break; - case 141: -#line 564 "config-parser.y" /* yacc.c:1652 */ - { + case 145: +#line 581 "config-parser.y" +{ xfree(OpmItem.dnsbl_from); OpmItem.dnsbl_from = xstrdup((yyvsp[-1].string)); } -#line 2201 "config-parser.c" /* yacc.c:1652 */ +#line 2323 "config-parser.c" break; - case 142: -#line 570 "config-parser.y" /* yacc.c:1652 */ - { + case 146: +#line 587 "config-parser.y" +{ xfree(OpmItem.dnsbl_to); OpmItem.dnsbl_to = xstrdup((yyvsp[-1].string)); } -#line 2210 "config-parser.c" /* yacc.c:1652 */ +#line 2332 "config-parser.c" break; - case 143: -#line 576 "config-parser.y" /* yacc.c:1652 */ - { + case 147: +#line 593 "config-parser.y" +{ xfree(OpmItem.sendmail); OpmItem.sendmail = xstrdup((yyvsp[-1].string)); } -#line 2219 "config-parser.c" /* yacc.c:1652 */ +#line 2341 "config-parser.c" break; - case 144: -#line 584 "config-parser.y" /* yacc.c:1652 */ - { + case 148: +#line 601 "config-parser.y" +{ struct BlacklistConf *item; item = xcalloc(sizeof(*item)); @@ -2234,65 +2356,65 @@ yyreduce: tmp = item; } -#line 2238 "config-parser.c" /* yacc.c:1652 */ +#line 2360 "config-parser.c" break; - case 155: -#line 612 "config-parser.y" /* yacc.c:1652 */ - { + case 159: +#line 629 "config-parser.y" +{ struct BlacklistConf *item = tmp; xfree(item->name); item->name = xstrdup((yyvsp[-1].string)); } -#line 2249 "config-parser.c" /* yacc.c:1652 */ +#line 2371 "config-parser.c" break; - case 156: -#line 620 "config-parser.y" /* yacc.c:1652 */ - { + case 160: +#line 637 "config-parser.y" +{ struct BlacklistConf *item = tmp; item->ipv4 = 0; item->ipv6 = 0; } -#line 2260 "config-parser.c" /* yacc.c:1652 */ +#line 2382 "config-parser.c" break; - case 160: -#line 629 "config-parser.y" /* yacc.c:1652 */ - { + case 164: +#line 646 "config-parser.y" +{ struct BlacklistConf *item = tmp; item->ipv4 = 1; } -#line 2270 "config-parser.c" /* yacc.c:1652 */ +#line 2392 "config-parser.c" break; - case 161: -#line 634 "config-parser.y" /* yacc.c:1652 */ - { + case 165: +#line 651 "config-parser.y" +{ struct BlacklistConf *item = tmp; item->ipv6 = 1; } -#line 2280 "config-parser.c" /* yacc.c:1652 */ +#line 2402 "config-parser.c" break; - case 162: -#line 641 "config-parser.y" /* yacc.c:1652 */ - { + case 166: +#line 658 "config-parser.y" +{ struct BlacklistConf *item = tmp; xfree(item->kline); item->kline = xstrdup((yyvsp[-1].string)); } -#line 2291 "config-parser.c" /* yacc.c:1652 */ +#line 2413 "config-parser.c" break; - case 163: -#line 649 "config-parser.y" /* yacc.c:1652 */ - { + case 167: +#line 666 "config-parser.y" +{ struct BlacklistConf *item = tmp; if (strcmp("A record bitmask", (yyvsp[-1].string)) == 0) @@ -2302,22 +2424,22 @@ yyreduce: else yyerror("Unknown blacklist type defined"); } -#line 2306 "config-parser.c" /* yacc.c:1652 */ +#line 2428 "config-parser.c" break; - case 164: -#line 661 "config-parser.y" /* yacc.c:1652 */ - { + case 168: +#line 678 "config-parser.y" +{ struct BlacklistConf *item = tmp; item->ban_unknown = (yyvsp[-1].number); } -#line 2316 "config-parser.c" /* yacc.c:1652 */ +#line 2438 "config-parser.c" break; - case 168: -#line 673 "config-parser.y" /* yacc.c:1652 */ - { + case 172: +#line 690 "config-parser.y" +{ struct BlacklistReplyConf *item; struct BlacklistConf *blacklist = tmp; @@ -2327,19 +2449,20 @@ yyreduce: list_add(item, node_create(), &blacklist->reply); } -#line 2331 "config-parser.c" /* yacc.c:1652 */ +#line 2453 "config-parser.c" break; - case 174: -#line 695 "config-parser.y" /* yacc.c:1652 */ - { + case 178: +#line 712 "config-parser.y" +{ list_add(xstrdup((yyvsp[-1].string)), node_create(), &ExemptItem.masks); } -#line 2339 "config-parser.c" /* yacc.c:1652 */ +#line 2461 "config-parser.c" break; -#line 2343 "config-parser.c" /* yacc.c:1652 */ +#line 2465 "config-parser.c" + default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2402,7 +2525,7 @@ yyerrlab: { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); if (!yymsg) { yymsg = yymsgbuf; @@ -2557,7 +2680,7 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[+*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -2570,5 +2693,5 @@ yyreturn: #endif return yyresult; } -#line 699 "config-parser.y" /* yacc.c:1918 */ +#line 716 "config-parser.y" diff --git a/src/config-parser.h b/src/config-parser.h index 3ccde31..66ca320 100644 --- a/src/config-parser.h +++ b/src/config-parser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -52,158 +52,161 @@ extern int yydebug; ADDRESS_FAMILY = 258, AWAY = 259, BAN_UNKNOWN = 260, - BLACKLIST = 261, - BYTES = 262, - KBYTES = 263, - MBYTES = 264, - CHANNEL = 265, - COMMAND_INTERVAL = 266, - COMMAND_QUEUE_SIZE = 267, - COMMAND_TIMEOUT = 268, - CONNREGEX = 269, - DNS_FDLIMIT = 270, - DNS_TIMEOUT = 271, - DNSBL_FROM = 272, - DNSBL_TO = 273, - EXEMPT = 274, - FD = 275, - INVITE = 276, - IPV4 = 277, - IPV6 = 278, - IRC = 279, - KLINE = 280, - KEY = 281, - MASK = 282, - MAX_READ = 283, - MODE = 284, - NAME = 285, - NEGCACHE = 286, - NEGCACHE_REBUILD = 287, - NICK = 288, - NICKSERV = 289, - NOTICE = 290, - OPER = 291, - OPM = 292, - OPTIONS = 293, - PASSWORD = 294, - PERFORM = 295, - PIDFILE = 296, - PORT = 297, - PROTOCOL = 298, - READTIMEOUT = 299, - REALNAME = 300, - RECONNECTINTERVAL = 301, - REPLY = 302, - SCANLOG = 303, - SCANNER = 304, - SECONDS = 305, - MINUTES = 306, - HOURS = 307, - DAYS = 308, - WEEKS = 309, - MONTHS = 310, - YEARS = 311, - SENDMAIL = 312, - SERVER = 313, - TARGET_IP = 314, - TARGET_PORT = 315, - TARGET_STRING = 316, - TIMEOUT = 317, - TLS = 318, - TLS_HOSTNAME_VERIFICATION = 319, - TYPE = 320, - USERNAME = 321, - USER = 322, - VHOST = 323, - NUMBER = 324, - STRING = 325, - PROTOCOLTYPE = 326 + BIND = 261, + BLACKLIST = 262, + BYTES = 263, + KBYTES = 264, + MBYTES = 265, + CHANNEL = 266, + COMMAND_INTERVAL = 267, + COMMAND_QUEUE_SIZE = 268, + COMMAND_TIMEOUT = 269, + CONNREGEX = 270, + DNS_FDLIMIT = 271, + DNS_TIMEOUT = 272, + DNSBL_FROM = 273, + DNSBL_TO = 274, + EXEMPT = 275, + FD = 276, + INVITE = 277, + IPV4 = 278, + IPV6 = 279, + IRC = 280, + KLINE = 281, + KEY = 282, + MASK = 283, + MAX_READ = 284, + MODE = 285, + NAME = 286, + NEGCACHE = 287, + NEGCACHE_REBUILD = 288, + NICK = 289, + NICKSERV = 290, + NOTICE = 291, + OPER = 292, + OPM = 293, + OPTIONS = 294, + PASSWORD = 295, + PERFORM = 296, + PIDFILE = 297, + PORT = 298, + PROTOCOL = 299, + RSA_PRIVATE_KEY_FILE = 300, + READTIMEOUT = 301, + REALNAME = 302, + RECONNECTINTERVAL = 303, + REPLY = 304, + SCANLOG = 305, + SCANNER = 306, + SECONDS = 307, + MINUTES = 308, + HOURS = 309, + DAYS = 310, + WEEKS = 311, + MONTHS = 312, + YEARS = 313, + SENDMAIL = 314, + SERVER = 315, + TARGET_IP = 316, + TARGET_PORT = 317, + TARGET_STRING = 318, + TIMEOUT = 319, + TLS = 320, + TLS_CERTIFICATE_FILE = 321, + TLS_HOSTNAME_VERIFICATION = 322, + TYPE = 323, + USERNAME = 324, + USER = 325, + NUMBER = 326, + STRING = 327, + PROTOCOLTYPE = 328 }; #endif /* Tokens. */ #define ADDRESS_FAMILY 258 #define AWAY 259 #define BAN_UNKNOWN 260 -#define BLACKLIST 261 -#define BYTES 262 -#define KBYTES 263 -#define MBYTES 264 -#define CHANNEL 265 -#define COMMAND_INTERVAL 266 -#define COMMAND_QUEUE_SIZE 267 -#define COMMAND_TIMEOUT 268 -#define CONNREGEX 269 -#define DNS_FDLIMIT 270 -#define DNS_TIMEOUT 271 -#define DNSBL_FROM 272 -#define DNSBL_TO 273 -#define EXEMPT 274 -#define FD 275 -#define INVITE 276 -#define IPV4 277 -#define IPV6 278 -#define IRC 279 -#define KLINE 280 -#define KEY 281 -#define MASK 282 -#define MAX_READ 283 -#define MODE 284 -#define NAME 285 -#define NEGCACHE 286 -#define NEGCACHE_REBUILD 287 -#define NICK 288 -#define NICKSERV 289 -#define NOTICE 290 -#define OPER 291 -#define OPM 292 -#define OPTIONS 293 -#define PASSWORD 294 -#define PERFORM 295 -#define PIDFILE 296 -#define PORT 297 -#define PROTOCOL 298 -#define READTIMEOUT 299 -#define REALNAME 300 -#define RECONNECTINTERVAL 301 -#define REPLY 302 -#define SCANLOG 303 -#define SCANNER 304 -#define SECONDS 305 -#define MINUTES 306 -#define HOURS 307 -#define DAYS 308 -#define WEEKS 309 -#define MONTHS 310 -#define YEARS 311 -#define SENDMAIL 312 -#define SERVER 313 -#define TARGET_IP 314 -#define TARGET_PORT 315 -#define TARGET_STRING 316 -#define TIMEOUT 317 -#define TLS 318 -#define TLS_HOSTNAME_VERIFICATION 319 -#define TYPE 320 -#define USERNAME 321 -#define USER 322 -#define VHOST 323 -#define NUMBER 324 -#define STRING 325 -#define PROTOCOLTYPE 326 +#define BIND 261 +#define BLACKLIST 262 +#define BYTES 263 +#define KBYTES 264 +#define MBYTES 265 +#define CHANNEL 266 +#define COMMAND_INTERVAL 267 +#define COMMAND_QUEUE_SIZE 268 +#define COMMAND_TIMEOUT 269 +#define CONNREGEX 270 +#define DNS_FDLIMIT 271 +#define DNS_TIMEOUT 272 +#define DNSBL_FROM 273 +#define DNSBL_TO 274 +#define EXEMPT 275 +#define FD 276 +#define INVITE 277 +#define IPV4 278 +#define IPV6 279 +#define IRC 280 +#define KLINE 281 +#define KEY 282 +#define MASK 283 +#define MAX_READ 284 +#define MODE 285 +#define NAME 286 +#define NEGCACHE 287 +#define NEGCACHE_REBUILD 288 +#define NICK 289 +#define NICKSERV 290 +#define NOTICE 291 +#define OPER 292 +#define OPM 293 +#define OPTIONS 294 +#define PASSWORD 295 +#define PERFORM 296 +#define PIDFILE 297 +#define PORT 298 +#define PROTOCOL 299 +#define RSA_PRIVATE_KEY_FILE 300 +#define READTIMEOUT 301 +#define REALNAME 302 +#define RECONNECTINTERVAL 303 +#define REPLY 304 +#define SCANLOG 305 +#define SCANNER 306 +#define SECONDS 307 +#define MINUTES 308 +#define HOURS 309 +#define DAYS 310 +#define WEEKS 311 +#define MONTHS 312 +#define YEARS 313 +#define SENDMAIL 314 +#define SERVER 315 +#define TARGET_IP 316 +#define TARGET_PORT 317 +#define TARGET_STRING 318 +#define TIMEOUT 319 +#define TLS 320 +#define TLS_CERTIFICATE_FILE 321 +#define TLS_HOSTNAME_VERIFICATION 322 +#define TYPE 323 +#define USERNAME 324 +#define USER 325 +#define NUMBER 326 +#define STRING 327 +#define PROTOCOLTYPE 328 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - union YYSTYPE { -#line 93 "config-parser.y" /* yacc.c:1921 */ +#line 95 "config-parser.y" int number; char *string; -#line 205 "config-parser.h" /* yacc.c:1921 */ -}; +#line 208 "config-parser.h" +}; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 diff --git a/src/config-parser.y b/src/config-parser.y index f66513b..6db1406 100644 --- a/src/config-parser.y +++ b/src/config-parser.y @@ -33,6 +33,7 @@ static void *tmp; /* Variable to temporarily hold nodes before insertion to lis %token ADDRESS_FAMILY %token AWAY %token BAN_UNKNOWN +%token BIND %token BLACKLIST %token BYTES KBYTES MBYTES %token CHANNEL @@ -69,6 +70,7 @@ static void *tmp; /* Variable to temporarily hold nodes before insertion to lis %token PIDFILE %token PORT %token PROTOCOL +%token RSA_PRIVATE_KEY_FILE %token READTIMEOUT %token REALNAME %token RECONNECTINTERVAL @@ -83,11 +85,11 @@ static void *tmp; /* Variable to temporarily hold nodes before insertion to lis %token TARGET_STRING %token TIMEOUT %token TLS +%token TLS_CERTIFICATE_FILE %token TLS_HOSTNAME_VERIFICATION %token TYPE %token USERNAME %token USER -%token VHOST %union { @@ -216,13 +218,15 @@ irc_item: irc_away | irc_password | irc_port | irc_tls | + irc_rsa_private_key_file | + irc_tls_certificate_file | irc_tls_hostname_verification | irc_readtimeout | irc_reconnectinterval | irc_realname | irc_server | irc_username | - irc_vhost | + irc_bind | irc_perform | irc_notice | channel_entry | @@ -290,6 +294,19 @@ irc_tls: TLS '=' NUMBER ';' IRCItem.tls = $3; }; +irc_rsa_private_key_file: RSA_PRIVATE_KEY_FILE '=' STRING ';' +{ + xfree(IRCItem.rsa_private_key_file); + IRCItem.rsa_private_key_file = xstrdup($3); +}; + + +irc_tls_certificate_file: TLS_CERTIFICATE_FILE '=' STRING ';' +{ + xfree(IRCItem.tls_certificate_file); + IRCItem.tls_certificate_file = xstrdup($3); +}; + irc_tls_hostname_verification: TLS_HOSTNAME_VERIFICATION '=' NUMBER ';' { IRCItem.tls_hostname_verification = $3; @@ -323,10 +340,10 @@ irc_username: USERNAME '=' STRING ';' IRCItem.username = xstrdup($3); }; -irc_vhost: VHOST '=' STRING ';' +irc_bind: BIND '=' STRING ';' { - xfree(IRCItem.vhost); - IRCItem.vhost = xstrdup($3); + xfree(IRCItem.bind); + IRCItem.bind = xstrdup($3); }; irc_connregex: CONNREGEX '=' STRING ';' @@ -431,7 +448,7 @@ scanner_entry: { olditem = ScannerItemList.tail->data; - item->vhost = xstrdup(olditem->vhost); + item->bind = xstrdup(olditem->bind); item->fd = olditem->fd; item->target_ip = xstrdup(olditem->target_ip); item->target_port = olditem->target_port; @@ -441,7 +458,7 @@ scanner_entry: } else { - item->vhost = xstrdup("0.0.0.0"); + item->bind = xstrdup("0.0.0.0"); item->fd = 512; item->target_ip = xstrdup("127.0.0.1"); item->target_port = 6667; @@ -458,7 +475,7 @@ scanner_items: scanner_items scanner_item | scanner_item; scanner_item: scanner_name | - scanner_vhost | + scanner_bind | scanner_fd | scanner_target_ip | scanner_target_port | @@ -476,12 +493,12 @@ scanner_name: NAME '=' STRING ';' item->name = xstrdup($3); }; -scanner_vhost: VHOST '=' STRING ';' +scanner_bind: BIND '=' STRING ';' { struct ScannerConf *item = tmp; - xfree(item->vhost); - item->vhost = xstrdup($3); + xfree(item->bind); + item->bind = xstrdup($3); }; scanner_target_ip: TARGET_IP '=' STRING ';' diff --git a/src/config.c b/src/config.c index 70129b0..30a02ed 100644 --- a/src/config.c +++ b/src/config.c @@ -52,14 +52,11 @@ static void config_setup(void) { /* Setup irc {} block defaults */ - IRCItem.mode = xstrdup("+c"); IRCItem.nick = xstrdup("hopm"); IRCItem.port = 6667; - IRCItem.tls = 0; IRCItem.tls_hostname_verification = 1; IRCItem.readtimeout = 900; IRCItem.reconnectinterval = 30; - IRCItem.oper = xstrdup("undefined"); IRCItem.username = xstrdup("hopm"); IRCItem.realname = xstrdup("Hybrid Open Proxy Monitor"); IRCItem.server = xstrdup("irc.example.org"); @@ -70,7 +67,6 @@ config_setup(void) OptionsItem.command_queue_size = 64; OptionsItem.command_interval = 10; OptionsItem.command_timeout = 180; - OptionsItem.negcache = 0; /* 0 disabled negcache */ OptionsItem.negcache_rebuild = 43200; OptionsItem.pidfile = xstrdup("hopm.pid"); OptionsItem.dns_fdlimit = 50; @@ -97,8 +93,8 @@ config_load(const char *filename) yyparse(); fclose(conf_file); - scan_init(); /* Initialize the scanners once we have the configuration */ - stats_init(); /* Initialize stats (UPTIME) */ + scan_init(); /* Initialize the scanners once we have the configuration */ + stats_init(); /* Initialize stats (UPTIME) */ firedns_init(); /* Initialize adns */ } diff --git a/src/config.h b/src/config.h index 5302262..da468a5 100644 --- a/src/config.h +++ b/src/config.h @@ -40,10 +40,12 @@ struct IRCConf int port; int tls; int tls_hostname_verification; + char *rsa_private_key_file; + char *tls_certificate_file; time_t readtimeout; time_t reconnectinterval; char *password; - char *vhost; + char *bind; char *nickserv; char *oper; char *mode; @@ -88,7 +90,7 @@ struct ScannerConf node_t node; /**< List node; linked into ScannerItemList */ char *name; list_t protocols; - char *vhost; + char *bind; int fd; char *target_ip; int target_port; @@ -54,7 +54,6 @@ #include "negcache.h" #include "memory.h" #include "main.h" -#include "serno.h" /* @@ -66,7 +65,8 @@ static unsigned int IRC_RAW_LEN; /* Position of IRC_RAW static int IRC_FD = -1; /* File descriptor for IRC client */ static struct sockaddr_storage IRC_SVR; /* Sock Address Struct for IRC server */ -static socklen_t svr_addrlen; +static socklen_t IRC_SVR_LEN; +static char IRC_SVR_STR[INET6_ADDRSTRLEN]; static time_t IRC_LAST; /* Last full line of data from irc server */ static time_t IRC_LASTRECONNECT; /* Time of last reconnection */ @@ -119,17 +119,19 @@ m_perform(char *parv[], unsigned int parc, const char *msg, const char *source_p { node_t *node; - log_printf("IRC -> Connected to %s/%d", IRCItem.server, IRCItem.port); + log_printf("IRC -> Connected to %s[%s]:%i", IRC_SVR_STR, IRCItem.server, IRCItem.port); /* Identify to nickserv if needed */ if (!EmptyString(IRCItem.nickserv)) irc_send("%s", IRCItem.nickserv); /* Oper */ - irc_send("OPER %s", IRCItem.oper); + if (!EmptyString(IRCItem.oper)) + irc_send("OPER %s", IRCItem.oper); /* Set modes */ - irc_send("MODE %s %s", IRCItem.nick, IRCItem.mode); + if (!EmptyString(IRCItem.mode)) + irc_send("MODE %s %s", IRCItem.nick, IRCItem.mode); /* Set Away */ if (!EmptyString(IRCItem.away)) @@ -213,8 +215,8 @@ static void m_ctcp(char *parv[], unsigned int parc, const char *msg, const char *source_p) { if (strncasecmp(parv[3], "\001VERSION\001", 9) == 0) - irc_send("NOTICE %s :\001VERSION Hybrid Open Proxy Monitor %s(%s)\001", - source_p, VERSION, SERIALNUM); + irc_send("NOTICE %s :\001VERSION Hybrid Open Proxy Monitor %s\001", + source_p, VERSION); } /* m_privmsg @@ -468,38 +470,64 @@ userinfo_create(const char *source) static void irc_init(void) { + int n; const void *address; + struct addrinfo hints, *res = NULL; assert(IRC_FD == -1); memset(&IRC_SVR, 0, sizeof(IRC_SVR)); + if (!EmptyString(IRCItem.bind)) + { + memset(&hints, 0, sizeof(hints)); + + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_NUMERICHOST; + + n = getaddrinfo(IRCItem.bind, NULL, &hints, &res); + if (n) + { + log_printf("IRC -> getaddrinfo() error: %s", gai_strerror(n)); + exit(EXIT_FAILURE); + } + } + /* Resolve IRC host. */ - if ((address = firedns_resolveip6(IRCItem.server))) + if ((res == NULL || res->ai_family == AF_INET6) && (address = firedns_resolveip6(IRCItem.server))) { struct sockaddr_in6 *in = (struct sockaddr_in6 *)&IRC_SVR; - svr_addrlen = sizeof(*in); + IRC_SVR_LEN = sizeof(*in); IRC_SVR.ss_family = AF_INET6; in->sin6_port = htons(IRCItem.port); memcpy(&in->sin6_addr, address, sizeof(in->sin6_addr)); } - else if ((address = firedns_resolveip4(IRCItem.server))) + else if ((res == NULL || res->ai_family == AF_INET) && (address = firedns_resolveip4(IRCItem.server))) { struct sockaddr_in *in = (struct sockaddr_in *)&IRC_SVR; - svr_addrlen = sizeof(*in); + IRC_SVR_LEN = sizeof(*in); IRC_SVR.ss_family = AF_INET; in->sin_port = htons(IRCItem.port); memcpy(&in->sin_addr, address, sizeof(in->sin_addr)); } else { - log_printf("IRC -> firedns_resolveip(\"%s\"): %s", IRCItem.server, + log_printf("IRC -> Error resolving host '%s': %s", IRCItem.server, firedns_strerror(firedns_errno)); exit(EXIT_FAILURE); } + n = getnameinfo((const struct sockaddr *)&IRC_SVR, IRC_SVR_LEN, IRC_SVR_STR, + sizeof(IRC_SVR_STR), NULL, 0, NI_NUMERICHOST); + if (n) + { + log_printf("IRC -> getnameinfo() error: %s", gai_strerror(n)); + exit(EXIT_FAILURE); + } + /* Request file desc for IRC client socket */ IRC_FD = socket(IRC_SVR.ss_family, SOCK_STREAM, 0); @@ -510,25 +538,11 @@ irc_init(void) } /* Bind */ - if (!EmptyString(IRCItem.vhost)) + if (res) { - struct addrinfo hints, *res; - - memset(&hints, 0, sizeof(hints)); - - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - hints.ai_flags = AI_NUMERICHOST; - - int n = getaddrinfo(IRCItem.vhost, NULL, &hints, &res); - if (n) + if (bind(IRC_FD, res->ai_addr, res->ai_addrlen)) { - log_printf("IRC -> error binding to %s: %s", IRCItem.vhost, gai_strerror(n)); - exit(EXIT_FAILURE); - } - else if (bind(IRC_FD, res->ai_addr, res->ai_addrlen)) - { - log_printf("IRC -> error binding to %s: %s", IRCItem.vhost, strerror(errno)); + log_printf("IRC -> error binding to %s: %s", IRCItem.bind, strerror(errno)); exit(EXIT_FAILURE); } @@ -551,6 +565,31 @@ irc_init(void) exit(EXIT_FAILURE); } + if (!EmptyString(IRCItem.rsa_private_key_file) && + !EmptyString(IRCItem.tls_certificate_file)) + { + if (SSL_CTX_use_certificate_chain_file(ssl_ctx, IRCItem.tls_certificate_file) != 1) + { + log_printf("IRC -> couldn't load client certificate from %s: %s", + IRCItem.tls_certificate_file, ERR_error_string(ERR_get_error(), NULL)); + exit(EXIT_FAILURE); + } + + if (SSL_CTX_use_PrivateKey_file(ssl_ctx, IRCItem.rsa_private_key_file, SSL_FILETYPE_PEM) != 1) + { + log_printf("IRC -> couldn't load private key from %s: %s", + IRCItem.rsa_private_key_file, ERR_error_string(ERR_get_error(), NULL)); + exit(EXIT_FAILURE); + } + + if (SSL_CTX_check_private_key(ssl_ctx) != 1) + { + log_printf("IRC -> Private key does not match the client certificate: %s", + ERR_error_string(ERR_get_error(), NULL)); + exit(EXIT_FAILURE); + } + } + SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_2_VERSION); SSL_CTX_set_default_verify_paths(ssl_ctx); } @@ -635,8 +674,10 @@ irc_connect(void) irc_init(); + log_printf("IRC -> Attempting to connect to %s[%s]:%i", IRC_SVR_STR, IRCItem.server, IRCItem.port); + /* Connect to IRC server as client. */ - if (connect(IRC_FD, (struct sockaddr *)&IRC_SVR, svr_addrlen) == -1) + if (connect(IRC_FD, (struct sockaddr *)&IRC_SVR, IRC_SVR_LEN) == -1) { log_printf("IRC -> connect(): error connecting to %s: %s", IRCItem.server, strerror(errno)); @@ -828,7 +869,7 @@ irc_read(void) /* Reset counter. */ IRC_RAW_LEN = 0; - break; + return; } if (c != '\0') @@ -842,7 +883,6 @@ irc_read(void) irc_close(); IRC_RAW_LEN = 0; - return; } } diff --git a/src/libopm/src/config.c b/src/libopm/src/config.c index dfc4c48..f2d8279 100644 --- a/src/libopm/src/config.c +++ b/src/libopm/src/config.c @@ -24,8 +24,10 @@ #include "setup.h" #include <stdlib.h> +#include <string.h> #include <sys/types.h> #include <sys/socket.h> +#include <netdb.h> #include <netinet/in.h> #include <arpa/inet.h> @@ -62,7 +64,7 @@ static const OPM_CONFIG_HASH_T HASH[] = OPM_CONFIG_T * libopm_config_create(void) { - const unsigned int num = sizeof(HASH) / sizeof(OPM_CONFIG_HASH_T); + const unsigned int num = sizeof(HASH) / sizeof(HASH[0]); OPM_CONFIG_T *ret; ret = libopm_calloc(sizeof(OPM_CONFIG_T)); @@ -91,7 +93,7 @@ libopm_config_create(void) break; case OPM_TYPE_ADDRESS: - ret->vars[i] = libopm_calloc(sizeof(struct sockaddr_in)); + ret->vars[i] = libopm_calloc(sizeof(struct sockaddr_storage)); break; case OPM_TYPE_STRINGLIST: @@ -119,7 +121,7 @@ libopm_config_create(void) void libopm_config_free(OPM_CONFIG_T *config) { - const unsigned int num = sizeof(HASH) / sizeof(OPM_CONFIG_HASH_T); + const unsigned int num = sizeof(HASH) / sizeof(HASH[0]); OPM_NODE_T *p, *next; OPM_LIST_T *list; @@ -168,7 +170,7 @@ libopm_config_free(OPM_CONFIG_T *config) OPM_ERR_T libopm_config_set(OPM_CONFIG_T *config, unsigned int key, const void *value) { - const unsigned int num = sizeof(HASH) / sizeof(OPM_CONFIG_HASH_T); + const unsigned int num = sizeof(HASH) / sizeof(HASH[0]); OPM_NODE_T *node; if (key >= num) @@ -188,10 +190,29 @@ libopm_config_set(OPM_CONFIG_T *config, unsigned int key, const void *value) break; case OPM_TYPE_ADDRESS: - if (inet_pton(AF_INET, value, &(((struct sockaddr_in *)config->vars[key])->sin_addr)) <= 0) + { + struct addrinfo hints, *res; + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_NUMERICHOST; + + if (getaddrinfo(value, NULL, &hints, &res) || res->ai_family != AF_INET) /* XXX: v4 only for now */ + { + if (res) + freeaddrinfo(res); + return OPM_ERR_BADVALUE; /* Return appropriate err code */ + } + + struct sockaddr_storage *const addr = config->vars[key]; + memcpy(addr, res->ai_addr, res->ai_addrlen); + addr->ss_family = res->ai_family; + freeaddrinfo(res); break; + } case OPM_TYPE_STRINGLIST: node = libopm_node_create(libopm_strdup(value)); @@ -218,7 +239,7 @@ libopm_config_set(OPM_CONFIG_T *config, unsigned int key, const void *value) int libopm_config_gettype(int key) { - const unsigned int num = sizeof(HASH) / sizeof(OPM_CONFIG_HASH_T); + const unsigned int num = sizeof(HASH) / sizeof(HASH[0]); for (unsigned int i = 0; i < num; ++i) if (HASH[i].key == key) diff --git a/src/libopm/src/libopm.c b/src/libopm/src/libopm.c index 89b376f..d6118ff 100644 --- a/src/libopm/src/libopm.c +++ b/src/libopm/src/libopm.c @@ -29,10 +29,14 @@ #include <fcntl.h> #include <string.h> #include <stdlib.h> +#include <assert.h> #include <poll.h> #ifdef HAVE_LIBCRYPTO #include <openssl/ssl.h> #endif +#include <sys/types.h> +#include <sys/socket.h> +#include <netdb.h> #include "config.h" #include "libopm.h" @@ -392,24 +396,39 @@ libopm_protocol_config_free(OPM_PROTOCOL_CONFIG_T *protocol) OPM_ERR_T opm_scan(OPM_T *scanner, OPM_REMOTE_T *remote) { - OPM_SCAN_T *scan; /* New scan for OPM_T */ OPM_NODE_T *node; /* Node we'll add scan to when we link it to scans */ - struct in_addr in; + struct addrinfo hints, *res; if (LIST_SIZE(&scanner->protocols) == 0 && LIST_SIZE(&remote->protocols) == 0) return OPM_ERR_NOPROTOCOLS; + memset(&hints, 0, sizeof(hints)); + + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_NUMERICHOST; + /* * XXX: libopm ideally shouldn't see an IP address in string representation. * Could have been stuffed into the _OPM_REMOTE struct by the caller that * already does getaddrinfo() anyway. */ - if (inet_pton(AF_INET, remote->ip, &in) <= 0) + if (getaddrinfo(remote->ip, NULL, &hints, &res) || res->ai_family != AF_INET) /* XXX: only do v4 for now */ + { + if (res) + freeaddrinfo(res); + return OPM_ERR_BADADDR; + } + + OPM_SCAN_T *scan = libopm_scan_create(scanner, remote); - scan = libopm_scan_create(scanner, remote); - memcpy(&scan->addr.sin_addr, &in, sizeof(scan->addr.sin_addr)); + memcpy(&scan->addr, res->ai_addr, res->ai_addrlen); + scan->addr.ss_family = res->ai_family; + scan->addr_len = res->ai_addrlen; + + freeaddrinfo(res); node = libopm_node_create(scan); libopm_list_add(&scanner->queue, node); @@ -891,19 +910,16 @@ libopm_check_closed(OPM_T *scanner) static void libopm_do_connect(OPM_T * scanner, OPM_SCAN_T *scan, OPM_CONNECTION_T *conn) { - struct sockaddr_in *bind_ip; - struct sockaddr_in *addr; /* Outgoing host */ - struct sockaddr_in local_addr; /* For binding */ - - addr = &scan->addr; /* Already have the IP in byte format from opm_scan */ - addr->sin_family = AF_INET; - addr->sin_port = htons(conn->port); + assert(scan->addr.ss_family == AF_INET); - bind_ip = (struct sockaddr_in *)libopm_config(scanner->config, OPM_CONFIG_BIND_IP); + if (scan->addr.ss_family == AF_INET6) + ((struct sockaddr_in6 *)&scan->addr)->sin6_port = htons(conn->port); + else + ((struct sockaddr_in *)&scan->addr)->sin_port = htons(conn->port); - conn->fd = socket(AF_INET, SOCK_STREAM, 0); scanner->fd_use++; /* Increase file descriptor use */ + conn->fd = socket(scan->addr.ss_family, SOCK_STREAM, 0); if (conn->fd == -1) { libopm_do_callback(scanner, libopm_setup_remote(scan->remote, conn), OPM_CALLBACK_ERROR, OPM_ERR_NOFD); @@ -911,15 +927,25 @@ libopm_do_connect(OPM_T * scanner, OPM_SCAN_T *scan, OPM_CONNECTION_T *conn) return; } + struct sockaddr_storage *bind_ip = libopm_config(scanner->config, OPM_CONFIG_BIND_IP); if (bind_ip) { - memset(&local_addr, 0, sizeof(local_addr)); + size_t addr_len; - local_addr.sin_addr.s_addr = bind_ip->sin_addr.s_addr; - local_addr.sin_family = AF_INET; - local_addr.sin_port = htons(0); + if (bind_ip->ss_family == AF_INET6) + { + struct sockaddr_in6 *in = (struct sockaddr_in6 *)bind_ip; + in->sin6_port = htons(0); + addr_len = sizeof(*in); + } + else + { + struct sockaddr_in *in = (struct sockaddr_in *)bind_ip; + in->sin_port = htons(0); + addr_len = sizeof(*in); + } - if (bind(conn->fd, (struct sockaddr *)&local_addr, sizeof(local_addr)) == -1) + if (bind(conn->fd, (const struct sockaddr *)bind_ip, addr_len) == -1) { libopm_do_callback(scanner, libopm_setup_remote(scan->remote, conn), OPM_CALLBACK_ERROR, OPM_ERR_BIND); conn->state = OPM_STATE_CLOSED; @@ -930,7 +956,7 @@ libopm_do_connect(OPM_T * scanner, OPM_SCAN_T *scan, OPM_CONNECTION_T *conn) /* Set socket non blocking */ fcntl(conn->fd, F_SETFL, O_NONBLOCK); - connect(conn->fd, (struct sockaddr *)addr, sizeof(*addr)); + connect(conn->fd, (const struct sockaddr *)&scan->addr, scan->addr_len); #ifdef HAVE_LIBCRYPTO if (conn->protocol->use_tls) diff --git a/src/libopm/src/libopm.h b/src/libopm/src/libopm.h index ca03512..1e0a9cb 100644 --- a/src/libopm/src/libopm.h +++ b/src/libopm/src/libopm.h @@ -29,7 +29,8 @@ typedef int OPM_PROXYREAD_T (OPM_T *, OPM_SCAN_T *, OPM_CONNECTION_T *); struct _OPM_SCAN { - struct sockaddr_in addr; /* Address in byte order of remote client */ + struct sockaddr_storage addr; /* Address in byte order of remote client */ + size_t addr_len; OPM_REMOTE_T *remote; /* Pointed to the OPM_REMOTE_T for this scan, passed by client */ OPM_LIST_T connections; /* List of individual connections of this scan (1 for each protocol) */ }; diff --git a/src/patchlevel.h b/src/patchlevel.h index e432bae..415cdac 100644 --- a/src/patchlevel.h +++ b/src/patchlevel.h @@ -4,5 +4,5 @@ */ #ifndef PATCHLEVEL -#define PATCHLEVEL "hopm-1.1.8" +#define PATCHLEVEL "hopm-1.1.9" #endif @@ -217,7 +217,7 @@ scan_init(void) opm_config(scs->scanner, OPM_CONFIG_SCAN_PORT, &sc->target_port); opm_config(scs->scanner, OPM_CONFIG_TIMEOUT, &sc->timeout); opm_config(scs->scanner, OPM_CONFIG_MAX_READ, &sc->max_read); - opm_config(scs->scanner, OPM_CONFIG_BIND_IP, sc->vhost); + opm_config(scs->scanner, OPM_CONFIG_BIND_IP, sc->bind); /* add target strings */ LIST_FOREACH(p2, sc->target_string.head) diff --git a/src/serno.h b/src/serno.h deleted file mode 100644 index bdad155..0000000 --- a/src/serno.h +++ /dev/null @@ -1 +0,0 @@ -#define SERIALNUM "SVN" |
