diff options
author | Unit 193 <unit193@unit193.net> | 2020-10-12 17:28:11 -0400 |
---|---|---|
committer | Unit 193 <unit193@unit193.net> | 2020-10-12 17:28:11 -0400 |
commit | de54987ff29489950322f3408ea91651f4f48b4a (patch) | |
tree | 83b1044de758ca3035dd2b1ec2a500b091f9ec37 | |
parent | f3179749aec8eec40166576bef7e0daf893939d4 (diff) | |
download | hopm-de54987ff29489950322f3408ea91651f4f48b4a.tar.bz2 hopm-de54987ff29489950322f3408ea91651f4f48b4a.tar.xz hopm-de54987ff29489950322f3408ea91651f4f48b4a.tar.zst |
New upstream version 1.1.8.upstream/1.1.8
-rw-r--r-- | NEWS | 9 | ||||
-rwxr-xr-x | configure | 28 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | doc/reference.conf | 11 | ||||
-rw-r--r-- | m4/ax_arg_openssl.m4 | 4 | ||||
-rw-r--r-- | src/config-lexer.c | 868 | ||||
-rw-r--r-- | src/config-lexer.l | 2 | ||||
-rw-r--r-- | src/config-parser.c | 991 | ||||
-rw-r--r-- | src/config-parser.h | 36 | ||||
-rw-r--r-- | src/config-parser.y | 14 | ||||
-rw-r--r-- | src/config.c | 2 | ||||
-rw-r--r-- | src/config.h | 2 | ||||
-rw-r--r-- | src/irc.c | 158 | ||||
-rw-r--r-- | src/patchlevel.h | 2 |
14 files changed, 1163 insertions, 966 deletions
@@ -1,3 +1,12 @@ +-- Noteworthy changes in version 1.1.8 (2020-07-05) +o) Minimum supported OpenSSL version is 1.1.1 now +o) Experimental TLS support for the irc client part has been implemented. We + only do TLSv1.2 and higher +o) The irc::tls and irc::tls_hostname_verification configuration directives + have been added +o) A possible out-of-bounds write in the irc parser logic has been fixed + + -- Noteworthy changes in version 1.1.7 (2020-04-19) o) Fixed github issue #31: hopm attempts to open stderr for logging in non-debug/fork mode which can cause hopm to exit silently @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac Id: configure.ac 8848 2019-02-09 18:31:58Z michael . +# From configure.ac Id: configure.ac 9327 2020-03-29 13:15:12Z michael . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for hopm 1.1.7. +# Generated by GNU Autoconf 2.69 for hopm 1.1.8. # # Report bugs to <bugs@ircd-hybrid.org>. # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='hopm' PACKAGE_TARNAME='hopm' -PACKAGE_VERSION='1.1.7' -PACKAGE_STRING='hopm 1.1.7' +PACKAGE_VERSION='1.1.8' +PACKAGE_STRING='hopm 1.1.8' PACKAGE_BUGREPORT='bugs@ircd-hybrid.org' PACKAGE_URL='' @@ -1341,7 +1341,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures hopm 1.1.7 to adapt to many kinds of systems. +\`configure' configures hopm 1.1.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1412,7 +1412,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of hopm 1.1.7:";; + short | recursive ) echo "Configuration of hopm 1.1.8:";; esac cat <<\_ACEOF @@ -1537,7 +1537,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -hopm configure 1.1.7 +hopm configure 1.1.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1815,7 +1815,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by hopm $as_me 1.1.7, which was +It was created by hopm $as_me 1.1.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2678,7 +2678,7 @@ fi # Define the identity of the package. PACKAGE='hopm' - VERSION='1.1.7' + VERSION='1.1.8' cat >>confdefs.h <<_ACEOF @@ -12668,8 +12668,8 @@ $as_echo "disabled" >&6; } fi if test "$cf_enable_openssl" != "no"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LibreSSL or OpenSSL 1.0.1f and above" >&5 -$as_echo_n "checking for LibreSSL or OpenSSL 1.0.1f and above... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LibreSSL" >&5 +$as_echo_n "checking for LibreSSL... " >&6; } if test "$cross_compiling" = yes; then : cf_openssl_version_ok=no else @@ -12682,7 +12682,7 @@ else int main () { - exit(!(OPENSSL_VERSION_NUMBER >= 0x1000106fL)); + exit(!(OPENSSL_VERSION_NUMBER >= 0x1010100fL)); ; return 0; } @@ -15480,7 +15480,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by hopm $as_me 1.1.7, which was +This file was extended by hopm $as_me 1.1.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15546,7 +15546,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -hopm config.status 1.1.7 +hopm config.status 1.1.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 7b3eabc..ded84eb 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ dnl Process this file with autoconf to produce a configure script. AC_REVISION([$Id$]) AC_PREREQ(2.69) -AC_INIT([hopm], [1.1.7], [bugs@ircd-hybrid.org]) +AC_INIT([hopm], [1.1.8], [bugs@ircd-hybrid.org]) AM_INIT_AUTOMAKE(1.15) AM_MAINTAINER_MODE AC_CONFIG_SRCDIR(src/opercmd.h) diff --git a/doc/reference.conf b/doc/reference.conf index 0c4a2bb..69eb210 100644 --- a/doc/reference.conf +++ b/doc/reference.conf @@ -143,6 +143,17 @@ irc { port = 6667; /* + * Whether to use TLS when connecting to the above server. + */ + tls = no; + + /* + * Checks if the host name defined above matches the identity in the + * certificate. + */ + tls_hostname_verification = yes; + + /* * Defines time in which bot will timeout if no data is received */ readtimeout = 15 minutes; diff --git a/m4/ax_arg_openssl.m4 b/m4/ax_arg_openssl.m4 index 972dfd0..7391873 100644 --- a/m4/ax_arg_openssl.m4 +++ b/m4/ax_arg_openssl.m4 @@ -61,12 +61,12 @@ else fi AS_IF([test "$cf_enable_openssl" != "no"], - [AC_MSG_CHECKING(for LibreSSL or OpenSSL 1.0.1f and above) + [AC_MSG_CHECKING(for LibreSSL, or OpenSSL 1.1.1 and above) AC_RUN_IFELSE([ AC_LANG_PROGRAM([ #include <openssl/opensslv.h> #include <stdlib.h>], - [[ exit(!(OPENSSL_VERSION_NUMBER >= 0x1000106fL)); ]])], + [[ exit(!(OPENSSL_VERSION_NUMBER >= 0x1010100fL)); ]])], [cf_openssl_version_ok=yes], [cf_openssl_version_ok=no], [cf_openssl_version_ok=no]) diff --git a/src/config-lexer.c b/src/config-lexer.c index 451d6f7..7ede571 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 108 -#define YY_END_OF_BUFFER 109 +#define YY_NUM_RULES 110 +#define YY_END_OF_BUFFER 111 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -364,59 +364,63 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[469] = +static const flex_int16_t yy_accept[493] = { 0, - 7, 7, 0, 0, 109, 107, 7, 6, 107, 8, - 107, 107, 9, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 3, 4, 3, 7, 6, 0, 10, + 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, 85, 0, 0, 0, 0, 90, 0, - 0, 0, 0, 0, 0, 105, 0, 103, 0, 0, + 0, 0, 0, 87, 0, 0, 0, 0, 92, 0, + 0, 0, 0, 0, 0, 107, 0, 105, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, - 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 106, 0, 42, 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, 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, - 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 102, 0, 0, 12, 0, 0, 80, 0, - 0, 0, 71, 0, 0, 0, 0, 0, 74, 91, - 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, 101, 61, 62, 0, - 70, 0, 66, 0, 0, 0, 0, 79, 0, 0, - 0, 0, 0, 0, 0, 0, 104, 73, 0, 93, - 0, 84, 0, 30, 0, 89, 0, 0, 68, 0, + 24, 0, 0, 26, 85, 0, 0, 90, 0, 78, + + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 69, 0, 65, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 24, 0, 0, 26, - 83, 0, 0, 88, 0, 76, 67, 0, 0, 40, - - 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, - 0, 78, 0, 56, 95, 96, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, - 43, 0, 45, 46, 0, 0, 0, 0, 53, 54, - 77, 0, 0, 60, 0, 97, 0, 0, 0, 0, - 0, 0, 0, 23, 0, 0, 99, 92, 0, 82, - 33, 87, 36, 39, 44, 48, 0, 50, 0, 55, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 14, - 0, 0, 0, 19, 0, 0, 0, 94, 81, 86, - - 0, 0, 0, 57, 0, 0, 0, 5, 0, 5, - 0, 0, 0, 0, 0, 22, 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, 59, 11, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, - 16, 0, 37, 0, 0, 51, 17, 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 + } ; static const YY_CHAR yy_ec[256] = @@ -462,119 +466,125 @@ static const YY_CHAR yy_meta[66] = 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[475] = +static const flex_int16_t yy_base[499] = { 0, - 0, 0, 63, 64, 924, 925, 921, 0, 68, 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, 159, 54, - 69, 128, 119, 925, 925, 914, 914, 0, 93, 925, - 0, 112, 925, 0, 208, 136, 140, 148, 161, 145, - 169, 161, 157, 174, 192, 203, 199, 925, 192, 194, - 193, 195, 214, 196, 197, 211, 216, 208, 204, 222, - 217, 228, 221, 228, 234, 225, 239, 925, 257, 231, - 236, 256, 247, 251, 265, 252, 272, 280, 271, 269, - 261, 269, 262, 269, 280, 273, 284, 283, 300, 925, - - 302, 295, 290, 874, 313, 312, 307, 309, 311, 307, - 326, 328, 318, 314, 316, 319, 326, 132, 925, 317, - 925, 323, 326, 331, 872, 326, 347, 329, 348, 338, - 359, 363, 358, 360, 925, 353, 925, 363, 355, 370, - 371, 359, 361, 377, 368, 373, 366, 373, 373, 385, - 370, 383, 925, 390, 395, 396, 400, 392, 398, 408, - 413, 404, 925, 411, 419, 925, 405, 418, 411, 417, - 431, 416, 925, 423, 430, 425, 423, 434, 422, 452, - 424, 925, 925, 440, 450, 448, 925, 440, 456, 466, - 453, 925, 465, 925, 473, 458, 474, 925, 466, 459, - - 468, 475, 925, 471, 467, 475, 476, 466, 486, 484, - 479, 489, 499, 487, 504, 499, 925, 925, 506, 501, - 504, 523, 507, 506, 510, 516, 521, 925, 528, 521, - 531, 870, 533, 529, 538, 522, 925, 925, 528, 528, - 539, 529, 525, 925, 548, 538, 533, 556, 547, 568, - 567, 569, 563, 563, 561, 569, 578, 575, 584, 573, - 925, 571, 575, 585, 588, 592, 577, 94, 576, 576, - 598, 925, 925, 582, 925, 601, 590, 599, 604, 606, - 619, 617, 622, 615, 617, 616, 925, 614, 619, 925, - 925, 617, 636, 925, 619, 622, 925, 634, 627, 925, - - 627, 629, 635, 643, 637, 641, 645, 655, 925, 654, - 648, 651, 666, 925, 925, 925, 867, 657, 666, 675, - 676, 863, 669, 666, 925, 858, 680, 671, 675, 681, - 687, 670, 675, 678, 692, 694, 694, 925, 695, 682, - 925, 701, 925, 925, 698, 707, 708, 714, 925, 925, - 925, 710, 718, 925, 723, 925, 742, 728, 723, 721, - 733, 721, 731, 925, 734, 734, 925, 925, 731, 733, - 925, 737, 857, 925, 925, 925, 742, 925, 738, 925, - 743, 747, 745, 925, 798, 451, 326, 764, 745, 925, - 756, 753, 770, 925, 768, 776, 769, 925, 925, 925, - - 775, 774, 787, 925, 781, 783, 260, 188, 177, 127, - 789, 789, 784, 799, 795, 925, 789, 790, 805, 793, - 800, 795, 807, 808, 925, 814, 801, 818, 925, 925, - 823, 925, 812, 925, 819, 826, 824, 839, 832, 828, - 845, 845, 829, 833, 97, 835, 847, 842, 925, 925, - 859, 843, 843, 853, 844, 855, 859, 925, 865, 870, - 925, 848, 925, 864, 872, 925, 925, 925, 917, 133, - 919, 132, 100, 97 + 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 + } ; -static const flex_int16_t yy_def[475] = +static const flex_int16_t yy_def[499] = { 0, - 468, 1, 469, 469, 468, 468, 468, 470, 471, 472, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 470, 471, 468, - 472, 468, 468, 472, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 473, 474, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - - 468, 468, 468, 468, 468, 468, 473, 473, 474, 474, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 0, 468, 468, - 468, 468, 468, 468 + 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 + } ; -static const flex_int16_t yy_nxt[991] = +static const flex_int16_t yy_nxt[1038] = { 0, 6, 7, 8, 9, 10, 6, 11, 12, 13, 13, 13, 13, 6, 6, 14, 15, 16, 17, 18, 19, @@ -584,109 +594,115 @@ static const flex_int16_t yy_nxt[991] = 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, 95, 52, 58, 60, 49, - 96, 47, 85, 42, 54, 40, 40, 409, 55, 46, + 51, 56, 53, 59, 57, 96, 52, 58, 60, 49, + 97, 47, 85, 42, 54, 40, 40, 417, 55, 46, - 407, 86, 50, 315, 316, 48, 51, 56, 53, 59, - 57, 95, 52, 58, 60, 49, 96, 47, 85, 61, + 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, 452, 99, 101, 76, - 410, 182, 78, 183, 79, 61, 97, 62, 64, 63, - 98, 65, 73, 102, 103, 66, 74, 67, 68, 69, - 75, 77, 70, 99, 101, 76, 71, 87, 78, 88, - 79, 72, 97, 91, 104, 105, 98, 106, 89, 102, - 103, 92, 90, 107, 68, 69, 108, 109, 70, 93, - 410, 408, 71, 87, 110, 88, 94, 72, 80, 91, - - 104, 105, 81, 106, 89, 111, 82, 92, 90, 107, - 112, 83, 108, 109, 84, 93, 45, 45, 45, 45, - 110, 113, 94, 114, 80, 115, 116, 117, 81, 118, - 119, 111, 82, 120, 121, 122, 112, 83, 123, 124, - 84, 126, 127, 128, 125, 129, 131, 113, 132, 114, - 133, 115, 116, 117, 130, 118, 119, 134, 135, 120, - 121, 122, 139, 408, 123, 124, 140, 126, 127, 128, - 125, 129, 131, 141, 132, 136, 133, 142, 143, 144, - 130, 145, 137, 134, 135, 147, 148, 152, 139, 138, - 153, 154, 140, 146, 155, 156, 149, 157, 158, 141, - - 159, 136, 160, 142, 143, 144, 150, 145, 137, 161, - 151, 147, 148, 152, 162, 138, 153, 154, 164, 146, - 155, 156, 149, 157, 158, 165, 159, 166, 160, 168, - 169, 163, 150, 170, 171, 161, 151, 172, 173, 410, - 162, 174, 176, 177, 164, 178, 179, 180, 181, 184, - 185, 165, 186, 166, 187, 168, 169, 163, 189, 170, - 171, 190, 191, 172, 173, 175, 192, 174, 176, 177, - 193, 178, 179, 180, 181, 184, 185, 194, 186, 195, - 187, 196, 197, 198, 189, 199, 200, 190, 191, 201, - 202, 203, 192, 204, 205, 207, 193, 208, 209, 210, - - 211, 206, 212, 194, 213, 195, 214, 196, 197, 198, - 215, 199, 200, 216, 217, 201, 202, 203, 218, 204, - 205, 207, 219, 208, 209, 210, 211, 206, 212, 220, - 213, 221, 214, 222, 223, 224, 215, 225, 226, 216, - 217, 227, 228, 229, 218, 230, 231, 232, 219, 233, - 235, 236, 237, 238, 408, 220, 241, 221, 242, 222, - 223, 224, 234, 225, 226, 243, 244, 227, 228, 229, - 245, 230, 231, 232, 246, 233, 235, 236, 237, 238, - 239, 247, 241, 240, 242, 248, 249, 250, 234, 251, - 252, 243, 244, 253, 254, 255, 245, 256, 257, 258, - - 246, 259, 260, 261, 262, 265, 239, 247, 263, 240, - 264, 248, 249, 250, 266, 251, 252, 267, 268, 253, - 254, 255, 269, 256, 257, 258, 270, 259, 260, 261, - 262, 265, 271, 272, 263, 273, 264, 274, 275, 276, - 266, 277, 278, 267, 268, 279, 280, 281, 269, 282, - 284, 285, 270, 286, 287, 288, 289, 290, 271, 272, - 291, 273, 292, 274, 275, 276, 293, 277, 278, 294, - 295, 279, 280, 281, 296, 282, 284, 285, 297, 286, - 287, 288, 289, 290, 298, 299, 291, 300, 292, 301, + 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, 309, 310, 311, 297, 312, 313, 314, 317, 318, - 298, 299, 319, 300, 320, 301, 302, 303, 321, 304, - 305, 322, 323, 306, 307, 308, 324, 309, 310, 311, - 325, 312, 313, 314, 317, 318, 326, 327, 319, 330, - 320, 328, 331, 332, 321, 333, 334, 322, 323, 335, - 336, 337, 324, 338, 329, 339, 325, 340, 341, 342, - 343, 344, 326, 327, 345, 330, 346, 328, 331, 332, - 347, 333, 334, 348, 349, 335, 336, 337, 350, 338, - 329, 339, 351, 340, 341, 342, 343, 344, 352, 354, - 345, 355, 346, 356, 357, 359, 347, 360, 362, 348, - - 349, 363, 364, 365, 350, 366, 367, 368, 351, 369, - 370, 371, 372, 373, 352, 354, 374, 355, 375, 356, - 357, 359, 376, 360, 362, 377, 378, 363, 364, 365, - 379, 366, 367, 368, 380, 369, 370, 371, 372, 373, - 381, 384, 374, 385, 375, 386, 382, 388, 376, 383, - 389, 377, 378, 390, 387, 391, 379, 394, 395, 396, - 380, 397, 392, 398, 399, 393, 381, 384, 400, 402, - 403, 404, 382, 388, 405, 383, 389, 406, 411, 390, - 412, 391, 413, 394, 395, 396, 414, 397, 392, 398, - 399, 393, 415, 416, 400, 402, 403, 404, 417, 385, - - 405, 386, 418, 406, 411, 419, 412, 420, 413, 421, - 387, 422, 414, 423, 424, 425, 426, 427, 415, 416, - 428, 429, 430, 431, 417, 432, 433, 434, 418, 435, - 436, 419, 437, 420, 438, 421, 439, 422, 440, 423, - 424, 425, 426, 427, 441, 442, 428, 429, 430, 431, - 443, 432, 433, 434, 444, 435, 436, 445, 437, 446, - 438, 447, 439, 448, 440, 449, 450, 451, 453, 454, - 441, 442, 455, 456, 457, 458, 443, 459, 460, 461, - 444, 462, 463, 445, 464, 446, 465, 447, 466, 448, - 467, 449, 450, 451, 453, 454, 401, 361, 455, 456, - - 457, 458, 358, 459, 460, 461, 353, 462, 463, 283, - 464, 188, 465, 167, 466, 37, 467, 34, 34, 39, - 39, 100, 37, 468, 5, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468 + 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 } ; -static const flex_int16_t yy_chk[991] = +static const flex_int16_t yy_chk[1038] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -697,105 +713,111 @@ static const flex_int16_t yy_chk[991] = 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, 474, 17, 14, + 31, 14, 27, 11, 17, 39, 39, 498, 17, 14, - 473, 27, 15, 268, 268, 15, 16, 18, 17, 20, + 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, 472, 470, 24, 25, 445, 33, 42, 24, - 410, 118, 25, 118, 25, 21, 32, 21, 22, 21, + 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, 29, 48, 49, 32, 50, 28, 46, - 47, 29, 28, 51, 23, 23, 52, 52, 23, 29, - 409, 408, 23, 28, 53, 28, 29, 23, 26, 29, - - 48, 49, 26, 50, 28, 54, 26, 29, 28, 51, - 55, 26, 52, 52, 26, 29, 45, 45, 45, 45, - 53, 56, 29, 57, 26, 59, 60, 61, 26, 62, - 63, 54, 26, 64, 65, 66, 55, 26, 67, 68, - 26, 69, 70, 71, 68, 72, 73, 56, 74, 57, - 75, 59, 60, 61, 72, 62, 63, 76, 77, 64, - 65, 66, 80, 407, 67, 68, 81, 69, 70, 71, - 68, 72, 73, 82, 74, 79, 75, 83, 84, 85, - 72, 85, 79, 76, 77, 86, 87, 89, 80, 79, - 90, 91, 81, 85, 92, 93, 88, 94, 95, 82, - - 96, 79, 97, 83, 84, 85, 88, 85, 79, 98, - 88, 86, 87, 89, 99, 79, 90, 91, 101, 85, - 92, 93, 88, 94, 95, 102, 96, 103, 97, 105, - 106, 99, 88, 107, 108, 98, 88, 109, 110, 387, - 99, 111, 112, 113, 101, 114, 115, 116, 117, 120, - 122, 102, 123, 103, 124, 105, 106, 99, 126, 107, - 108, 127, 128, 109, 110, 111, 129, 111, 112, 113, - 130, 114, 115, 116, 117, 120, 122, 131, 123, 132, - 124, 133, 134, 136, 126, 138, 139, 127, 128, 140, - 141, 142, 129, 143, 144, 145, 130, 146, 147, 148, - - 149, 144, 150, 131, 151, 132, 152, 133, 134, 136, - 154, 138, 139, 155, 156, 140, 141, 142, 157, 143, - 144, 145, 158, 146, 147, 148, 149, 144, 150, 159, - 151, 160, 152, 161, 162, 164, 154, 165, 167, 155, - 156, 168, 169, 170, 157, 171, 172, 174, 158, 175, - 176, 177, 178, 179, 386, 159, 181, 160, 184, 161, - 162, 164, 175, 165, 167, 185, 186, 168, 169, 170, - 188, 171, 172, 174, 189, 175, 176, 177, 178, 179, - 180, 190, 181, 180, 184, 191, 193, 195, 175, 196, - 197, 185, 186, 199, 200, 201, 188, 202, 204, 205, - - 189, 206, 207, 208, 209, 211, 180, 190, 210, 180, - 210, 191, 193, 195, 212, 196, 197, 213, 214, 199, - 200, 201, 215, 202, 204, 205, 216, 206, 207, 208, - 209, 211, 219, 220, 210, 221, 210, 222, 223, 224, - 212, 225, 226, 213, 214, 227, 229, 230, 215, 231, - 233, 234, 216, 235, 236, 239, 240, 241, 219, 220, - 242, 221, 243, 222, 223, 224, 245, 225, 226, 246, - 247, 227, 229, 230, 248, 231, 233, 234, 249, 235, - 236, 239, 240, 241, 250, 251, 242, 252, 243, 253, - 254, 255, 245, 256, 257, 246, 247, 258, 259, 260, - - 248, 262, 263, 264, 249, 265, 266, 267, 269, 270, - 250, 251, 271, 252, 274, 253, 254, 255, 276, 256, - 257, 277, 278, 258, 259, 260, 279, 262, 263, 264, - 280, 265, 266, 267, 269, 270, 281, 282, 271, 284, - 274, 283, 285, 286, 276, 288, 289, 277, 278, 292, - 293, 295, 279, 296, 283, 298, 280, 299, 301, 302, - 303, 304, 281, 282, 305, 284, 306, 283, 285, 286, - 307, 288, 289, 308, 310, 292, 293, 295, 311, 296, - 283, 298, 312, 299, 301, 302, 303, 304, 313, 318, - 305, 319, 306, 320, 321, 323, 307, 324, 327, 308, - - 310, 328, 329, 330, 311, 331, 332, 333, 312, 334, - 335, 336, 337, 339, 313, 318, 340, 319, 342, 320, - 321, 323, 345, 324, 327, 346, 347, 328, 329, 330, - 348, 331, 332, 333, 352, 334, 335, 336, 337, 339, - 353, 355, 340, 357, 342, 357, 353, 358, 345, 353, - 359, 346, 347, 360, 357, 361, 348, 362, 363, 365, - 352, 366, 361, 369, 370, 361, 353, 355, 372, 377, - 379, 381, 353, 358, 382, 353, 359, 383, 388, 360, - 389, 361, 391, 362, 363, 365, 392, 366, 361, 369, - 370, 361, 393, 395, 372, 377, 379, 381, 396, 385, - - 382, 385, 397, 383, 388, 401, 389, 402, 391, 403, - 385, 405, 392, 406, 411, 412, 413, 414, 393, 395, - 415, 417, 418, 419, 396, 420, 421, 422, 397, 423, - 424, 401, 426, 402, 427, 403, 428, 405, 431, 406, - 411, 412, 413, 414, 433, 435, 415, 417, 418, 419, - 436, 420, 421, 422, 437, 423, 424, 438, 426, 439, - 427, 440, 428, 441, 431, 442, 443, 444, 446, 447, - 433, 435, 448, 451, 452, 453, 436, 454, 455, 456, - 437, 457, 459, 438, 460, 439, 462, 440, 464, 441, - 465, 442, 443, 444, 446, 447, 373, 326, 448, 451, - - 452, 453, 322, 454, 455, 456, 317, 457, 459, 232, - 460, 125, 462, 104, 464, 37, 465, 469, 469, 471, - 471, 36, 7, 5, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468 + 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 } ; static yy_state_type yy_last_accepting_state; @@ -887,8 +909,8 @@ conf_yy_fatal_error(const char *msg) { return 0; } -#line 891 "config-lexer.c" -#line 892 "config-lexer.c" +#line 913 "config-lexer.c" +#line 914 "config-lexer.c" #define INITIAL 0 #define IN_COMMENT 1 @@ -1107,7 +1129,7 @@ YY_DECL #line 88 "config-lexer.l" -#line 1111 "config-lexer.c" +#line 1133 "config-lexer.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1140,13 +1162,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 >= 469 ) + if ( yy_current_state >= 493 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 468 ); + while ( yy_current_state != 492 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -1515,112 +1537,112 @@ YY_RULE_SETUP case 61: YY_RULE_SETUP #line 192 "config-lexer.l" -{ return TYPE; } +{ return TLS; } YY_BREAK case 62: YY_RULE_SETUP #line 193 "config-lexer.l" -{ return USER; } +{ return TLS_HOSTNAME_VERIFICATION; } YY_BREAK case 63: YY_RULE_SETUP #line 194 "config-lexer.l" -{ return USERNAME; } +{ return TYPE; } YY_BREAK case 64: YY_RULE_SETUP #line 195 "config-lexer.l" -{ return VHOST; } +{ return USER; } YY_BREAK case 65: YY_RULE_SETUP -#line 197 "config-lexer.l" -{ return YEARS; } +#line 196 "config-lexer.l" +{ return USERNAME; } YY_BREAK case 66: YY_RULE_SETUP -#line 198 "config-lexer.l" -{ return YEARS; } +#line 197 "config-lexer.l" +{ return VHOST; } YY_BREAK case 67: YY_RULE_SETUP #line 199 "config-lexer.l" -{ return MONTHS; } +{ return YEARS; } YY_BREAK case 68: YY_RULE_SETUP #line 200 "config-lexer.l" -{ return MONTHS; } +{ return YEARS; } YY_BREAK case 69: YY_RULE_SETUP #line 201 "config-lexer.l" -{ return WEEKS; } +{ return MONTHS; } YY_BREAK case 70: YY_RULE_SETUP #line 202 "config-lexer.l" -{ return WEEKS; } +{ return MONTHS; } YY_BREAK case 71: YY_RULE_SETUP #line 203 "config-lexer.l" -{ return DAYS; } +{ return WEEKS; } YY_BREAK case 72: YY_RULE_SETUP #line 204 "config-lexer.l" -{ return DAYS; } +{ return WEEKS; } YY_BREAK case 73: YY_RULE_SETUP #line 205 "config-lexer.l" -{ return HOURS; } +{ return DAYS; } YY_BREAK case 74: YY_RULE_SETUP #line 206 "config-lexer.l" -{ return HOURS; } +{ return DAYS; } YY_BREAK case 75: YY_RULE_SETUP #line 207 "config-lexer.l" -{ return MINUTES; } +{ return HOURS; } YY_BREAK case 76: YY_RULE_SETUP #line 208 "config-lexer.l" -{ return MINUTES; } +{ return HOURS; } YY_BREAK case 77: YY_RULE_SETUP #line 209 "config-lexer.l" -{ return SECONDS; } +{ return MINUTES; } YY_BREAK case 78: YY_RULE_SETUP #line 210 "config-lexer.l" -{ return SECONDS; } +{ return MINUTES; } YY_BREAK case 79: YY_RULE_SETUP -#line 212 "config-lexer.l" -{ return BYTES; } +#line 211 "config-lexer.l" +{ return SECONDS; } YY_BREAK case 80: YY_RULE_SETUP -#line 213 "config-lexer.l" -{ return BYTES; } +#line 212 "config-lexer.l" +{ return SECONDS; } YY_BREAK case 81: YY_RULE_SETUP #line 214 "config-lexer.l" -{ return KBYTES; } +{ return BYTES; } YY_BREAK case 82: YY_RULE_SETUP #line 215 "config-lexer.l" -{ return KBYTES; } +{ return BYTES; } YY_BREAK case 83: YY_RULE_SETUP @@ -1640,12 +1662,12 @@ YY_RULE_SETUP case 86: YY_RULE_SETUP #line 219 "config-lexer.l" -{ return MBYTES; } +{ return KBYTES; } YY_BREAK case 87: YY_RULE_SETUP #line 220 "config-lexer.l" -{ return MBYTES; } +{ return KBYTES; } YY_BREAK case 88: YY_RULE_SETUP @@ -1664,147 +1686,157 @@ YY_RULE_SETUP YY_BREAK case 91: YY_RULE_SETUP +#line 224 "config-lexer.l" +{ return MBYTES; } + YY_BREAK +case 92: +YY_RULE_SETUP #line 225 "config-lexer.l" +{ return MBYTES; } + YY_BREAK +case 93: +YY_RULE_SETUP +#line 227 "config-lexer.l" { yylval.number = OPM_TYPE_HTTP; return PROTOCOLTYPE; } YY_BREAK -case 92: +case 94: YY_RULE_SETUP -#line 230 "config-lexer.l" +#line 232 "config-lexer.l" { yylval.number = OPM_TYPE_HTTPPOST; return PROTOCOLTYPE; } YY_BREAK -case 93: +case 95: YY_RULE_SETUP -#line 235 "config-lexer.l" +#line 237 "config-lexer.l" { yylval.number = OPM_TYPE_HTTPS; return PROTOCOLTYPE; } YY_BREAK -case 94: +case 96: YY_RULE_SETUP -#line 240 "config-lexer.l" +#line 242 "config-lexer.l" { yylval.number = OPM_TYPE_HTTPSPOST; return PROTOCOLTYPE; } YY_BREAK -case 95: +case 97: YY_RULE_SETUP -#line 245 "config-lexer.l" +#line 247 "config-lexer.l" { yylval.number = OPM_TYPE_SOCKS4; return PROTOCOLTYPE; } YY_BREAK -case 96: +case 98: YY_RULE_SETUP -#line 250 "config-lexer.l" +#line 252 "config-lexer.l" { yylval.number = OPM_TYPE_SOCKS5; return PROTOCOLTYPE; } YY_BREAK -case 97: +case 99: YY_RULE_SETUP -#line 255 "config-lexer.l" +#line 257 "config-lexer.l" { yylval.number = OPM_TYPE_WINGATE; return PROTOCOLTYPE; } YY_BREAK -case 98: +case 100: YY_RULE_SETUP -#line 260 "config-lexer.l" +#line 262 "config-lexer.l" { yylval.number = OPM_TYPE_ROUTER; return PROTOCOLTYPE; } YY_BREAK -case 99: +case 101: YY_RULE_SETUP -#line 265 "config-lexer.l" +#line 267 "config-lexer.l" { yylval.number = OPM_TYPE_DREAMBOX; return PROTOCOLTYPE; } YY_BREAK -case 100: +case 102: YY_RULE_SETUP -#line 271 "config-lexer.l" +#line 273 "config-lexer.l" { yylval.number = OPM_TYPE_SSH; return PROTOCOLTYPE; } YY_BREAK -case 101: +case 103: YY_RULE_SETUP -#line 276 "config-lexer.l" +#line 278 "config-lexer.l" { yylval.number=1; return NUMBER; } YY_BREAK -case 102: +case 104: YY_RULE_SETUP -#line 280 "config-lexer.l" +#line 282 "config-lexer.l" { yylval.number=1; return NUMBER; } YY_BREAK -case 103: +case 105: YY_RULE_SETUP -#line 284 "config-lexer.l" +#line 286 "config-lexer.l" { yylval.number=1; return NUMBER; } YY_BREAK -case 104: +case 106: YY_RULE_SETUP -#line 291 "config-lexer.l" +#line 293 "config-lexer.l" { yylval.number=0; return NUMBER; } YY_BREAK -case 105: +case 107: YY_RULE_SETUP -#line 296 "config-lexer.l" +#line 298 "config-lexer.l" { yylval.number=0; return NUMBER; } YY_BREAK -case 106: +case 108: YY_RULE_SETUP -#line 301 "config-lexer.l" +#line 303 "config-lexer.l" { yylval.number=0; return NUMBER; } YY_BREAK -case 107: +case 109: YY_RULE_SETUP -#line 306 "config-lexer.l" +#line 308 "config-lexer.l" { return yytext[0]; } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 307 "config-lexer.l" +#line 309 "config-lexer.l" { if (conf_eof()) yyterminate(); } YY_BREAK -case 108: +case 110: YY_RULE_SETUP -#line 309 "config-lexer.l" +#line 311 "config-lexer.l" ECHO; YY_BREAK -#line 1808 "config-lexer.c" +#line 1840 "config-lexer.c" case YY_END_OF_BUFFER: { @@ -2100,7 +2132,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 >= 469 ) + if ( yy_current_state >= 493 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2128,11 +2160,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 >= 469 ) + if ( yy_current_state >= 493 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 468); + yy_is_jam = (yy_current_state == 492); return yy_is_jam ? 0 : yy_current_state; } @@ -2771,7 +2803,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 309 "config-lexer.l" +#line 311 "config-lexer.l" static void diff --git a/src/config-lexer.l b/src/config-lexer.l index a49dbd8..58fa98e 100644 --- a/src/config-lexer.l +++ b/src/config-lexer.l @@ -189,6 +189,8 @@ TARGET_IP { return TARGET_IP; } TARGET_PORT { return TARGET_PORT; } TARGET_STRING { return TARGET_STRING;} TIMEOUT { return TIMEOUT; } +TLS { return TLS; } +TLS_HOSTNAME_VERIFICATION { return TLS_HOSTNAME_VERIFICATION; } TYPE { return TYPE; } USER { return USER; } USERNAME { return USERNAME; } diff --git a/src/config-parser.c b/src/config-parser.c index 6bf8767..221da4b 100644 --- a/src/config-parser.c +++ b/src/config-parser.c @@ -176,13 +176,15 @@ extern int yydebug; TARGET_PORT = 315, TARGET_STRING = 316, TIMEOUT = 317, - TYPE = 318, - USERNAME = 319, - USER = 320, - VHOST = 321, - NUMBER = 322, - STRING = 323, - PROTOCOLTYPE = 324 + TLS = 318, + TLS_HOSTNAME_VERIFICATION = 319, + TYPE = 320, + USERNAME = 321, + USER = 322, + VHOST = 323, + NUMBER = 324, + STRING = 325, + PROTOCOLTYPE = 326 }; #endif /* Tokens. */ @@ -246,25 +248,27 @@ extern int yydebug; #define TARGET_PORT 315 #define TARGET_STRING 316 #define TIMEOUT 317 -#define TYPE 318 -#define USERNAME 319 -#define USER 320 -#define VHOST 321 -#define NUMBER 322 -#define STRING 323 -#define PROTOCOLTYPE 324 +#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 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 91 "config-parser.y" /* yacc.c:352 */ +#line 93 "config-parser.y" /* yacc.c:352 */ int number; char *string; -#line 268 "config-parser.c" /* yacc.c:352 */ +#line 272 "config-parser.c" /* yacc.c:352 */ }; typedef union YYSTYPE YYSTYPE; @@ -512,19 +516,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 346 +#define YYLAST 355 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 76 +#define YYNTOKENS 78 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 90 +#define YYNNTS 92 /* YYNRULES -- Number of rules. */ -#define YYNRULES 170 +#define YYNRULES 174 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 370 +#define YYNSTATES 380 #define YYUNDEFTOK 2 -#define YYMAXUTOK 324 +#define YYMAXUTOK 326 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -539,15 +543,15 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 75, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 74, 72, - 2, 73, 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, 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, 70, 2, 71, 2, 2, 2, 2, + 2, 2, 2, 72, 2, 73, 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, @@ -567,31 +571,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 + 65, 66, 67, 68, 69, 70, 71 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 106, 106, 107, 110, 111, 112, 113, 114, 115, - 117, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 128, 128, 129, 130, 131, 132, 137, 139, 140, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, - 158, 163, 169, 174, 179, 185, 190, 195, 202, 204, - 205, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 227, 233, 239, 245, 251, 257, 263, 269, 274, 279, - 284, 289, 294, 300, 306, 312, 318, 327, 327, 340, - 341, 343, 344, 345, 347, 355, 363, 374, 374, 384, - 385, 387, 388, 389, 391, 398, 408, 408, 443, 444, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 457, 465, 473, 481, 494, 501, 508, 515, 522, 538, - 540, 541, 543, 544, 545, 546, 547, 549, 555, 561, - 570, 570, 586, 587, 589, 590, 591, 592, 593, 594, - 595, 597, 606, 605, 613, 613, 614, 619, 626, 634, - 646, 653, 655, 656, 658, 672, 674, 675, 677, 678, - 680 + 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 }; #endif @@ -610,32 +614,32 @@ static const char *const yytname[] = "PROTOCOL", "READTIMEOUT", "REALNAME", "RECONNECTINTERVAL", "REPLY", "SCANLOG", "SCANNER", "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SENDMAIL", "SERVER", "TARGET_IP", "TARGET_PORT", - "TARGET_STRING", "TIMEOUT", "TYPE", "USERNAME", "USER", "VHOST", - "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='", "':'", - "','", "$accept", "config", "config_items", "timespec_", "timespec", - "sizespec_", "sizespec", "options_entry", "options_items", - "options_item", "options_negcache", "options_negcache_rebuild", - "options_pidfile", "options_dns_fdlimit", "options_dns_timeout", - "options_scanlog", "options_command_queue_size", + "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", "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_readtimeout", "irc_reconnectinterval", "irc_realname", - "irc_server", "irc_username", "irc_vhost", "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_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", "opm_sendmail", "opm_blacklist_entry", - "$@4", "blacklist_items", "blacklist_item", "blacklist_name", - "blacklist_address_family", "$@5", "blacklist_address_family_items", - "blacklist_address_family_item", "blacklist_kline", "blacklist_type", - "blacklist_ban_unknown", "blacklist_reply", "blacklist_reply_items", - "blacklist_reply_item", "exempt_entry", "exempt_items", "exempt_item", - "exempt_mask", YY_NULLPTR + "irc_port", "irc_tls", "irc_tls_hostname_verification", + "irc_readtimeout", "irc_reconnectinterval", "irc_realname", "irc_server", + "irc_username", "irc_vhost", "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_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", + "opm_sendmail", "opm_blacklist_entry", "$@4", "blacklist_items", + "blacklist_item", "blacklist_name", "blacklist_address_family", "$@5", + "blacklist_address_family_items", "blacklist_address_family_item", + "blacklist_kline", "blacklist_type", "blacklist_ban_unknown", + "blacklist_reply", "blacklist_reply_items", "blacklist_reply_item", + "exempt_entry", "exempt_items", "exempt_item", "exempt_mask", YY_NULLPTR }; #endif @@ -651,16 +655,16 @@ 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, - 123, 125, 59, 61, 58, 44 + 325, 326, 123, 125, 59, 61, 58, 44 }; # endif -#define YYPACT_NINF -294 +#define YYPACT_NINF -304 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-294))) + (!!((Yystate) == (-304))) -#define YYTABLE_NINF -141 +#define YYTABLE_NINF -145 #define yytable_value_is_error(Yytable_value) \ 0 @@ -669,43 +673,44 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -294, 138, -294, -63, -54, -52, -38, -294, -294, -294, - -294, -24, -294, 14, -294, -294, 23, 95, 37, 181, - 9, 13, -294, -3, 4, -294, -294, -294, 12, 18, - 19, 20, 24, 31, 33, 35, 42, 44, 48, 49, - 53, 59, 60, 63, 70, 0, -294, -294, -294, -294, - -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, - -294, -294, -294, -294, -294, 77, -294, 73, 78, 82, - 5, -294, -294, -294, -294, -294, 150, -294, 85, 87, - 90, 92, 93, 97, 98, 99, 100, 36, -294, -294, - -294, -294, -294, -294, -294, -294, -294, -294, 115, 124, - 109, 96, -294, 110, 111, 112, 113, 120, 121, 127, - 137, 140, 141, 83, 139, 142, 139, 143, 146, 149, - 147, -294, 151, 152, 155, 156, 153, -294, 157, 139, - 159, 139, 161, 139, 139, 139, 169, 170, 167, -294, - -294, 145, 168, 29, -294, -294, -294, -294, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 52, -294, -294, - -294, -294, -294, -294, -294, -294, -294, -294, 182, -294, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 148, 194, 195, 196, 197, 198, 199, -294, -18, - 200, 201, 202, -294, 144, 203, 204, 205, 206, 207, - 208, 209, 210, 211, -294, 216, 217, 214, -294, 220, - 221, 222, 223, 225, 224, 226, 139, 227, 228, -294, - -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, - -294, -294, 139, 139, 139, 139, 139, 139, 139, -294, - -294, -294, -294, -294, -294, -294, -294, 180, 229, 230, - 39, -294, -294, -294, -294, -294, -294, -294, -294, -294, - 231, 232, 233, 219, 234, 56, -294, -294, -294, -294, - -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, - -294, -294, 236, 237, -294, 238, 81, 239, 240, 166, - 241, 242, 243, 244, 245, -294, -294, -294, -294, -294, - -294, -294, -294, 250, 251, 252, 249, -294, 253, 255, - 256, 257, 260, 261, 258, -294, -294, -294, -294, 221, - 221, 221, -294, -294, -294, -294, 264, -294, -294, -294, - -294, -294, 262, 263, 265, -294, 51, 266, 267, 268, - 259, -58, -294, 269, -294, -294, -294, -294, 270, -294, - -294, -294, -294, -294, 26, -294, -294, -294, -294, 275, - 272, -294, -294, -294, -294, 51, 273, -294, -294, -294 + -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 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -713,71 +718,74 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 97, 1, 0, 0, 0, 0, 3, 5, 4, + 2, 101, 1, 0, 0, 0, 0, 3, 5, 4, 7, 0, 8, 0, 6, 9, 0, 0, 0, 0, - 0, 0, 169, 0, 0, 167, 168, 69, 0, 0, + 0, 0, 173, 0, 0, 171, 172, 71, 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, 66, 67, 59, 60, 61, 62, - 63, 64, 65, 52, 68, 0, 136, 0, 0, 0, - 0, 131, 132, 133, 134, 135, 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, 166, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 0, 0, 0, 0, 0, 130, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, - 103, 0, 0, 0, 100, 101, 102, 119, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, - 111, 113, 115, 112, 114, 117, 118, 116, 0, 165, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 0, 0, 0, 0, 0, 0, 48, 0, - 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 26, 0, 0, 0, 99, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, - 170, 70, 86, 71, 72, 73, 74, 78, 75, 76, - 77, 79, 10, 10, 10, 10, 10, 10, 10, 12, - 11, 80, 82, 81, 83, 84, 85, 0, 0, 0, - 0, 90, 91, 92, 93, 137, 138, 139, 150, 152, - 0, 0, 0, 0, 0, 0, 143, 144, 145, 147, - 146, 148, 149, 46, 45, 47, 42, 43, 39, 40, - 41, 44, 0, 0, 98, 0, 20, 0, 0, 0, - 0, 0, 0, 0, 0, 107, 13, 14, 15, 16, - 17, 18, 19, 0, 0, 0, 0, 89, 0, 0, - 0, 0, 0, 0, 0, 142, 104, 105, 124, 20, - 20, 20, 22, 21, 127, 120, 0, 122, 125, 123, - 126, 121, 0, 0, 0, 88, 0, 0, 0, 0, - 0, 0, 163, 0, 141, 23, 24, 25, 0, 96, - 95, 94, 156, 157, 0, 155, 160, 158, 151, 0, - 0, 162, 159, 128, 153, 0, 0, 161, 154, 164 + 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 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -294, -294, -294, -2, -114, -293, 6, -294, -294, 212, - -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, - -294, 278, -294, -294, -294, -294, -294, -294, -294, -294, - -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, - -294, -294, -8, -294, -294, -294, -294, -294, -294, 154, - -294, -294, -294, -294, -294, 86, -294, -294, -294, -294, - -294, -294, -294, -294, -294, -294, -294, 276, -294, -294, - -294, -294, -294, -294, 68, -294, -294, -294, -294, -69, - -294, -294, -294, -294, -294, -43, -294, -294, 277, -294 + -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 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 7, 239, 240, 322, 323, 8, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 9, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 250, 251, 252, 253, 254, 10, 11, 143, 144, - 145, 146, 12, 13, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 14, 70, 71, 72, 73, - 74, 75, 76, 265, 266, 267, 268, 308, 354, 355, - 269, 270, 271, 272, 341, 342, 15, 24, 25, 26 + -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 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -785,146 +793,149 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 182, 27, 184, 247, 28, 22, 66, 16, 248, 340, - -87, -140, 249, 360, 29, 195, 17, 197, 18, 199, - 200, 201, 67, 68, 22, 30, 345, 346, 347, 31, - 140, 23, 19, 32, 33, 34, 35, 77, 66, 36, - 37, 20, 38, -140, 39, 40, 41, 78, 79, 80, - 23, 81, 82, 147, 67, 68, 141, 258, 42, 259, - 247, 260, 69, 21, 43, 248, 44, 83, 84, 249, - 100, 120, 148, 352, 353, 101, 126, 85, 142, 98, - 149, 261, 150, 99, 86, 103, 262, 122, 319, 320, - 321, 104, 105, 106, 69, 151, 27, 107, 364, 28, - 207, 365, 293, 263, 108, -87, 109, 138, 110, 29, - 306, 152, 153, 154, 155, 111, 140, 112, 156, 264, - 30, 113, 114, 218, 31, 147, 115, 314, 32, 33, - 34, 35, 116, 117, 36, 37, 118, 38, 2, 39, - 40, 41, 141, 119, 148, 258, 123, 259, 286, 260, - 180, 124, 149, 42, 150, 125, 128, 3, 129, 43, - 130, 44, 4, 131, 142, 132, 133, 151, 169, 261, - 134, 135, 136, 137, 262, 5, 6, 168, 170, 171, - 172, 173, 77, 152, 153, 154, 155, -106, 174, 175, - 156, 263, 78, 79, 80, 176, 81, 82, 232, 233, - 234, 235, 236, 237, 238, 177, 181, 264, 178, 179, - 183, 185, 83, 84, 186, 181, 287, 187, 205, 188, - 190, 189, 85, 191, 192, 193, 196, 194, 198, 86, - 296, 297, 298, 299, 300, 301, 302, 202, 203, 204, - 326, 206, 307, 219, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 303, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 241, 242, 243, 244, - 245, 246, 255, 256, 257, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 312, - 288, 291, 289, 290, 292, 294, 368, 208, 361, 139, - 295, 102, 304, 305, 309, 310, 311, 313, 316, 317, - 318, 324, 325, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 337, 121, 338, 339, 336, 340, 0, 343, - 344, 348, 359, 315, 349, 350, 0, 351, 356, 357, - 358, 362, 363, 366, 367, 369, 127 + 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 }; static const yytype_int16 yycheck[] = { - 114, 1, 116, 21, 4, 1, 1, 70, 26, 67, - 10, 6, 30, 71, 14, 129, 70, 131, 70, 133, - 134, 135, 17, 18, 1, 25, 319, 320, 321, 29, - 1, 27, 70, 33, 34, 35, 36, 1, 1, 39, - 40, 65, 42, 6, 44, 45, 46, 11, 12, 13, - 27, 15, 16, 1, 17, 18, 27, 1, 58, 3, - 21, 5, 57, 49, 64, 26, 66, 31, 32, 30, - 73, 71, 20, 22, 23, 71, 71, 41, 49, 70, - 28, 25, 30, 70, 48, 73, 30, 10, 7, 8, - 9, 73, 73, 73, 57, 43, 1, 73, 72, 4, - 71, 75, 216, 47, 73, 10, 73, 71, 73, 14, - 71, 59, 60, 61, 62, 73, 1, 73, 66, 63, - 25, 73, 73, 71, 29, 1, 73, 71, 33, 34, - 35, 36, 73, 73, 39, 40, 73, 42, 0, 44, - 45, 46, 27, 73, 20, 1, 73, 3, 67, 5, - 67, 73, 28, 58, 30, 73, 6, 19, 73, 64, - 73, 66, 24, 73, 49, 73, 73, 43, 72, 25, - 73, 73, 73, 73, 30, 37, 38, 68, 68, 68, - 68, 68, 1, 59, 60, 61, 62, 49, 68, 68, - 66, 47, 11, 12, 13, 68, 15, 16, 50, 51, - 52, 53, 54, 55, 56, 68, 67, 63, 68, 68, - 68, 68, 31, 32, 68, 67, 210, 68, 73, 72, - 68, 70, 41, 68, 68, 72, 67, 70, 67, 48, - 232, 233, 234, 235, 236, 237, 238, 68, 68, 72, - 74, 73, 250, 157, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 68, 68, 72, 67, 67, 70, - 68, 67, 69, 68, 68, 68, 365, 143, 341, 87, - 72, 24, 73, 73, 73, 73, 73, 73, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 68, 68, - 68, 72, 67, 45, 68, 68, 73, 67, -1, 68, - 72, 67, 73, 265, 72, 72, -1, 72, 72, 72, - 72, 72, 72, 68, 72, 72, 70 + 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 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 77, 0, 19, 24, 37, 38, 78, 83, 95, - 122, 123, 128, 129, 141, 162, 70, 70, 70, 70, - 65, 49, 1, 27, 163, 164, 165, 1, 4, 14, + 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, 64, 66, 96, 97, 98, 99, 100, + 45, 46, 58, 63, 64, 66, 68, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 1, 17, 18, 57, - 142, 143, 144, 145, 146, 147, 148, 1, 11, 12, - 13, 15, 16, 31, 32, 41, 48, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 70, 70, - 73, 71, 164, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 71, 97, 10, 73, 73, 73, 71, 143, 6, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 71, 85, - 1, 27, 49, 124, 125, 126, 127, 1, 20, 28, - 30, 43, 59, 60, 61, 62, 66, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 68, 72, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 67, 67, 80, 68, 80, 68, 68, 68, 72, 70, - 68, 68, 68, 72, 70, 80, 67, 80, 67, 80, - 80, 80, 68, 68, 72, 73, 73, 71, 125, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 71, 131, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 50, 51, 52, 53, 54, 55, 56, 79, - 80, 72, 72, 72, 72, 72, 72, 21, 26, 30, - 117, 118, 119, 120, 121, 72, 72, 72, 1, 3, - 5, 25, 30, 47, 63, 149, 150, 151, 152, 156, - 157, 158, 159, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 68, 68, 72, 67, 67, 82, 68, 69, - 68, 67, 68, 80, 68, 72, 79, 79, 79, 79, - 79, 79, 79, 73, 73, 73, 71, 118, 153, 73, - 73, 73, 70, 73, 71, 150, 72, 72, 72, 7, - 8, 9, 81, 82, 72, 72, 74, 72, 72, 72, - 72, 72, 68, 68, 68, 72, 73, 67, 68, 68, - 67, 160, 161, 68, 72, 81, 81, 81, 67, 72, - 72, 72, 22, 23, 154, 155, 72, 72, 72, 73, - 71, 161, 72, 72, 72, 75, 68, 72, 155, 72 + 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 76, 77, 77, 78, 78, 78, 78, 78, 78, - 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, - 81, 81, 82, 82, 82, 82, 83, 84, 84, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 116, 115, 117, - 117, 118, 118, 118, 119, 120, 121, 123, 122, 124, - 124, 125, 125, 125, 126, 127, 129, 128, 130, 130, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 142, 143, 143, 143, 143, 143, 144, 145, 146, - 148, 147, 149, 149, 150, 150, 150, 150, 150, 150, - 150, 151, 153, 152, 154, 154, 155, 155, 156, 157, - 158, 159, 160, 160, 161, 162, 163, 163, 164, 164, - 165 + 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, + 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 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -937,17 +948,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, 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, + 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, 4, 0, 5, 3, 1, 1, 1, 4, 4, - 4, 5, 2, 1, 4, 5, 2, 1, 1, 1, - 4 + 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 }; @@ -1633,313 +1644,329 @@ yyreduce: switch (yyn) { case 10: -#line 117 "config-parser.y" /* yacc.c:1652 */ +#line 119 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = 0; } -#line 1639 "config-parser.c" /* yacc.c:1652 */ +#line 1650 "config-parser.c" /* yacc.c:1652 */ break; case 12: -#line 118 "config-parser.y" /* yacc.c:1652 */ +#line 120 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); } -#line 1645 "config-parser.c" /* yacc.c:1652 */ +#line 1656 "config-parser.c" /* yacc.c:1652 */ break; case 13: -#line 119 "config-parser.y" /* yacc.c:1652 */ +#line 121 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); } -#line 1651 "config-parser.c" /* yacc.c:1652 */ +#line 1662 "config-parser.c" /* yacc.c:1652 */ break; case 14: -#line 120 "config-parser.y" /* yacc.c:1652 */ +#line 122 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); } -#line 1657 "config-parser.c" /* yacc.c:1652 */ +#line 1668 "config-parser.c" /* yacc.c:1652 */ break; case 15: -#line 121 "config-parser.y" /* yacc.c:1652 */ +#line 123 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); } -#line 1663 "config-parser.c" /* yacc.c:1652 */ +#line 1674 "config-parser.c" /* yacc.c:1652 */ break; case 16: -#line 122 "config-parser.y" /* yacc.c:1652 */ +#line 124 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); } -#line 1669 "config-parser.c" /* yacc.c:1652 */ +#line 1680 "config-parser.c" /* yacc.c:1652 */ break; case 17: -#line 123 "config-parser.y" /* yacc.c:1652 */ +#line 125 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); } -#line 1675 "config-parser.c" /* yacc.c:1652 */ +#line 1686 "config-parser.c" /* yacc.c:1652 */ break; case 18: -#line 124 "config-parser.y" /* yacc.c:1652 */ +#line 126 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); } -#line 1681 "config-parser.c" /* yacc.c:1652 */ +#line 1692 "config-parser.c" /* yacc.c:1652 */ break; case 19: -#line 125 "config-parser.y" /* yacc.c:1652 */ +#line 127 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); } -#line 1687 "config-parser.c" /* yacc.c:1652 */ +#line 1698 "config-parser.c" /* yacc.c:1652 */ break; case 20: -#line 128 "config-parser.y" /* yacc.c:1652 */ +#line 130 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = 0; } -#line 1693 "config-parser.c" /* yacc.c:1652 */ +#line 1704 "config-parser.c" /* yacc.c:1652 */ break; case 22: -#line 129 "config-parser.y" /* yacc.c:1652 */ +#line 131 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); } -#line 1699 "config-parser.c" /* yacc.c:1652 */ +#line 1710 "config-parser.c" /* yacc.c:1652 */ break; case 23: -#line 130 "config-parser.y" /* yacc.c:1652 */ +#line 132 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); } -#line 1705 "config-parser.c" /* yacc.c:1652 */ +#line 1716 "config-parser.c" /* yacc.c:1652 */ break; case 24: -#line 131 "config-parser.y" /* yacc.c:1652 */ +#line 133 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); } -#line 1711 "config-parser.c" /* yacc.c:1652 */ +#line 1722 "config-parser.c" /* yacc.c:1652 */ break; case 25: -#line 132 "config-parser.y" /* yacc.c:1652 */ +#line 134 "config-parser.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); } -#line 1717 "config-parser.c" /* yacc.c:1652 */ +#line 1728 "config-parser.c" /* yacc.c:1652 */ break; case 39: -#line 154 "config-parser.y" /* yacc.c:1652 */ +#line 156 "config-parser.y" /* yacc.c:1652 */ { OptionsItem.negcache = (yyvsp[-1].number); } -#line 1725 "config-parser.c" /* yacc.c:1652 */ +#line 1736 "config-parser.c" /* yacc.c:1652 */ break; case 40: -#line 159 "config-parser.y" /* yacc.c:1652 */ +#line 161 "config-parser.y" /* yacc.c:1652 */ { OptionsItem.negcache_rebuild = (yyvsp[-1].number); } -#line 1733 "config-parser.c" /* yacc.c:1652 */ +#line 1744 "config-parser.c" /* yacc.c:1652 */ break; case 41: -#line 164 "config-parser.y" /* yacc.c:1652 */ +#line 166 "config-parser.y" /* yacc.c:1652 */ { xfree(OptionsItem.pidfile); OptionsItem.pidfile = xstrdup((yyvsp[-1].string)); } -#line 1742 "config-parser.c" /* yacc.c:1652 */ +#line 1753 "config-parser.c" /* yacc.c:1652 */ break; case 42: -#line 170 "config-parser.y" /* yacc.c:1652 */ +#line 172 "config-parser.y" /* yacc.c:1652 */ { OptionsItem.dns_fdlimit = (yyvsp[-1].number); } -#line 1750 "config-parser.c" /* yacc.c:1652 */ +#line 1761 "config-parser.c" /* yacc.c:1652 */ break; case 43: -#line 175 "config-parser.y" /* yacc.c:1652 */ +#line 177 "config-parser.y" /* yacc.c:1652 */ { OptionsItem.dns_timeout = (yyvsp[-1].number); } -#line 1758 "config-parser.c" /* yacc.c:1652 */ +#line 1769 "config-parser.c" /* yacc.c:1652 */ break; case 44: -#line 180 "config-parser.y" /* yacc.c:1652 */ +#line 182 "config-parser.y" /* yacc.c:1652 */ { xfree(OptionsItem.scanlog); OptionsItem.scanlog = xstrdup((yyvsp[-1].string)); } -#line 1767 "config-parser.c" /* yacc.c:1652 */ +#line 1778 "config-parser.c" /* yacc.c:1652 */ break; case 45: -#line 186 "config-parser.y" /* yacc.c:1652 */ +#line 188 "config-parser.y" /* yacc.c:1652 */ { OptionsItem.command_queue_size = (yyvsp[-1].number); } -#line 1775 "config-parser.c" /* yacc.c:1652 */ +#line 1786 "config-parser.c" /* yacc.c:1652 */ break; case 46: -#line 191 "config-parser.y" /* yacc.c:1652 */ +#line 193 "config-parser.y" /* yacc.c:1652 */ { OptionsItem.command_interval = (yyvsp[-1].number); } -#line 1783 "config-parser.c" /* yacc.c:1652 */ +#line 1794 "config-parser.c" /* yacc.c:1652 */ break; case 47: -#line 196 "config-parser.y" /* yacc.c:1652 */ +#line 198 "config-parser.y" /* yacc.c:1652 */ { OptionsItem.command_timeout = (yyvsp[-1].number); } -#line 1791 "config-parser.c" /* yacc.c:1652 */ +#line 1802 "config-parser.c" /* yacc.c:1652 */ break; - case 70: -#line 228 "config-parser.y" /* yacc.c:1652 */ + case 72: +#line 232 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.away); IRCItem.away = xstrdup((yyvsp[-1].string)); } -#line 1800 "config-parser.c" /* yacc.c:1652 */ +#line 1811 "config-parser.c" /* yacc.c:1652 */ break; - case 71: -#line 234 "config-parser.y" /* yacc.c:1652 */ + case 73: +#line 238 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.kline); IRCItem.kline = xstrdup((yyvsp[-1].string)); } -#line 1809 "config-parser.c" /* yacc.c:1652 */ +#line 1820 "config-parser.c" /* yacc.c:1652 */ break; - case 72: -#line 240 "config-parser.y" /* yacc.c:1652 */ + case 74: +#line 244 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.mode); IRCItem.mode = xstrdup((yyvsp[-1].string)); } -#line 1818 "config-parser.c" /* yacc.c:1652 */ +#line 1829 "config-parser.c" /* yacc.c:1652 */ break; - case 73: -#line 246 "config-parser.y" /* yacc.c:1652 */ + case 75: +#line 250 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.nick); IRCItem.nick = xstrdup((yyvsp[-1].string)); } -#line 1827 "config-parser.c" /* yacc.c:1652 */ +#line 1838 "config-parser.c" /* yacc.c:1652 */ break; - case 74: -#line 252 "config-parser.y" /* yacc.c:1652 */ + case 76: +#line 256 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.nickserv); IRCItem.nickserv = xstrdup((yyvsp[-1].string)); } -#line 1836 "config-parser.c" /* yacc.c:1652 */ +#line 1847 "config-parser.c" /* yacc.c:1652 */ break; - case 75: -#line 258 "config-parser.y" /* yacc.c:1652 */ + case 77: +#line 262 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.oper); IRCItem.oper = xstrdup((yyvsp[-1].string)); } -#line 1845 "config-parser.c" /* yacc.c:1652 */ +#line 1856 "config-parser.c" /* yacc.c:1652 */ break; - case 76: -#line 264 "config-parser.y" /* yacc.c:1652 */ + case 78: +#line 268 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.password); IRCItem.password = xstrdup((yyvsp[-1].string)); } -#line 1854 "config-parser.c" /* yacc.c:1652 */ +#line 1865 "config-parser.c" /* yacc.c:1652 */ break; - case 77: -#line 270 "config-parser.y" /* yacc.c:1652 */ + case 79: +#line 274 "config-parser.y" /* yacc.c:1652 */ { list_add(xstrdup((yyvsp[-1].string)), node_create(), &IRCItem.performs); } -#line 1862 "config-parser.c" /* yacc.c:1652 */ +#line 1873 "config-parser.c" /* yacc.c:1652 */ break; - case 78: -#line 275 "config-parser.y" /* yacc.c:1652 */ + case 80: +#line 279 "config-parser.y" /* yacc.c:1652 */ { list_add(xstrdup((yyvsp[-1].string)), node_create(), &IRCItem.notices); } -#line 1870 "config-parser.c" /* yacc.c:1652 */ +#line 1881 "config-parser.c" /* yacc.c:1652 */ break; - case 79: -#line 280 "config-parser.y" /* yacc.c:1652 */ + case 81: +#line 284 "config-parser.y" /* yacc.c:1652 */ { IRCItem.port = (yyvsp[-1].number); } -#line 1878 "config-parser.c" /* yacc.c:1652 */ +#line 1889 "config-parser.c" /* yacc.c:1652 */ break; - case 80: -#line 285 "config-parser.y" /* yacc.c:1652 */ + case 82: +#line 289 "config-parser.y" /* yacc.c:1652 */ + { + IRCItem.tls = (yyvsp[-1].number); +} +#line 1897 "config-parser.c" /* yacc.c:1652 */ + break; + + case 83: +#line 294 "config-parser.y" /* yacc.c:1652 */ + { + IRCItem.tls_hostname_verification = (yyvsp[-1].number); +} +#line 1905 "config-parser.c" /* yacc.c:1652 */ + break; + + case 84: +#line 299 "config-parser.y" /* yacc.c:1652 */ { IRCItem.readtimeout = (yyvsp[-1].number); } -#line 1886 "config-parser.c" /* yacc.c:1652 */ +#line 1913 "config-parser.c" /* yacc.c:1652 */ break; - case 81: -#line 290 "config-parser.y" /* yacc.c:1652 */ + case 85: +#line 304 "config-parser.y" /* yacc.c:1652 */ { IRCItem.reconnectinterval = (yyvsp[-1].number); } -#line 1894 "config-parser.c" /* yacc.c:1652 */ +#line 1921 "config-parser.c" /* yacc.c:1652 */ break; - case 82: -#line 295 "config-parser.y" /* yacc.c:1652 */ + case 86: +#line 309 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.realname); IRCItem.realname = xstrdup((yyvsp[-1].string)); } -#line 1903 "config-parser.c" /* yacc.c:1652 */ +#line 1930 "config-parser.c" /* yacc.c:1652 */ break; - case 83: -#line 301 "config-parser.y" /* yacc.c:1652 */ + case 87: +#line 315 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.server); IRCItem.server = xstrdup((yyvsp[-1].string)); } -#line 1912 "config-parser.c" /* yacc.c:1652 */ +#line 1939 "config-parser.c" /* yacc.c:1652 */ break; - case 84: -#line 307 "config-parser.y" /* yacc.c:1652 */ + case 88: +#line 321 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.username); IRCItem.username = xstrdup((yyvsp[-1].string)); } -#line 1921 "config-parser.c" /* yacc.c:1652 */ +#line 1948 "config-parser.c" /* yacc.c:1652 */ break; - case 85: -#line 313 "config-parser.y" /* yacc.c:1652 */ + case 89: +#line 327 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.vhost); IRCItem.vhost = xstrdup((yyvsp[-1].string)); } -#line 1930 "config-parser.c" /* yacc.c:1652 */ +#line 1957 "config-parser.c" /* yacc.c:1652 */ break; - case 86: -#line 319 "config-parser.y" /* yacc.c:1652 */ + case 90: +#line 333 "config-parser.y" /* yacc.c:1652 */ { xfree(IRCItem.connregex); IRCItem.connregex = xstrdup((yyvsp[-1].string)); } -#line 1939 "config-parser.c" /* yacc.c:1652 */ +#line 1966 "config-parser.c" /* yacc.c:1652 */ break; - case 87: -#line 327 "config-parser.y" /* yacc.c:1652 */ + case 91: +#line 341 "config-parser.y" /* yacc.c:1652 */ { struct ChannelConf *item; @@ -1951,44 +1978,44 @@ yyreduce: list_add(item, &item->node, &IRCItem.channels); tmp = item; } -#line 1955 "config-parser.c" /* yacc.c:1652 */ +#line 1982 "config-parser.c" /* yacc.c:1652 */ break; - case 94: -#line 348 "config-parser.y" /* yacc.c:1652 */ + case 98: +#line 362 "config-parser.y" /* yacc.c:1652 */ { struct ChannelConf *item = tmp; xfree(item->name); item->name = xstrdup((yyvsp[-1].string)); } -#line 1966 "config-parser.c" /* yacc.c:1652 */ +#line 1993 "config-parser.c" /* yacc.c:1652 */ break; - case 95: -#line 356 "config-parser.y" /* yacc.c:1652 */ + case 99: +#line 370 "config-parser.y" /* yacc.c:1652 */ { struct ChannelConf *item = tmp; xfree(item->key); item->key = xstrdup((yyvsp[-1].string)); } -#line 1977 "config-parser.c" /* yacc.c:1652 */ +#line 2004 "config-parser.c" /* yacc.c:1652 */ break; - case 96: -#line 364 "config-parser.y" /* yacc.c:1652 */ + case 100: +#line 378 "config-parser.y" /* yacc.c:1652 */ { struct ChannelConf *item = tmp; xfree(item->invite); item->invite = xstrdup((yyvsp[-1].string)); } -#line 1988 "config-parser.c" /* yacc.c:1652 */ +#line 2015 "config-parser.c" /* yacc.c:1652 */ break; - case 97: -#line 374 "config-parser.y" /* yacc.c:1652 */ + case 101: +#line 388 "config-parser.y" /* yacc.c:1652 */ { struct UserConf *item; @@ -1997,31 +2024,31 @@ yyreduce: list_add(item, &item->node, &UserItemList); tmp = item; } -#line 2001 "config-parser.c" /* yacc.c:1652 */ +#line 2028 "config-parser.c" /* yacc.c:1652 */ break; - case 104: -#line 392 "config-parser.y" /* yacc.c:1652 */ + case 108: +#line 406 "config-parser.y" /* yacc.c:1652 */ { struct UserConf *item = tmp; list_add(xstrdup((yyvsp[-1].string)), node_create(), &item->masks); } -#line 2011 "config-parser.c" /* yacc.c:1652 */ +#line 2038 "config-parser.c" /* yacc.c:1652 */ break; - case 105: -#line 399 "config-parser.y" /* yacc.c:1652 */ + case 109: +#line 413 "config-parser.y" /* yacc.c:1652 */ { struct UserConf *item = tmp; list_add(xstrdup((yyvsp[-1].string)), node_create(), &item->scanners); } -#line 2021 "config-parser.c" /* yacc.c:1652 */ +#line 2048 "config-parser.c" /* yacc.c:1652 */ break; - case 106: -#line 408 "config-parser.y" /* yacc.c:1652 */ + case 110: +#line 422 "config-parser.y" /* yacc.c:1652 */ { struct ScannerConf *item, *olditem; @@ -2055,44 +2082,44 @@ yyreduce: list_add(item, &item->node, &ScannerItemList); tmp = item; } -#line 2059 "config-parser.c" /* yacc.c:1652 */ +#line 2086 "config-parser.c" /* yacc.c:1652 */ break; - case 120: -#line 458 "config-parser.y" /* yacc.c:1652 */ + case 124: +#line 472 "config-parser.y" /* yacc.c:1652 */ { struct ScannerConf *item = tmp; xfree(item->name); item->name = xstrdup((yyvsp[-1].string)); } -#line 2070 "config-parser.c" /* yacc.c:1652 */ +#line 2097 "config-parser.c" /* yacc.c:1652 */ break; - case 121: -#line 466 "config-parser.y" /* yacc.c:1652 */ + case 125: +#line 480 "config-parser.y" /* yacc.c:1652 */ { struct ScannerConf *item = tmp; xfree(item->vhost); item->vhost = xstrdup((yyvsp[-1].string)); } -#line 2081 "config-parser.c" /* yacc.c:1652 */ +#line 2108 "config-parser.c" /* yacc.c:1652 */ break; - case 122: -#line 474 "config-parser.y" /* yacc.c:1652 */ + case 126: +#line 488 "config-parser.y" /* yacc.c:1652 */ { struct ScannerConf *item = tmp; xfree(item->target_ip); item->target_ip = xstrdup((yyvsp[-1].string)); } -#line 2092 "config-parser.c" /* yacc.c:1652 */ +#line 2119 "config-parser.c" /* yacc.c:1652 */ break; - case 123: -#line 482 "config-parser.y" /* yacc.c:1652 */ + case 127: +#line 496 "config-parser.y" /* yacc.c:1652 */ { struct ScannerConf *item = tmp; @@ -2104,51 +2131,51 @@ yyreduce: list_add(xstrdup((yyvsp[-1].string)), node_create(), &item->target_string); } -#line 2108 "config-parser.c" /* yacc.c:1652 */ +#line 2135 "config-parser.c" /* yacc.c:1652 */ break; - case 124: -#line 495 "config-parser.y" /* yacc.c:1652 */ + case 128: +#line 509 "config-parser.y" /* yacc.c:1652 */ { struct ScannerConf *item = tmp; item->fd = (yyvsp[-1].number); } -#line 2118 "config-parser.c" /* yacc.c:1652 */ +#line 2145 "config-parser.c" /* yacc.c:1652 */ break; - case 125: -#line 502 "config-parser.y" /* yacc.c:1652 */ + case 129: +#line 516 "config-parser.y" /* yacc.c:1652 */ { struct ScannerConf *item = tmp; item->target_port = (yyvsp[-1].number); } -#line 2128 "config-parser.c" /* yacc.c:1652 */ +#line 2155 "config-parser.c" /* yacc.c:1652 */ break; - case 126: -#line 509 "config-parser.y" /* yacc.c:1652 */ + case 130: +#line 523 "config-parser.y" /* yacc.c:1652 */ { struct ScannerConf *item = tmp; item->timeout = (yyvsp[-1].number); } -#line 2138 "config-parser.c" /* yacc.c:1652 */ +#line 2165 "config-parser.c" /* yacc.c:1652 */ break; - case 127: -#line 516 "config-parser.y" /* yacc.c:1652 */ + case 131: +#line 530 "config-parser.y" /* yacc.c:1652 */ { struct ScannerConf *item = tmp; item->max_read = (yyvsp[-1].number); } -#line 2148 "config-parser.c" /* yacc.c:1652 */ +#line 2175 "config-parser.c" /* yacc.c:1652 */ break; - case 128: -#line 523 "config-parser.y" /* yacc.c:1652 */ + case 132: +#line 537 "config-parser.y" /* yacc.c:1652 */ { struct ProtocolConf *item; struct ScannerConf *item2; @@ -2161,38 +2188,38 @@ yyreduce: list_add(item, node_create(), &item2->protocols); } -#line 2165 "config-parser.c" /* yacc.c:1652 */ +#line 2192 "config-parser.c" /* yacc.c:1652 */ break; - case 137: -#line 550 "config-parser.y" /* yacc.c:1652 */ + case 141: +#line 564 "config-parser.y" /* yacc.c:1652 */ { xfree(OpmItem.dnsbl_from); OpmItem.dnsbl_from = xstrdup((yyvsp[-1].string)); } -#line 2174 "config-parser.c" /* yacc.c:1652 */ +#line 2201 "config-parser.c" /* yacc.c:1652 */ break; - case 138: -#line 556 "config-parser.y" /* yacc.c:1652 */ + case 142: +#line 570 "config-parser.y" /* yacc.c:1652 */ { xfree(OpmItem.dnsbl_to); OpmItem.dnsbl_to = xstrdup((yyvsp[-1].string)); } -#line 2183 "config-parser.c" /* yacc.c:1652 */ +#line 2210 "config-parser.c" /* yacc.c:1652 */ break; - case 139: -#line 562 "config-parser.y" /* yacc.c:1652 */ + case 143: +#line 576 "config-parser.y" /* yacc.c:1652 */ { xfree(OpmItem.sendmail); OpmItem.sendmail = xstrdup((yyvsp[-1].string)); } -#line 2192 "config-parser.c" /* yacc.c:1652 */ +#line 2219 "config-parser.c" /* yacc.c:1652 */ break; - case 140: -#line 570 "config-parser.y" /* yacc.c:1652 */ + case 144: +#line 584 "config-parser.y" /* yacc.c:1652 */ { struct BlacklistConf *item; @@ -2207,64 +2234,64 @@ yyreduce: tmp = item; } -#line 2211 "config-parser.c" /* yacc.c:1652 */ +#line 2238 "config-parser.c" /* yacc.c:1652 */ break; - case 151: -#line 598 "config-parser.y" /* yacc.c:1652 */ + case 155: +#line 612 "config-parser.y" /* yacc.c:1652 */ { struct BlacklistConf *item = tmp; xfree(item->name); item->name = xstrdup((yyvsp[-1].string)); } -#line 2222 "config-parser.c" /* yacc.c:1652 */ +#line 2249 "config-parser.c" /* yacc.c:1652 */ break; - case 152: -#line 606 "config-parser.y" /* yacc.c:1652 */ + case 156: +#line 620 "config-parser.y" /* yacc.c:1652 */ { struct BlacklistConf *item = tmp; item->ipv4 = 0; item->ipv6 = 0; } -#line 2233 "config-parser.c" /* yacc.c:1652 */ +#line 2260 "config-parser.c" /* yacc.c:1652 */ break; - case 156: -#line 615 "config-parser.y" /* yacc.c:1652 */ + case 160: +#line 629 "config-parser.y" /* yacc.c:1652 */ { struct BlacklistConf *item = tmp; item->ipv4 = 1; } -#line 2243 "config-parser.c" /* yacc.c:1652 */ +#line 2270 "config-parser.c" /* yacc.c:1652 */ break; - case 157: -#line 620 "config-parser.y" /* yacc.c:1652 */ + case 161: +#line 634 "config-parser.y" /* yacc.c:1652 */ { struct BlacklistConf *item = tmp; item->ipv6 = 1; } -#line 2253 "config-parser.c" /* yacc.c:1652 */ +#line 2280 "config-parser.c" /* yacc.c:1652 */ break; - case 158: -#line 627 "config-parser.y" /* yacc.c:1652 */ + case 162: +#line 641 "config-parser.y" /* yacc.c:1652 */ { struct BlacklistConf *item = tmp; xfree(item->kline); item->kline = xstrdup((yyvsp[-1].string)); } -#line 2264 "config-parser.c" /* yacc.c:1652 */ +#line 2291 "config-parser.c" /* yacc.c:1652 */ break; - case 159: -#line 635 "config-parser.y" /* yacc.c:1652 */ + case 163: +#line 649 "config-parser.y" /* yacc.c:1652 */ { struct BlacklistConf *item = tmp; @@ -2275,21 +2302,21 @@ yyreduce: else yyerror("Unknown blacklist type defined"); } -#line 2279 "config-parser.c" /* yacc.c:1652 */ +#line 2306 "config-parser.c" /* yacc.c:1652 */ break; - case 160: -#line 647 "config-parser.y" /* yacc.c:1652 */ + case 164: +#line 661 "config-parser.y" /* yacc.c:1652 */ { struct BlacklistConf *item = tmp; item->ban_unknown = (yyvsp[-1].number); } -#line 2289 "config-parser.c" /* yacc.c:1652 */ +#line 2316 "config-parser.c" /* yacc.c:1652 */ break; - case 164: -#line 659 "config-parser.y" /* yacc.c:1652 */ + case 168: +#line 673 "config-parser.y" /* yacc.c:1652 */ { struct BlacklistReplyConf *item; struct BlacklistConf *blacklist = tmp; @@ -2300,19 +2327,19 @@ yyreduce: list_add(item, node_create(), &blacklist->reply); } -#line 2304 "config-parser.c" /* yacc.c:1652 */ +#line 2331 "config-parser.c" /* yacc.c:1652 */ break; - case 170: -#line 681 "config-parser.y" /* yacc.c:1652 */ + case 174: +#line 695 "config-parser.y" /* yacc.c:1652 */ { list_add(xstrdup((yyvsp[-1].string)), node_create(), &ExemptItem.masks); } -#line 2312 "config-parser.c" /* yacc.c:1652 */ +#line 2339 "config-parser.c" /* yacc.c:1652 */ break; -#line 2316 "config-parser.c" /* yacc.c:1652 */ +#line 2343 "config-parser.c" /* yacc.c:1652 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2543,5 +2570,5 @@ yyreturn: #endif return yyresult; } -#line 685 "config-parser.y" /* yacc.c:1918 */ +#line 699 "config-parser.y" /* yacc.c:1918 */ diff --git a/src/config-parser.h b/src/config-parser.h index 4daf3ef..3ccde31 100644 --- a/src/config-parser.h +++ b/src/config-parser.h @@ -109,13 +109,15 @@ extern int yydebug; TARGET_PORT = 315, TARGET_STRING = 316, TIMEOUT = 317, - TYPE = 318, - USERNAME = 319, - USER = 320, - VHOST = 321, - NUMBER = 322, - STRING = 323, - PROTOCOLTYPE = 324 + TLS = 318, + TLS_HOSTNAME_VERIFICATION = 319, + TYPE = 320, + USERNAME = 321, + USER = 322, + VHOST = 323, + NUMBER = 324, + STRING = 325, + PROTOCOLTYPE = 326 }; #endif /* Tokens. */ @@ -179,25 +181,27 @@ extern int yydebug; #define TARGET_PORT 315 #define TARGET_STRING 316 #define TIMEOUT 317 -#define TYPE 318 -#define USERNAME 319 -#define USER 320 -#define VHOST 321 -#define NUMBER 322 -#define STRING 323 -#define PROTOCOLTYPE 324 +#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 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 91 "config-parser.y" /* yacc.c:1921 */ +#line 93 "config-parser.y" /* yacc.c:1921 */ int number; char *string; -#line 201 "config-parser.h" /* yacc.c:1921 */ +#line 205 "config-parser.h" /* yacc.c:1921 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/src/config-parser.y b/src/config-parser.y index bb31843..f66513b 100644 --- a/src/config-parser.y +++ b/src/config-parser.y @@ -82,6 +82,8 @@ static void *tmp; /* Variable to temporarily hold nodes before insertion to lis %token TARGET_PORT %token TARGET_STRING %token TIMEOUT +%token TLS +%token TLS_HOSTNAME_VERIFICATION %token TYPE %token USERNAME %token USER @@ -213,6 +215,8 @@ irc_item: irc_away | irc_oper | irc_password | irc_port | + irc_tls | + irc_tls_hostname_verification | irc_readtimeout | irc_reconnectinterval | irc_realname | @@ -281,6 +285,16 @@ irc_port: PORT '=' NUMBER ';' IRCItem.port = $3; }; +irc_tls: TLS '=' NUMBER ';' +{ + IRCItem.tls = $3; +}; + +irc_tls_hostname_verification: TLS_HOSTNAME_VERIFICATION '=' NUMBER ';' +{ + IRCItem.tls_hostname_verification = $3; +}; + irc_readtimeout: READTIMEOUT '=' timespec ';' { IRCItem.readtimeout = $3; diff --git a/src/config.c b/src/config.c index 99e7d67..70129b0 100644 --- a/src/config.c +++ b/src/config.c @@ -55,6 +55,8 @@ config_setup(void) 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"); diff --git a/src/config.h b/src/config.h index e1d3214..5302262 100644 --- a/src/config.h +++ b/src/config.h @@ -38,6 +38,8 @@ struct IRCConf char *realname; char *server; int port; + int tls; + int tls_hostname_verification; time_t readtimeout; time_t reconnectinterval; char *password; @@ -35,6 +35,11 @@ #include <stdarg.h> #include <regex.h> #include <assert.h> +#ifdef HAVE_LIBCRYPTO +#include <openssl/ssl.h> +#include <openssl/x509v3.h> +#include <openssl/err.h> +#endif #include "config.h" #include "irc.h" @@ -65,6 +70,11 @@ static socklen_t svr_addrlen; static time_t IRC_LAST; /* Last full line of data from irc server */ static time_t IRC_LASTRECONNECT; /* Time of last reconnection */ +#ifdef HAVE_LIBCRYPTO +static SSL_CTX *ssl_ctx; +static SSL *ssl_handle; +#endif + /* get_channel * @@ -524,9 +534,51 @@ irc_init(void) freeaddrinfo(res); } + + if (IRCItem.tls) + { +#ifdef HAVE_LIBCRYPTO + /* Initialize SSL */ + static int tls_init = 0; + if (tls_init == 0) + { + tls_init = 1; + + ssl_ctx = SSL_CTX_new(TLS_client_method()); + if (ssl_ctx == NULL) + { + log_printf("IRC -> unable to create SSL context"); + exit(EXIT_FAILURE); + } + + SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_2_VERSION); + SSL_CTX_set_default_verify_paths(ssl_ctx); + } + + ssl_handle = SSL_new(ssl_ctx); + SSL_set_fd(ssl_handle, IRC_FD); + + if (IRCItem.tls_hostname_verification) + { + SSL_set_hostflags(ssl_handle, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS); + + if (SSL_set1_host(ssl_handle, IRCItem.server) == 0) + { + log_printf("IRC -> unable to set expected DNS hostname"); + /* OpenSSL is unable to verify the server hostname at this point, so we exit. */ + exit(EXIT_FAILURE); + } + } + + SSL_set_verify(ssl_handle, SSL_VERIFY_PEER, NULL); +#else + log_printf("IRC -> HOPM is not compiled with OpenSSL support"); + exit(EXIT_FAILURE); +#endif + } } -/* irc_reconnect +/* irc_close * * Close connection to IRC server. * @@ -535,24 +587,19 @@ irc_init(void) * Return: NONE */ static void -irc_reconnect(void) +irc_close(void) { - time_t present; - - time(&present); - - /* Only try to reconnect every IRCItem.reconnectinterval seconds */ - if ((present - IRC_LASTRECONNECT) < IRCItem.reconnectinterval) - { - /* Sleep to avoid excessive CPU */ - sleep(1); - return; - } - - time(&IRC_LASTRECONNECT); - if (IRC_FD > -1) { +#ifdef HAVE_LIBCRYPTO + if (ssl_handle) + { + SSL_shutdown(ssl_handle); + SSL_free(ssl_handle); + ssl_handle = NULL; + } +#endif + close(IRC_FD); IRC_FD = -1; /* Set IRC_FD -1 for reconnection on next irc_cycle(). */ } @@ -571,20 +618,51 @@ irc_reconnect(void) static void irc_connect(void) { + time_t present; + + time(&present); + + /* Only try to reconnect every IRCItem.reconnectinterval seconds */ + if ((present - IRC_LASTRECONNECT) < IRCItem.reconnectinterval) + { + /* Sleep to avoid excessive CPU */ + sleep(1); + return; + } + + time(&IRC_LASTRECONNECT); + time(&IRC_LAST); + + irc_init(); + /* Connect to IRC server as client. */ if (connect(IRC_FD, (struct sockaddr *)&IRC_SVR, svr_addrlen) == -1) { log_printf("IRC -> connect(): error connecting to %s: %s", IRCItem.server, strerror(errno)); - if (errno == EISCONN /* Already connected */ || errno == EALREADY /* Previous attempt not complete */) - return; - - /* Try to connect again */ - irc_reconnect(); + /* Close socket and try to connect again */ + irc_close(); return; } +#ifdef HAVE_LIBCRYPTO + if (ssl_handle) + { + int ret = SSL_connect(ssl_handle); + if (ret != 1) + { + const char *error = ERR_error_string(ERR_get_error(), NULL); + log_printf("IRC -> connect(): error performing TLS handshake with %s: %s", + IRCItem.server, error); + + /* Close socket and try to connect again */ + irc_close(); + return; + } + } +#endif + irc_send("NICK %s", IRCItem.nick); if (!EmptyString(IRCItem.password)) @@ -619,6 +697,7 @@ irc_parse(void) * source did not exist */ char *parv[17]; + static const unsigned int parv_size = sizeof(parv) / sizeof(parv[0]); unsigned int parc = 1; char msg[MSGLENMAX]; /* Temporarily stores IRC msg to pass to handlers */ @@ -670,7 +749,7 @@ irc_parse(void) pos = IRC_RAW; - while ((pos = strchr(pos, ' ')) && parc <= 17) + while ((pos = strchr(pos, ' ')) && parc < parv_size) { /* Avoid excessive spaces and end of IRC_RAW */ if (*(pos + 1) == ' ' || *(pos + 1) == '\0') @@ -724,8 +803,18 @@ irc_read(void) ssize_t len; char c; - while ((len = read(IRC_FD, &c, 1)) > 0) + while (1) { +#ifdef HAVE_LIBCRYPTO + if (ssl_handle) + len = SSL_read(ssl_handle, &c, 1); + else +#endif + len = recv(IRC_FD, &c, 1, 0); + + if (len <= 0) + break; + if (c == '\r') continue; @@ -751,7 +840,7 @@ irc_read(void) if (errno != EINTR) log_printf("IRC -> Error reading data from server: %s", strerror(errno)); - irc_reconnect(); + irc_close(); IRC_RAW_LEN = 0; return; } @@ -778,9 +867,6 @@ irc_cycle(void) if (OptionsItem.negcache) negcache_init(); - /* Resolve remote host. */ - irc_init(); - /* Connect to remote host. */ irc_connect(); return; /* In case connect() immediately failed */ @@ -800,7 +886,7 @@ irc_cycle(void) if (pfd.revents & POLLIN) irc_read(); else if (pfd.revents & (POLLERR | POLLHUP)) - irc_reconnect(); + irc_close(); break; } @@ -823,7 +909,7 @@ irc_send(const char *data, ...) char buf[MSGLENMAX]; va_start(arglist, data); - size_t len = vsnprintf(buf, sizeof(buf), data, arglist); + ssize_t len = vsnprintf(buf, sizeof(buf), data, arglist); va_end(arglist); if (OPT_DEBUG >= 2) @@ -835,11 +921,19 @@ irc_send(const char *data, ...) buf[len++] = '\r'; buf[len++] = '\n'; - if (send(IRC_FD, buf, len, 0) == -1) + ssize_t sent; +#ifdef HAVE_LIBCRYPTO + if (ssl_handle) + sent = SSL_write(ssl_handle, buf, len); + else +#endif + sent = send(IRC_FD, buf, len, 0); + + if (sent != len) { /* Return of -1 indicates error sending data; we reconnect. */ log_printf("IRC -> Error sending data to server: %s", strerror(errno)); - irc_reconnect(); + irc_close(); } } @@ -892,7 +986,7 @@ irc_timer(void) if (delta >= IRCItem.readtimeout) { log_printf("IRC -> Timeout awaiting data from server."); - irc_reconnect(); + irc_close(); /* Make sure we don't do this again for a while */ time(&IRC_LAST); diff --git a/src/patchlevel.h b/src/patchlevel.h index 381d6fa..e432bae 100644 --- a/src/patchlevel.h +++ b/src/patchlevel.h @@ -4,5 +4,5 @@ */ #ifndef PATCHLEVEL -#define PATCHLEVEL "hopm-1.1.7" +#define PATCHLEVEL "hopm-1.1.8" #endif |