aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am1
-rw-r--r--src/Makefile.in1
-rw-r--r--src/config-lexer.c1039
-rw-r--r--src/config-lexer.l4
-rw-r--r--src/config-parser.c1705
-rw-r--r--src/config-parser.h279
-rw-r--r--src/config-parser.y39
-rw-r--r--src/config.c8
-rw-r--r--src/config.h6
-rw-r--r--src/irc.c104
-rw-r--r--src/libopm/src/config.c33
-rw-r--r--src/libopm/src/libopm.c66
-rw-r--r--src/libopm/src/libopm.h3
-rw-r--r--src/patchlevel.h2
-rw-r--r--src/scan.c2
-rw-r--r--src/serno.h1
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;
diff --git a/src/irc.c b/src/irc.c
index cb34440..efe9daa 100644
--- a/src/irc.c
+++ b/src/irc.c
@@ -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
diff --git a/src/scan.c b/src/scan.c
index b287f4f..79d380f 100644
--- a/src/scan.c
+++ b/src/scan.c
@@ -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"