#include #ifndef lint #if 0 static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; #else __IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.14 1997/10/20 03:41:16 lukem Exp $"); #endif #endif #include #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 #define YYLEX yylex() #define YYEMPTY -1 #define yyclearin (yychar=(YYEMPTY)) #define yyerrok (yyerrflag=0) #define YYRECOVERING (yyerrflag!=0) #define YYPREFIX "yy" #line 66 "cfg.y" #include #include #include #include #include #include #include #include #include "route_struct.h" #include "globals.h" #include "route.h" #include "dprint.h" #include "sr_module.h" #include "modparam.h" #include "ip_addr.h" #include "resolve.h" #include "socket_info.h" #include "name_alias.h" #include "ut.h" #include "dset.h" #include "config.h" #ifdef USE_TLS #include "tls/tls_config.h" #endif #ifdef DEBUG_DMALLOC #include #endif /* hack to avoid alloca usage in the generated C file (needed for compiler with no built in alloca, like icc*/ #undef _ALLOCA_H extern int yylex(); static void yyerror(char* s); static char* tmp; static int i_tmp; static void* f_tmp; static struct socket_id* lst_tmp; static int rt; /* Type of route block for find_export */ static str* str_tmp; static str s_tmp; static struct ip_addr* ip_tmp; static void warn(char* s); static struct socket_id* mk_listen_id(char*, int, int); #line 120 "cfg.y" typedef union { long intval; unsigned long uval; char* strval; struct expr* expr; struct action* action; struct net* ipnet; struct ip_addr* ipaddr; struct socket_id* sockid; } YYSTYPE; #line 84 "cfg.tab.c" #define FORWARD 257 #define FORWARD_TCP 258 #define FORWARD_TLS 259 #define FORWARD_UDP 260 #define SEND 261 #define SEND_TCP 262 #define DROP 263 #define LOG_TOK 264 #define ERROR 265 #define ROUTE 266 #define ROUTE_FAILURE 267 #define ROUTE_ONREPLY 268 #define EXEC 269 #define SET_HOST 270 #define SET_HOSTPORT 271 #define PREFIX 272 #define STRIP 273 #define STRIP_TAIL 274 #define APPEND_BRANCH 275 #define SET_USER 276 #define SET_USERPASS 277 #define SET_PORT 278 #define SET_URI 279 #define REVERT_URI 280 #define FORCE_RPORT 281 #define FORCE_TCP_ALIAS 282 #define IF 283 #define ELSE 284 #define SET_ADV_ADDRESS 285 #define SET_ADV_PORT 286 #define FORCE_SEND_SOCKET 287 #define URIHOST 288 #define URIPORT 289 #define MAX_LEN 290 #define SETFLAG 291 #define RESETFLAG 292 #define ISFLAGSET 293 #define METHOD 294 #define URI 295 #define FROM_URI 296 #define TO_URI 297 #define SRCIP 298 #define SRCPORT 299 #define DSTIP 300 #define DSTPORT 301 #define PROTO 302 #define AF 303 #define MYSELF 304 #define MSGLEN 305 #define UDP 306 #define TCP 307 #define TLS 308 #define DEBUG 309 #define FORK 310 #define LOGSTDERROR 311 #define LOGFACILITY 312 #define LISTEN 313 #define ALIAS 314 #define DNS 315 #define REV_DNS 316 #define PORT 317 #define STAT 318 #define CHILDREN 319 #define CHECK_VIA 320 #define SYN_BRANCH 321 #define MEMLOG 322 #define SIP_WARNING 323 #define FIFO 324 #define FIFO_DIR 325 #define SOCK_MODE 326 #define SOCK_USER 327 #define SOCK_GROUP 328 #define FIFO_DB_URL 329 #define UNIX_SOCK 330 #define UNIX_SOCK_CHILDREN 331 #define UNIX_TX_TIMEOUT 332 #define SERVER_SIGNATURE 333 #define SERVER_NAME 334 #define REPLY_TO_VIA 335 #define LOADMODULE 336 #define MODPARAM 337 #define MAXBUFFER 338 #define USER 339 #define GROUP 340 #define CHROOT 341 #define WDIR 342 #define MHOMED 343 #define DISABLE_TCP 344 #define TCP_ACCEPT_ALIASES 345 #define TCP_CHILDREN 346 #define TCP_CONNECT_TIMEOUT 347 #define TCP_SEND_TIMEOUT 348 #define DISABLE_TLS 349 #define TLSLOG 350 #define TLS_PORT_NO 351 #define TLS_METHOD 352 #define TLS_HANDSHAKE_TIMEOUT 353 #define TLS_SEND_TIMEOUT 354 #define SSLv23 355 #define SSLv2 356 #define SSLv3 357 #define TLSv1 358 #define TLS_VERIFY 359 #define TLS_REQUIRE_CERTIFICATE 360 #define TLS_CERTIFICATE 361 #define TLS_PRIVATE_KEY 362 #define TLS_CA_LIST 363 #define ADVERTISED_ADDRESS 364 #define ADVERTISED_PORT 365 #define DISABLE_CORE 366 #define OPEN_FD_LIMIT 367 #define MCAST_LOOPBACK 368 #define MCAST_TTL 369 #define EQUAL 370 #define EQUAL_T 371 #define GT 372 #define LT 373 #define GTE 374 #define LTE 375 #define DIFF 376 #define MATCH 377 #define OR 378 #define AND 379 #define NOT 380 #define PLUS 381 #define MINUS 382 #define NUMBER 383 #define ID 384 #define STRING 385 #define IPV6ADDR 386 #define COMMA 387 #define SEMICOLON 388 #define RPAREN 389 #define LPAREN 390 #define LBRACE 391 #define RBRACE 392 #define LBRACK 393 #define RBRACK 394 #define SLASH 395 #define DOT 396 #define CR 397 #define COLON 398 #define STAR 399 #define YYERRCODE 256 short yylhs[] = { -1, 0, 25, 25, 25, 26, 26, 30, 26, 32, 26, 34, 26, 26, 15, 15, 15, 18, 18, 18, 18, 19, 19, 17, 17, 17, 17, 17, 16, 16, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 12, 12, 9, 11, 10, 10, 29, 29, 29, 31, 31, 33, 33, 1, 1, 1, 1, 1, 20, 20, 22, 22, 22, 22, 22, 21, 21, 24, 24, 24, 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, 13, 13, 13, 13, 23, 23, 14, 14, 14, 8, 8, 8, 7, 7, 4, 4, 4, 3, 3, 3, 3, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; short yylen[] = { 2, 1, 2, 1, 2, 1, 1, 0, 2, 0, 2, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 5, 3, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 8, 8, 2, 1, 1, 7, 1, 1, 3, 4, 7, 2, 7, 2, 7, 2, 3, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 3, 3, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 2, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 1, 1, 3, 1, 3, 2, 1, 2, 2, 1, 1, 2, 3, 5, 4, 4, 4, 6, 6, 6, 6, 6, 4, 2, 4, 4, 4, 4, 6, 6, 6, 6, 6, 4, 2, 4, 4, 4, 4, 6, 6, 6, 6, 6, 4, 2, 4, 4, 4, 4, 6, 6, 6, 6, 6, 4, 2, 4, 4, 4, 4, 6, 6, 6, 2, 4, 4, 4, 4, 6, 6, 6, 2, 4, 3, 1, 4, 6, 2, 4, 4, 2, 4, 2, 4, 2, 6, 2, 4, 4, 2, 4, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 6, 4, 3, 1, 4, 2, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 3, 1, 3, 1, 4, 3, 1, 4, 4, 4, 2, 4, 4, 2, 4, 4, 2, 3, 4, 6, 4, }; short yydefred[] = { 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, 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, 13, 0, 0, 3, 5, 6, 0, 0, 0, 147, 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, 149, 148, 152, 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, 8, 0, 10, 0, 12, 31, 30, 33, 32, 35, 34, 37, 36, 132, 17, 18, 19, 0, 233, 15, 156, 0, 20, 153, 154, 157, 14, 0, 0, 131, 0, 0, 134, 133, 39, 38, 41, 40, 46, 42, 43, 48, 47, 50, 49, 52, 51, 54, 53, 56, 55, 58, 57, 60, 59, 62, 61, 65, 64, 63, 68, 67, 66, 70, 69, 72, 71, 74, 73, 76, 75, 127, 126, 128, 130, 129, 0, 45, 44, 79, 78, 77, 82, 81, 80, 85, 84, 83, 88, 87, 86, 90, 89, 92, 91, 94, 93, 96, 95, 98, 97, 100, 99, 102, 101, 104, 103, 106, 105, 111, 107, 108, 109, 110, 123, 122, 125, 124, 113, 112, 115, 114, 117, 116, 119, 118, 121, 120, 136, 135, 138, 137, 140, 139, 142, 141, 144, 143, 146, 145, 161, 0, 0, 163, 0, 165, 0, 0, 0, 232, 0, 0, 0, 29, 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, 0, 0, 0, 246, 242, 0, 0, 245, 0, 0, 0, 0, 158, 235, 234, 27, 21, 22, 24, 0, 0, 259, 0, 281, 0, 292, 0, 270, 0, 300, 0, 308, 0, 0, 314, 0, 323, 0, 326, 0, 0, 330, 0, 346, 0, 333, 0, 339, 0, 336, 0, 0, 352, 0, 355, 0, 349, 0, 358, 0, 0, 0, 0, 0, 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 0, 0, 0, 170, 236, 237, 225, 0, 370, 0, 373, 0, 376, 0, 317, 0, 319, 0, 321, 0, 0, 243, 159, 241, 247, 244, 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, 0, 0, 0, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 343, 0, 0, 0, 0, 0, 0, 0, 0, 360, 362, 0, 0, 365, 186, 171, 172, 179, 178, 0, 213, 0, 0, 194, 174, 175, 176, 177, 173, 0, 219, 0, 0, 197, 0, 200, 0, 203, 0, 224, 0, 207, 0, 168, 0, 0, 0, 0, 0, 239, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 377, 0, 0, 0, 0, 26, 0, 0, 260, 0, 258, 0, 251, 0, 252, 0, 250, 282, 0, 280, 0, 273, 0, 274, 0, 272, 293, 0, 291, 0, 284, 0, 285, 0, 283, 271, 0, 269, 0, 262, 0, 263, 0, 261, 301, 0, 295, 0, 296, 0, 294, 309, 0, 303, 0, 304, 0, 302, 315, 0, 312, 324, 0, 327, 325, 328, 331, 329, 347, 345, 334, 332, 340, 338, 337, 335, 0, 342, 353, 351, 356, 354, 350, 348, 359, 357, 367, 364, 185, 184, 183, 211, 0, 208, 212, 209, 0, 193, 192, 217, 214, 218, 215, 0, 196, 195, 199, 198, 202, 201, 223, 221, 222, 220, 206, 205, 204, 169, 238, 0, 166, 0, 0, 189, 190, 187, 0, 369, 368, 372, 371, 375, 374, 316, 318, 320, 380, 0, 378, 0, 0, 0, 0, 151, 150, 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, 240, 249, 0, 160, 162, 164, 155, 256, 257, 254, 255, 253, 278, 279, 276, 277, 275, 289, 290, 287, 288, 286, 267, 268, 265, 266, 264, 298, 299, 297, 306, 307, 305, 313, 322, 341, 230, 0, 227, 379, }; short yydgoto[] = { 60, 395, 396, 320, 321, 322, 323, 523, 399, 154, 155, 156, 157, 631, 158, 159, 160, 161, 162, 334, 501, 492, 502, 282, 400, 61, 62, 63, 64, 131, 65, 133, 66, 135, 67, }; short yysindex[] = { 586, -332, -329, -326, -305, -301, -288, -284, -283, -266, -263, -253, -249, -246, -243, -237, -236, -215, -105, -76, 2, 9, 37, 43, 44, 102, 116, 143, 152, -198, -239, 159, 257, 306, 311, 386, 399, 403, 407, 419, 497, 498, 519, 573, 592, 599, 611, 616, 620, 671, 673, 696, 697, 698, 711, 787, 788, 810, 825, 0, 0, 685, 0, 0, 0, -204, -123, -200, 0, 234, 236, 237, 36, -247, -211, 238, 247, 249, 21, 254, 255, 259, 271, 272, -113, -29, 345, -179, -136, 34, 103, 346, 347, 348, 88, 367, 0, 0, 0, 117, 368, -124, -114, 24, 31, 369, 375, 377, 378, 379, 380, 511, 587, 588, -52, 589, 686, 719, 720, 124, 133, 136, -142, 721, 736, 737, 801, 802, -332, 0, -228, 0, -245, 0, -231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 0, 0, 0, 371, 0, 0, 0, 0, 0, -318, 366, 0, 1095, 546, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 381, 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, 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, 0, 0, 2070, 585, 0, 672, 0, 791, 795, 563, 0, 800, 813, -230, 0, 879, 794, -233, -229, -223, -220, -206, -205, 815, -201, -199, -189, 817, -182, -181, -180, -177, -176, 819, -175, -172, -168, -167, 820, 821, 822, 1625, -166, -165, -145, -143, -140, -134, 824, 0, 0, 814, -241, 0, 823, 828, 831, 830, 0, 0, 0, 0, 0, 0, 0, 798, 816, 0, -190, 0, -186, 0, -153, 0, -147, 0, -131, 0, -107, 811, 0, 10, 0, 141, 0, 803, 843, 0, 145, 0, 146, 0, 147, 0, 804, 0, 805, -342, 0, 148, 0, 149, 0, 214, 0, 215, 826, 827, -125, 415, 0, 0, 0, 842, 235, 880, 1055, 1061, 1093, -226, 1099, 1625, 0, 1625, 2070, 1898, 0, 0, 0, 0, 884, 0, -102, 0, 806, 0, -207, 0, 844, 0, 846, 0, 855, -126, 0, 0, 0, 0, 0, 848, 850, 851, 860, -343, -157, 856, -170, -88, 197, -277, 857, 198, 288, 357, -94, 858, 358, 385, 394, 398, 859, 395, 401, 406, 577, 861, 501, 569, 578, 863, 574, 593, 812, 0, 864, 862, 865, 869, 872, 877, 878, 881, 882, 886, 887, 888, 891, 892, 905, 906, 926, 927, 598, 0, 943, 944, 964, 965, 981, 982, 998, 1002, 0, 0, 1003, 1004, 0, 0, 0, 0, 0, 0, 33, 0, 837, 122, 0, 0, 0, 0, 0, 0, 807, 0, 838, 132, 0, 808, 0, -235, 0, 809, 0, 937, 0, 233, 0, 370, 852, 1625, 1625, 2070, 0, 920, 0, 969, 135, 1008, 1009, 1010, 1011, 1015, 1016, 1017, 1018, 1019, 1020, 653, 0, 2070, 2070, 2070, 873, 0, 1021, 1023, 0, -260, 0, 885, 0, 896, 0, 1030, 0, 0, -257, 0, 1031, 0, 1033, 0, 1034, 0, 0, -255, 0, 1035, 0, 1037, 0, 1038, 0, 0, -254, 0, 1039, 0, 1040, 0, 1041, 0, 0, 1042, 0, 1056, 0, 1057, 0, 0, 1058, 0, 1059, 0, 1060, 0, 0, 1053, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049, 0, 0, 0, -318, 0, 0, 0, 0, 0, 0, -318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, 890, 1981, 0, 0, 0, -318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, 0, 1027, 1065, 1103, 1068, 0, 0, 1069, 1070, 1071, 1072, 1073, 1074, 1087, 1088, 1094, 1096, 1097, 1100, 1101, 1104, 1118, 1119, 1135, 1139, 1140, 1141, 1156, 1157, 1173, 1177, 1178, 1179, 1194, 1195, 1211, -203, 0, 0, 1215, 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, 0, 0, 0, 209, 0, 0, }; short yyrindex[] = { 144, 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, 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, 7, 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, 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, 0, 0, 0, 0, 373, 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, 1, 115, 0, 487, 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, 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, 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, 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, 1098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1278, 0, 0, 0, 0, 1316, 1452, 1490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 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, 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, 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, 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, 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, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 387, 0, 140, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 600, 0, 0, 0, 1674, 0, 0, 0, 0, 0, 0, 1711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1935, 0, 0, 0, 0, 0, 0, 1763, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1846, 0, 0, }; short yygindex[] = { 0, -285, 0, -302, -381, -308, -299, 786, 0, 0, 0, 1298, -338, 950, -324, -117, -43, 1050, 946, 1182, -337, -346, -90, 0, 971, 0, 1431, 0, 0, 0, 0, 0, 0, 0, 0, }; #define YYTABLESIZE 2458 short yytable[] = { 428, 16, 433, 397, 438, 260, 443, 1, 447, 144, 451, 274, 398, 518, 429, 417, 434, 98, 439, 416, 444, 644, 448, 337, 452, 276, 331, 339, 271, 683, 512, 164, 688, 341, 693, 698, 343, 495, 68, 505, 332, 69, 491, 472, 70, 163, 494, 473, 504, 531, 345, 347, 513, 749, 526, 350, 333, 352, 96, 145, 146, 147, 130, 525, 280, 71, 425, 354, 134, 72, 430, 145, 146, 147, 357, 359, 361, 188, 281, 363, 365, 368, 73, 397, 370, 397, 74, 75, 372, 374, 401, 403, 398, 522, 398, 145, 146, 147, 426, 145, 146, 147, 431, 435, 76, 280, 516, 77, 517, 440, 553, 405, 554, 407, 259, 23, 409, 78, 284, 281, 191, 79, 411, 684, 80, 445, 689, 81, 694, 699, 536, 484, 210, 82, 83, 436, 148, 149, 150, 151, 659, 441, 213, 182, 132, 488, 152, 418, 275, 449, 489, 99, 153, 332, 527, 84, 630, 338, 677, 678, 679, 340, 277, 272, 153, 273, 630, 342, 335, 333, 344, 634, 148, 149, 150, 151, 148, 149, 150, 151, 750, 641, 152, 151, 346, 348, 152, 97, 153, 351, 152, 353, 153, 148, 149, 427, 151, 148, 149, 432, 151, 355, 664, 152, 240, 189, 190, 152, 358, 360, 362, 397, 397, 364, 366, 369, 416, 547, 371, 548, 398, 398, 373, 375, 402, 404, 544, 184, 545, 25, 148, 149, 437, 151, 657, 658, 148, 149, 442, 151, 152, 148, 149, 150, 151, 406, 152, 408, 192, 193, 410, 152, 148, 149, 446, 151, 412, 16, 485, 537, 211, 212, 152, 538, 486, 85, 454, 16, 16, 16, 214, 215, 183, 7, 9, 11, 148, 149, 450, 151, 216, 148, 149, 150, 151, 528, 152, 219, 280, 626, 194, 152, 142, 562, 86, 563, 507, 509, 511, 549, 515, 550, 281, 241, 242, 243, 244, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 185, 416, 522, 196, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 23, 87, 4, 751, 416, 416, 416, 632, 88, 253, 23, 23, 23, 16, 16, 16, 16, 639, 255, 16, 662, 257, 455, 16, 456, 178, 457, 16, 16, 16, 462, 464, 466, 474, 476, 171, 89, 217, 218, 7, 9, 11, 90, 91, 220, 221, 627, 628, 195, 143, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 478, 480, 92, 204, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 93, 28, 197, 652, 136, 496, 138, 140, 165, 25, 25, 25, 23, 23, 23, 23, 207, 167, 23, 169, 149, 633, 23, 254, 172, 174, 23, 94, 23, 176, 149, 640, 256, 149, 663, 258, 95, 653, 178, 178, 458, 178, 180, 100, 463, 465, 467, 475, 477, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 551, 556, 552, 557, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 479, 481, 186, 198, 200, 202, 278, 488, 497, 498, 499, 500, 489, 25, 25, 25, 25, 654, 137, 25, 139, 141, 166, 25, 205, 208, 222, 25, 101, 25, 4, 168, 224, 170, 226, 228, 230, 232, 173, 175, 4, 4, 4, 177, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 179, 181, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 487, 248, 248, 248, 558, 102, 559, 248, 248, 248, 103, 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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 187, 199, 201, 203, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 28, 560, 565, 561, 566, 519, 520, 206, 209, 223, 28, 28, 28, 104, 151, 225, 655, 227, 229, 231, 233, 283, 248, 248, 234, 286, 105, 4, 248, 567, 106, 568, 248, 248, 107, 248, 248, 280, 569, 574, 570, 575, 571, 488, 572, 576, 108, 577, 489, 490, 578, 281, 579, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 1, 236, 238, 245, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 109, 110, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 28, 229, 229, 229, 583, 111, 584, 229, 229, 229, 235, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 128, 247, 112, 285, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 585, 328, 586, 280, 280, 590, 113, 591, 580, 587, 581, 588, 324, 114, 237, 239, 246, 281, 281, 249, 251, 261, 229, 229, 592, 115, 593, 59, 229, 614, 116, 615, 229, 229, 117, 229, 263, 265, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 675, 118, 676, 119, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 325, 329, 267, 269, 459, 468, 470, 529, 635, 642, 646, 120, 121, 122, 248, 414, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 123, 59, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 493, 312, 313, 314, 250, 252, 262, 315, 316, 317, 414, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 264, 266, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 503, 312, 313, 314, 524, 629, 637, 315, 316, 317, 414, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 124, 125, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 326, 312, 313, 314, 327, 336, 126, 315, 316, 317, 268, 270, 460, 469, 471, 530, 636, 643, 647, 648, 280, 127, 423, 330, 318, 594, 453, 595, 319, 424, 660, 349, 415, 356, 281, 367, 376, 377, 378, 488, 413, 482, 483, 419, 489, 490, 148, 148, 420, 151, 151, 421, 422, 533, 461, 534, 152, 152, 380, 381, 382, 649, 318, 650, 535, 539, 319, 540, 541, 542, 656, 546, 555, 564, 573, 597, 582, 488, 589, 596, 598, 488, 489, 490, 599, 600, 489, 490, 148, 149, 150, 151, 601, 602, 685, 680, 603, 604, 152, 661, 318, 605, 606, 607, 319, 686, 608, 609, 713, 414, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 610, 611, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 506, 312, 313, 314, 612, 613, 508, 315, 316, 317, 414, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 616, 617, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 510, 312, 313, 314, 618, 619, 514, 315, 316, 317, 414, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 620, 621, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 622, 312, 313, 314, 623, 624, 625, 315, 316, 317, 665, 666, 667, 668, 145, 146, 147, 669, 670, 671, 672, 673, 674, 681, 318, 682, 687, 690, 319, 691, 692, 695, 716, 696, 697, 700, 701, 702, 703, 488, 497, 498, 499, 500, 489, 488, 497, 498, 499, 500, 489, 709, 704, 705, 706, 707, 708, 712, 520, 714, 710, 711, 318, 279, 719, 715, 319, 638, 645, 532, 717, 720, 721, 722, 723, 724, 725, 488, 497, 498, 499, 500, 489, 488, 497, 498, 499, 500, 489, 726, 727, 148, 149, 150, 151, 231, 728, 651, 729, 730, 318, 152, 731, 732, 319, 129, 733, 153, 718, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 734, 735, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 736, 311, 311, 311, 737, 738, 739, 311, 311, 311, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 740, 741, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 742, 344, 344, 344, 743, 744, 745, 344, 344, 344, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 746, 747, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 748, 361, 361, 361, 752, 543, 0, 361, 361, 361, 0, 0, 0, 0, 0, 0, 0, 0, 311, 311, 0, 0, 0, 0, 311, 0, 0, 0, 311, 311, 0, 311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 344, 344, 0, 0, 0, 0, 344, 0, 0, 0, 344, 344, 0, 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, 361, 0, 0, 0, 0, 361, 0, 0, 0, 361, 361, 0, 361, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 0, 0, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 0, 363, 363, 363, 0, 0, 0, 363, 363, 363, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 0, 0, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 0, 366, 366, 366, 0, 0, 0, 366, 366, 366, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 363, 0, 0, 0, 0, 363, 0, 0, 0, 363, 363, 0, 363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 366, 366, 0, 0, 0, 0, 366, 0, 0, 0, 366, 366, 0, 366, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 0, 0, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 313, 314, 0, 0, 0, 315, 316, 317, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 0, 0, 0, 210, 210, 210, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 0, 0, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 0, 216, 216, 216, 0, 0, 0, 216, 216, 216, 391, 0, 0, 392, 318, 0, 0, 0, 0, 0, 393, 394, 0, 0, 0, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 0, 0, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 0, 188, 188, 188, 0, 210, 210, 188, 188, 188, 0, 210, 0, 0, 0, 210, 210, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 216, 0, 0, 0, 0, 216, 0, 0, 0, 216, 216, 0, 216, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 0, 0, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 0, 228, 228, 228, 0, 0, 0, 228, 228, 228, 0, 188, 188, 0, 0, 0, 0, 188, 0, 0, 0, 188, 188, 0, 188, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 0, 0, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 313, 314, 0, 0, 0, 315, 316, 317, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 0, 0, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 0, 167, 167, 167, 0, 228, 228, 167, 167, 167, 0, 228, 0, 0, 0, 228, 228, 0, 228, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 0, 0, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 313, 314, 0, 0, 0, 315, 316, 317, 0, 519, 520, 0, 0, 0, 0, 318, 0, 0, 0, 319, 0, 0, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 167, 0, 0, 0, 167, 167, 0, 167, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 0, 0, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 313, 314, 0, 0, 0, 315, 316, 317, 0, 318, 0, 0, 0, 319, 0, 0, 521, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, 0, 0, 0, 319, }; short yycheck[] = { 338, 0, 340, 311, 342, 122, 344, 0, 346, 256, 348, 256, 311, 394, 338, 256, 340, 256, 342, 321, 344, 256, 346, 256, 348, 256, 256, 256, 256, 289, 256, 74, 289, 256, 289, 289, 256, 383, 370, 385, 383, 370, 379, 385, 370, 256, 383, 389, 385, 256, 256, 256, 389, 256, 400, 256, 399, 256, 256, 306, 307, 308, 266, 400, 382, 370, 256, 256, 268, 370, 256, 306, 307, 308, 256, 256, 256, 256, 396, 256, 256, 256, 370, 391, 256, 393, 370, 370, 256, 256, 256, 256, 391, 395, 393, 306, 307, 308, 288, 306, 307, 308, 288, 256, 370, 382, 391, 370, 393, 256, 387, 256, 389, 256, 256, 0, 256, 370, 161, 396, 256, 370, 256, 383, 370, 256, 383, 370, 383, 383, 256, 256, 256, 370, 370, 288, 383, 384, 385, 386, 521, 288, 256, 256, 267, 371, 393, 388, 393, 256, 376, 390, 399, 383, 256, 370, 494, 390, 539, 540, 541, 390, 393, 391, 399, 393, 504, 390, 285, 399, 390, 495, 383, 384, 385, 386, 383, 384, 385, 386, 383, 505, 393, 386, 390, 390, 393, 385, 399, 390, 393, 390, 399, 383, 384, 385, 386, 383, 384, 385, 386, 390, 526, 393, 256, 384, 385, 393, 390, 390, 390, 519, 520, 390, 390, 390, 518, 387, 390, 389, 519, 520, 390, 390, 390, 390, 383, 256, 385, 0, 383, 384, 385, 386, 519, 520, 383, 384, 385, 386, 393, 383, 384, 385, 386, 390, 393, 390, 384, 385, 390, 393, 383, 384, 385, 386, 390, 256, 383, 385, 384, 385, 393, 389, 389, 370, 256, 266, 267, 268, 384, 385, 385, 266, 267, 268, 383, 384, 385, 386, 256, 383, 384, 385, 386, 402, 393, 256, 382, 256, 256, 393, 256, 387, 370, 389, 386, 387, 388, 387, 390, 389, 396, 355, 356, 357, 358, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 385, 659, 660, 256, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 256, 370, 0, 712, 677, 678, 679, 256, 370, 256, 266, 267, 268, 383, 384, 385, 386, 256, 256, 389, 256, 256, 383, 393, 385, 256, 256, 397, 398, 399, 256, 256, 256, 256, 256, 385, 370, 384, 385, 266, 267, 268, 370, 370, 384, 385, 384, 385, 385, 384, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 256, 256, 370, 385, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 256, 370, 0, 385, 256, 256, 256, 256, 256, 256, 266, 267, 268, 383, 384, 385, 386, 385, 256, 389, 256, 384, 385, 393, 385, 256, 256, 397, 370, 399, 256, 384, 385, 385, 384, 385, 385, 370, 290, 384, 385, 385, 256, 256, 370, 385, 385, 385, 385, 385, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 387, 387, 389, 389, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 385, 385, 256, 256, 256, 256, 396, 371, 372, 373, 374, 375, 376, 383, 384, 385, 386, 383, 383, 389, 383, 383, 383, 393, 256, 256, 256, 397, 370, 399, 256, 383, 256, 383, 256, 256, 256, 256, 383, 383, 266, 267, 268, 383, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 383, 383, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 256, 285, 286, 287, 387, 370, 389, 291, 292, 293, 370, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 383, 383, 383, 383, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 256, 387, 387, 389, 389, 378, 379, 383, 383, 383, 266, 267, 268, 370, 386, 383, 389, 383, 383, 383, 383, 398, 378, 379, 256, 387, 370, 397, 384, 387, 370, 389, 388, 389, 370, 391, 392, 382, 387, 387, 389, 389, 387, 371, 389, 387, 370, 389, 376, 377, 387, 396, 389, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 256, 256, 256, 256, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 370, 370, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 397, 285, 286, 287, 387, 370, 389, 291, 292, 293, 383, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 256, 256, 370, 398, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 387, 394, 389, 382, 382, 387, 370, 389, 387, 387, 389, 389, 383, 370, 383, 383, 383, 396, 396, 256, 256, 256, 378, 379, 387, 370, 389, 397, 384, 387, 370, 389, 388, 389, 370, 391, 256, 256, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 387, 370, 389, 370, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 383, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 370, 370, 370, 383, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 370, 397, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 256, 285, 286, 287, 383, 383, 383, 291, 292, 293, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 383, 383, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 256, 285, 286, 287, 256, 304, 304, 291, 292, 293, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 370, 370, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 383, 285, 286, 287, 383, 385, 370, 291, 292, 293, 383, 383, 383, 383, 383, 383, 383, 383, 383, 256, 382, 370, 398, 384, 384, 387, 389, 389, 388, 387, 284, 390, 392, 390, 396, 390, 390, 390, 390, 371, 390, 389, 389, 394, 376, 377, 383, 383, 394, 386, 386, 394, 396, 383, 385, 383, 393, 393, 295, 296, 297, 298, 384, 300, 383, 391, 388, 391, 391, 383, 392, 389, 389, 389, 389, 387, 389, 371, 389, 389, 389, 371, 376, 377, 389, 387, 376, 377, 383, 384, 385, 386, 389, 389, 383, 396, 389, 389, 393, 304, 384, 389, 389, 389, 388, 383, 389, 389, 392, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 389, 389, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 256, 285, 286, 287, 389, 389, 256, 291, 292, 293, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 389, 389, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 256, 285, 286, 287, 389, 389, 256, 291, 292, 293, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 389, 389, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 389, 285, 286, 287, 389, 389, 389, 291, 292, 293, 389, 389, 389, 389, 306, 307, 308, 389, 389, 389, 389, 389, 389, 389, 384, 389, 383, 383, 388, 383, 383, 383, 392, 383, 383, 383, 383, 383, 383, 371, 372, 373, 374, 375, 376, 371, 372, 373, 374, 375, 376, 385, 383, 383, 383, 383, 383, 395, 379, 660, 385, 385, 384, 152, 383, 385, 388, 504, 509, 406, 392, 389, 389, 389, 389, 389, 389, 371, 372, 373, 374, 375, 376, 371, 372, 373, 374, 375, 376, 389, 389, 383, 384, 385, 386, 384, 389, 513, 389, 389, 384, 393, 389, 389, 388, 61, 389, 399, 392, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 389, 389, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 389, 285, 286, 287, 389, 389, 389, 291, 292, 293, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 389, 389, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 389, 285, 286, 287, 389, 389, 389, 291, 292, 293, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 389, 389, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 389, 285, 286, 287, 389, 423, -1, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, -1, -1, -1, -1, 384, -1, -1, -1, 388, 389, -1, 391, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, -1, -1, -1, -1, 384, -1, -1, -1, 388, 389, -1, 391, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, -1, -1, -1, -1, 384, -1, -1, -1, 388, 389, -1, 391, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, -1, -1, 291, 292, 293, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, -1, -1, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, -1, -1, -1, -1, 384, -1, -1, -1, 388, 389, -1, 391, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, -1, -1, -1, -1, 384, -1, -1, -1, 388, 389, -1, 391, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, -1, -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, -1, -1, 291, 292, 293, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, -1, -1, 291, 292, 293, 380, -1, -1, 383, 384, -1, -1, -1, -1, -1, 390, 391, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, 378, 379, 291, 292, 293, -1, 384, -1, -1, -1, 388, 389, -1, 391, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, -1, -1, -1, -1, 384, -1, -1, -1, 388, 389, -1, 391, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, -1, -1, 291, 292, 293, -1, 378, 379, -1, -1, -1, -1, 384, -1, -1, -1, 388, 389, -1, 391, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, -1, -1, 291, 292, 293, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, 378, 379, 291, 292, 293, -1, 384, -1, -1, -1, 388, 389, -1, 391, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, -1, -1, 291, 292, 293, -1, 378, 379, -1, -1, -1, -1, 384, -1, -1, -1, 388, -1, -1, 391, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, -1, -1, -1, -1, -1, 384, -1, -1, -1, 388, 389, -1, 391, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, -1, -1, 291, 292, 293, -1, 384, -1, -1, -1, 388, -1, -1, 391, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 384, -1, -1, -1, 388, }; #define YYFINAL 60 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 399 #if YYDEBUG char *yyname[] = { "end-of-file",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,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,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,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,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,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,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,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,0,0,0,0,0,0,0,0,"FORWARD","FORWARD_TCP", "FORWARD_TLS","FORWARD_UDP","SEND","SEND_TCP","DROP","LOG_TOK","ERROR","ROUTE", "ROUTE_FAILURE","ROUTE_ONREPLY","EXEC","SET_HOST","SET_HOSTPORT","PREFIX", "STRIP","STRIP_TAIL","APPEND_BRANCH","SET_USER","SET_USERPASS","SET_PORT", "SET_URI","REVERT_URI","FORCE_RPORT","FORCE_TCP_ALIAS","IF","ELSE", "SET_ADV_ADDRESS","SET_ADV_PORT","FORCE_SEND_SOCKET","URIHOST","URIPORT", "MAX_LEN","SETFLAG","RESETFLAG","ISFLAGSET","METHOD","URI","FROM_URI","TO_URI", "SRCIP","SRCPORT","DSTIP","DSTPORT","PROTO","AF","MYSELF","MSGLEN","UDP","TCP", "TLS","DEBUG","FORK","LOGSTDERROR","LOGFACILITY","LISTEN","ALIAS","DNS", "REV_DNS","PORT","STAT","CHILDREN","CHECK_VIA","SYN_BRANCH","MEMLOG", "SIP_WARNING","FIFO","FIFO_DIR","SOCK_MODE","SOCK_USER","SOCK_GROUP", "FIFO_DB_URL","UNIX_SOCK","UNIX_SOCK_CHILDREN","UNIX_TX_TIMEOUT", "SERVER_SIGNATURE","SERVER_NAME","REPLY_TO_VIA","LOADMODULE","MODPARAM", "MAXBUFFER","USER","GROUP","CHROOT","WDIR","MHOMED","DISABLE_TCP", "TCP_ACCEPT_ALIASES","TCP_CHILDREN","TCP_CONNECT_TIMEOUT","TCP_SEND_TIMEOUT", "DISABLE_TLS","TLSLOG","TLS_PORT_NO","TLS_METHOD","TLS_HANDSHAKE_TIMEOUT", "TLS_SEND_TIMEOUT","SSLv23","SSLv2","SSLv3","TLSv1","TLS_VERIFY", "TLS_REQUIRE_CERTIFICATE","TLS_CERTIFICATE","TLS_PRIVATE_KEY","TLS_CA_LIST", "ADVERTISED_ADDRESS","ADVERTISED_PORT","DISABLE_CORE","OPEN_FD_LIMIT", "MCAST_LOOPBACK","MCAST_TTL","EQUAL","EQUAL_T","GT","LT","GTE","LTE","DIFF", "MATCH","OR","AND","NOT","PLUS","MINUS","NUMBER","ID","STRING","IPV6ADDR", "COMMA","SEMICOLON","RPAREN","LPAREN","LBRACE","RBRACE","LBRACK","RBRACK", "SLASH","DOT","CR","COLON","STAR", }; char *yyrule[] = { "$accept : cfg", "cfg : statements", "statements : statements statement", "statements : statement", "statements : statements error", "statement : assign_stm", "statement : module_stm", "$$1 :", "statement : $$1 route_stm", "$$2 :", "statement : $$2 failure_route_stm", "$$3 :", "statement : $$3 onreply_route_stm", "statement : CR", "listen_id : ip", "listen_id : STRING", "listen_id : host", "proto : UDP", "proto : TCP", "proto : TLS", "proto : STAR", "port : NUMBER", "port : STAR", "phostport : listen_id", "phostport : listen_id COLON port", "phostport : proto COLON listen_id", "phostport : proto COLON listen_id COLON port", "phostport : listen_id COLON error", "id_lst : phostport", "id_lst : phostport id_lst", "assign_stm : DEBUG EQUAL NUMBER", "assign_stm : DEBUG EQUAL error", "assign_stm : FORK EQUAL NUMBER", "assign_stm : FORK EQUAL error", "assign_stm : LOGSTDERROR EQUAL NUMBER", "assign_stm : LOGSTDERROR EQUAL error", "assign_stm : LOGFACILITY EQUAL ID", "assign_stm : LOGFACILITY EQUAL error", "assign_stm : DNS EQUAL NUMBER", "assign_stm : DNS EQUAL error", "assign_stm : REV_DNS EQUAL NUMBER", "assign_stm : REV_DNS EQUAL error", "assign_stm : PORT EQUAL NUMBER", "assign_stm : STAT EQUAL STRING", "assign_stm : MAXBUFFER EQUAL NUMBER", "assign_stm : MAXBUFFER EQUAL error", "assign_stm : PORT EQUAL error", "assign_stm : CHILDREN EQUAL NUMBER", "assign_stm : CHILDREN EQUAL error", "assign_stm : CHECK_VIA EQUAL NUMBER", "assign_stm : CHECK_VIA EQUAL error", "assign_stm : SYN_BRANCH EQUAL NUMBER", "assign_stm : SYN_BRANCH EQUAL error", "assign_stm : MEMLOG EQUAL NUMBER", "assign_stm : MEMLOG EQUAL error", "assign_stm : SIP_WARNING EQUAL NUMBER", "assign_stm : SIP_WARNING EQUAL error", "assign_stm : FIFO EQUAL STRING", "assign_stm : FIFO EQUAL error", "assign_stm : FIFO_DIR EQUAL STRING", "assign_stm : FIFO_DIR EQUAL error", "assign_stm : SOCK_MODE EQUAL NUMBER", "assign_stm : SOCK_MODE EQUAL error", "assign_stm : SOCK_USER EQUAL STRING", "assign_stm : SOCK_USER EQUAL ID", "assign_stm : SOCK_USER EQUAL error", "assign_stm : SOCK_GROUP EQUAL STRING", "assign_stm : SOCK_GROUP EQUAL ID", "assign_stm : SOCK_GROUP EQUAL error", "assign_stm : FIFO_DB_URL EQUAL STRING", "assign_stm : FIFO_DB_URL EQUAL error", "assign_stm : UNIX_SOCK EQUAL STRING", "assign_stm : UNIX_SOCK EQUAL error", "assign_stm : UNIX_SOCK_CHILDREN EQUAL NUMBER", "assign_stm : UNIX_SOCK_CHILDREN EQUAL error", "assign_stm : UNIX_TX_TIMEOUT EQUAL NUMBER", "assign_stm : UNIX_TX_TIMEOUT EQUAL error", "assign_stm : USER EQUAL STRING", "assign_stm : USER EQUAL ID", "assign_stm : USER EQUAL error", "assign_stm : GROUP EQUAL STRING", "assign_stm : GROUP EQUAL ID", "assign_stm : GROUP EQUAL error", "assign_stm : CHROOT EQUAL STRING", "assign_stm : CHROOT EQUAL ID", "assign_stm : CHROOT EQUAL error", "assign_stm : WDIR EQUAL STRING", "assign_stm : WDIR EQUAL ID", "assign_stm : WDIR EQUAL error", "assign_stm : MHOMED EQUAL NUMBER", "assign_stm : MHOMED EQUAL error", "assign_stm : DISABLE_TCP EQUAL NUMBER", "assign_stm : DISABLE_TCP EQUAL error", "assign_stm : TCP_ACCEPT_ALIASES EQUAL NUMBER", "assign_stm : TCP_ACCEPT_ALIASES EQUAL error", "assign_stm : TCP_CHILDREN EQUAL NUMBER", "assign_stm : TCP_CHILDREN EQUAL error", "assign_stm : TCP_CONNECT_TIMEOUT EQUAL NUMBER", "assign_stm : TCP_CONNECT_TIMEOUT EQUAL error", "assign_stm : TCP_SEND_TIMEOUT EQUAL NUMBER", "assign_stm : TCP_SEND_TIMEOUT EQUAL error", "assign_stm : DISABLE_TLS EQUAL NUMBER", "assign_stm : DISABLE_TLS EQUAL error", "assign_stm : TLSLOG EQUAL NUMBER", "assign_stm : TLSLOG EQUAL error", "assign_stm : TLS_PORT_NO EQUAL NUMBER", "assign_stm : TLS_PORT_NO EQUAL error", "assign_stm : TLS_METHOD EQUAL SSLv23", "assign_stm : TLS_METHOD EQUAL SSLv2", "assign_stm : TLS_METHOD EQUAL SSLv3", "assign_stm : TLS_METHOD EQUAL TLSv1", "assign_stm : TLS_METHOD EQUAL error", "assign_stm : TLS_VERIFY EQUAL NUMBER", "assign_stm : TLS_VERIFY EQUAL error", "assign_stm : TLS_REQUIRE_CERTIFICATE EQUAL NUMBER", "assign_stm : TLS_REQUIRE_CERTIFICATE EQUAL error", "assign_stm : TLS_CERTIFICATE EQUAL STRING", "assign_stm : TLS_CERTIFICATE EQUAL error", "assign_stm : TLS_PRIVATE_KEY EQUAL STRING", "assign_stm : TLS_PRIVATE_KEY EQUAL error", "assign_stm : TLS_CA_LIST EQUAL STRING", "assign_stm : TLS_CA_LIST EQUAL error", "assign_stm : TLS_HANDSHAKE_TIMEOUT EQUAL NUMBER", "assign_stm : TLS_HANDSHAKE_TIMEOUT EQUAL error", "assign_stm : TLS_SEND_TIMEOUT EQUAL NUMBER", "assign_stm : TLS_SEND_TIMEOUT EQUAL error", "assign_stm : SERVER_SIGNATURE EQUAL NUMBER", "assign_stm : SERVER_SIGNATURE EQUAL error", "assign_stm : SERVER_NAME EQUAL STRING", "assign_stm : REPLY_TO_VIA EQUAL NUMBER", "assign_stm : REPLY_TO_VIA EQUAL error", "assign_stm : LISTEN EQUAL id_lst", "assign_stm : LISTEN EQUAL error", "assign_stm : ALIAS EQUAL id_lst", "assign_stm : ALIAS EQUAL error", "assign_stm : ADVERTISED_ADDRESS EQUAL listen_id", "assign_stm : ADVERTISED_ADDRESS EQUAL error", "assign_stm : ADVERTISED_PORT EQUAL NUMBER", "assign_stm : ADVERTISED_PORT EQUAL error", "assign_stm : DISABLE_CORE EQUAL NUMBER", "assign_stm : DISABLE_CORE EQUAL error", "assign_stm : OPEN_FD_LIMIT EQUAL NUMBER", "assign_stm : OPEN_FD_LIMIT EQUAL error", "assign_stm : MCAST_LOOPBACK EQUAL NUMBER", "assign_stm : MCAST_LOOPBACK EQUAL error", "assign_stm : MCAST_TTL EQUAL NUMBER", "assign_stm : MCAST_TTL EQUAL error", "assign_stm : error EQUAL", "module_stm : LOADMODULE STRING", "module_stm : LOADMODULE error", "module_stm : MODPARAM LPAREN STRING COMMA STRING COMMA STRING RPAREN", "module_stm : MODPARAM LPAREN STRING COMMA STRING COMMA NUMBER RPAREN", "module_stm : MODPARAM error", "ip : ipv4", "ip : ipv6", "ipv4 : NUMBER DOT NUMBER DOT NUMBER DOT NUMBER", "ipv6addr : IPV6ADDR", "ipv6 : ipv6addr", "ipv6 : LBRACK ipv6addr RBRACK", "route_stm : ROUTE LBRACE actions RBRACE", "route_stm : ROUTE LBRACK NUMBER RBRACK LBRACE actions RBRACE", "route_stm : ROUTE error", "failure_route_stm : ROUTE_FAILURE LBRACK NUMBER RBRACK LBRACE actions RBRACE", "failure_route_stm : ROUTE_FAILURE error", "onreply_route_stm : ROUTE_ONREPLY LBRACK NUMBER RBRACK LBRACE actions RBRACE", "onreply_route_stm : ROUTE_ONREPLY error", "exp : exp AND exp", "exp : exp OR exp", "exp : NOT exp", "exp : LPAREN exp RPAREN", "exp : exp_elem", "equalop : EQUAL_T", "equalop : DIFF", "intop : equalop", "intop : GT", "intop : LT", "intop : GTE", "intop : LTE", "strop : equalop", "strop : MATCH", "uri_type : URI", "uri_type : FROM_URI", "uri_type : TO_URI", "exp_elem : METHOD strop STRING", "exp_elem : METHOD strop ID", "exp_elem : METHOD strop error", "exp_elem : METHOD error", "exp_elem : uri_type strop STRING", "exp_elem : uri_type strop host", "exp_elem : uri_type equalop MYSELF", "exp_elem : uri_type strop error", "exp_elem : uri_type error", "exp_elem : SRCPORT intop NUMBER", "exp_elem : SRCPORT intop error", "exp_elem : SRCPORT error", "exp_elem : DSTPORT intop NUMBER", "exp_elem : DSTPORT intop error", "exp_elem : DSTPORT error", "exp_elem : PROTO intop proto", "exp_elem : PROTO intop error", "exp_elem : PROTO error", "exp_elem : AF intop NUMBER", "exp_elem : AF intop error", "exp_elem : AF error", "exp_elem : MSGLEN intop NUMBER", "exp_elem : MSGLEN intop MAX_LEN", "exp_elem : MSGLEN intop error", "exp_elem : MSGLEN error", "exp_elem : SRCIP equalop ipnet", "exp_elem : SRCIP strop STRING", "exp_elem : SRCIP strop host", "exp_elem : SRCIP equalop MYSELF", "exp_elem : SRCIP strop error", "exp_elem : SRCIP error", "exp_elem : DSTIP equalop ipnet", "exp_elem : DSTIP strop STRING", "exp_elem : DSTIP strop host", "exp_elem : DSTIP equalop MYSELF", "exp_elem : DSTIP strop error", "exp_elem : DSTIP error", "exp_elem : MYSELF equalop uri_type", "exp_elem : MYSELF equalop SRCIP", "exp_elem : MYSELF equalop DSTIP", "exp_elem : MYSELF equalop error", "exp_elem : MYSELF error", "exp_elem : exp_stm", "exp_elem : NUMBER", "ipnet : ip SLASH ip", "ipnet : ip SLASH NUMBER", "ipnet : ip", "ipnet : ip SLASH error", "host_sep : DOT", "host_sep : MINUS", "host : ID", "host : host host_sep ID", "host : host DOT error", "exp_stm : cmd", "exp_stm : if_cmd", "exp_stm : LBRACE actions RBRACE", "stm : action", "stm : LBRACE actions RBRACE", "actions : actions action", "actions : action", "actions : actions error", "action : cmd SEMICOLON", "action : if_cmd", "action : SEMICOLON", "action : cmd error", "if_cmd : IF exp stm", "if_cmd : IF exp stm ELSE stm", "cmd : FORWARD LPAREN host RPAREN", "cmd : FORWARD LPAREN STRING RPAREN", "cmd : FORWARD LPAREN ip RPAREN", "cmd : FORWARD LPAREN host COMMA NUMBER RPAREN", "cmd : FORWARD LPAREN STRING COMMA NUMBER RPAREN", "cmd : FORWARD LPAREN ip COMMA NUMBER RPAREN", "cmd : FORWARD LPAREN URIHOST COMMA URIPORT RPAREN", "cmd : FORWARD LPAREN URIHOST COMMA NUMBER RPAREN", "cmd : FORWARD LPAREN URIHOST RPAREN", "cmd : FORWARD error", "cmd : FORWARD LPAREN error RPAREN", "cmd : FORWARD_UDP LPAREN host RPAREN", "cmd : FORWARD_UDP LPAREN STRING RPAREN", "cmd : FORWARD_UDP LPAREN ip RPAREN", "cmd : FORWARD_UDP LPAREN host COMMA NUMBER RPAREN", "cmd : FORWARD_UDP LPAREN STRING COMMA NUMBER RPAREN", "cmd : FORWARD_UDP LPAREN ip COMMA NUMBER RPAREN", "cmd : FORWARD_UDP LPAREN URIHOST COMMA URIPORT RPAREN", "cmd : FORWARD_UDP LPAREN URIHOST COMMA NUMBER RPAREN", "cmd : FORWARD_UDP LPAREN URIHOST RPAREN", "cmd : FORWARD_UDP error", "cmd : FORWARD_UDP LPAREN error RPAREN", "cmd : FORWARD_TCP LPAREN host RPAREN", "cmd : FORWARD_TCP LPAREN STRING RPAREN", "cmd : FORWARD_TCP LPAREN ip RPAREN", "cmd : FORWARD_TCP LPAREN host COMMA NUMBER RPAREN", "cmd : FORWARD_TCP LPAREN STRING COMMA NUMBER RPAREN", "cmd : FORWARD_TCP LPAREN ip COMMA NUMBER RPAREN", "cmd : FORWARD_TCP LPAREN URIHOST COMMA URIPORT RPAREN", "cmd : FORWARD_TCP LPAREN URIHOST COMMA NUMBER RPAREN", "cmd : FORWARD_TCP LPAREN URIHOST RPAREN", "cmd : FORWARD_TCP error", "cmd : FORWARD_TCP LPAREN error RPAREN", "cmd : FORWARD_TLS LPAREN host RPAREN", "cmd : FORWARD_TLS LPAREN STRING RPAREN", "cmd : FORWARD_TLS LPAREN ip RPAREN", "cmd : FORWARD_TLS LPAREN host COMMA NUMBER RPAREN", "cmd : FORWARD_TLS LPAREN STRING COMMA NUMBER RPAREN", "cmd : FORWARD_TLS LPAREN ip COMMA NUMBER RPAREN", "cmd : FORWARD_TLS LPAREN URIHOST COMMA URIPORT RPAREN", "cmd : FORWARD_TLS LPAREN URIHOST COMMA NUMBER RPAREN", "cmd : FORWARD_TLS LPAREN URIHOST RPAREN", "cmd : FORWARD_TLS error", "cmd : FORWARD_TLS LPAREN error RPAREN", "cmd : SEND LPAREN host RPAREN", "cmd : SEND LPAREN STRING RPAREN", "cmd : SEND LPAREN ip RPAREN", "cmd : SEND LPAREN host COMMA NUMBER RPAREN", "cmd : SEND LPAREN STRING COMMA NUMBER RPAREN", "cmd : SEND LPAREN ip COMMA NUMBER RPAREN", "cmd : SEND error", "cmd : SEND LPAREN error RPAREN", "cmd : SEND_TCP LPAREN host RPAREN", "cmd : SEND_TCP LPAREN STRING RPAREN", "cmd : SEND_TCP LPAREN ip RPAREN", "cmd : SEND_TCP LPAREN host COMMA NUMBER RPAREN", "cmd : SEND_TCP LPAREN STRING COMMA NUMBER RPAREN", "cmd : SEND_TCP LPAREN ip COMMA NUMBER RPAREN", "cmd : SEND_TCP error", "cmd : SEND_TCP LPAREN error RPAREN", "cmd : DROP LPAREN RPAREN", "cmd : DROP", "cmd : LOG_TOK LPAREN STRING RPAREN", "cmd : LOG_TOK LPAREN NUMBER COMMA STRING RPAREN", "cmd : LOG_TOK error", "cmd : LOG_TOK LPAREN error RPAREN", "cmd : SETFLAG LPAREN NUMBER RPAREN", "cmd : SETFLAG error", "cmd : RESETFLAG LPAREN NUMBER RPAREN", "cmd : RESETFLAG error", "cmd : ISFLAGSET LPAREN NUMBER RPAREN", "cmd : ISFLAGSET error", "cmd : ERROR LPAREN STRING COMMA STRING RPAREN", "cmd : ERROR error", "cmd : ERROR LPAREN error RPAREN", "cmd : ROUTE LPAREN NUMBER RPAREN", "cmd : ROUTE error", "cmd : ROUTE LPAREN error RPAREN", "cmd : EXEC LPAREN STRING RPAREN", "cmd : SET_HOST LPAREN STRING RPAREN", "cmd : SET_HOST error", "cmd : SET_HOST LPAREN error RPAREN", "cmd : PREFIX LPAREN STRING RPAREN", "cmd : PREFIX error", "cmd : PREFIX LPAREN error RPAREN", "cmd : STRIP_TAIL LPAREN NUMBER RPAREN", "cmd : STRIP_TAIL error", "cmd : STRIP_TAIL LPAREN error RPAREN", "cmd : STRIP LPAREN NUMBER RPAREN", "cmd : STRIP error", "cmd : STRIP LPAREN error RPAREN", "cmd : APPEND_BRANCH LPAREN STRING COMMA STRING RPAREN", "cmd : APPEND_BRANCH LPAREN STRING RPAREN", "cmd : APPEND_BRANCH LPAREN RPAREN", "cmd : APPEND_BRANCH", "cmd : SET_HOSTPORT LPAREN STRING RPAREN", "cmd : SET_HOSTPORT error", "cmd : SET_HOSTPORT LPAREN error RPAREN", "cmd : SET_PORT LPAREN STRING RPAREN", "cmd : SET_PORT error", "cmd : SET_PORT LPAREN error RPAREN", "cmd : SET_USER LPAREN STRING RPAREN", "cmd : SET_USER error", "cmd : SET_USER LPAREN error RPAREN", "cmd : SET_USERPASS LPAREN STRING RPAREN", "cmd : SET_USERPASS error", "cmd : SET_USERPASS LPAREN error RPAREN", "cmd : SET_URI LPAREN STRING RPAREN", "cmd : SET_URI error", "cmd : SET_URI LPAREN error RPAREN", "cmd : REVERT_URI LPAREN RPAREN", "cmd : REVERT_URI", "cmd : FORCE_RPORT LPAREN RPAREN", "cmd : FORCE_RPORT", "cmd : FORCE_TCP_ALIAS LPAREN NUMBER RPAREN", "cmd : FORCE_TCP_ALIAS LPAREN RPAREN", "cmd : FORCE_TCP_ALIAS", "cmd : FORCE_TCP_ALIAS LPAREN error RPAREN", "cmd : SET_ADV_ADDRESS LPAREN listen_id RPAREN", "cmd : SET_ADV_ADDRESS LPAREN error RPAREN", "cmd : SET_ADV_ADDRESS error", "cmd : SET_ADV_PORT LPAREN NUMBER RPAREN", "cmd : SET_ADV_PORT LPAREN error RPAREN", "cmd : SET_ADV_PORT error", "cmd : FORCE_SEND_SOCKET LPAREN phostport RPAREN", "cmd : FORCE_SEND_SOCKET LPAREN error RPAREN", "cmd : FORCE_SEND_SOCKET error", "cmd : ID LPAREN RPAREN", "cmd : ID LPAREN STRING RPAREN", "cmd : ID LPAREN STRING COMMA STRING RPAREN", "cmd : ID LPAREN error RPAREN", }; #endif #ifdef YYSTACKSIZE #undef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 10000 #define YYMAXDEPTH 10000 #endif #endif #define YYINITSTACKSIZE 200 int yydebug; int yynerrs; int yyerrflag; int yychar; short *yyssp; YYSTYPE *yyvsp; YYSTYPE yyval; YYSTYPE yylval; short *yyss; short *yysslim; YYSTYPE *yyvs; int yystacksize; #line 1677 "cfg.y" extern int line; extern int column; extern int startcolumn; static void warn(char* s) { LOG(L_WARN, "cfg. warning: (%d,%d-%d): %s\n", line, startcolumn, column, s); cfg_errors++; } static void yyerror(char* s) { LOG(L_CRIT, "parse error (%d,%d-%d): %s\n", line, startcolumn, column, s); cfg_errors++; } static struct socket_id* mk_listen_id(char* host, int proto, int port) { struct socket_id* l; l=pkg_malloc(sizeof(struct socket_id)); if (l==0){ LOG(L_CRIT,"ERROR: cfg. parser: out of memory.\n"); }else{ l->name=host; l->port=port; l->proto=proto; l->next=0; } return l; } /* int main(int argc, char ** argv) { if (yyparse()!=0) fprintf(stderr, "parsing error\n"); } */ #line 1540 "cfg.tab.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ int yyparse __P((void)); static int yygrowstack __P((void)); static int yygrowstack() { int newsize, i; short *newss; YYSTYPE *newvs; if ((newsize = yystacksize) == 0) newsize = YYINITSTACKSIZE; else if (newsize >= YYMAXDEPTH) return -1; else if ((newsize *= 2) > YYMAXDEPTH) newsize = YYMAXDEPTH; i = yyssp - yyss; if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL) return -1; yyss = newss; yyssp = newss + i; if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL) return -1; yyvs = newvs; yyvsp = newvs + i; yystacksize = newsize; yysslim = yyss + newsize - 1; return 0; } #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int yyparse() { int yym, yyn, yystate; #if YYDEBUG char *yys; if ((yys = getenv("YYDEBUG")) != NULL) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif yynerrs = 0; yyerrflag = 0; yychar = (-1); if (yyss == NULL && yygrowstack()) goto yyoverflow; yyssp = yyss; yyvsp = yyvs; *yyssp = yystate = 0; yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; yychar = (-1); if (yyerrflag > 0) --yyerrflag; goto yyloop; } if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { yyn = yytable[yyn]; goto yyreduce; } if (yyerrflag) goto yyinrecovery; goto yynewerror; yynewerror: yyerror("syntax error"); goto yyerrlab; yyerrlab: ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; goto yyloop; } else { #if YYDEBUG if (yydebug) printf("%sdebug: error recovery discarding state %d\n", YYPREFIX, *yyssp); #endif if (yyssp <= yyss) goto yyabort; --yyssp; --yyvsp; } } } else { if (yychar == 0) goto yyabort; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif yychar = (-1); goto yyloop; } yyreduce: #if YYDEBUG if (yydebug) printf("%sdebug: state %d, reducing by rule %d (%s)\n", YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; yyval = yyvsp[1-yym]; switch (yyn) { case 2: #line 316 "cfg.y" {} break; case 3: #line 317 "cfg.y" {} break; case 4: #line 318 "cfg.y" { yyerror(""); YYABORT;} break; case 7: #line 323 "cfg.y" {rt=REQUEST_ROUTE;} break; case 9: #line 324 "cfg.y" {rt=FAILURE_ROUTE;} break; case 11: #line 325 "cfg.y" {rt=ONREPLY_ROUTE;} break; case 14: #line 329 "cfg.y" { tmp=ip_addr2a(yyvsp[0].ipaddr); if(tmp==0){ LOG(L_CRIT, "ERROR: cfg. parser: bad ip " "address.\n"); yyval.strval=0; }else{ yyval.strval=pkg_malloc(strlen(tmp)+1); if (yyval.strval==0){ LOG(L_CRIT, "ERROR: cfg. parser: out of " "memory.\n"); }else{ strncpy(yyval.strval, tmp, strlen(tmp)+1); } } } break; case 15: #line 344 "cfg.y" { yyval.strval=pkg_malloc(strlen(yyvsp[0].strval)+1); if (yyval.strval==0){ LOG(L_CRIT, "ERROR: cfg. parser: out of " "memory.\n"); }else{ strncpy(yyval.strval, yyvsp[0].strval, strlen(yyvsp[0].strval)+1); } } break; case 16: #line 352 "cfg.y" { yyval.strval=pkg_malloc(strlen(yyvsp[0].strval)+1); if (yyval.strval==0){ LOG(L_CRIT, "ERROR: cfg. parser: out of " "memory.\n"); }else{ strncpy(yyval.strval, yyvsp[0].strval, strlen(yyvsp[0].strval)+1); } } break; case 17: #line 362 "cfg.y" { yyval.intval=PROTO_UDP; } break; case 18: #line 363 "cfg.y" { yyval.intval=PROTO_TCP; } break; case 19: #line 364 "cfg.y" { yyval.intval=PROTO_TLS; } break; case 20: #line 365 "cfg.y" { yyval.intval=0; } break; case 21: #line 368 "cfg.y" { yyval.intval=yyvsp[0].intval; } break; case 22: #line 369 "cfg.y" { yyval.intval=0; } break; case 23: #line 372 "cfg.y" { yyval.sockid=mk_listen_id(yyvsp[0].strval, 0, 0); } break; case 24: #line 373 "cfg.y" { yyval.sockid=mk_listen_id(yyvsp[-2].strval, 0, yyvsp[0].intval); } break; case 25: #line 374 "cfg.y" { yyval.sockid=mk_listen_id(yyvsp[0].strval, yyvsp[-2].intval, 0); } break; case 26: #line 375 "cfg.y" { yyval.sockid=mk_listen_id(yyvsp[-2].strval, yyvsp[-4].intval, yyvsp[0].intval);} break; case 27: #line 376 "cfg.y" { yyval.sockid=0; yyerror(" port number expected"); } break; case 28: #line 379 "cfg.y" { yyval.sockid=yyvsp[0].sockid ; } break; case 29: #line 380 "cfg.y" { yyval.sockid=yyvsp[-1].sockid; yyval.sockid->next=yyvsp[0].sockid; } break; case 30: #line 384 "cfg.y" { debug=yyvsp[0].intval; } break; case 31: #line 385 "cfg.y" { yyerror("number expected"); } break; case 32: #line 386 "cfg.y" { dont_fork= ! yyvsp[0].intval; } break; case 33: #line 387 "cfg.y" { yyerror("boolean value expected"); } break; case 34: #line 388 "cfg.y" { if (!config_check) log_stderr=yyvsp[0].intval; } break; case 35: #line 389 "cfg.y" { yyerror("boolean value expected"); } break; case 36: #line 390 "cfg.y" { if ( (i_tmp=str2facility(yyvsp[0].strval))==-1) yyerror("bad facility (see syslog(3) man page)"); if (!config_check) log_facility=i_tmp; } break; case 37: #line 396 "cfg.y" { yyerror("ID expected"); } break; case 38: #line 397 "cfg.y" { received_dns|= (yyvsp[0].intval)?DO_DNS:0; } break; case 39: #line 398 "cfg.y" { yyerror("boolean value expected"); } break; case 40: #line 399 "cfg.y" { received_dns|= (yyvsp[0].intval)?DO_REV_DNS:0; } break; case 41: #line 400 "cfg.y" { yyerror("boolean value expected"); } break; case 42: #line 401 "cfg.y" { port_no=yyvsp[0].intval; } break; case 43: #line 402 "cfg.y" { #ifdef STATS stat_file=yyvsp[0].strval; #endif } break; case 44: #line 407 "cfg.y" { maxbuffer=yyvsp[0].intval; } break; case 45: #line 408 "cfg.y" { yyerror("number expected"); } break; case 46: #line 409 "cfg.y" { yyerror("number expected"); } break; case 47: #line 410 "cfg.y" { children_no=yyvsp[0].intval; } break; case 48: #line 411 "cfg.y" { yyerror("number expected"); } break; case 49: #line 412 "cfg.y" { check_via=yyvsp[0].intval; } break; case 50: #line 413 "cfg.y" { yyerror("boolean value expected"); } break; case 51: #line 414 "cfg.y" { syn_branch=yyvsp[0].intval; } break; case 52: #line 415 "cfg.y" { yyerror("boolean value expected"); } break; case 53: #line 416 "cfg.y" { memlog=yyvsp[0].intval; } break; case 54: #line 417 "cfg.y" { yyerror("int value expected"); } break; case 55: #line 418 "cfg.y" { sip_warning=yyvsp[0].intval; } break; case 56: #line 419 "cfg.y" { yyerror("boolean value expected"); } break; case 57: #line 420 "cfg.y" { fifo=yyvsp[0].strval; } break; case 58: #line 421 "cfg.y" { yyerror("string value expected"); } break; case 59: #line 422 "cfg.y" { fifo_dir=yyvsp[0].strval; } break; case 60: #line 423 "cfg.y" { yyerror("string value expected"); } break; case 61: #line 424 "cfg.y" { sock_mode=yyvsp[0].intval; } break; case 62: #line 425 "cfg.y" { yyerror("int value expected"); } break; case 63: #line 426 "cfg.y" { sock_user=yyvsp[0].strval; } break; case 64: #line 427 "cfg.y" { sock_user=yyvsp[0].strval; } break; case 65: #line 428 "cfg.y" { yyerror("string value expected"); } break; case 66: #line 429 "cfg.y" { sock_group=yyvsp[0].strval; } break; case 67: #line 430 "cfg.y" { sock_group=yyvsp[0].strval; } break; case 68: #line 431 "cfg.y" { yyerror("string value expected"); } break; case 69: #line 432 "cfg.y" { fifo_db_url=yyvsp[0].strval; } break; case 70: #line 433 "cfg.y" { yyerror("string value expected"); } break; case 71: #line 434 "cfg.y" { unixsock_name=yyvsp[0].strval; } break; case 72: #line 435 "cfg.y" { yyerror("string value expected"); } break; case 73: #line 436 "cfg.y" { unixsock_children=yyvsp[0].intval; } break; case 74: #line 437 "cfg.y" { yyerror("int value expected\n"); } break; case 75: #line 438 "cfg.y" { unixsock_tx_timeout=yyvsp[0].intval; } break; case 76: #line 439 "cfg.y" { yyerror("int value expected\n"); } break; case 77: #line 440 "cfg.y" { user=yyvsp[0].strval; } break; case 78: #line 441 "cfg.y" { user=yyvsp[0].strval; } break; case 79: #line 442 "cfg.y" { yyerror("string value expected"); } break; case 80: #line 443 "cfg.y" { group=yyvsp[0].strval; } break; case 81: #line 444 "cfg.y" { group=yyvsp[0].strval; } break; case 82: #line 445 "cfg.y" { yyerror("string value expected"); } break; case 83: #line 446 "cfg.y" { chroot_dir=yyvsp[0].strval; } break; case 84: #line 447 "cfg.y" { chroot_dir=yyvsp[0].strval; } break; case 85: #line 448 "cfg.y" { yyerror("string value expected"); } break; case 86: #line 449 "cfg.y" { working_dir=yyvsp[0].strval; } break; case 87: #line 450 "cfg.y" { working_dir=yyvsp[0].strval; } break; case 88: #line 451 "cfg.y" { yyerror("string value expected"); } break; case 89: #line 452 "cfg.y" { mhomed=yyvsp[0].intval; } break; case 90: #line 453 "cfg.y" { yyerror("boolean value expected"); } break; case 91: #line 454 "cfg.y" { #ifdef USE_TCP tcp_disable=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 92: #line 461 "cfg.y" { yyerror("boolean value expected"); } break; case 93: #line 462 "cfg.y" { #ifdef USE_TCP tcp_accept_aliases=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 94: #line 469 "cfg.y" { yyerror("boolean value expected"); } break; case 95: #line 470 "cfg.y" { #ifdef USE_TCP tcp_children_no=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 96: #line 477 "cfg.y" { yyerror("number expected"); } break; case 97: #line 478 "cfg.y" { #ifdef USE_TCP tcp_connect_timeout=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 98: #line 485 "cfg.y" { yyerror("number expected"); } break; case 99: #line 486 "cfg.y" { #ifdef USE_TCP tcp_send_timeout=yyvsp[0].intval; #else warn("tcp support not compiled in"); #endif } break; case 100: #line 493 "cfg.y" { yyerror("number expected"); } break; case 101: #line 494 "cfg.y" { #ifdef USE_TLS tls_disable=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 102: #line 501 "cfg.y" { yyerror("boolean value expected"); } break; case 103: #line 502 "cfg.y" { #ifdef USE_TLS tls_log=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 104: #line 509 "cfg.y" { yyerror("int value expected"); } break; case 105: #line 510 "cfg.y" { #ifdef USE_TLS tls_port_no=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 106: #line 517 "cfg.y" { yyerror("number expected"); } break; case 107: #line 518 "cfg.y" { #ifdef USE_TLS tls_method=TLS_USE_SSLv23; #else warn("tls support not compiled in"); #endif } break; case 108: #line 525 "cfg.y" { #ifdef USE_TLS tls_method=TLS_USE_SSLv2; #else warn("tls support not compiled in"); #endif } break; case 109: #line 532 "cfg.y" { #ifdef USE_TLS tls_method=TLS_USE_SSLv3; #else warn("tls support not compiled in"); #endif } break; case 110: #line 539 "cfg.y" { #ifdef USE_TLS tls_method=TLS_USE_TLSv1; #else warn("tls support not compiled in"); #endif } break; case 111: #line 546 "cfg.y" { #ifdef USE_TLS yyerror("SSLv23, SSLv2, SSLv3 or TLSv1" " expected"); #else warn("tls support not compiled in"); #endif } break; case 112: #line 555 "cfg.y" { #ifdef USE_TLS tls_verify_cert=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 113: #line 562 "cfg.y" { yyerror("boolean value expected"); } break; case 114: #line 563 "cfg.y" { #ifdef USE_TLS tls_require_cert=yyvsp[0].intval; #else warn( "tls support not compiled in"); #endif } break; case 115: #line 570 "cfg.y" { yyerror("boolean value" " expected"); } break; case 116: #line 572 "cfg.y" { #ifdef USE_TLS tls_cert_file=yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 117: #line 579 "cfg.y" { yyerror("string value expected"); } break; case 118: #line 580 "cfg.y" { #ifdef USE_TLS tls_pkey_file=yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 119: #line 587 "cfg.y" { yyerror("string value expected"); } break; case 120: #line 588 "cfg.y" { #ifdef USE_TLS tls_ca_file=yyvsp[0].strval; #else warn("tls support not compiled in"); #endif } break; case 121: #line 595 "cfg.y" { yyerror("string value expected"); } break; case 122: #line 596 "cfg.y" { #ifdef USE_TLS tls_handshake_timeout=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 123: #line 603 "cfg.y" { yyerror("number expected"); } break; case 124: #line 604 "cfg.y" { #ifdef USE_TLS tls_send_timeout=yyvsp[0].intval; #else warn("tls support not compiled in"); #endif } break; case 125: #line 611 "cfg.y" { yyerror("number expected"); } break; case 126: #line 612 "cfg.y" { server_signature=yyvsp[0].intval; } break; case 127: #line 613 "cfg.y" { yyerror("boolean value expected"); } break; case 128: #line 614 "cfg.y" { server_name=yyvsp[0].strval; } break; case 129: #line 615 "cfg.y" { reply_to_via=yyvsp[0].intval; } break; case 130: #line 616 "cfg.y" { yyerror("boolean value expected"); } break; case 131: #line 617 "cfg.y" { for(lst_tmp=yyvsp[0].sockid; lst_tmp; lst_tmp=lst_tmp->next){ if (add_listen_iface( lst_tmp->name, lst_tmp->port, lst_tmp->proto, 0 )!=0){ LOG(L_CRIT, "ERROR: cfg. parser: failed" " to add listen address\n"); break; } } } break; case 132: #line 630 "cfg.y" { yyerror("ip address or hostname" "expected"); } break; case 133: #line 632 "cfg.y" { for(lst_tmp=yyvsp[0].sockid; lst_tmp; lst_tmp=lst_tmp->next) add_alias(lst_tmp->name, strlen(lst_tmp->name), lst_tmp->port, lst_tmp->proto); } break; case 134: #line 637 "cfg.y" { yyerror(" hostname expected"); } break; case 135: #line 638 "cfg.y" { default_global_address.s=yyvsp[0].strval; default_global_address.len=strlen(yyvsp[0].strval); } break; case 136: #line 642 "cfg.y" {yyerror("ip address or hostname " "expected"); } break; case 137: #line 644 "cfg.y" { tmp=int2str(yyvsp[0].intval, &i_tmp); if ((default_global_port.s=pkg_malloc(i_tmp)) ==0){ LOG(L_CRIT, "ERROR: cfg. parser:" " out of memory.\n"); default_global_port.len=0; }else{ default_global_port.len=i_tmp; memcpy(default_global_port.s, tmp, default_global_port.len); }; } break; case 138: #line 657 "cfg.y" {yyerror("ip address or hostname " "expected"); } break; case 139: #line 659 "cfg.y" { disable_core_dump=yyvsp[0].intval; } break; case 140: #line 662 "cfg.y" { yyerror("boolean value expected"); } break; case 141: #line 663 "cfg.y" { open_files_limit=yyvsp[0].intval; } break; case 142: #line 666 "cfg.y" { yyerror("number expected"); } break; case 143: #line 667 "cfg.y" { #ifdef USE_MCAST mcast_loopback=yyvsp[0].intval; #else warn("no multicast support compiled in"); #endif } break; case 144: #line 674 "cfg.y" { yyerror("boolean value expected"); } break; case 145: #line 675 "cfg.y" { #ifdef USE_MCAST mcast_ttl=yyvsp[0].intval; #else warn("no multicast support compiled in"); #endif } break; case 146: #line 682 "cfg.y" { yyerror("number expected"); } break; case 147: #line 683 "cfg.y" { yyerror("unknown config variable"); } break; case 148: #line 686 "cfg.y" { DBG("loading module %s\n", yyvsp[0].strval); if (load_module(yyvsp[0].strval)!=0){ yyerror("failed to load module"); } } break; case 149: #line 691 "cfg.y" { yyerror("string expected"); } break; case 150: #line 692 "cfg.y" { if (set_mod_param_regex(yyvsp[-5].strval, yyvsp[-3].strval, STR_PARAM, yyvsp[-1].strval) != 0) { yyerror("Can't set module parameter"); } } break; case 151: #line 697 "cfg.y" { if (set_mod_param_regex(yyvsp[-5].strval, yyvsp[-3].strval, INT_PARAM, (void*)yyvsp[-1].intval) != 0) { yyerror("Can't set module parameter"); } } break; case 152: #line 702 "cfg.y" { yyerror("Invalid arguments"); } break; case 153: #line 706 "cfg.y" { yyval.ipaddr=yyvsp[0].ipaddr; } break; case 154: #line 707 "cfg.y" { yyval.ipaddr=yyvsp[0].ipaddr; } break; case 155: #line 710 "cfg.y" { yyval.ipaddr=pkg_malloc( sizeof(struct ip_addr)); if (yyval.ipaddr==0){ LOG(L_CRIT, "ERROR: cfg. " "parser: out of memory.\n" ); }else{ memset(yyval.ipaddr, 0, sizeof(struct ip_addr)); yyval.ipaddr->af=AF_INET; yyval.ipaddr->len=4; if ((yyvsp[-6].intval>255) || (yyvsp[-6].intval<0) || (yyvsp[-4].intval>255) || (yyvsp[-4].intval<0) || (yyvsp[-2].intval>255) || (yyvsp[-2].intval<0) || (yyvsp[0].intval>255) || (yyvsp[0].intval<0)){ yyerror("invalid ipv4" "address"); yyval.ipaddr->u.addr32[0]=0; /* $$=0; */ }else{ yyval.ipaddr->u.addr[0]=yyvsp[-6].intval; yyval.ipaddr->u.addr[1]=yyvsp[-4].intval; yyval.ipaddr->u.addr[2]=yyvsp[-2].intval; yyval.ipaddr->u.addr[3]=yyvsp[0].intval; /* $$=htonl( ($1<<24)| ($3<<16)| ($5<<8)|$7 ); */ } } } break; case 156: #line 744 "cfg.y" { yyval.ipaddr=pkg_malloc(sizeof(struct ip_addr)); if (yyval.ipaddr==0){ LOG(L_CRIT, "ERROR: cfg. parser: out of memory.\n"); }else{ memset(yyval.ipaddr, 0, sizeof(struct ip_addr)); yyval.ipaddr->af=AF_INET6; yyval.ipaddr->len=16; #ifdef USE_IPV6 if (inet_pton(AF_INET6, yyvsp[0].strval, yyval.ipaddr->u.addr)<=0){ yyerror("bad ipv6 address"); } #else yyerror("ipv6 address & no ipv6 support compiled in"); YYABORT; #endif } } break; case 157: #line 764 "cfg.y" { yyval.ipaddr=yyvsp[0].ipaddr; } break; case 158: #line 765 "cfg.y" {yyval.ipaddr=yyvsp[-1].ipaddr; } break; case 159: #line 769 "cfg.y" { push(yyvsp[-1].action, &rlist[DEFAULT_RT]); } break; case 160: #line 771 "cfg.y" { if ((yyvsp[-4].intval=0)){ push(yyvsp[-1].action, &rlist[yyvsp[-4].intval]); }else{ yyerror("invalid routing " "table number"); YYABORT; } } break; case 161: #line 779 "cfg.y" { yyerror("invalid route statement"); } break; case 162: #line 782 "cfg.y" { if ((yyvsp[-4].intval=1)){ push(yyvsp[-1].action, &failure_rlist[yyvsp[-4].intval]); } else { yyerror("invalid reply routing" "table number"); YYABORT; } } break; case 163: #line 790 "cfg.y" { yyerror("invalid failure_route statement"); } break; case 164: #line 793 "cfg.y" { if ((yyvsp[-4].intval=1)){ push(yyvsp[-1].action, &onreply_rlist[yyvsp[-4].intval]); } else { yyerror("invalid reply routing" "table number"); YYABORT; } } break; case 165: #line 801 "cfg.y" { yyerror("invalid onreply_route statement"); } break; case 166: #line 823 "cfg.y" { yyval.expr=mk_exp(AND_OP, yyvsp[-2].expr, yyvsp[0].expr); } break; case 167: #line 824 "cfg.y" { yyval.expr=mk_exp(OR_OP, yyvsp[-2].expr, yyvsp[0].expr); } break; case 168: #line 825 "cfg.y" { yyval.expr=mk_exp(NOT_OP, yyvsp[0].expr, 0); } break; case 169: #line 826 "cfg.y" { yyval.expr=yyvsp[-1].expr; } break; case 170: #line 827 "cfg.y" { yyval.expr=yyvsp[0].expr; } break; case 171: #line 830 "cfg.y" {yyval.intval=EQUAL_OP; } break; case 172: #line 831 "cfg.y" {yyval.intval=DIFF_OP; } break; case 173: #line 834 "cfg.y" {yyval.intval=yyvsp[0].intval; } break; case 174: #line 835 "cfg.y" {yyval.intval=GT_OP; } break; case 175: #line 836 "cfg.y" {yyval.intval=LT_OP; } break; case 176: #line 837 "cfg.y" {yyval.intval=GTE_OP; } break; case 177: #line 838 "cfg.y" {yyval.intval=LTE_OP; } break; case 178: #line 841 "cfg.y" {yyval.intval=yyvsp[0].intval; } break; case 179: #line 842 "cfg.y" {yyval.intval=MATCH_OP; } break; case 180: #line 845 "cfg.y" {yyval.intval=URI_O;} break; case 181: #line 846 "cfg.y" {yyval.intval=FROM_URI_O;} break; case 182: #line 847 "cfg.y" {yyval.intval=TO_URI_O;} break; case 183: #line 850 "cfg.y" {yyval.expr= mk_elem( yyvsp[-1].intval, STRING_ST, METHOD_O, yyvsp[0].strval); } break; case 184: #line 853 "cfg.y" {yyval.expr = mk_elem( yyvsp[-1].intval, STRING_ST, METHOD_O, yyvsp[0].strval); } break; case 185: #line 856 "cfg.y" { yyval.expr=0; yyerror("string expected"); } break; case 186: #line 857 "cfg.y" { yyval.expr=0; yyerror("invalid operator," "== , !=, or =~ expected"); } break; case 187: #line 860 "cfg.y" {yyval.expr = mk_elem( yyvsp[-1].intval, STRING_ST, yyvsp[-2].intval, yyvsp[0].strval); } break; case 188: #line 863 "cfg.y" {yyval.expr = mk_elem( yyvsp[-1].intval, STRING_ST, yyvsp[-2].intval, yyvsp[0].strval); } break; case 189: #line 866 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, MYSELF_ST, yyvsp[-2].intval, 0); } break; case 190: #line 869 "cfg.y" { yyval.expr=0; yyerror("string or MYSELF expected"); } break; case 191: #line 870 "cfg.y" { yyval.expr=0; yyerror("invalid operator," " == , != or =~ expected"); } break; case 192: #line 873 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, NUMBER_ST, SRCPORT_O, (void *) yyvsp[0].intval ); } break; case 193: #line 875 "cfg.y" { yyval.expr=0; yyerror("number expected"); } break; case 194: #line 876 "cfg.y" { yyval.expr=0; yyerror("==, !=, <,>, >= or <= expected"); } break; case 195: #line 877 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, NUMBER_ST, DSTPORT_O, (void *) yyvsp[0].intval ); } break; case 196: #line 879 "cfg.y" { yyval.expr=0; yyerror("number expected"); } break; case 197: #line 880 "cfg.y" { yyval.expr=0; yyerror("==, !=, <,>, >= or <= expected"); } break; case 198: #line 881 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, NUMBER_ST, PROTO_O, (void *) yyvsp[0].intval ); } break; case 199: #line 883 "cfg.y" { yyval.expr=0; yyerror("protocol expected (udp, tcp or tls)"); } break; case 200: #line 886 "cfg.y" { yyval.expr=0; yyerror("equal/!= operator expected"); } break; case 201: #line 887 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, NUMBER_ST, AF_O, (void *) yyvsp[0].intval ); } break; case 202: #line 889 "cfg.y" { yyval.expr=0; yyerror("number expected"); } break; case 203: #line 890 "cfg.y" { yyval.expr=0; yyerror("equal/!= operator expected"); } break; case 204: #line 891 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, NUMBER_ST, MSGLEN_O, (void *) yyvsp[0].intval ); } break; case 205: #line 893 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, NUMBER_ST, MSGLEN_O, (void *) BUF_SIZE); } break; case 206: #line 895 "cfg.y" { yyval.expr=0; yyerror("number expected"); } break; case 207: #line 896 "cfg.y" { yyval.expr=0; yyerror("equal/!= operator expected"); } break; case 208: #line 897 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, NET_ST, SRCIP_O, yyvsp[0].ipnet); } break; case 209: #line 900 "cfg.y" { s_tmp.s=yyvsp[0].strval; s_tmp.len=strlen(yyvsp[0].strval); ip_tmp=str2ip(&s_tmp); if (ip_tmp==0) ip_tmp=str2ip6(&s_tmp); if (ip_tmp){ yyval.expr=mk_elem( yyvsp[-1].intval, NET_ST, SRCIP_O, mk_net_bitlen(ip_tmp, ip_tmp->len*8) ); }else{ yyval.expr=mk_elem( yyvsp[-1].intval, STRING_ST, SRCIP_O, yyvsp[0].strval); } } break; case 210: #line 914 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, STRING_ST, SRCIP_O, yyvsp[0].strval); } break; case 211: #line 917 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, MYSELF_ST, SRCIP_O, 0); } break; case 212: #line 920 "cfg.y" { yyval.expr=0; yyerror( "ip address or hostname" "expected" ); } break; case 213: #line 922 "cfg.y" { yyval.expr=0; yyerror("invalid operator, ==, != or =~ expected");} break; case 214: #line 924 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, NET_ST, DSTIP_O, yyvsp[0].ipnet); } break; case 215: #line 927 "cfg.y" { s_tmp.s=yyvsp[0].strval; s_tmp.len=strlen(yyvsp[0].strval); ip_tmp=str2ip(&s_tmp); if (ip_tmp==0) ip_tmp=str2ip6(&s_tmp); if (ip_tmp){ yyval.expr=mk_elem( yyvsp[-1].intval, NET_ST, DSTIP_O, mk_net_bitlen(ip_tmp, ip_tmp->len*8) ); }else{ yyval.expr=mk_elem( yyvsp[-1].intval, STRING_ST, DSTIP_O, yyvsp[0].strval); } } break; case 216: #line 941 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, STRING_ST, DSTIP_O, yyvsp[0].strval); } break; case 217: #line 944 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, MYSELF_ST, DSTIP_O, 0); } break; case 218: #line 947 "cfg.y" { yyval.expr=0; yyerror( "ip address or hostname" "expected" ); } break; case 219: #line 949 "cfg.y" { yyval.expr=0; yyerror("invalid operator, ==, != or =~ expected");} break; case 220: #line 951 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, MYSELF_ST, yyvsp[0].intval, 0); } break; case 221: #line 954 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, MYSELF_ST, SRCIP_O, 0); } break; case 222: #line 957 "cfg.y" { yyval.expr=mk_elem( yyvsp[-1].intval, MYSELF_ST, DSTIP_O, 0); } break; case 223: #line 960 "cfg.y" { yyval.expr=0; yyerror(" URI, SRCIP or DSTIP expected"); } break; case 224: #line 962 "cfg.y" { yyval.expr=0; yyerror ("invalid operator, == or != expected"); } break; case 225: #line 965 "cfg.y" { yyval.expr=mk_elem( NO_OP, ACTIONS_ST, ACTION_O, yyvsp[0].action ); } break; case 226: #line 966 "cfg.y" {yyval.expr=mk_elem( NO_OP, NUMBER_ST, NUMBER_O, (void*)yyvsp[0].intval ); } break; case 227: #line 969 "cfg.y" { yyval.ipnet=mk_net(yyvsp[-2].ipaddr, yyvsp[0].ipaddr); } break; case 228: #line 970 "cfg.y" { if ((yyvsp[0].intval<0) || (yyvsp[0].intval>yyvsp[-2].ipaddr->len*8)){ yyerror("invalid bit number in netmask"); yyval.ipnet=0; }else{ yyval.ipnet=mk_net_bitlen(yyvsp[-2].ipaddr, yyvsp[0].intval); /* $$=mk_net($1, htonl( ($3)?~( (1<<(32-$3))-1 ):0 ) ); */ } } break; case 229: #line 981 "cfg.y" { yyval.ipnet=mk_net_bitlen(yyvsp[0].ipaddr, yyvsp[0].ipaddr->len*8); } break; case 230: #line 982 "cfg.y" { yyval.ipnet=0; yyerror("netmask (eg:255.0.0.0 or 8) expected"); } break; case 231: #line 989 "cfg.y" {yyval.strval=".";} break; case 232: #line 990 "cfg.y" {yyval.strval="-"; } break; case 233: #line 993 "cfg.y" { yyval.strval=yyvsp[0].strval; } break; case 234: #line 994 "cfg.y" { yyval.strval=(char*)pkg_malloc(strlen(yyvsp[-2].strval)+1+strlen(yyvsp[0].strval)+1); if (yyval.strval==0){ LOG(L_CRIT, "ERROR: cfg. parser: memory allocation" " failure while parsing host\n"); }else{ memcpy(yyval.strval, yyvsp[-2].strval, strlen(yyvsp[-2].strval)); yyval.strval[strlen(yyvsp[-2].strval)]=*yyvsp[-1].strval; memcpy(yyval.strval+strlen(yyvsp[-2].strval)+1, yyvsp[0].strval, strlen(yyvsp[0].strval)); yyval.strval[strlen(yyvsp[-2].strval)+1+strlen(yyvsp[0].strval)]=0; } pkg_free(yyvsp[-2].strval); pkg_free(yyvsp[0].strval); } break; case 235: #line 1006 "cfg.y" { yyval.strval=0; pkg_free(yyvsp[-2].strval); yyerror("invalid hostname"); } break; case 236: #line 1010 "cfg.y" { yyval.action=yyvsp[0].action; } break; case 237: #line 1011 "cfg.y" { yyval.action=yyvsp[0].action; } break; case 238: #line 1012 "cfg.y" { yyval.action=yyvsp[-1].action; } break; case 239: #line 1015 "cfg.y" { yyval.action=yyvsp[0].action; } break; case 240: #line 1016 "cfg.y" { yyval.action=yyvsp[-1].action; } break; case 241: #line 1019 "cfg.y" {yyval.action=append_action(yyvsp[-1].action, yyvsp[0].action); } break; case 242: #line 1020 "cfg.y" {yyval.action=yyvsp[0].action;} break; case 243: #line 1021 "cfg.y" { yyval.action=0; yyerror("bad command"); } break; case 244: #line 1024 "cfg.y" {yyval.action=yyvsp[-1].action;} break; case 245: #line 1025 "cfg.y" {yyval.action=yyvsp[0].action;} break; case 246: #line 1026 "cfg.y" {yyval.action=0;} break; case 247: #line 1027 "cfg.y" { yyval.action=0; yyerror("bad command: missing ';'?"); } break; case 248: #line 1030 "cfg.y" { yyval.action=mk_action3( IF_T, EXPR_ST, ACTIONS_ST, NOSUBTYPE, yyvsp[-1].expr, yyvsp[0].action, 0); } break; case 249: #line 1038 "cfg.y" { yyval.action=mk_action3( IF_T, EXPR_ST, ACTIONS_ST, ACTIONS_ST, yyvsp[-3].expr, yyvsp[-2].action, yyvsp[0].action); } break; case 250: #line 1048 "cfg.y" { yyval.action=mk_action( FORWARD_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); } break; case 251: #line 1054 "cfg.y" { yyval.action=mk_action( FORWARD_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); } break; case 252: #line 1060 "cfg.y" { yyval.action=mk_action( FORWARD_T, IP_ST, NUMBER_ST, (void*)yyvsp[-1].ipaddr, 0); } break; case 253: #line 1066 "cfg.y" { yyval.action=mk_action(FORWARD_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); } break; case 254: #line 1072 "cfg.y" {yyval.action=mk_action(FORWARD_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); } break; case 255: #line 1078 "cfg.y" { yyval.action=mk_action(FORWARD_T, IP_ST, NUMBER_ST, (void*)yyvsp[-3].ipaddr, (void*)yyvsp[-1].intval); } break; case 256: #line 1084 "cfg.y" { yyval.action=mk_action(FORWARD_T, URIHOST_ST, URIPORT_ST, 0, 0); } break; case 257: #line 1093 "cfg.y" { yyval.action=mk_action(FORWARD_T, URIHOST_ST, NUMBER_ST, 0, (void*)yyvsp[-1].intval); } break; case 258: #line 1100 "cfg.y" { yyval.action=mk_action(FORWARD_T, URIHOST_ST, NUMBER_ST, 0, 0); } break; case 259: #line 1107 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 260: #line 1108 "cfg.y" { yyval.action=0; yyerror("bad forward" "argument"); } break; case 261: #line 1110 "cfg.y" { yyval.action=mk_action( FORWARD_UDP_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); } break; case 262: #line 1116 "cfg.y" { yyval.action=mk_action( FORWARD_UDP_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); } break; case 263: #line 1122 "cfg.y" { yyval.action=mk_action( FORWARD_UDP_T, IP_ST, NUMBER_ST, (void*)yyvsp[-1].ipaddr, 0); } break; case 264: #line 1128 "cfg.y" { yyval.action=mk_action( FORWARD_UDP_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); } break; case 265: #line 1135 "cfg.y" {yyval.action=mk_action( FORWARD_UDP_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); } break; case 266: #line 1142 "cfg.y" { yyval.action=mk_action( FORWARD_UDP_T, IP_ST, NUMBER_ST, (void*)yyvsp[-3].ipaddr, (void*)yyvsp[-1].intval); } break; case 267: #line 1149 "cfg.y" { yyval.action=mk_action(FORWARD_UDP_T, URIHOST_ST, URIPORT_ST, 0, 0); } break; case 268: #line 1158 "cfg.y" { yyval.action=mk_action(FORWARD_UDP_T, URIHOST_ST, NUMBER_ST, 0, (void*)yyvsp[-1].intval); } break; case 269: #line 1165 "cfg.y" { yyval.action=mk_action(FORWARD_UDP_T, URIHOST_ST, NUMBER_ST, 0, 0); } break; case 270: #line 1172 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 271: #line 1173 "cfg.y" { yyval.action=0; yyerror("bad forward_udp" "argument"); } break; case 272: #line 1175 "cfg.y" { yyval.action=mk_action( FORWARD_TCP_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); } break; case 273: #line 1181 "cfg.y" { yyval.action=mk_action( FORWARD_TCP_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); } break; case 274: #line 1187 "cfg.y" { yyval.action=mk_action( FORWARD_TCP_T, IP_ST, NUMBER_ST, (void*)yyvsp[-1].ipaddr, 0); } break; case 275: #line 1193 "cfg.y" { yyval.action=mk_action( FORWARD_TCP_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); } break; case 276: #line 1200 "cfg.y" {yyval.action=mk_action( FORWARD_TCP_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); } break; case 277: #line 1207 "cfg.y" { yyval.action=mk_action(FORWARD_TCP_T, IP_ST, NUMBER_ST, (void*)yyvsp[-3].ipaddr, (void*)yyvsp[-1].intval); } break; case 278: #line 1213 "cfg.y" { yyval.action=mk_action(FORWARD_TCP_T, URIHOST_ST, URIPORT_ST, 0, 0); } break; case 279: #line 1222 "cfg.y" { yyval.action=mk_action(FORWARD_TCP_T, URIHOST_ST, NUMBER_ST, 0, (void*)yyvsp[-1].intval); } break; case 280: #line 1229 "cfg.y" { yyval.action=mk_action(FORWARD_TCP_T, URIHOST_ST, NUMBER_ST, 0, 0); } break; case 281: #line 1236 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 282: #line 1237 "cfg.y" { yyval.action=0; yyerror("bad forward_tcp" "argument"); } break; case 283: #line 1239 "cfg.y" { #ifdef USE_TLS yyval.action=mk_action( FORWARD_TLS_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); #else yyval.action=0; yyerror("tls support not " "compiled in"); #endif } break; case 284: #line 1252 "cfg.y" { #ifdef USE_TLS yyval.action=mk_action( FORWARD_TLS_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); #else yyval.action=0; yyerror("tls support not " "compiled in"); #endif } break; case 285: #line 1265 "cfg.y" { #ifdef USE_TLS yyval.action=mk_action( FORWARD_TLS_T, IP_ST, NUMBER_ST, (void*)yyvsp[-1].ipaddr, 0); #else yyval.action=0; yyerror("tls support not " "compiled in"); #endif } break; case 286: #line 1278 "cfg.y" { #ifdef USE_TLS yyval.action=mk_action( FORWARD_TLS_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); #else yyval.action=0; yyerror("tls support not " "compiled in"); #endif } break; case 287: #line 1291 "cfg.y" { #ifdef USE_TLS yyval.action=mk_action( FORWARD_TLS_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); #else yyval.action=0; yyerror("tls support not " "compiled in"); #endif } break; case 288: #line 1304 "cfg.y" { #ifdef USE_TLS yyval.action=mk_action( FORWARD_TLS_T, IP_ST, NUMBER_ST, (void*)yyvsp[-3].ipaddr, (void*)yyvsp[-1].intval); #else yyval.action=0; yyerror("tls support not " "compiled in"); #endif } break; case 289: #line 1317 "cfg.y" { #ifdef USE_TLS yyval.action=mk_action( FORWARD_TLS_T, URIHOST_ST, URIPORT_ST, 0, 0); #else yyval.action=0; yyerror("tls support not " "compiled in"); #endif } break; case 290: #line 1332 "cfg.y" { #ifdef USE_TLS yyval.action=mk_action( FORWARD_TLS_T, URIHOST_ST, NUMBER_ST, 0, (void*)yyvsp[-1].intval); #else yyval.action=0; yyerror("tls support not " "compiled in"); #endif } break; case 291: #line 1345 "cfg.y" { #ifdef USE_TLS yyval.action=mk_action( FORWARD_TLS_T, URIHOST_ST, NUMBER_ST, 0, 0); #else yyval.action=0; yyerror("tls support not " "compiled in"); #endif } break; case 292: #line 1358 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 293: #line 1359 "cfg.y" { yyval.action=0; yyerror("bad forward_tls" "argument"); } break; case 294: #line 1362 "cfg.y" { yyval.action=mk_action( SEND_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); } break; case 295: #line 1368 "cfg.y" { yyval.action=mk_action( SEND_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); } break; case 296: #line 1374 "cfg.y" { yyval.action=mk_action( SEND_T, IP_ST, NUMBER_ST, (void*)yyvsp[-1].ipaddr, 0); } break; case 297: #line 1380 "cfg.y" { yyval.action=mk_action( SEND_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); } break; case 298: #line 1386 "cfg.y" {yyval.action=mk_action( SEND_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); } break; case 299: #line 1392 "cfg.y" { yyval.action=mk_action( SEND_T, IP_ST, NUMBER_ST, (void*)yyvsp[-3].ipaddr, (void*)yyvsp[-1].intval); } break; case 300: #line 1398 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 301: #line 1399 "cfg.y" { yyval.action=0; yyerror("bad send" "argument"); } break; case 302: #line 1401 "cfg.y" { yyval.action=mk_action( SEND_TCP_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); } break; case 303: #line 1407 "cfg.y" { yyval.action=mk_action( SEND_TCP_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, 0); } break; case 304: #line 1413 "cfg.y" { yyval.action=mk_action( SEND_TCP_T, IP_ST, NUMBER_ST, (void*)yyvsp[-1].ipaddr, 0); } break; case 305: #line 1419 "cfg.y" { yyval.action=mk_action( SEND_TCP_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); } break; case 306: #line 1425 "cfg.y" {yyval.action=mk_action( SEND_TCP_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void*)yyvsp[-1].intval); } break; case 307: #line 1431 "cfg.y" { yyval.action=mk_action( SEND_TCP_T, IP_ST, NUMBER_ST, (void*)yyvsp[-3].ipaddr, (void*)yyvsp[-1].intval); } break; case 308: #line 1437 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 309: #line 1438 "cfg.y" { yyval.action=0; yyerror("bad send_tcp" "argument"); } break; case 310: #line 1440 "cfg.y" {yyval.action=mk_action(DROP_T,0, 0, 0, 0); } break; case 311: #line 1441 "cfg.y" {yyval.action=mk_action(DROP_T,0, 0, 0, 0); } break; case 312: #line 1442 "cfg.y" {yyval.action=mk_action( LOG_T, NUMBER_ST, STRING_ST,(void*)4,yyvsp[-1].strval); } break; case 313: #line 1445 "cfg.y" {yyval.action=mk_action( LOG_T, NUMBER_ST, STRING_ST, (void*)yyvsp[-3].intval, yyvsp[-1].strval); } break; case 314: #line 1451 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 315: #line 1452 "cfg.y" { yyval.action=0; yyerror("bad log" "argument"); } break; case 316: #line 1454 "cfg.y" {yyval.action=mk_action( SETFLAG_T, NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); } break; case 317: #line 1456 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 318: #line 1457 "cfg.y" {yyval.action=mk_action( RESETFLAG_T, NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); } break; case 319: #line 1459 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 320: #line 1460 "cfg.y" {yyval.action=mk_action( ISFLAGSET_T, NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); } break; case 321: #line 1462 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')'?"); } break; case 322: #line 1463 "cfg.y" {yyval.action=mk_action(ERROR_T, STRING_ST, STRING_ST, yyvsp[-3].strval, yyvsp[-1].strval); } break; case 323: #line 1469 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 324: #line 1470 "cfg.y" { yyval.action=0; yyerror("bad error" "argument"); } break; case 325: #line 1472 "cfg.y" { yyval.action=mk_action(ROUTE_T, NUMBER_ST, 0, (void*)yyvsp[-1].intval, 0); } break; case 326: #line 1475 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 327: #line 1476 "cfg.y" { yyval.action=0; yyerror("bad route" "argument"); } break; case 328: #line 1478 "cfg.y" { yyval.action=mk_action( EXEC_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 329: #line 1481 "cfg.y" { yyval.action=mk_action(SET_HOST_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 330: #line 1483 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 331: #line 1484 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 332: #line 1487 "cfg.y" { yyval.action=mk_action(PREFIX_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 333: #line 1489 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 334: #line 1490 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 335: #line 1492 "cfg.y" { yyval.action=mk_action(STRIP_TAIL_T, NUMBER_ST, 0, (void *) yyvsp[-1].intval, 0); } break; case 336: #line 1494 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 337: #line 1495 "cfg.y" { yyval.action=0; yyerror("bad argument, " "number expected"); } break; case 338: #line 1498 "cfg.y" { yyval.action=mk_action(STRIP_T, NUMBER_ST, 0, (void *) yyvsp[-1].intval, 0); } break; case 339: #line 1500 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 340: #line 1501 "cfg.y" { yyval.action=0; yyerror("bad argument, " "number expected"); } break; case 341: #line 1503 "cfg.y" { { qvalue_t q; if (str2q(&q, yyvsp[-1].strval, strlen(yyvsp[-1].strval)) < 0) { yyerror("bad argument, q value expected"); } yyval.action=mk_action(APPEND_BRANCH_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval, (void *)(long)q); } } break; case 342: #line 1512 "cfg.y" { yyval.action=mk_action( APPEND_BRANCH_T, STRING_ST, NUMBER_ST, yyvsp[-1].strval, (void *)Q_UNSPECIFIED) ; } break; case 343: #line 1514 "cfg.y" { yyval.action=mk_action( APPEND_BRANCH_T, STRING_ST, NUMBER_ST, 0, (void *)Q_UNSPECIFIED ) ; } break; case 344: #line 1516 "cfg.y" { yyval.action=mk_action( APPEND_BRANCH_T, STRING_ST, 0, 0, 0 ) ; } break; case 345: #line 1518 "cfg.y" { yyval.action=mk_action( SET_HOSTPORT_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 346: #line 1520 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 347: #line 1521 "cfg.y" { yyval.action=0; yyerror("bad argument," " string expected"); } break; case 348: #line 1523 "cfg.y" { yyval.action=mk_action( SET_PORT_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 349: #line 1525 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 350: #line 1526 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 351: #line 1528 "cfg.y" { yyval.action=mk_action( SET_USER_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 352: #line 1530 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 353: #line 1531 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 354: #line 1533 "cfg.y" { yyval.action=mk_action( SET_USERPASS_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 355: #line 1535 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 356: #line 1536 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 357: #line 1538 "cfg.y" { yyval.action=mk_action( SET_URI_T, STRING_ST, 0, yyvsp[-1].strval, 0); } break; case 358: #line 1540 "cfg.y" { yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 359: #line 1541 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 360: #line 1543 "cfg.y" { yyval.action=mk_action( REVERT_URI_T, 0,0,0,0); } break; case 361: #line 1544 "cfg.y" { yyval.action=mk_action( REVERT_URI_T, 0,0,0,0); } break; case 362: #line 1545 "cfg.y" { yyval.action=mk_action(FORCE_RPORT_T,0, 0, 0, 0); } break; case 363: #line 1546 "cfg.y" {yyval.action=mk_action(FORCE_RPORT_T,0, 0, 0, 0); } break; case 364: #line 1547 "cfg.y" { #ifdef USE_TCP yyval.action=mk_action(FORCE_TCP_ALIAS_T,NUMBER_ST, 0, (void*)yyvsp[-1].intval, 0); #else yyerror("tcp support not compiled in"); #endif } break; case 365: #line 1555 "cfg.y" { #ifdef USE_TCP yyval.action=mk_action(FORCE_TCP_ALIAS_T,0, 0, 0, 0); #else yyerror("tcp support not compiled in"); #endif } break; case 366: #line 1562 "cfg.y" { #ifdef USE_TCP yyval.action=mk_action(FORCE_TCP_ALIAS_T,0, 0, 0, 0); #else yyerror("tcp support not compiled in"); #endif } break; case 367: #line 1569 "cfg.y" {yyval.action=0; yyerror("bad argument, number expected"); } break; case 368: #line 1572 "cfg.y" { yyval.action=0; if ((str_tmp=pkg_malloc(sizeof(str)))==0){ LOG(L_CRIT, "ERROR: cfg. parser:" " out of memory.\n"); }else{ str_tmp->s=yyvsp[-1].strval; str_tmp->len=strlen(yyvsp[-1].strval); yyval.action=mk_action(SET_ADV_ADDR_T, STR_ST, 0, str_tmp, 0); } } break; case 369: #line 1584 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 370: #line 1586 "cfg.y" {yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 371: #line 1587 "cfg.y" { yyval.action=0; tmp=int2str(yyvsp[-1].intval, &i_tmp); if ((str_tmp=pkg_malloc(sizeof(str)))==0){ LOG(L_CRIT, "ERROR: cfg. parser:" " out of memory.\n"); }else{ if ((str_tmp->s=pkg_malloc(i_tmp))==0){ LOG(L_CRIT, "ERROR: cfg. parser:" " out of memory.\n"); }else{ memcpy(str_tmp->s, tmp, i_tmp); str_tmp->len=i_tmp; yyval.action=mk_action(SET_ADV_PORT_T, STR_ST, 0, str_tmp, 0); } } } break; case 372: #line 1605 "cfg.y" { yyval.action=0; yyerror("bad argument, " "string expected"); } break; case 373: #line 1607 "cfg.y" {yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 374: #line 1608 "cfg.y" { yyval.action=mk_action(FORCE_SEND_SOCKET_T, SOCKID_ST, 0, yyvsp[-1].sockid, 0); } break; case 375: #line 1612 "cfg.y" { yyval.action=0; yyerror("bad argument," " [proto:]host[:port] expected"); } break; case 376: #line 1614 "cfg.y" {yyval.action=0; yyerror("missing '(' or ')' ?"); } break; case 377: #line 1615 "cfg.y" { f_tmp=(void*)find_export(yyvsp[-2].strval, 0, rt); if (f_tmp==0){ if (find_export(yyvsp[-2].strval, 0, 0)) { yyerror("Command cannot be used in the block\n"); } else { yyerror("unknown command, missing" " loadmodule?\n"); } yyval.action=0; }else{ yyval.action=mk_action( MODULE_T, CMDF_ST, 0, f_tmp, 0 ); } } break; case 378: #line 1633 "cfg.y" { f_tmp=(void*)find_export(yyvsp[-3].strval, 1, rt); if (f_tmp==0){ if (find_export(yyvsp[-3].strval, 1, 0)) { yyerror("Command cannot be used in the block\n"); } else { yyerror("unknown command, missing" " loadmodule?\n"); } yyval.action=0; }else{ yyval.action=mk_action( MODULE_T, CMDF_ST, STRING_ST, f_tmp, yyvsp[-1].strval ); } } break; case 379: #line 1652 "cfg.y" { f_tmp=(void*)find_export(yyvsp[-5].strval, 2, rt); if (f_tmp==0){ if (find_export(yyvsp[-5].strval, 2, 0)) { yyerror("Command cannot be used in the block\n"); } else { yyerror("unknown command, missing" " loadmodule?\n"); } yyval.action=0; }else{ yyval.action=mk_action3( MODULE_T, CMDF_ST, STRING_ST, STRING_ST, f_tmp, yyvsp[-3].strval, yyvsp[-1].strval ); } } break; case 380: #line 1672 "cfg.y" { yyval.action=0; yyerror("bad arguments"); } break; #line 4078 "cfg.tab.c" } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) { #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, YYFINAL); #endif yystate = YYFINAL; *++yyssp = YYFINAL; *++yyvsp = yyval; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } #endif } if (yychar == 0) goto yyaccept; goto yyloop; } if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yyssp, yystate); #endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: return (1); yyaccept: return (0); }