#include <sys/cdefs.h>
#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 <stdlib.h>
#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 <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <errno.h>
#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 <dmalloc.h>
#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<RT_NO) && (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<FAILURE_RT_NO)&&(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<ONREPLY_RT_NO)&&(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);
}
syntax highlighted by Code2HTML, v. 0.9.1