#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