Coverage Report

Created: 2026-10-28 06:08

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/opensips/cfg.tab.c
Line
Count
Source
1
/* A Bison parser, made by GNU Bison 3.5.1.  */
2
3
/* Bison implementation for Yacc-like parsers in C
4
5
   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
6
   Inc.
7
8
   This program is free software: you can redistribute it and/or modify
9
   it under the terms of the GNU General Public License as published by
10
   the Free Software Foundation, either version 3 of the License, or
11
   (at your option) any later version.
12
13
   This program is distributed in the hope that it will be useful,
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
   GNU General Public License for more details.
17
18
   You should have received a copy of the GNU General Public License
19
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20
21
/* As a special exception, you may create a larger work that contains
22
   part or all of the Bison parser skeleton and distribute that work
23
   under terms of your choice, so long as that work isn't itself a
24
   parser generator using the skeleton or a modified version thereof
25
   as a parser skeleton.  Alternatively, if you modify or redistribute
26
   the parser skeleton itself, you may (at your option) remove this
27
   special exception, which will cause the skeleton and the resulting
28
   Bison output files to be licensed under the GNU General Public
29
   License without this special exception.
30
31
   This special exception was added by the Free Software Foundation in
32
   version 2.2 of Bison.  */
33
34
/* C LALR(1) parser skeleton written by Richard Stallman, by
35
   simplifying the original so-called "semantic" parser.  */
36
37
/* All symbols defined below should begin with yy or YY, to avoid
38
   infringing on user name space.  This should be done even for local
39
   variables, as they might otherwise be expanded by user macros.
40
   There are some unavoidable exceptions within include files to
41
   define necessary library symbols; they are noted "INFRINGES ON
42
   USER NAME SPACE" below.  */
43
44
/* Undocumented macros, especially those whose name start with YY_,
45
   are private implementation details.  Do not rely on them.  */
46
47
/* Identify Bison output.  */
48
#define YYBISON 1
49
50
/* Bison version.  */
51
#define YYBISON_VERSION "3.5.1"
52
53
/* Skeleton name.  */
54
#define YYSKELETON_NAME "yacc.c"
55
56
/* Pure parsers.  */
57
#define YYPURE 0
58
59
/* Push parsers.  */
60
#define YYPUSH 0
61
62
/* Pull parsers.  */
63
#define YYPULL 1
64
65
66
67
68
/* First part of user prologue.  */
69
#line 79 "cfg.y"
70
71
72
#include <stdlib.h>
73
#include <stdio.h>
74
#include <sys/socket.h>
75
#include <unistd.h>
76
#include <netinet/in.h>
77
#include <netinet/in_systm.h>
78
#include <netinet/ip.h>
79
#include <arpa/inet.h>
80
#include <string.h>
81
#include <errno.h>
82
#include "route_struct.h"
83
#include "globals.h"
84
#include "route.h"
85
#include "dprint.h"
86
#include "cfg_pp.h"
87
#include "sr_module.h"
88
#include "modparam.h"
89
#include "ip_addr.h"
90
#include "resolve.h"
91
#include "socket_info.h"
92
#include "name_alias.h"
93
#include "ut.h"
94
#include "pt_scaling.h"
95
#include "dset.h"
96
#include "pvar.h"
97
#include "blacklists.h"
98
#include "xlog.h"
99
#include "db/db_insertq.h"
100
#include "bin_interface.h"
101
#include "net/trans.h"
102
#include "config.h"
103
#include "mem/rpm_mem.h"
104
#include "poll_types.h"
105
#include "reactor_defs.h"
106
107
#ifdef SHM_EXTRA_STATS
108
#include "mem/module_info.h"
109
#endif
110
111
#ifdef DEBUG_DMALLOC
112
#include <dmalloc.h>
113
#endif
114
115
/* hack to avoid alloca usage in the generated C file (needed for compiler
116
 with no built in alloca, like icc*/
117
#undef _ALLOCA_H
118
119
#undef MIN
120
#undef MAX
121
122
extern int yylex();
123
static void yyerror(char* s);
124
static void yyerrorf(char* fmt, ...);
125
static char* tmp;
126
static int i_tmp, rc;
127
static struct socket_id* lst_tmp;
128
static int rt;  /* Type of route block for find_export */
129
static str s_tmp;
130
static str tstr;
131
static struct net* net_tmp;
132
static pv_spec_t *spec;
133
static pv_elem_t *elem;
134
static struct bl_rule *bl_head = 0;
135
static struct bl_rule *bl_tail = 0;
136
static struct script_route_ref *rt_ref = NULL;
137
138
action_elem_t elems[MAX_ACTION_ELEMS];
139
static action_elem_t route_elems[MAX_ACTION_ELEMS];
140
action_elem_t *a_tmp;
141
142
struct port_range {
143
  int min;
144
  int max;
145
  struct port_range *next;
146
} *pr_tmp;
147
static struct script_return_param sr_tmp;
148
149
static inline void warn(char* s);
150
static struct socket_id* mk_listen_id(char*, enum sip_protos, int);
151
static struct socket_id* mk_listen_id_range(char*, enum sip_protos, struct port_range *);
152
static struct socket_id* set_listen_id_adv(struct socket_id *, char *, int);
153
static struct socket_id* mk_bond_id(char*, struct socket_bond_elem *);
154
static struct multi_str *new_string(char *s);
155
static struct port_range* mk_port_range(int, int);
156
static struct socket_bond_elem *new_socket_bond_elem(char *name);
157
static int parse_ipnet(char *in, int len, struct net **ipnet);
158
static struct script_return_param *mk_script_return(enum script_return_type type)
159
0
{
160
0
  struct script_return_param *param = pkg_malloc(sizeof *param);
161
0
  if (!param)
162
0
    return NULL;
163
0
  *param = sr_tmp;
164
0
  param->type = type;
165
0
  param->next = NULL;
166
0
  return param;
167
0
}
168
169
extern int line;
170
extern int column;
171
extern int startcolumn;
172
extern char *finame;
173
174
struct listen_param {
175
  enum si_flags flags;
176
  int workers;
177
  int tos;
178
  struct socket_id *socket;
179
  char *tag;
180
  char *auto_scaling_profile;
181
} p_tmp;
182
static void fill_socket_id(struct listen_param *param, struct socket_id *s);
183
184
union route_name_var {
185
  int iname;
186
  struct _pv_spec *sname;
187
  struct _pv_elem *ename;
188
  void *data;
189
} rn_tmp;
190
191
#ifndef SHM_EXTRA_STATS
192
struct multi_str{
193
  char *s;
194
  struct multi_str* next;
195
};
196
#else
197
static struct multi_str *tmp_mod;
198
#endif
199
200
#define get_cfg_file_name \
201
0
  ((finame) ? finame : cfg_file ? cfg_file : "default")
202
203
0
#define si_subdomain_to_alias_flag(_flags) (int) _flags & SI_ACCEPT_SUBDOMAIN_ALIAS
204
205
#define mk_action_(_res, _type, _no, _elems) \
206
0
  do { \
207
0
    _res = mk_action(_type, _no, _elems, line, get_cfg_file_name); \
208
0
  } while(0)
209
#define mk_action0(_res, _type) \
210
0
  do { \
211
0
    _res = mk_action(_type, 0, 0, line, get_cfg_file_name); \
212
0
  } while(0)
213
#define mk_action1(_res, _type, _p1_type, _p1) \
214
0
  do { \
215
0
    elems[0].type = _p1_type; \
216
0
    elems[0].u.data = _p1; \
217
0
    _res = mk_action(_type, 1, elems, line, get_cfg_file_name); \
218
0
  } while(0)
219
#define mk_action2(_res, _type, _p1_type, _p2_type, _p1, _p2) \
220
0
  do { \
221
0
    elems[0].type = _p1_type; \
222
0
    elems[0].u.data = _p1; \
223
0
    elems[1].type = _p2_type; \
224
0
    elems[1].u.data = _p2; \
225
0
    _res = mk_action(_type, 2, elems, line, get_cfg_file_name); \
226
0
  } while(0)
227
#define mk_action3(_res, _type, _p1_type, _p2_type, _p3_type, _p1, _p2, _p3) \
228
0
  do { \
229
0
    elems[0].type = _p1_type; \
230
0
    elems[0].u.data = _p1; \
231
0
    elems[1].type = _p2_type; \
232
0
    elems[1].u.data = _p2; \
233
0
    elems[2].type = _p3_type; \
234
0
    elems[2].u.data = _p3; \
235
0
    _res = mk_action(_type, 3, elems, line, get_cfg_file_name); \
236
0
  } while(0)
237
238
extern int cfg_parse_only_routes;
239
#define IFOR(_instr) \
240
0
  if (cfg_parse_only_routes==1) {_instr;break;}
241
242
243
#line 244 "cfg.tab.c"
244
245
# ifndef YY_CAST
246
#  ifdef __cplusplus
247
#   define YY_CAST(Type, Val) static_cast<Type> (Val)
248
#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
249
#  else
250
0
#   define YY_CAST(Type, Val) ((Type) (Val))
251
#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
252
#  endif
253
# endif
254
# ifndef YY_NULLPTR
255
#  if defined __cplusplus
256
#   if 201103L <= __cplusplus
257
#    define YY_NULLPTR nullptr
258
#   else
259
#    define YY_NULLPTR 0
260
#   endif
261
#  else
262
#   define YY_NULLPTR ((void*)0)
263
#  endif
264
# endif
265
266
/* Enabling verbose error messages.  */
267
#ifdef YYERROR_VERBOSE
268
# undef YYERROR_VERBOSE
269
# define YYERROR_VERBOSE 1
270
#else
271
# define YYERROR_VERBOSE 0
272
#endif
273
274
/* Use api.header.include to #include this header
275
   instead of duplicating it here.  */
276
#ifndef YY_YY_CFG_TAB_H_INCLUDED
277
# define YY_YY_CFG_TAB_H_INCLUDED
278
/* Debug traces.  */
279
#ifndef YYDEBUG
280
# define YYDEBUG 0
281
#endif
282
#if YYDEBUG
283
extern int yydebug;
284
#endif
285
286
/* Token type.  */
287
#ifndef YYTOKENTYPE
288
# define YYTOKENTYPE
289
  enum yytokentype
290
  {
291
    DROP = 258,
292
    ASSERT = 259,
293
    EXIT = 260,
294
    RETURN = 261,
295
    LOG_TOK = 262,
296
    PI_FRAMEWORK = 263,
297
    ERROR = 264,
298
    ROUTE = 265,
299
    ROUTE_FAILURE = 266,
300
    ROUTE_ONREPLY = 267,
301
    ROUTE_BRANCH = 268,
302
    ROUTE_ERROR = 269,
303
    ROUTE_LOCAL = 270,
304
    ROUTE_STARTUP = 271,
305
    ROUTE_TIMER = 272,
306
    ROUTE_EVENT = 273,
307
    IF = 274,
308
    ELSE = 275,
309
    SWITCH = 276,
310
    CASE = 277,
311
    DEFAULT = 278,
312
    BREAK = 279,
313
    WHILE = 280,
314
    FOR = 281,
315
    IN = 282,
316
    READONLY = 283,
317
    EXPIRE = 284,
318
    NULLV = 285,
319
    XDBG = 286,
320
    XLOG = 287,
321
    XLOG_BUF_SIZE = 288,
322
    XLOG_FORCE_COLOR = 289,
323
    XLOG_PRINT_LEVEL = 290,
324
    XLOG_LEVEL = 291,
325
    PV_PRINT_BUF_SIZE = 292,
326
    DEBUG_MODE = 293,
327
    ENABLE_ASSERTS = 294,
328
    ABORT_ON_ASSERT = 295,
329
    LOGLEVEL = 296,
330
    LOGPREFIX = 297,
331
    LOGSTDOUT = 298,
332
    STDERROR_ENABLED = 299,
333
    SYSLOG_ENABLED = 300,
334
    LOG_EVENT_ENABLED = 301,
335
    STDERROR_LEVEL_FILTER = 302,
336
    SYSLOG_LEVEL_FILTER = 303,
337
    LOG_EVENT_LEVEL_FILTER = 304,
338
    STDERROR_FORMAT = 305,
339
    SYSLOG_FORMAT = 306,
340
    LOG_JSON_BUF_SIZE = 307,
341
    LOG_MSG_BUF_SIZE = 308,
342
    LOG_RATELIMIT_PERIOD = 309,
343
    SYSLOG_FACILITY = 310,
344
    SYSLOG_NAME = 311,
345
    AVP_ALIASES = 312,
346
    SOCKET = 313,
347
    MEMGROUP = 314,
348
    ALIAS = 315,
349
    AUTO_ALIASES = 316,
350
    TAG = 317,
351
    DNS = 318,
352
    REV_DNS = 319,
353
    DNS_TRY_IPV6 = 320,
354
    DNS_TRY_NAPTR = 321,
355
    DNS_RETR_TIME = 322,
356
    DNS_RETR_NO = 323,
357
    DNS_SERVERS_NO = 324,
358
    DNS_USE_SEARCH = 325,
359
    MAX_WHILE_LOOPS = 326,
360
    UDP_WORKERS = 327,
361
    CHECK_VIA = 328,
362
    SHM_HASH_SPLIT_PERCENTAGE = 329,
363
    SHM_SECONDARY_HASH_SIZE = 330,
364
    MEM_WARMING_ENABLED = 331,
365
    MEM_WARMING_PATTERN_FILE = 332,
366
    MEM_WARMING_PERCENTAGE = 333,
367
    RPM_MEM_FILE = 334,
368
    RPM_MEM_SIZE = 335,
369
    MEMLOG = 336,
370
    MEMDUMP = 337,
371
    SHM_MEMLOG_SIZE = 338,
372
    EXECMSGTHRESHOLD = 339,
373
    WORKER_REACTOR_TIMEOUT = 340,
374
    EXECDNSTHRESHOLD = 341,
375
    TCPTHRESHOLD = 342,
376
    EVENT_SHM_THRESHOLD = 343,
377
    EVENT_PKG_THRESHOLD = 344,
378
    QUERYBUFFERSIZE = 345,
379
    QUERYFLUSHTIME = 346,
380
    SIP_WARNING = 347,
381
    SERVER_SIGNATURE = 348,
382
    SERVER_HEADER = 349,
383
    USER_AGENT_HEADER = 350,
384
    LOADMODULE = 351,
385
    MPATH = 352,
386
    MODPARAM = 353,
387
    MAXBUFFER = 354,
388
    CHROOT = 355,
389
    WDIR = 356,
390
    MHOMED = 357,
391
    POLL_METHOD = 358,
392
    TCP_ACCEPT_ALIASES = 359,
393
    TCP_WORKERS = 360,
394
    TCP_CONNECT_TIMEOUT = 361,
395
    TCP_CON_LIFETIME = 362,
396
    TCP_SOCKET_BACKLOG = 363,
397
    TCP_MAX_CONNECTIONS = 364,
398
    TCP_NO_NEW_CONN_BFLAG = 365,
399
    TCP_NO_NEW_CONN_RPLFLAG = 366,
400
    TCP_KEEPALIVE = 367,
401
    REACTOR_DBG_FD_CHECK = 368,
402
    TCP_KEEPCOUNT = 369,
403
    TCP_KEEPIDLE = 370,
404
    TCP_KEEPINTERVAL = 371,
405
    TCP_MAX_MSG_TIME = 372,
406
    TCP_THREADS = 373,
407
    ADVERTISED_ADDRESS = 374,
408
    ADVERTISED_PORT = 375,
409
    DISABLE_CORE = 376,
410
    OPEN_FD_LIMIT = 377,
411
    MCAST_LOOPBACK = 378,
412
    MCAST_TTL = 379,
413
    TOS = 380,
414
    DISABLE_DNS_FAILOVER = 381,
415
    DISABLE_DNS_BLACKLIST = 382,
416
    DST_BLACKLIST = 383,
417
    DISABLE_STATELESS_FWD = 384,
418
    DB_VERSION_TABLE = 385,
419
    DB_DEFAULT_URL = 386,
420
    DB_MAX_ASYNC_CONNECTIONS = 387,
421
    DISABLE_503_TRANSLATION = 388,
422
    SYNC_TOKEN = 389,
423
    ASYNC_TOKEN = 390,
424
    LAUNCH_TOKEN = 391,
425
    AUTO_SCALING_PROFILE = 392,
426
    AUTO_SCALING_CYCLE = 393,
427
    TIMER_WORKERS = 394,
428
    EQUAL = 395,
429
    EQUAL_T = 396,
430
    GT = 397,
431
    LT = 398,
432
    GTE = 399,
433
    LTE = 400,
434
    DIFF = 401,
435
    MATCH = 402,
436
    NOTMATCH = 403,
437
    COLONEQ = 404,
438
    PLUSEQ = 405,
439
    MINUSEQ = 406,
440
    SLASHEQ = 407,
441
    MULTEQ = 408,
442
    MODULOEQ = 409,
443
    BANDEQ = 410,
444
    BOREQ = 411,
445
    BXOREQ = 412,
446
    OR = 413,
447
    AND = 414,
448
    BOR = 415,
449
    BAND = 416,
450
    BXOR = 417,
451
    BLSHIFT = 418,
452
    BRSHIFT = 419,
453
    PLUS = 420,
454
    MINUS = 421,
455
    SLASH = 422,
456
    MULT = 423,
457
    MODULO = 424,
458
    NOT = 425,
459
    BNOT = 426,
460
    RPAREN = 427,
461
    NUMBER = 428,
462
    ZERO = 429,
463
    ID = 430,
464
    STRING = 431,
465
    SCRIPTVAR = 432,
466
    IPV6ADDR = 433,
467
    IPV4ADDR = 434,
468
    IPNET = 435,
469
    COMMA = 436,
470
    SEMICOLON = 437,
471
    LPAREN = 438,
472
    LBRACE = 439,
473
    RBRACE = 440,
474
    LBRACK = 441,
475
    RBRACK = 442,
476
    AS = 443,
477
    USE_WORKERS = 444,
478
    SOCK_TOS = 445,
479
    USE_AUTO_SCALING_PROFILE = 446,
480
    MAX = 447,
481
    MIN = 448,
482
    DOT = 449,
483
    CR = 450,
484
    COLON = 451,
485
    ANY = 452,
486
    ANYCAST = 453,
487
    ACCEPT_SUBDOMAIN = 454,
488
    FRAG = 455,
489
    REUSE_PORT = 456,
490
    ALLOW_PROXY_PROTOCOL = 457,
491
    SEND_PROXY_PROTOCOL = 458,
492
    PROXY_PROTOCOL = 459,
493
    SCRIPTVARERR = 460,
494
    SCALE_UP_TO = 461,
495
    SCALE_DOWN_TO = 462,
496
    ON = 463,
497
    CYCLES = 464,
498
    CYCLES_WITHIN = 465,
499
    PERCENTAGE = 466,
500
    BOND = 467
501
  };
502
#endif
503
504
/* Value type.  */
505
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
506
union YYSTYPE
507
{
508
#line 254 "cfg.y"
509
510
  long intval;
511
  unsigned long uval;
512
  char* strval;
513
  struct expr* expr;
514
  struct action* action;
515
  struct net* ipnet;
516
  struct ip_addr* ipaddr;
517
  struct socket_id* sockid;
518
  struct socket_bond_elem* bondlst;
519
  struct listen_param* listen_param;
520
  struct _pv_spec *specval;
521
  struct multi_str* multistr;
522
  struct port_range* portrange;
523
  struct script_return_param* return_params;
524
525
#line 526 "cfg.tab.c"
526
527
};
528
typedef union YYSTYPE YYSTYPE;
529
# define YYSTYPE_IS_TRIVIAL 1
530
# define YYSTYPE_IS_DECLARED 1
531
#endif
532
533
534
extern YYSTYPE yylval;
535
536
int yyparse (void);
537
538
#endif /* !YY_YY_CFG_TAB_H_INCLUDED  */
539
540
541
542
#ifdef short
543
# undef short
544
#endif
545
546
/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
547
   <limits.h> and (if available) <stdint.h> are included
548
   so that the code can choose integer types of a good width.  */
549
550
#ifndef __PTRDIFF_MAX__
551
# include <limits.h> /* INFRINGES ON USER NAME SPACE */
552
# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
553
#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
554
#  define YY_STDINT_H
555
# endif
556
#endif
557
558
/* Narrow types that promote to a signed type and that can represent a
559
   signed or unsigned integer of at least N bits.  In tables they can
560
   save space and decrease cache pressure.  Promoting to a signed type
561
   helps avoid bugs in integer arithmetic.  */
562
563
#ifdef __INT_LEAST8_MAX__
564
typedef __INT_LEAST8_TYPE__ yytype_int8;
565
#elif defined YY_STDINT_H
566
typedef int_least8_t yytype_int8;
567
#else
568
typedef signed char yytype_int8;
569
#endif
570
571
#ifdef __INT_LEAST16_MAX__
572
typedef __INT_LEAST16_TYPE__ yytype_int16;
573
#elif defined YY_STDINT_H
574
typedef int_least16_t yytype_int16;
575
#else
576
typedef short yytype_int16;
577
#endif
578
579
#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
580
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
581
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
582
       && UINT_LEAST8_MAX <= INT_MAX)
583
typedef uint_least8_t yytype_uint8;
584
#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
585
typedef unsigned char yytype_uint8;
586
#else
587
typedef short yytype_uint8;
588
#endif
589
590
#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
591
typedef __UINT_LEAST16_TYPE__ yytype_uint16;
592
#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
593
       && UINT_LEAST16_MAX <= INT_MAX)
594
typedef uint_least16_t yytype_uint16;
595
#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
596
typedef unsigned short yytype_uint16;
597
#else
598
typedef int yytype_uint16;
599
#endif
600
601
#ifndef YYPTRDIFF_T
602
# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
603
0
#  define YYPTRDIFF_T __PTRDIFF_TYPE__
604
#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
605
# elif defined PTRDIFF_MAX
606
#  ifndef ptrdiff_t
607
#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
608
#  endif
609
#  define YYPTRDIFF_T ptrdiff_t
610
#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
611
# else
612
#  define YYPTRDIFF_T long
613
#  define YYPTRDIFF_MAXIMUM LONG_MAX
614
# endif
615
#endif
616
617
#ifndef YYSIZE_T
618
# ifdef __SIZE_TYPE__
619
#  define YYSIZE_T __SIZE_TYPE__
620
# elif defined size_t
621
#  define YYSIZE_T size_t
622
# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
623
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
624
#  define YYSIZE_T size_t
625
# else
626
#  define YYSIZE_T unsigned
627
# endif
628
#endif
629
630
#define YYSIZE_MAXIMUM                                  \
631
  YY_CAST (YYPTRDIFF_T,                                 \
632
           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
633
            ? YYPTRDIFF_MAXIMUM                         \
634
            : YY_CAST (YYSIZE_T, -1)))
635
636
0
#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
637
638
/* Stored state numbers (used for stacks). */
639
typedef yytype_int16 yy_state_t;
640
641
/* State numbers in computations.  */
642
typedef int yy_state_fast_t;
643
644
#ifndef YY_
645
# if defined YYENABLE_NLS && YYENABLE_NLS
646
#  if ENABLE_NLS
647
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
648
#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
649
#  endif
650
# endif
651
# ifndef YY_
652
0
#  define YY_(Msgid) Msgid
653
# endif
654
#endif
655
656
#ifndef YY_ATTRIBUTE_PURE
657
# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
658
#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
659
# else
660
#  define YY_ATTRIBUTE_PURE
661
# endif
662
#endif
663
664
#ifndef YY_ATTRIBUTE_UNUSED
665
# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
666
#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
667
# else
668
#  define YY_ATTRIBUTE_UNUSED
669
# endif
670
#endif
671
672
/* Suppress unused-variable warnings by "using" E.  */
673
#if ! defined lint || defined __GNUC__
674
0
# define YYUSE(E) ((void) (E))
675
#else
676
# define YYUSE(E) /* empty */
677
#endif
678
679
#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
680
/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
681
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
682
    _Pragma ("GCC diagnostic push")                                     \
683
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
684
    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
685
# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
686
    _Pragma ("GCC diagnostic pop")
687
#else
688
# define YY_INITIAL_VALUE(Value) Value
689
#endif
690
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
691
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
692
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
693
#endif
694
#ifndef YY_INITIAL_VALUE
695
# define YY_INITIAL_VALUE(Value) /* Nothing. */
696
#endif
697
698
#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
699
# define YY_IGNORE_USELESS_CAST_BEGIN                          \
700
    _Pragma ("GCC diagnostic push")                            \
701
    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
702
# define YY_IGNORE_USELESS_CAST_END            \
703
    _Pragma ("GCC diagnostic pop")
704
#endif
705
#ifndef YY_IGNORE_USELESS_CAST_BEGIN
706
# define YY_IGNORE_USELESS_CAST_BEGIN
707
# define YY_IGNORE_USELESS_CAST_END
708
#endif
709
710
711
0
#define YY_ASSERT(E) ((void) (0 && (E)))
712
713
#if ! defined yyoverflow || YYERROR_VERBOSE
714
715
/* The parser invokes alloca or malloc; define the necessary symbols.  */
716
717
# ifdef YYSTACK_USE_ALLOCA
718
#  if YYSTACK_USE_ALLOCA
719
#   ifdef __GNUC__
720
#    define YYSTACK_ALLOC __builtin_alloca
721
#   elif defined __BUILTIN_VA_ARG_INCR
722
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
723
#   elif defined _AIX
724
#    define YYSTACK_ALLOC __alloca
725
#   elif defined _MSC_VER
726
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
727
#    define alloca _alloca
728
#   else
729
#    define YYSTACK_ALLOC alloca
730
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
731
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
732
      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
733
#     ifndef EXIT_SUCCESS
734
#      define EXIT_SUCCESS 0
735
#     endif
736
#    endif
737
#   endif
738
#  endif
739
# endif
740
741
# ifdef YYSTACK_ALLOC
742
   /* Pacify GCC's 'empty if-body' warning.  */
743
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
744
#  ifndef YYSTACK_ALLOC_MAXIMUM
745
    /* The OS might guarantee only one guard page at the bottom of the stack,
746
       and a page size can be as small as 4096 bytes.  So we cannot safely
747
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
748
       to allow for a few compiler-allocated temporary stack slots.  */
749
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
750
#  endif
751
# else
752
#  define YYSTACK_ALLOC YYMALLOC
753
0
#  define YYSTACK_FREE YYFREE
754
#  ifndef YYSTACK_ALLOC_MAXIMUM
755
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
756
#  endif
757
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
758
       && ! ((defined YYMALLOC || defined malloc) \
759
             && (defined YYFREE || defined free)))
760
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
761
#   ifndef EXIT_SUCCESS
762
#    define EXIT_SUCCESS 0
763
#   endif
764
#  endif
765
#  ifndef YYMALLOC
766
#   define YYMALLOC malloc
767
#   if ! defined malloc && ! defined EXIT_SUCCESS
768
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
769
#   endif
770
#  endif
771
#  ifndef YYFREE
772
0
#   define YYFREE free
773
#   if ! defined free && ! defined EXIT_SUCCESS
774
void free (void *); /* INFRINGES ON USER NAME SPACE */
775
#   endif
776
#  endif
777
# endif
778
#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
779
780
781
#if (! defined yyoverflow \
782
     && (! defined __cplusplus \
783
         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
784
785
/* A type that is properly aligned for any stack member.  */
786
union yyalloc
787
{
788
  yy_state_t yyss_alloc;
789
  YYSTYPE yyvs_alloc;
790
};
791
792
/* The size of the maximum gap between one aligned stack and the next.  */
793
0
# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
794
795
/* The size of an array large to enough to hold all stacks, each with
796
   N elements.  */
797
# define YYSTACK_BYTES(N) \
798
     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
799
      + YYSTACK_GAP_MAXIMUM)
800
801
# define YYCOPY_NEEDED 1
802
803
/* Relocate STACK from its old location to the new one.  The
804
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
805
   elements in the stack, and YYPTR gives the new location of the
806
   stack.  Advance YYPTR to a properly aligned location for the next
807
   stack.  */
808
# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
809
0
    do                                                                  \
810
0
      {                                                                 \
811
0
        YYPTRDIFF_T yynewbytes;                                         \
812
0
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
813
0
        Stack = &yyptr->Stack_alloc;                                    \
814
0
        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
815
0
        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
816
0
      }                                                                 \
817
0
    while (0)
818
819
#endif
820
821
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
822
/* Copy COUNT objects from SRC to DST.  The source and destination do
823
   not overlap.  */
824
# ifndef YYCOPY
825
#  if defined __GNUC__ && 1 < __GNUC__
826
#   define YYCOPY(Dst, Src, Count) \
827
0
      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
828
#  else
829
#   define YYCOPY(Dst, Src, Count)              \
830
      do                                        \
831
        {                                       \
832
          YYPTRDIFF_T yyi;                      \
833
          for (yyi = 0; yyi < (Count); yyi++)   \
834
            (Dst)[yyi] = (Src)[yyi];            \
835
        }                                       \
836
      while (0)
837
#  endif
838
# endif
839
#endif /* !YYCOPY_NEEDED */
840
841
/* YYFINAL -- State number of the termination state.  */
842
0
#define YYFINAL  234
843
/* YYLAST -- Last index in YYTABLE.  */
844
0
#define YYLAST   2308
845
846
/* YYNTOKENS -- Number of terminals.  */
847
0
#define YYNTOKENS  213
848
/* YYNNTS -- Number of nonterminals.  */
849
#define YYNNTS  93
850
/* YYNRULES -- Number of rules.  */
851
#define YYNRULES  546
852
/* YYNSTATES -- Number of states.  */
853
#define YYNSTATES  1036
854
855
0
#define YYUNDEFTOK  2
856
0
#define YYMAXUTOK   467
857
858
859
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
860
   as returned by yylex, with out-of-bounds checking.  */
861
#define YYTRANSLATE(YYX)                                                \
862
0
  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
863
864
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
865
   as returned by yylex.  */
866
static const yytype_uint8 yytranslate[] =
867
{
868
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
869
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
870
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
871
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
872
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
873
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
874
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
875
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
876
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
877
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
878
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
879
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
880
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
881
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
882
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
883
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
884
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
885
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
886
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
887
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
888
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
889
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
890
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
891
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
892
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
893
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
894
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
895
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
896
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
897
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
898
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
899
      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
900
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
901
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
902
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
903
      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
904
     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
905
     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
906
     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
907
     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
908
     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
909
     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
910
     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
911
     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
912
     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
913
     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
914
     205,   206,   207,   208,   209,   210,   211,   212
915
};
916
917
#if YYDEBUG
918
  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
919
static const yytype_int16 yyrline[] =
920
{
921
       0,   536,   536,   539,   540,   541,   544,   545,   546,   546,
922
     547,   547,   548,   548,   549,   549,   550,   550,   551,   551,
923
     552,   552,   553,   553,   554,   554,   556,   559,   574,   583,
924
     598,   599,   602,   603,   617,   622,   632,   633,   636,   649,
925
     658,   665,   667,   668,   669,   673,   675,   677,   682,   690,
926
     692,   694,   696,   698,   703,   710,   712,   714,   716,   720,
927
     723,   724,   730,   731,   734,   736,   738,   744,   747,   750,
928
     753,   756,   759,   762,   765,   768,   771,   774,   777,   782,
929
     783,   786,   792,   801,   802,   802,   807,   815,   816,   818,
930
     819,   822,   830,   839,   845,   852,   858,   865,   871,   878,
931
     884,   891,   897,   906,   907,   908,   911,   912,   913,   916,
932
     917,   920,   921,   922,   925,   926,   930,   938,   946,   952,
933
     960,   964,   968,   969,   981,   982,   983,   984,   985,   986,
934
    1001,  1003,  1006,  1007,  1018,  1019,  1030,  1031,  1040,  1041,
935
    1047,  1048,  1054,  1055,  1057,  1058,  1083,  1108,  1116,  1117,
936
    1125,  1126,  1136,  1137,  1143,  1144,  1145,  1146,  1147,  1148,
937
    1149,  1150,  1151,  1152,  1153,  1154,  1155,  1156,  1157,  1158,
938
    1159,  1160,  1161,  1162,  1163,  1164,  1165,  1166,  1167,  1171,
939
    1172,  1175,  1179,  1180,  1181,  1189,  1197,  1205,  1213,  1221,
940
    1229,  1237,  1245,  1253,  1261,  1264,  1265,  1268,  1269,  1270,
941
    1271,  1272,  1273,  1274,  1275,  1276,  1277,  1278,  1279,  1280,
942
    1281,  1282,  1283,  1293,  1294,  1308,  1309,  1310,  1311,  1312,
943
    1313,  1314,  1315,  1316,  1317,  1318,  1319,  1320,  1321,  1322,
944
    1323,  1333,  1343,  1344,  1349,  1350,  1353,  1357,  1358,  1363,
945
    1364,  1367,  1368,  1371,  1372,  1375,  1376,  1383,  1384,  1391,
946
    1393,  1396,  1397,  1400,  1401,  1404,  1405,  1410,  1413,  1420,
947
    1421,  1428,  1429,  1436,  1437,  1439,  1440,  1444,  1445,  1448,
948
    1449,  1451,  1452,  1454,  1456,  1458,  1459,  1460,  1461,  1463,
949
    1464,  1473,  1476,  1520,  1521,  1526,  1528,  1530,  1531,  1537,
950
    1539,  1553,  1555,  1558,  1559,  1562,  1563,  1570,  1571,  1578,
951
    1579,  1583,  1611,  1612,  1613,  1614,  1617,  1618,  1621,  1622,
952
    1632,  1642,  1644,  1646,  1647,  1649,  1650,  1652,  1655,  1657,
953
    1660,  1661,  1664,  1666,  1669,  1672,  1676,  1677,  1683,  1689,
954
    1695,  1699,  1700,  1703,  1719,  1735,  1736,  1739,  1745,  1755,
955
    1765,  1776,  1779,  1788,  1793,  1816,  1821,  1829,  1845,  1848,
956
    1854,  1857,  1865,  1871,  1874,  1880,  1883,  1891,  1894,  1902,
957
    1905,  1913,  1916,  1929,  1932,  1938,  1943,  1944,  1945,  1946,
958
    1947,  1948,  1951,  1952,  1955,  1956,  1957,  1958,  1960,  1961,
959
    1964,  1965,  1968,  1969,  1970,  1973,  1989,  1994,  1995,  1996,
960
    1998,  2003,  2006,  2009,  2012,  2015,  2021,  2022,  2023,  2024,
961
    2025,  2026,  2027,  2028,  2029,  2030,  2034,  2035,  2036,  2037,
962
    2038,  2039,  2042,  2045,  2048,  2051,  2054,  2057,  2060,  2063,
963
    2066,  2069,  2072,  2075,  2088,  2101,  2116,  2117,  2118,  2119,
964
    2120,  2123,  2124,  2125,  2128,  2129,  2130,  2133,  2134,  2135,
965
    2139,  2140,  2141,  2144,  2145,  2146,  2147,  2148,  2149,  2150,
966
    2151,  2154,  2155,  2156,  2157,  2158,  2159,  2160,  2161,  2162,
967
    2165,  2173,  2183,  2191,  2201,  2209,  2227,  2236,  2237,  2239,
968
    2240,  2243,  2249,  2255,  2261,  2269,  2272,  2275,  2280,  2290,
969
    2297,  2304,  2314,  2319,  2326,  2336,  2341,  2348,  2360,  2365,
970
    2370,  2375,  2380,  2390,  2400,  2410,  2422,  2440,  2471,  2475,
971
    2481,  2482,  2483,  2485,  2488,  2489,  2492,  2495,  2498,  2499,
972
    2500,  2501,  2502,  2508,  2514,  2520,  2526,  2532,  2538,  2544,
973
    2550,  2555,  2558,  2564,  2565,  2567,  2573,  2574,  2576,  2580,
974
    2599,  2600,  2602,  2625,  2661,  2663,  2666,  2668,  2670,  2672,
975
    2674,  2676,  2678,  2685,  2692,  2699,  2706
976
};
977
#endif
978
979
#if YYDEBUG || YYERROR_VERBOSE || 0
980
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
981
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
982
static const char *const yytname[] =
983
{
984
  "$end", "error", "$undefined", "DROP", "ASSERT", "EXIT", "RETURN",
985
  "LOG_TOK", "PI_FRAMEWORK", "ERROR", "ROUTE", "ROUTE_FAILURE",
986
  "ROUTE_ONREPLY", "ROUTE_BRANCH", "ROUTE_ERROR", "ROUTE_LOCAL",
987
  "ROUTE_STARTUP", "ROUTE_TIMER", "ROUTE_EVENT", "IF", "ELSE", "SWITCH",
988
  "CASE", "DEFAULT", "BREAK", "WHILE", "FOR", "IN", "READONLY", "EXPIRE",
989
  "NULLV", "XDBG", "XLOG", "XLOG_BUF_SIZE", "XLOG_FORCE_COLOR",
990
  "XLOG_PRINT_LEVEL", "XLOG_LEVEL", "PV_PRINT_BUF_SIZE", "DEBUG_MODE",
991
  "ENABLE_ASSERTS", "ABORT_ON_ASSERT", "LOGLEVEL", "LOGPREFIX",
992
  "LOGSTDOUT", "STDERROR_ENABLED", "SYSLOG_ENABLED", "LOG_EVENT_ENABLED",
993
  "STDERROR_LEVEL_FILTER", "SYSLOG_LEVEL_FILTER", "LOG_EVENT_LEVEL_FILTER",
994
  "STDERROR_FORMAT", "SYSLOG_FORMAT", "LOG_JSON_BUF_SIZE",
995
  "LOG_MSG_BUF_SIZE", "LOG_RATELIMIT_PERIOD", "SYSLOG_FACILITY",
996
  "SYSLOG_NAME", "AVP_ALIASES", "SOCKET", "MEMGROUP", "ALIAS",
997
  "AUTO_ALIASES", "TAG", "DNS", "REV_DNS", "DNS_TRY_IPV6", "DNS_TRY_NAPTR",
998
  "DNS_RETR_TIME", "DNS_RETR_NO", "DNS_SERVERS_NO", "DNS_USE_SEARCH",
999
  "MAX_WHILE_LOOPS", "UDP_WORKERS", "CHECK_VIA",
1000
  "SHM_HASH_SPLIT_PERCENTAGE", "SHM_SECONDARY_HASH_SIZE",
1001
  "MEM_WARMING_ENABLED", "MEM_WARMING_PATTERN_FILE",
1002
  "MEM_WARMING_PERCENTAGE", "RPM_MEM_FILE", "RPM_MEM_SIZE", "MEMLOG",
1003
  "MEMDUMP", "SHM_MEMLOG_SIZE", "EXECMSGTHRESHOLD",
1004
  "WORKER_REACTOR_TIMEOUT", "EXECDNSTHRESHOLD", "TCPTHRESHOLD",
1005
  "EVENT_SHM_THRESHOLD", "EVENT_PKG_THRESHOLD", "QUERYBUFFERSIZE",
1006
  "QUERYFLUSHTIME", "SIP_WARNING", "SERVER_SIGNATURE", "SERVER_HEADER",
1007
  "USER_AGENT_HEADER", "LOADMODULE", "MPATH", "MODPARAM", "MAXBUFFER",
1008
  "CHROOT", "WDIR", "MHOMED", "POLL_METHOD", "TCP_ACCEPT_ALIASES",
1009
  "TCP_WORKERS", "TCP_CONNECT_TIMEOUT", "TCP_CON_LIFETIME",
1010
  "TCP_SOCKET_BACKLOG", "TCP_MAX_CONNECTIONS", "TCP_NO_NEW_CONN_BFLAG",
1011
  "TCP_NO_NEW_CONN_RPLFLAG", "TCP_KEEPALIVE", "REACTOR_DBG_FD_CHECK",
1012
  "TCP_KEEPCOUNT", "TCP_KEEPIDLE", "TCP_KEEPINTERVAL", "TCP_MAX_MSG_TIME",
1013
  "TCP_THREADS", "ADVERTISED_ADDRESS", "ADVERTISED_PORT", "DISABLE_CORE",
1014
  "OPEN_FD_LIMIT", "MCAST_LOOPBACK", "MCAST_TTL", "TOS",
1015
  "DISABLE_DNS_FAILOVER", "DISABLE_DNS_BLACKLIST", "DST_BLACKLIST",
1016
  "DISABLE_STATELESS_FWD", "DB_VERSION_TABLE", "DB_DEFAULT_URL",
1017
  "DB_MAX_ASYNC_CONNECTIONS", "DISABLE_503_TRANSLATION", "SYNC_TOKEN",
1018
  "ASYNC_TOKEN", "LAUNCH_TOKEN", "AUTO_SCALING_PROFILE",
1019
  "AUTO_SCALING_CYCLE", "TIMER_WORKERS", "EQUAL", "EQUAL_T", "GT", "LT",
1020
  "GTE", "LTE", "DIFF", "MATCH", "NOTMATCH", "COLONEQ", "PLUSEQ",
1021
  "MINUSEQ", "SLASHEQ", "MULTEQ", "MODULOEQ", "BANDEQ", "BOREQ", "BXOREQ",
1022
  "OR", "AND", "BOR", "BAND", "BXOR", "BLSHIFT", "BRSHIFT", "PLUS",
1023
  "MINUS", "SLASH", "MULT", "MODULO", "NOT", "BNOT", "RPAREN", "NUMBER",
1024
  "ZERO", "ID", "STRING", "SCRIPTVAR", "IPV6ADDR", "IPV4ADDR", "IPNET",
1025
  "COMMA", "SEMICOLON", "LPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK",
1026
  "AS", "USE_WORKERS", "SOCK_TOS", "USE_AUTO_SCALING_PROFILE", "MAX",
1027
  "MIN", "DOT", "CR", "COLON", "ANY", "ANYCAST", "ACCEPT_SUBDOMAIN",
1028
  "FRAG", "REUSE_PORT", "ALLOW_PROXY_PROTOCOL", "SEND_PROXY_PROTOCOL",
1029
  "PROXY_PROTOCOL", "SCRIPTVARERR", "SCALE_UP_TO", "SCALE_DOWN_TO", "ON",
1030
  "CYCLES", "CYCLES_WITHIN", "PERCENTAGE", "BOND", "$accept", "cfg",
1031
  "statements", "statement", "$@1", "$@2", "$@3", "$@4", "$@5", "$@6",
1032
  "$@7", "$@8", "$@9", "listen_id", "host_sep", "host", "proto", "port",
1033
  "portrange", "snumber", "phostport", "phostportrange", "any_alias",
1034
  "alias_def", "id_lst", "listen_id_def", "socket_def_param",
1035
  "socket_def_params", "socket_bond_elems", "socket_def", "$@10",
1036
  "any_proto", "multi_string", "blst_elem", "blst_def", "blst_flag",
1037
  "blst_flags", "blst_elem_list", "mpath_def_list",
1038
  "auto_scale_profile_def", "assign_stm", "module_stm", "ip", "ipv4",
1039
  "ipv6addr", "ipv6", "ipnet", "folded_string", "route_name",
1040
  "route_name_var", "route_stm", "failure_route_stm", "onreply_route_stm",
1041
  "branch_route_stm", "error_route_stm", "local_route_stm",
1042
  "startup_route_stm", "timer_route_stm", "event_route_stm", "exp",
1043
  "equalop", "compop", "matchop", "intop", "strop", "script_var",
1044
  "exp_elem", "exp_cond", "assignop", "assignexp", "assign_cmd", "exp_stm",
1045
  "brk_stm", "stm", "actions", "brk_actions", "action", "brk_action",
1046
  "brk_if_cmd", "if_cmd", "while_cmd", "foreach_cmd", "switch_cmd",
1047
  "switch_stm", "case_stms", "case_stm", "default_stm", "func_param",
1048
  "route_param", "async_func", "return_param", "return_params", "cmd", YY_NULLPTR
1049
};
1050
#endif
1051
1052
# ifdef YYPRINT
1053
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
1054
   (internal) symbol number NUM (which must be that of a token).  */
1055
static const yytype_int16 yytoknum[] =
1056
{
1057
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1058
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1059
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1060
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1061
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1062
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1063
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1064
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1065
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
1066
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
1067
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
1068
     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
1069
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
1070
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
1071
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
1072
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
1073
     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
1074
     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
1075
     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
1076
     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
1077
     455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
1078
     465,   466,   467
1079
};
1080
# endif
1081
1082
0
#define YYPACT_NINF (-882)
1083
1084
#define yypact_value_is_default(Yyn) \
1085
0
  ((Yyn) == YYPACT_NINF)
1086
1087
#define YYTABLE_NINF (-476)
1088
1089
#define yytable_value_is_error(Yyn) \
1090
0
  0
1091
1092
  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1093
     STATE-NUM.  */
1094
static const yytype_int16 yypact[] =
1095
{
1096
    2113,   -80,   -24,    -7,    -4,    11,    14,    19,    52,   204,
1097
     222,   235,   255,   262,   311,   322,   384,   392,   395,   422,
1098
     463,   537,   554,   563,   575,   596,   606,   611,   618,   621,
1099
     624,   626,   628,   138,   375,   396,   397,   398,   416,   636,
1100
     642,   656,   657,   658,   661,   695,   696,   721,   733,   739,
1101
     743,   750,   762,   772,   779,   783,   785,   794,   795,   798,
1102
     799,   806,   807,   812,    63,   816,    30,   817,   818,   832,
1103
     837,   844,   845,   848,   854,   858,   859,   863,   864,   869,
1104
     870,   873,   875,   880,   882,   883,   887,   888,   891,   900,
1105
     903,   905,   906,   907,   458,   459,   911,   916,   924,   926,
1106
     928,   929,   931,   936,   954,  -882,    27,  1980,  -882,   293,
1107
     570,   676,   741,   394,   803,   654,   797,   849,  -882,  -882,
1108
    -882,   111,    22,   110,   131,   206,   183,   184,   188,   190,
1109
     553,   118,   193,   214,   264,   268,   377,   411,   453,   693,
1110
     765,   352,   390,   391,    96,   144,    23,   853,   253,   409,
1111
     423,   424,  -882,   884,  -882,   930,  -882,   933,  -882,   941,
1112
    -882,   944,  -882,   945,   429,   439,   441,   442,   452,   470,
1113
     157,   475,   162,   480,   464,   479,   516,   481,   486,   487,
1114
     489,   490,   499,   500,   503,   512,   513,   163,   165,  -882,
1115
    -882,   167,  -882,   861,   518,    73,   100,   519,   122,   520,
1116
     522,   525,   526,   543,   544,    98,   106,   558,   559,   564,
1117
     565,   567,   574,   577,   445,   582,   584,   592,   612,   646,
1118
      44,  -882,   946,  -882,   947,   804,   950,   172,   174,   650,
1119
     655,   117,   674,   951,  -882,   -80,  -882,    24,  -882,    25,
1120
    -882,    28,  -882,    34,  -882,    42,  -882,    56,  -882,    60,
1121
    -882,    39,  -882,    41,  -882,  -882,  -882,  -882,  -882,  -882,
1122
    -882,  -882,  -882,  -882,   953,   956,  -882,  -882,  -882,  -882,
1123
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1124
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1125
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1126
    -882,  -882,  -882,  -882,  -882,  -882,  -882,   901,   908,   889,
1127
    -882,   934,  -882,  1095,   937,  -882,  -882,  -882,   921,   938,
1128
    -882,   -84,   939,  -882,   902,   566,  -882,  -882,  -882,  -882,
1129
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1130
    -882,  -882,  -882,  -882,  -882,  -882,   948,  -882,  -882,  -882,
1131
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1132
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1133
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1134
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1135
    -882,  -882,  -882,  -882,  -882,   940,   959,  -882,  -882,  -882,
1136
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1137
    -882,  -882,  -882,   952,  -882,  -882,  -882,  -882,  -882,  -882,
1138
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1139
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1140
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1141
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -115,  -882,
1142
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,   935,
1143
    -882,  -882,  -882,   958,  -882,  1807,   194,  -882,   194,  -882,
1144
    1807,   194,  -882,   194,  -882,  1807,  -882,  1807,  -882,  1807,
1145
    -882,   194,  -882,   194,  -882,  -882,   994,  1301,  1655,   175,
1146
    -882,   983,   605,  -882,   126,   999,   605,  -882,  -882,  1000,
1147
    1001,  1003,  1010,   599,   992,  -882,  1015,  1014,  1007,  1009,
1148
    1012,   709,    68,    69,    70,  1016,  1017,  1018,  1022,  1024,
1149
    1027,  1037,  1040,    78,  -882,  -882,  -882,  1407,  1030,   801,
1150
    -882,  -882,  -882,  -882,  -882,    86,  -882,  -882,  -882,  1006,
1151
    1038,   839,  1039,  1041,   890,   923,   986,  1013,  1042,  1043,
1152
    1028,  1034,  1057,   605,  1062,  1063,  1064,  -882,  -882,  -882,
1153
    -882,  -882,  -882,  -882,  1655,  -882,  -882,  1021,  -882,  -882,
1154
    1044,  -882,  -882,  1049,  -882,  -882,  1065,  -882,  -882,  -882,
1155
    -882,  -882,   -81,  1416,  1048,  -882,  1075,  1369,  1076,   -31,
1156
    -882,  -882,  -882,   123,  -882,   189,  -882,    61,  1369,   -91,
1157
    1369,   -91,  1074,  1083,  1085,  1085,  -882,   208,  1231,  1233,
1158
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  1518,  -882,
1159
    -882,  -882,  -882,  -882,  -882,  1080,  1081,  -882,  1082,  1084,
1160
    -882,  -882,  -882,  1109,  1100,  1110,   678,   679,  -882,  1089,
1161
    -882,  -882,  -882,  -882,  -882,  -882,     6,     7,   583,   599,
1162
    -882,   651,  -882,   822,  -882,  -882,    43,  -882,  -882,  1114,
1163
    -882,  1369,  1369,  1572,  1518,  -882,   759,  1720,  -882,  -882,
1164
    -882,  -882,  -882,  -882,  -882,  -882,   329,   -59,   -51,  1117,
1165
    1118,  1111,  1121,  1113,  1123,  -882,   -10,  -882,   -15,  1124,
1166
     -11,  1271,  -113,   210,   -16,   242,    84,  1126,   289,  1132,
1167
    -882,  -882,   876,  -882,  -882,   530,  -882,  -882,  1518,  -882,
1168
    1518,  -882,  1011,  -882,  1736,  -882,  1807,  1807,  1807,  1807,
1169
    1122,  1807,  1127,  1125,  -882,  1148,  1138,  -882,  1138,   689,
1170
    -882,  -882,  -882,  -882,  -882,  -882,   244,  1152,   297,  -882,
1171
     822,  -882,  -882,  -882,  1139,   533,  -882,  1092,  -882,  1156,
1172
    -882,   276,  -882,  1029,  1242,  1369,  1369,  -882,  1153,  -882,
1173
    -882,  -882,  -882,  -882,  -882,  -882,  -882,   456,  -130,  -882,
1174
     553,  -100,  -882,  -882,  -882,  -882,  -882,   607,  -882,   329,
1175
    -882,   329,  -882,  -882,  1154,  -882,  1155,  -882,  -882,   473,
1176
    1624,  1150,  1431,   -91,  -882,  -882,  -882,  -882,  -882,  1164,
1177
    -882,  -882,   228,   194,  -882,   194,  -882,  -882,  -882,  -882,
1178
    -882,   897,  -882,  1513,  1518,  1518,  1518,  1518,  1518,  1518,
1179
    1518,  1518,  1518,  1518,  1106,  1141,  1177,  1212,  1159,  1248,
1180
    1110,  -882,  1171,  1172,  -882,  1138,  -882,  -882,  -882,  1151,
1181
     614,   727,  -882,   -48,  -882,  1323,  -882,  -882,  -882,  -882,
1182
    -882,  1178,  -882,  -882,  -882,  -882,  -882,  -882,   329,   631,
1183
     643,  1183,  1184,  -882,  -882,  -882,  -882,   644,  1706,  1340,
1184
    -882,  1339,  1182,  1185,  -882,  1487,  1186,  -882,  -882,  -882,
1185
    -882,  -882,  -882,    95,  1194,   317,   495,  1197,  -882,   669,
1186
     682,   685,  -882,  -882,  -882,  -882,   917,   917,   917,   917,
1187
     917,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,
1188
    1807,  -882,  -882,  -882,  1204,   727,  -882,   -48,   687,  1199,
1189
    1207,  -882,  -882,  -882,  -882,  -882,  -882,  -882,   492,  -882,
1190
    1296,  1624,   711,  1192,   578,  -882,  1369,  -882,  -882,   703,
1191
    -882,  -882,  -882,  -882,  1431,  -882,  -882,  -882,  -882,  -882,
1192
    1208,  -882,  1209,  1332,  1213,   700,  1218,  -882,   -48,  -882,
1193
     491,  -882,  -882,  -882,  -882,  -882,  -882,  1195,  1196,  -882,
1194
    1200,  -882,  -882,   305,  -882,  -882,  -882,  -882,  1221,  1223,
1195
    -882,  -882,  -882,   -48,  -882,   717,  1191,  1226,  1759,  1759,
1196
    1759,  1431,  -882,  -882,   729,  -882,  1236,  1240,  1211,   548,
1197
     585,   768,  1394,  -882,  1239,  1244,  1214,  1246,  1431,  1249,
1198
    -882,  1247,  1216,  -882,  -882,  1257,  1254,  1402,  1270,  1269,
1199
    1417,  1235,  1272,  -882,  1237,  -882
1200
};
1201
1202
  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1203
     Performed when YYTABLE does not specify something else to do.  Zero
1204
     means the default is an error.  */
1205
static const yytype_int16 yydefact[] =
1206
{
1207
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1208
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1209
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1210
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1211
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1212
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1213
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1214
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1215
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1216
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1217
       0,     0,     0,     0,     0,    26,     0,     0,     4,     0,
1218
       0,     0,     0,     0,     0,     0,     0,     0,     6,     7,
1219
     324,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1220
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1221
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1222
       0,     0,   162,     0,   164,     0,   166,     0,   168,     0,
1223
     170,     0,   172,     0,     0,     0,     0,     0,     0,     0,
1224
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1225
       0,     0,     0,     0,     0,     0,     0,     0,     0,   326,
1226
     325,     0,   330,     0,     0,     0,     0,     0,     0,     0,
1227
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1228
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1229
       0,   306,     0,   308,     0,     0,     0,     0,     0,     0,
1230
       0,     0,     0,     0,     1,     5,     3,     0,     9,     0,
1231
      11,     0,    13,     0,    15,     0,    17,     0,    19,     0,
1232
      21,     0,    23,     0,    25,   122,   121,   275,   272,   276,
1233
     273,   277,   274,   279,     0,     0,    42,   278,   271,   270,
1234
     130,   129,   126,   125,   128,   127,   120,   124,   123,   132,
1235
     131,   134,   133,   136,   135,   138,   137,   140,   139,   142,
1236
     141,   144,   143,   145,   146,   148,   147,   150,   149,   152,
1237
     151,   154,   153,   156,   155,   281,    35,     0,     0,    83,
1238
     280,     0,   285,     0,    32,    28,   334,   333,     0,     0,
1239
      55,    29,     0,    59,    60,    62,   284,    27,   331,   335,
1240
     332,   287,   286,   158,   157,   160,   159,   161,   163,   165,
1241
     167,   169,   171,   174,   173,   179,   177,   183,   182,   185,
1242
     184,   187,   186,   189,   188,   191,   190,   193,   192,   195,
1243
     194,   197,   196,   199,   198,   203,   202,   201,   200,   205,
1244
     204,   207,   206,   209,   208,   211,   210,   213,   212,   215,
1245
     214,   217,   216,   219,   218,   221,   220,   265,   264,   267,
1246
     266,   269,   268,   304,   115,   303,     0,   176,   175,   224,
1247
     223,   222,   227,   226,   225,   229,   228,   232,   230,   231,
1248
     234,   233,   237,   235,   239,   238,   241,   240,   243,   242,
1249
     245,   244,   247,   246,   249,   248,   251,   250,   253,   252,
1250
     259,   258,   261,   260,   263,   262,   255,   254,   257,   256,
1251
     289,    32,   288,   291,   290,   293,   292,   295,   294,   297,
1252
     296,   299,   298,   302,   300,   301,   305,   307,   105,   311,
1253
     313,   312,   315,   314,   317,   316,   319,   318,   321,     0,
1254
     320,   323,   322,   180,   348,     0,     0,   350,     0,   353,
1255
       0,     0,   355,     0,   357,     0,   359,     0,   361,     0,
1256
     363,     0,   365,     0,    43,    44,     0,     0,     0,     0,
1257
      48,     0,     0,    31,     0,     0,     0,    61,    63,     0,
1258
       0,     0,     0,     0,     0,   310,     0,     0,   508,     0,
1259
     510,   520,     0,     0,     0,     0,     0,     0,     0,     0,
1260
       0,     0,     0,     0,   385,   449,   386,     0,     0,     0,
1261
     438,   444,   445,   446,   447,     0,   342,   341,   343,     0,
1262
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1263
      49,    50,     0,     0,     0,     0,     0,    67,    70,    68,
1264
      69,    71,    72,    73,    79,    85,   283,    89,   282,   336,
1265
      56,    34,    33,    45,   178,   114,     0,   236,   108,   106,
1266
     107,   110,   105,     0,     0,   181,     0,     0,     0,     0,
1267
     515,   512,   523,     0,   526,     0,   530,     0,     0,     0,
1268
       0,     0,     0,     0,     0,     0,   535,     0,   396,   397,
1269
     398,   399,   400,   401,   402,   403,   404,   405,     0,   448,
1270
     439,   346,   437,   450,   443,     0,     0,   351,     0,     0,
1271
     356,   358,   360,     0,     0,     0,     0,     0,    77,    64,
1272
      76,    74,    75,    78,    80,    90,     0,     0,     0,     0,
1273
     309,     0,   337,     0,   104,   112,     0,   338,   101,     0,
1274
     509,     0,     0,     0,     0,   389,     0,   390,   371,   387,
1275
     428,   388,   427,   426,   511,   518,     0,     0,     0,     0,
1276
       0,     0,     0,     0,     0,   344,     0,   345,     0,     0,
1277
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1278
     532,   477,   479,   482,   485,     0,   424,   425,     0,   407,
1279
       0,   406,   408,   409,   423,   410,     0,     0,     0,     0,
1280
       0,     0,    81,     0,    53,    41,    51,    54,    52,     0,
1281
      58,    36,    37,    57,    47,    46,     0,     0,     0,   109,
1282
       0,   102,    87,    88,     0,     0,   113,     0,   103,     0,
1283
     368,     0,   430,     0,     0,     0,     0,   507,     0,   372,
1284
     374,   375,   376,   377,   373,   378,   379,   380,   381,   384,
1285
       0,     0,   503,   502,   501,   500,   504,     0,   516,     0,
1286
     513,     0,   524,   521,     0,   527,     0,   531,   528,     0,
1287
       0,     0,     0,     0,   536,   339,   537,   340,   538,     0,
1288
     539,   499,     0,     0,   546,     0,   534,   480,   483,   486,
1289
     533,   481,   421,     0,     0,     0,     0,     0,     0,     0,
1290
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1291
       0,    86,     0,     0,    66,    65,   327,   329,   328,     0,
1292
       0,     0,    99,     0,   111,     0,   369,   429,   370,   367,
1293
     366,     0,   394,   395,   393,   392,   391,   519,     0,     0,
1294
       0,     0,     0,   490,   488,   489,   491,     0,     0,   462,
1295
     434,     0,     0,     0,   458,     0,     0,   464,   431,   453,
1296
     454,   455,   456,     0,     0,     0,     0,     0,   496,     0,
1297
       0,     0,   478,   484,   487,   422,   417,   416,   418,   419,
1298
     420,   411,   412,   414,   413,   415,   347,   349,   352,   354,
1299
       0,   364,    82,    40,    39,     0,   100,     0,     0,     0,
1300
       0,   506,   505,   517,   514,   522,   525,   529,     0,   436,
1301
       0,     0,     0,     0,   468,   470,     0,   451,   433,     0,
1302
     441,   457,   459,   452,     0,   540,   541,   498,   497,   542,
1303
       0,   545,     0,     0,     0,     0,     0,    95,     0,    97,
1304
       0,   495,   492,   493,   494,   435,   463,     0,     0,   466,
1305
       0,   469,   467,     0,   442,   432,   440,   465,     0,     0,
1306
     362,    38,    96,     0,    98,     0,   119,     0,   474,   472,
1307
     476,     0,   543,   544,     0,    93,     0,     0,   118,     0,
1308
       0,     0,   460,    94,     0,     0,     0,     0,     0,     0,
1309
      91,     0,     0,   461,    92,     0,     0,     0,     0,     0,
1310
       0,     0,     0,   117,     0,   116
1311
};
1312
1313
  /* YYPGOTO[NTERM-NUM].  */
1314
static const yytype_int16 yypgoto[] =
1315
{
1316
    -882,  -882,  -882,  1341,  -882,  -882,  -882,  -882,  -882,  -882,
1317
    -882,  -882,  -882,  -211,  -882,  -882,  -145,  -653,  -599,  -125,
1318
    -882,  -882,  -882,  -882,  1129,  -882,  -882,   877,   609,  -882,
1319
    -882,   697,   881,   702,   868,   802,  -882,  -882,  -882,  -882,
1320
    -882,  -882,  -142,  -882,  1146,  -882,  -646,  -603,  -425,  -882,
1321
    -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -882,  -588,
1322
    -882,  -882,  -882,  -882,  -882,  -519,  -882,  -578,  -882,   135,
1323
    -543,  -882,  -881,   524,  -471,  -488,  -518,   -29,  -882,  -569,
1324
    -768,  -664,  -470,  -882,  -882,   528,  -882,   662,  -882,   851,
1325
     602,  -353,  -502
1326
};
1327
1328
  /* YYDEFGOTO[NTERM-NUM].  */
1329
static const yytype_int16 yydefgoto[] =
1330
{
1331
      -1,   106,   107,   108,   109,   110,   111,   112,   113,   114,
1332
     115,   116,   117,   320,   505,   321,   322,   743,   736,   721,
1333
     323,   309,   324,   325,   326,   650,   574,   575,   733,   310,
1334
     498,   754,   578,   665,   515,   591,   592,   666,   395,   470,
1335
     118,   119,   667,   328,   329,   330,   668,   703,   549,   696,
1336
     238,   240,   242,   244,   246,   248,   250,   252,   254,   676,
1337
     777,   778,   779,   780,   781,   537,   678,   723,   628,   724,
1338
     538,   681,   887,   879,   539,   949,   540,   888,   889,   541,
1339
     542,   543,   544,   943,   944,   945,   982,   715,   877,   707,
1340
     786,   787,   545
1341
};
1342
1343
  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1344
     positive, shift that token.  If negative, reduce the rule whose
1345
     number is the opposite.  If YYTABLE_NINF, syntax error.  */
1346
static const yytype_int16 yytable[] =
1347
{
1348
     267,   308,   601,   442,   745,   276,   327,   740,   744,   551,
1349
     705,   288,   290,   292,   554,   751,   555,   755,   556,   679,
1350
     698,   632,   700,   257,   305,   474,   477,   234,   682,   479,
1351
     679,   192,   679,   632,   890,   482,   632,   632,   632,   682,
1352
     490,   682,   492,   484,   756,   453,  -383,  -383,   738,   364,
1353
     366,   368,   513,   550,   680,   748,   552,   486,   553,   804,
1354
     120,   488,   694,   805,   189,   680,   557,   680,   558,   602,
1355
     604,   606,   327,   987,   399,  -383,   865,   534,   677,   616,
1356
     688,   514,   503,   760,   761,   811,   534,   633,   697,   677,
1357
     699,   677,   701,   679,   679,   683,   952,   301,   714,   422,
1358
     659,   402,   682,   682,   850,   536,   683,   424,   683,   722,
1359
     504,   259,   255,   788,   536,   514,   121,   890,   468,   277,
1360
    1012,   790,   789,   407,   689,   741,   725,   581,   680,   680,
1361
     791,   863,   261,   122,   264,   265,   123,  1023,   891,   152,
1362
     845,   685,   266,   765,   766,   303,   534,   765,   766,   742,
1363
     686,   124,   677,   677,   125,   722,   808,   800,   355,   126,
1364
     805,   802,   798,   359,   389,   809,   391,   785,   393,   683,
1365
     683,   799,   725,   460,   536,   462,   576,   859,   860,   741,
1366
     741,   890,   695,   327,   268,   270,   890,   679,   679,   272,
1367
     692,   274,   127,   819,   279,   258,   682,   682,   306,   722,
1368
     929,   722,   763,   742,   742,   928,   896,   263,   475,   709,
1369
     476,   478,   480,   193,   481,   281,   725,   454,   725,   455,
1370
     483,   891,   680,   680,   757,   491,   485,   493,   758,   897,
1371
     890,   890,   890,   890,   546,   307,   547,   548,   534,   190,
1372
     487,   890,   890,   890,   489,   632,   677,   677,   400,   401,
1373
     890,   603,   605,   607,   312,   834,   835,   836,   837,   886,
1374
     839,   617,   866,   683,   683,   283,   536,   812,   634,   285,
1375
     785,   302,   785,   423,   966,   403,   404,   953,   153,   965,
1376
     876,   425,   880,   260,   894,   891,   561,   256,   264,   265,
1377
     891,   580,   469,   714,   278,   583,   266,   408,   409,   690,
1378
     893,   -30,   904,   237,   262,   722,   722,   722,   722,   722,
1379
     722,   722,   722,   722,   722,   995,   632,   632,   632,   632,
1380
     304,   632,   725,   725,   725,   725,   725,   725,   725,   725,
1381
     725,   725,   892,   356,   891,   891,   891,   891,   360,   390,
1382
    1004,   392,   886,   394,   128,   891,   891,   891,   461,   785,
1383
     463,   577,   649,   295,   891,   327,   269,   271,   983,   782,
1384
     327,   273,   129,   275,   327,   693,   280,   546,   679,   547,
1385
     548,   264,   265,   264,   265,   130,   154,   682,   287,   266,
1386
     710,   266,   806,   893,   711,   534,   807,   282,   900,   712,
1387
     901,   297,   299,   264,   265,   131,   600,   156,   158,   160,
1388
     898,   266,   132,   680,   711,   534,   886,   940,   245,   712,
1389
     331,   886,   289,   536,   810,   892,   846,   162,   807,   974,
1390
     805,   327,   632,   880,   333,   335,   313,   677,   314,   315,
1391
     343,   316,   317,   536,   765,   766,   869,   284,   870,   318,
1392
     345,   286,   347,   349,   683,   632,   440,   893,   856,   963,
1393
     319,   133,   893,   351,   291,   886,   886,   886,   886,   221,
1394
     223,   814,   134,   765,   766,   363,   886,   886,   886,   848,
1395
     815,   353,   675,   807,   687,   886,   357,  1001,   691,   892,
1396
     365,   361,   369,   675,   892,   675,   862,   371,   373,   955,
1397
     375,   377,   713,   805,   264,   265,   893,   893,   893,   893,
1398
     379,   381,   266,   873,   383,   783,   534,   893,   893,   893,
1399
    1009,  1010,  1011,   385,   387,   155,   893,   367,   753,   397,
1400
     405,   410,   971,   412,   135,   296,   414,   416,   892,   892,
1401
     892,   892,   136,   747,   536,   137,   157,   159,   161,   892,
1402
     892,   892,   264,   265,   418,   420,   675,   675,   892,   984,
1403
     266,   518,   519,   520,   521,   522,   163,   523,   524,   426,
1404
     428,   784,   138,   298,   300,   430,   432,   882,   434,   526,
1405
    -473,  -473,   883,   527,   528,   436,   264,   265,   438,   529,
1406
     530,   239,   332,   443,   266,   445,   984,   818,   518,   519,
1407
     520,   521,   522,   447,   523,   524,   334,   336,   222,   224,
1408
     942,   980,   344,   139,   882,   753,   526,  -471,  -471,   883,
1409
     527,   528,   346,   449,   348,   350,   529,   530,   264,   265,
1410
     441,   315,   588,   316,   317,   352,   266,   589,   590,   264,
1411
     265,   318,  -382,  -382,   316,   317,   662,   266,   264,   265,
1412
     675,   675,   318,   354,   264,   265,   266,   451,   358,   874,
1413
     534,   464,   266,   362,   370,   864,   466,   264,   265,   372,
1414
     374,  -382,   376,   378,   784,   266,   784,   956,   972,   534,
1415
     249,   807,   380,   382,   875,   471,   384,   140,   536,   734,
1416
     737,   264,   265,   531,   532,   386,   388,   713,   241,   266,
1417
     844,   398,   406,   411,   141,   413,   903,   536,   415,   417,
1418
     996,   997,   820,   142,   984,   852,   518,   519,   520,   521,
1419
     522,   821,   523,   524,   853,   143,   419,   421,   264,   265,
1420
     531,   532,   882,   533,   526,   534,   266,   883,   527,   528,
1421
     884,   427,   429,  -473,   529,   530,   144,   431,   433,   313,
1422
     435,   314,   315,   784,   316,   317,   145,   437,   264,   265,
1423
     439,   146,   318,   536,   243,   444,   266,   446,   147,   746,
1424
     533,   148,   534,   319,   149,   448,   150,   884,   151,   984,
1425
    -471,   518,   519,   520,   521,   522,   164,   523,   524,   867,
1426
     441,   315,   165,   316,   317,   450,   926,   882,   868,   526,
1427
     536,   318,   883,   527,   528,   927,   166,   167,   168,   529,
1428
     530,   169,   630,   933,   518,   519,   520,   521,   522,   764,
1429
     523,   524,   868,   973,   251,   934,   937,   978,   247,   452,
1430
     525,   675,   526,   465,   868,   938,   527,   528,   467,   316,
1431
     317,   662,   529,   530,   750,   170,   171,   318,   531,   532,
1432
     630,   958,   518,   519,   520,   521,   522,   472,   523,   524,
1433
     821,   735,   735,   822,   959,   823,   950,   961,   525,   967,
1434
     526,   172,   735,   960,   527,   528,   962,   253,   968,   293,
1435
     529,   530,   992,   173,   264,   265,   264,   265,   533,   174,
1436
     534,   993,   266,   175,   266,   884,   534,   977,   985,  1005,
1437
     176,   630,   599,   518,   519,   520,   521,   522,  1006,   523,
1438
     524,  1013,   177,   531,   532,   316,   317,   662,   536,   525,
1439
    1014,   526,   178,   318,   536,   527,   528,   765,   766,   179,
1440
     986,   529,   530,   180,   630,   181,   518,   519,   520,   521,
1441
     522,   767,   523,   524,   182,   183,   531,   532,   184,   185,
1442
     768,   294,   525,   533,   526,   534,   186,   187,   527,   528,
1443
     884,   -84,   188,  -475,   529,   530,   191,   194,   195,   906,
1444
     907,   908,   909,   910,   911,   912,   913,   914,   915,   950,
1445
     950,   950,   196,   536,   531,   532,   533,   197,   534,   458,
1446
     986,   986,   986,   535,   198,   199,   631,   630,   200,   518,
1447
     519,   520,   521,   522,   201,   523,   524,   306,   202,   203,
1448
     316,   317,   662,   204,   205,   525,   536,   526,   318,   206,
1449
     207,   527,   528,   208,   533,   209,   534,   529,   530,   752,
1450
     210,   535,   211,   212,   637,   531,   532,   213,   214,   311,
1451
     630,   215,   518,   519,   520,   521,   522,   396,   523,   524,
1452
     216,   264,   265,   217,   536,   218,   219,   220,   525,   266,
1453
     526,   225,   817,   534,   527,   528,   226,   337,   531,   532,
1454
     529,   530,   264,   265,   227,   533,   228,   534,   229,   230,
1455
     266,   231,   535,   902,   534,   640,   232,   -84,   -84,   -84,
1456
     -84,   536,   829,   830,   831,   832,   833,   -84,   -84,   -84,
1457
     -84,   -84,   -84,   -84,   233,   536,   500,   496,   533,   316,
1458
     534,   507,   536,   338,   497,   535,   339,   630,   641,   518,
1459
     519,   520,   521,   522,   340,   523,   524,   341,   342,   456,
1460
     457,   531,   532,   459,   473,   525,   494,   526,   536,   495,
1461
     499,   527,   528,   -35,   502,   506,   510,   529,   530,   509,
1462
     511,   516,   630,   512,   518,   519,   520,   521,   522,   517,
1463
     523,   524,   769,   770,   771,   772,   773,   774,   775,   776,
1464
     525,   533,   526,   534,   531,   532,   527,   528,   535,   559,
1465
     579,   642,   529,   530,   582,   584,   593,   585,   630,   586,
1466
     518,   519,   520,   521,   522,   587,   523,   524,   594,   595,
1467
     596,   536,   597,   635,   643,   598,   525,   577,   526,   608,
1468
     609,   610,   527,   528,   533,   611,   534,   612,   529,   530,
1469
     613,   535,   629,   630,   857,   518,   519,   520,   521,   522,
1470
     614,   523,   524,   615,   646,   636,   638,   645,   639,   644,
1471
     647,   525,   648,   526,   536,   651,   652,   527,   528,   653,
1472
     656,   531,   532,   529,   530,   657,   658,   670,   684,   630,
1473
     702,   518,   519,   520,   521,   522,   669,   523,   524,   704,
1474
     706,   716,   661,   717,   726,   727,   728,   525,   729,   526,
1475
     316,   317,   662,   527,   528,   663,   531,   532,   318,   529,
1476
     530,   533,   730,   534,   731,   739,   732,   759,   535,   792,
1477
     793,   916,   794,   795,   796,   797,   801,   630,   803,   518,
1478
     519,   520,   521,   522,   816,   523,   524,   813,   840,   838,
1479
     841,   536,   531,   532,   842,   525,   533,   526,   534,   843,
1480
     851,   527,   528,   535,   847,   855,   917,   529,   530,   861,
1481
     871,   872,   925,   630,   881,   518,   519,   520,   521,   522,
1482
     895,   523,   524,   920,   923,   924,   536,   531,   532,   930,
1483
     931,   525,   533,   526,   534,   935,   936,   527,   528,   535,
1484
     941,   942,   918,   529,   530,   946,   954,   947,   951,   957,
1485
     964,   969,   518,   519,   520,   521,   522,   979,   523,   524,
1486
     970,   988,   536,   531,   532,   989,   991,   533,   525,   534,
1487
     994,   998,   999,  1002,   535,  1003,  1000,   919,  1007,  1008,
1488
     529,   530,   824,   825,   826,   827,   828,   829,   830,   831,
1489
     832,   833,  1015,  1016,  1018,  1019,  1020,   536,  1017,  1022,
1490
    1025,  1024,  1021,   533,  1026,   534,  1027,  1028,  1029,   858,
1491
     535,   531,   532,   921,   518,   519,   520,   521,   522,  1030,
1492
     523,   524,  1031,  1032,  1033,  1034,  1035,   849,   236,   922,
1493
     882,   654,   526,   536,   508,   883,   527,   528,   655,   854,
1494
     660,   749,   529,   530,   501,   976,   708,   531,   532,   560,
1495
     932,   533,   981,   534,   899,     0,   441,   315,   535,   316,
1496
     317,   975,     0,     0,     0,     0,     0,   318,     0,     0,
1497
     518,   519,   520,   521,   522,     0,   523,   524,     0,     0,
1498
       0,   536,     0,     0,   531,   532,   882,   533,   526,   534,
1499
       0,   883,   527,   528,   535,     0,     0,   990,   529,   530,
1500
       0,   518,   519,   520,   521,   522,     0,   523,   524,     0,
1501
       0,     0,     0,     0,   264,   265,     0,   536,     0,   671,
1502
       0,     0,   266,     0,   533,     0,   534,   618,     0,   529,
1503
     530,     0,   672,   673,     0,   674,   619,   620,   621,   622,
1504
     623,   624,   625,   626,   627,     0,   531,   532,     0,     0,
1505
       0,     0,     0,     0,   536,   518,   519,   520,   521,   522,
1506
       0,   523,   524,     0,     0,     0,   661,     0,     0,     0,
1507
       0,   525,     0,   526,   316,   317,   662,   527,   528,   663,
1508
       0,   664,   318,   529,   530,     0,   533,     0,   534,     0,
1509
       0,     0,     0,   884,     0,   885,     0,     0,     0,     0,
1510
       0,     0,   531,   532,     0,     0,     0,   518,   519,   520,
1511
     521,   522,     0,   523,   524,     0,   536,     0,     0,     0,
1512
       0,     0,     0,   525,     0,   526,     0,     0,     0,   527,
1513
     528,     0,     0,   531,   532,   529,   530,     0,     0,     0,
1514
       0,     0,   533,     0,   534,     0,     0,     0,     0,   884,
1515
       0,     0,   948,   824,   825,   826,   827,   828,   829,   830,
1516
     831,   832,   833,   264,   265,   905,     0,     0,     0,   718,
1517
       0,   266,   536,   533,   719,   534,     0,     0,     0,     0,
1518
       0,   720,     0,     0,     0,     0,     0,   531,   532,   518,
1519
     519,   520,   521,   522,     0,   523,   524,   562,     0,     0,
1520
       0,     0,     0,   536,     0,   525,     0,   526,     0,     0,
1521
       0,   527,   528,     0,     0,     0,     0,   529,   530,     0,
1522
       0,     0,     0,     0,     0,     0,     0,   533,     0,   534,
1523
       0,     0,     0,     0,   535,     0,     0,   762,     0,   531,
1524
     532,     0,   518,   519,   520,   521,   522,     0,   523,   524,
1525
       0,     0,     0,     0,     0,     0,     0,   536,   882,     0,
1526
     526,     0,     0,   883,   527,   528,     0,     0,     0,     0,
1527
     529,   530,     0,     0,     0,     0,     0,     0,     0,   533,
1528
       0,   534,     0,     0,     0,     0,   535,     0,   878,     0,
1529
     518,   519,   520,   521,   522,     0,   523,   524,     0,     0,
1530
       0,     0,     0,     0,     0,     0,   525,     0,   526,   536,
1531
       0,     0,   527,   528,     0,     0,     0,     0,   529,   530,
1532
       0,   531,   532,   563,   564,   565,   566,     0,     0,     0,
1533
       0,     0,     0,   567,   568,   569,   570,   571,   572,   573,
1534
     618,   769,   770,   771,   772,   773,   774,   775,   776,   619,
1535
     620,   621,   622,   623,   624,   625,   626,   627,     0,     0,
1536
       0,   533,     0,   534,     0,     0,     0,     0,   535,     0,
1537
       0,   939,     0,     0,   531,   532,   824,   825,   826,   827,
1538
     828,   829,   830,   831,   832,   833,     0,     0,     0,     0,
1539
       0,   536,     0,     0,     0,     0,     0,     0,     0,     0,
1540
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1541
       0,     0,     0,     0,   533,     0,   534,     0,     0,     0,
1542
       0,   884,   531,   532,     0,     0,     0,     0,     0,     0,
1543
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1544
       0,     0,     0,     0,   536,     0,     0,     0,     0,     0,
1545
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1546
      -2,   235,   533,     0,   534,     0,     0,     0,     2,   535,
1547
      -8,   -10,   -12,   -14,   -16,   -18,   -20,   -22,   -24,     0,
1548
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1549
       0,     0,   536,     3,     4,     5,     6,     7,     8,     9,
1550
      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
1551
      20,    21,    22,    23,    24,    25,    26,     0,    27,    28,
1552
      29,    30,     0,    31,    32,    33,    34,    35,    36,    37,
1553
      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
1554
      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
1555
      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
1556
      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
1557
      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
1558
      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
1559
      98,    99,   100,   101,     1,     0,     0,   102,   103,   104,
1560
       0,     2,     0,    -8,   -10,   -12,   -14,   -16,   -18,   -20,
1561
     -22,   -24,     0,     0,     0,     0,     0,     0,     0,     0,
1562
       0,     0,     0,     0,     0,     0,     3,     4,     5,     6,
1563
       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1564
      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
1565
       0,    27,    28,    29,    30,   105,    31,    32,    33,    34,
1566
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
1567
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1568
      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1569
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1570
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1571
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1572
      95,    96,    97,    98,    99,   100,   101,     0,     0,     0,
1573
     102,   103,   104,     0,     0,     0,     0,     0,     0,     0,
1574
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1575
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1576
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1577
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1578
       0,     0,     0,     0,     0,     0,     0,     0,   105
1579
};
1580
1581
static const yytype_int16 yycheck[] =
1582
{
1583
     125,   146,   521,   214,   657,   130,   148,     1,     1,   480,
1584
     613,   136,   137,   138,   485,   661,   487,   663,   489,   597,
1585
     608,   539,   610,     1,     1,     1,     1,     0,   597,     1,
1586
     608,     1,   610,   551,   802,     1,   554,   555,   556,   608,
1587
       1,   610,     1,     1,     1,     1,   176,   177,   647,   174,
1588
     175,   176,   167,   478,   597,   658,   481,     1,   483,   172,
1589
     140,     1,     1,   176,     1,   608,   491,   610,   493,     1,
1590
       1,     1,   214,   954,     1,   205,   176,   177,   597,     1,
1591
     599,   196,   166,   671,   672,     1,   177,     1,   607,   608,
1592
     609,   610,   611,   671,   672,   597,     1,     1,   617,     1,
1593
     181,     1,   671,   672,   750,   205,   608,     1,   610,   628,
1594
     194,     1,     1,   172,   205,   196,   140,   885,     1,     1,
1595
    1001,   172,   181,     1,     1,   173,   628,     1,   671,   672,
1596
     181,   777,     1,   140,   165,   166,   140,  1018,   802,     1,
1597
     739,   172,   173,   158,   159,     1,   177,   158,   159,   197,
1598
     181,   140,   671,   672,   140,   674,   172,   172,     1,   140,
1599
     176,   172,   172,     1,     1,   181,     1,   686,     1,   671,
1600
     672,   181,   674,     1,   205,     1,     1,   765,   766,   173,
1601
     173,   949,   607,   325,     1,     1,   954,   765,   766,     1,
1602
       1,     1,   140,   712,     1,   173,   765,   766,   175,   718,
1603
     853,   720,   673,   197,   197,   851,   809,     1,   184,     1,
1604
     186,   186,   184,   183,   186,     1,   718,   173,   720,   175,
1605
     186,   885,   765,   766,   181,   186,   184,   186,   185,     1,
1606
     998,   999,  1000,  1001,   173,   212,   175,   176,   177,   176,
1607
     184,  1009,  1010,  1011,   184,   763,   765,   766,   175,   176,
1608
    1018,   183,   183,   183,     1,   726,   727,   728,   729,   802,
1609
     731,   183,   781,   765,   766,     1,   205,   183,   182,     1,
1610
     789,   175,   791,   175,   927,   175,   176,   182,   140,   925,
1611
     799,   175,   800,   173,   803,   949,   497,   176,   165,   166,
1612
     954,   502,   175,   812,   176,   506,   173,   175,   176,   176,
1613
     802,   175,   821,    10,   173,   824,   825,   826,   827,   828,
1614
     829,   830,   831,   832,   833,   968,   834,   835,   836,   837,
1615
     176,   839,   824,   825,   826,   827,   828,   829,   830,   831,
1616
     832,   833,   802,   176,   998,   999,  1000,  1001,   176,   176,
1617
     993,   176,   885,   176,   140,  1009,  1010,  1011,   176,   868,
1618
     176,   176,   563,     1,  1018,   497,   173,   173,   946,    30,
1619
     502,   173,   140,   173,   506,   176,   173,   173,   946,   175,
1620
     176,   165,   166,   165,   166,   140,     1,   946,     1,   173,
1621
     172,   173,   172,   885,   176,   177,   176,   173,   813,   181,
1622
     815,     1,     1,   165,   166,   140,   521,     1,     1,     1,
1623
     172,   173,   140,   946,   176,   177,   949,   878,    14,   181,
1624
       1,   954,     1,   205,   172,   885,   172,     1,   176,   938,
1625
     176,   563,   940,   941,     1,     1,   173,   946,   175,   176,
1626
       1,   178,   179,   205,   158,   159,   789,   173,   791,   186,
1627
       1,   173,     1,     1,   946,   963,     1,   949,   172,   920,
1628
     197,   140,   954,     1,     1,   998,   999,  1000,  1001,     1,
1629
       1,   172,   140,   158,   159,     1,  1009,  1010,  1011,   172,
1630
     181,     1,   597,   176,   599,  1018,     1,   172,   603,   949,
1631
       1,     1,     1,   608,   954,   610,    30,     1,     1,   172,
1632
       1,     1,   617,   176,   165,   166,   998,   999,  1000,  1001,
1633
       1,     1,   173,    30,     1,   176,   177,  1009,  1010,  1011,
1634
     998,   999,  1000,     1,     1,   140,  1018,     1,   663,     1,
1635
       1,     1,    30,     1,   140,   173,     1,     1,   998,   999,
1636
    1000,  1001,   140,   658,   205,   140,   140,   140,   140,  1009,
1637
    1010,  1011,   165,   166,     1,     1,   671,   672,  1018,     1,
1638
     173,     3,     4,     5,     6,     7,   140,     9,    10,     1,
1639
       1,   686,   140,   173,   173,     1,     1,    19,     1,    21,
1640
      22,    23,    24,    25,    26,     1,   165,   166,     1,    31,
1641
      32,    11,   173,     1,   173,     1,     1,   712,     3,     4,
1642
       5,     6,     7,     1,     9,    10,   173,   173,   140,   140,
1643
      22,    23,   173,   140,    19,   750,    21,    22,    23,    24,
1644
      25,    26,   173,     1,   173,   173,    31,    32,   165,   166,
1645
     175,   176,    23,   178,   179,   173,   173,    28,    29,   165,
1646
     166,   186,   176,   177,   178,   179,   180,   173,   165,   166,
1647
     765,   766,   186,   173,   165,   166,   173,     1,   173,   176,
1648
     177,     1,   173,   173,   173,   780,     1,   165,   166,   173,
1649
     173,   205,   173,   173,   789,   173,   791,   172,   176,   177,
1650
      16,   176,   173,   173,   799,     1,   173,   140,   205,     1,
1651
       1,   165,   166,   135,   136,   173,   173,   812,    12,   173,
1652
       1,   173,   173,   173,   140,   173,   821,   205,   173,   173,
1653
     209,   210,   172,   140,     1,   172,     3,     4,     5,     6,
1654
       7,   181,     9,    10,   181,   140,   173,   173,   165,   166,
1655
     135,   136,    19,   175,    21,   177,   173,    24,    25,    26,
1656
     182,   173,   173,   185,    31,    32,   140,   173,   173,   173,
1657
     173,   175,   176,   868,   178,   179,   140,   173,   165,   166,
1658
     173,   140,   186,   205,    13,   173,   173,   173,   140,   176,
1659
     175,   140,   177,   197,   140,   173,   140,   182,   140,     1,
1660
     185,     3,     4,     5,     6,     7,   140,     9,    10,   172,
1661
     175,   176,   140,   178,   179,   173,   172,    19,   181,    21,
1662
     205,   186,    24,    25,    26,   181,   140,   140,   140,    31,
1663
      32,   140,     1,   172,     3,     4,     5,     6,     7,   674,
1664
       9,    10,   181,   938,    17,   172,   172,   942,    15,   173,
1665
      19,   946,    21,   173,   181,   181,    25,    26,   173,   178,
1666
     179,   180,    31,    32,   183,   140,   140,   186,   135,   136,
1667
       1,   172,     3,     4,     5,     6,     7,   173,     9,    10,
1668
     181,   173,   173,   718,   172,   720,   885,   172,    19,   172,
1669
      21,   140,   173,   181,    25,    26,   181,    18,   181,   176,
1670
      31,    32,   172,   140,   165,   166,   165,   166,   175,   140,
1671
     177,   181,   173,   140,   173,   182,   177,   176,   185,   172,
1672
     140,     1,   183,     3,     4,     5,     6,     7,   181,     9,
1673
      10,   172,   140,   135,   136,   178,   179,   180,   205,    19,
1674
     181,    21,   140,   186,   205,    25,    26,   158,   159,   140,
1675
     949,    31,    32,   140,     1,   140,     3,     4,     5,     6,
1676
       7,   172,     9,    10,   140,   140,   135,   136,   140,   140,
1677
     181,   176,    19,   175,    21,   177,   140,   140,    25,    26,
1678
     182,    62,   140,   185,    31,    32,   140,   140,   140,   824,
1679
     825,   826,   827,   828,   829,   830,   831,   832,   833,   998,
1680
     999,  1000,   140,   205,   135,   136,   175,   140,   177,   175,
1681
    1009,  1010,  1011,   182,   140,   140,   185,     1,   140,     3,
1682
       4,     5,     6,     7,   140,     9,    10,   175,   140,   140,
1683
     178,   179,   180,   140,   140,    19,   205,    21,   186,   140,
1684
     140,    25,    26,   140,   175,   140,   177,    31,    32,   197,
1685
     140,   182,   140,   140,   185,   135,   136,   140,   140,   176,
1686
       1,   140,     3,     4,     5,     6,     7,   176,     9,    10,
1687
     140,   165,   166,   140,   205,   140,   140,   140,    19,   173,
1688
      21,   140,   176,   177,    25,    26,   140,   173,   135,   136,
1689
      31,    32,   165,   166,   140,   175,   140,   177,   140,   140,
1690
     173,   140,   182,   176,   177,   185,   140,   188,   189,   190,
1691
     191,   205,   165,   166,   167,   168,   169,   198,   199,   200,
1692
     201,   202,   203,   204,   140,   205,     1,   196,   175,   178,
1693
     177,   199,   205,   173,   196,   182,   173,     1,   185,     3,
1694
       4,     5,     6,     7,   173,     9,    10,   173,   173,   173,
1695
     173,   135,   136,   173,   173,    19,   173,    21,   205,   173,
1696
     196,    25,    26,   196,   196,   196,   196,    31,    32,   191,
1697
     181,   206,     1,   191,     3,     4,     5,     6,     7,   191,
1698
       9,    10,   141,   142,   143,   144,   145,   146,   147,   148,
1699
      19,   175,    21,   177,   135,   136,    25,    26,   182,   175,
1700
     187,   185,    31,    32,   175,   175,   184,   176,     1,   176,
1701
       3,     4,     5,     6,     7,   175,     9,    10,   173,   175,
1702
     183,   205,   183,   187,   181,   183,    19,   176,    21,   183,
1703
     183,   183,    25,    26,   175,   183,   177,   183,    31,    32,
1704
     183,   182,   182,     1,   185,     3,     4,     5,     6,     7,
1705
     183,     9,    10,   183,   196,   187,   187,   184,   187,   187,
1706
     196,    19,   175,    21,   205,   173,   173,    25,    26,   175,
1707
     196,   135,   136,    31,    32,   196,   181,   172,   172,     1,
1708
     176,     3,     4,     5,     6,     7,   208,     9,    10,   176,
1709
     175,    30,   170,    30,   184,   184,   184,    19,   184,    21,
1710
     178,   179,   180,    25,    26,   183,   135,   136,   186,    31,
1711
      32,   175,   173,   177,   184,   196,   176,   173,   182,   172,
1712
     172,   185,   181,   172,   181,   172,   172,     1,    27,     3,
1713
       4,     5,     6,     7,   172,     9,    10,   181,   181,   187,
1714
     185,   205,   135,   136,   166,    19,   175,    21,   177,   181,
1715
     181,    25,    26,   182,   172,   169,   185,    31,    32,   176,
1716
     176,   176,   181,     1,   184,     3,     4,     5,     6,     7,
1717
     176,     9,    10,   184,   173,   173,   205,   135,   136,    26,
1718
     172,    19,   175,    21,   177,   172,   172,    25,    26,   182,
1719
      20,    22,   185,    31,    32,   183,   172,   182,   182,   172,
1720
     166,   172,     3,     4,     5,     6,     7,   185,     9,    10,
1721
     173,   173,   205,   135,   136,   176,   173,   175,    19,   177,
1722
     172,   196,   196,   172,   182,   172,   196,   185,   207,   173,
1723
      31,    32,   160,   161,   162,   163,   164,   165,   166,   167,
1724
     168,   169,   176,   173,    20,   176,   172,   205,   207,   173,
1725
     173,   172,   208,   175,   208,   177,   169,   173,    26,   187,
1726
     182,   135,   136,   185,     3,     4,     5,     6,     7,   169,
1727
       9,    10,   173,    26,   209,   173,   209,   750,   107,   840,
1728
      19,   574,    21,   205,   325,    24,    25,    26,   577,   757,
1729
     592,   659,    31,    32,   318,   941,   615,   135,   136,   168,
1730
     868,   175,   944,   177,   812,    -1,   175,   176,   182,   178,
1731
     179,   185,    -1,    -1,    -1,    -1,    -1,   186,    -1,    -1,
1732
       3,     4,     5,     6,     7,    -1,     9,    10,    -1,    -1,
1733
      -1,   205,    -1,    -1,   135,   136,    19,   175,    21,   177,
1734
      -1,    24,    25,    26,   182,    -1,    -1,   185,    31,    32,
1735
      -1,     3,     4,     5,     6,     7,    -1,     9,    10,    -1,
1736
      -1,    -1,    -1,    -1,   165,   166,    -1,   205,    -1,   170,
1737
      -1,    -1,   173,    -1,   175,    -1,   177,   140,    -1,    31,
1738
      32,    -1,   183,   184,    -1,   186,   149,   150,   151,   152,
1739
     153,   154,   155,   156,   157,    -1,   135,   136,    -1,    -1,
1740
      -1,    -1,    -1,    -1,   205,     3,     4,     5,     6,     7,
1741
      -1,     9,    10,    -1,    -1,    -1,   170,    -1,    -1,    -1,
1742
      -1,    19,    -1,    21,   178,   179,   180,    25,    26,   183,
1743
      -1,   185,   186,    31,    32,    -1,   175,    -1,   177,    -1,
1744
      -1,    -1,    -1,   182,    -1,   184,    -1,    -1,    -1,    -1,
1745
      -1,    -1,   135,   136,    -1,    -1,    -1,     3,     4,     5,
1746
       6,     7,    -1,     9,    10,    -1,   205,    -1,    -1,    -1,
1747
      -1,    -1,    -1,    19,    -1,    21,    -1,    -1,    -1,    25,
1748
      26,    -1,    -1,   135,   136,    31,    32,    -1,    -1,    -1,
1749
      -1,    -1,   175,    -1,   177,    -1,    -1,    -1,    -1,   182,
1750
      -1,    -1,   185,   160,   161,   162,   163,   164,   165,   166,
1751
     167,   168,   169,   165,   166,   172,    -1,    -1,    -1,   171,
1752
      -1,   173,   205,   175,   176,   177,    -1,    -1,    -1,    -1,
1753
      -1,   183,    -1,    -1,    -1,    -1,    -1,   135,   136,     3,
1754
       4,     5,     6,     7,    -1,     9,    10,    62,    -1,    -1,
1755
      -1,    -1,    -1,   205,    -1,    19,    -1,    21,    -1,    -1,
1756
      -1,    25,    26,    -1,    -1,    -1,    -1,    31,    32,    -1,
1757
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   175,    -1,   177,
1758
      -1,    -1,    -1,    -1,   182,    -1,    -1,   185,    -1,   135,
1759
     136,    -1,     3,     4,     5,     6,     7,    -1,     9,    10,
1760
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   205,    19,    -1,
1761
      21,    -1,    -1,    24,    25,    26,    -1,    -1,    -1,    -1,
1762
      31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   175,
1763
      -1,   177,    -1,    -1,    -1,    -1,   182,    -1,   184,    -1,
1764
       3,     4,     5,     6,     7,    -1,     9,    10,    -1,    -1,
1765
      -1,    -1,    -1,    -1,    -1,    -1,    19,    -1,    21,   205,
1766
      -1,    -1,    25,    26,    -1,    -1,    -1,    -1,    31,    32,
1767
      -1,   135,   136,   188,   189,   190,   191,    -1,    -1,    -1,
1768
      -1,    -1,    -1,   198,   199,   200,   201,   202,   203,   204,
1769
     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
1770
     150,   151,   152,   153,   154,   155,   156,   157,    -1,    -1,
1771
      -1,   175,    -1,   177,    -1,    -1,    -1,    -1,   182,    -1,
1772
      -1,   185,    -1,    -1,   135,   136,   160,   161,   162,   163,
1773
     164,   165,   166,   167,   168,   169,    -1,    -1,    -1,    -1,
1774
      -1,   205,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1775
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1776
      -1,    -1,    -1,    -1,   175,    -1,   177,    -1,    -1,    -1,
1777
      -1,   182,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,
1778
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1779
      -1,    -1,    -1,    -1,   205,    -1,    -1,    -1,    -1,    -1,
1780
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1781
       0,     1,   175,    -1,   177,    -1,    -1,    -1,     8,   182,
1782
      10,    11,    12,    13,    14,    15,    16,    17,    18,    -1,
1783
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1784
      -1,    -1,   205,    33,    34,    35,    36,    37,    38,    39,
1785
      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
1786
      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
1787
      60,    61,    -1,    63,    64,    65,    66,    67,    68,    69,
1788
      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
1789
      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
1790
      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
1791
     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
1792
     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
1793
     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
1794
     130,   131,   132,   133,     1,    -1,    -1,   137,   138,   139,
1795
      -1,     8,    -1,    10,    11,    12,    13,    14,    15,    16,
1796
      17,    18,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1797
      -1,    -1,    -1,    -1,    -1,    -1,    33,    34,    35,    36,
1798
      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
1799
      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
1800
      -1,    58,    59,    60,    61,   195,    63,    64,    65,    66,
1801
      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
1802
      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
1803
      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
1804
      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
1805
     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
1806
     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
1807
     127,   128,   129,   130,   131,   132,   133,    -1,    -1,    -1,
1808
     137,   138,   139,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1809
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1810
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1811
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1812
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1813
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   195
1814
};
1815
1816
  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1817
     symbol of state STATE-NUM.  */
1818
static const yytype_int16 yystos[] =
1819
{
1820
       0,     1,     8,    33,    34,    35,    36,    37,    38,    39,
1821
      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
1822
      50,    51,    52,    53,    54,    55,    56,    58,    59,    60,
1823
      61,    63,    64,    65,    66,    67,    68,    69,    70,    71,
1824
      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
1825
      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
1826
      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
1827
     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
1828
     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
1829
     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
1830
     132,   133,   137,   138,   139,   195,   214,   215,   216,   217,
1831
     218,   219,   220,   221,   222,   223,   224,   225,   253,   254,
1832
     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
1833
     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
1834
     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
1835
     140,   140,     1,   140,     1,   140,     1,   140,     1,   140,
1836
       1,   140,     1,   140,   140,   140,   140,   140,   140,   140,
1837
     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
1838
     140,   140,   140,   140,   140,   140,   140,   140,   140,     1,
1839
     176,   140,     1,   183,   140,   140,   140,   140,   140,   140,
1840
     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
1841
     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
1842
     140,     1,   140,     1,   140,   140,   140,   140,   140,   140,
1843
     140,   140,   140,   140,     0,     1,   216,    10,   263,    11,
1844
     264,    12,   265,    13,   266,    14,   267,    15,   268,    16,
1845
     269,    17,   270,    18,   271,     1,   176,     1,   173,     1,
1846
     173,     1,   173,     1,   165,   166,   173,   232,     1,   173,
1847
       1,   173,     1,   173,     1,   173,   232,     1,   176,     1,
1848
     173,     1,   173,     1,   173,     1,   173,     1,   232,     1,
1849
     232,     1,   232,   176,   176,     1,   173,     1,   173,     1,
1850
     173,     1,   175,     1,   176,     1,   175,   212,   229,   234,
1851
     242,   176,     1,   173,   175,   176,   178,   179,   186,   197,
1852
     226,   228,   229,   233,   235,   236,   237,   255,   256,   257,
1853
     258,     1,   173,     1,   173,     1,   173,   173,   173,   173,
1854
     173,   173,   173,     1,   173,     1,   173,     1,   173,     1,
1855
     173,     1,   173,     1,   173,     1,   176,     1,   173,     1,
1856
     176,     1,   173,     1,   232,     1,   232,     1,   232,     1,
1857
     173,     1,   173,     1,   173,     1,   173,     1,   173,     1,
1858
     173,     1,   173,     1,   173,     1,   173,     1,   173,     1,
1859
     176,     1,   176,     1,   176,   251,   176,     1,   173,     1,
1860
     175,   176,     1,   175,   176,     1,   173,     1,   175,   176,
1861
       1,   173,     1,   173,     1,   173,     1,   173,     1,   173,
1862
       1,   173,     1,   175,     1,   175,     1,   173,     1,   173,
1863
       1,   173,     1,   173,     1,   173,     1,   173,     1,   173,
1864
       1,   175,   226,     1,   173,     1,   173,     1,   173,     1,
1865
     173,     1,   173,     1,   173,   175,   173,   173,   175,   173,
1866
       1,   176,     1,   176,     1,   173,     1,   173,     1,   175,
1867
     252,     1,   173,   173,     1,   184,   186,     1,   186,     1,
1868
     184,   186,     1,   186,     1,   184,     1,   184,     1,   184,
1869
       1,   186,     1,   186,   173,   173,   196,   196,   243,   196,
1870
       1,   257,   196,   166,   194,   227,   196,   199,   237,   191,
1871
     196,   181,   191,   167,   196,   247,   206,   191,     3,     4,
1872
       5,     6,     7,     9,    10,    19,    21,    25,    26,    31,
1873
      32,   135,   136,   175,   177,   182,   205,   278,   283,   287,
1874
     289,   292,   293,   294,   295,   305,   173,   175,   176,   261,
1875
     261,   287,   261,   261,   287,   287,   287,   261,   261,   175,
1876
     168,   226,    62,   188,   189,   190,   191,   198,   199,   200,
1877
     201,   202,   203,   204,   239,   240,     1,   176,   245,   187,
1878
     226,     1,   175,   226,   175,   176,   176,   175,    23,    28,
1879
      29,   248,   249,   184,   173,   175,   183,   183,   183,   183,
1880
     232,   278,     1,   183,     1,   183,     1,   183,   183,   183,
1881
     183,   183,   183,   183,   183,   183,     1,   183,   140,   149,
1882
     150,   151,   152,   153,   154,   155,   156,   157,   281,   182,
1883
       1,   185,   289,     1,   182,   187,   187,   185,   187,   187,
1884
     185,   185,   185,   181,   187,   184,   196,   196,   175,   226,
1885
     238,   173,   173,   175,   240,   245,   196,   196,   181,   181,
1886
     247,   170,   180,   183,   185,   246,   250,   255,   259,   208,
1887
     172,   170,   183,   184,   186,   232,   272,   278,   279,   280,
1888
     283,   284,   292,   305,   172,   172,   181,   232,   278,     1,
1889
     176,   232,     1,   176,     1,   261,   262,   278,   272,   278,
1890
     272,   278,   176,   260,   176,   260,   175,   302,   302,     1,
1891
     172,   176,   181,   232,   278,   300,    30,    30,   171,   176,
1892
     183,   232,   278,   280,   282,   305,   184,   184,   184,   184,
1893
     173,   184,   176,   241,     1,   173,   231,     1,   231,   196,
1894
       1,   173,   197,   230,     1,   230,   176,   232,   260,   248,
1895
     183,   259,   197,   229,   244,   259,     1,   181,   185,   173,
1896
     272,   272,   185,   287,   282,   158,   159,   172,   181,   141,
1897
     142,   143,   144,   145,   146,   147,   148,   273,   274,   275,
1898
     276,   277,    30,   176,   232,   278,   303,   304,   172,   181,
1899
     172,   181,   172,   172,   181,   172,   181,   172,   172,   181,
1900
     172,   172,   172,    27,   172,   176,   172,   176,   172,   181,
1901
     172,     1,   183,   181,   172,   181,   172,   176,   232,   278,
1902
     172,   181,   282,   282,   160,   161,   162,   163,   164,   165,
1903
     166,   167,   168,   169,   287,   287,   287,   287,   187,   287,
1904
     181,   185,   166,   181,     1,   231,   172,   172,   172,   244,
1905
     259,   181,   172,   181,   246,   169,   172,   185,   187,   272,
1906
     272,   176,    30,   259,   232,   176,   278,   172,   181,   304,
1907
     304,   176,   176,    30,   176,   232,   278,   301,   184,   286,
1908
     289,   184,    19,    24,   182,   184,   283,   285,   290,   291,
1909
     293,   294,   295,   305,   278,   176,   260,     1,   172,   300,
1910
     261,   261,   176,   232,   278,   172,   282,   282,   282,   282,
1911
     282,   282,   282,   282,   282,   282,   185,   185,   185,   185,
1912
     184,   185,   241,   173,   173,   181,   172,   181,   259,   230,
1913
      26,   172,   303,   172,   172,   172,   172,   172,   181,   185,
1914
     287,    20,    22,   296,   297,   298,   183,   182,   185,   288,
1915
     290,   182,     1,   182,   172,   172,   172,   172,   172,   172,
1916
     181,   172,   181,   287,   166,   259,   230,   172,   181,   172,
1917
     173,    30,   176,   232,   278,   185,   286,   176,   232,   185,
1918
      23,   298,   299,   272,     1,   185,   290,   285,   173,   176,
1919
     185,   173,   172,   181,   172,   230,   209,   210,   196,   196,
1920
     196,   172,   172,   172,   230,   172,   181,   207,   173,   288,
1921
     288,   288,   285,   172,   181,   176,   173,   207,    20,   176,
1922
     172,   208,   173,   285,   172,   173,   208,   169,   173,    26,
1923
     169,   173,    26,   209,   173,   209
1924
};
1925
1926
  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1927
static const yytype_int16 yyr1[] =
1928
{
1929
       0,   213,   214,   215,   215,   215,   216,   216,   217,   216,
1930
     218,   216,   219,   216,   220,   216,   221,   216,   222,   216,
1931
     223,   216,   224,   216,   225,   216,   216,   226,   226,   226,
1932
     227,   227,   228,   228,   228,   229,   230,   230,   231,   231,
1933
     231,   231,   232,   232,   232,   233,   233,   233,   233,   234,
1934
     234,   234,   234,   234,   234,   235,   235,   235,   235,   235,
1935
     236,   236,   237,   237,   238,   238,   238,   239,   239,   239,
1936
     239,   239,   239,   239,   239,   239,   239,   239,   239,   240,
1937
     240,   241,   241,   242,   243,   242,   242,   244,   244,   245,
1938
     245,   246,   246,   246,   246,   246,   246,   246,   246,   246,
1939
     246,   246,   246,   247,   247,   247,   248,   248,   248,   249,
1940
     249,   250,   250,   250,   251,   251,   252,   252,   252,   252,
1941
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1942
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1943
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1944
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1945
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1946
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1947
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1948
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1949
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1950
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1951
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1952
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1953
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1954
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1955
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1956
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1957
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1958
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1959
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1960
     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
1961
     253,   253,   253,   253,   253,   254,   254,   254,   254,   254,
1962
     254,   255,   255,   256,   257,   258,   258,   259,   259,   260,
1963
     260,   261,   261,   261,   262,   262,   263,   263,   263,   264,
1964
     264,   265,   265,   265,   266,   266,   267,   267,   268,   268,
1965
     269,   269,   270,   270,   271,   271,   272,   272,   272,   272,
1966
     272,   272,   273,   273,   274,   274,   274,   274,   275,   275,
1967
     276,   276,   277,   277,   277,   278,   278,   279,   279,   279,
1968
     279,   280,   280,   280,   280,   280,   281,   281,   281,   281,
1969
     281,   281,   281,   281,   281,   281,   282,   282,   282,   282,
1970
     282,   282,   282,   282,   282,   282,   282,   282,   282,   282,
1971
     282,   282,   282,   283,   283,   283,   284,   284,   284,   284,
1972
     284,   285,   285,   285,   286,   286,   286,   287,   287,   287,
1973
     288,   288,   288,   289,   289,   289,   289,   289,   289,   289,
1974
     289,   290,   290,   290,   290,   290,   290,   290,   290,   290,
1975
     291,   291,   292,   292,   293,   294,   295,   296,   296,   297,
1976
     297,   298,   298,   298,   298,   299,   299,   300,   300,   300,
1977
     300,   300,   300,   300,   300,   300,   300,   300,   301,   301,
1978
     301,   301,   301,   301,   301,   301,   302,   302,   302,   302,
1979
     303,   303,   303,   303,   304,   304,   305,   305,   305,   305,
1980
     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
1981
     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
1982
     305,   305,   305,   305,   305,   305,   305,   305,   305,   305,
1983
     305,   305,   305,   305,   305,   305,   305
1984
};
1985
1986
  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
1987
static const yytype_int8 yyr2[] =
1988
{
1989
       0,     2,     1,     2,     1,     2,     1,     1,     0,     2,
1990
       0,     2,     0,     2,     0,     2,     0,     2,     0,     2,
1991
       0,     2,     0,     2,     0,     2,     1,     1,     1,     1,
1992
       1,     1,     1,     3,     3,     1,     1,     1,     5,     3,
1993
       3,     1,     1,     2,     2,     3,     5,     5,     2,     3,
1994
       3,     5,     5,     5,     5,     1,     3,     5,     5,     1,
1995
       1,     2,     1,     2,     1,     3,     3,     1,     1,     1,
1996
       1,     1,     1,     1,     2,     2,     2,     2,     2,     1,
1997
       2,     1,     3,     1,     0,     3,     6,     1,     1,     1,
1998
       2,     9,    10,     7,     8,     5,     6,     5,     6,     3,
1999
       4,     1,     2,     4,     3,     0,     1,     1,     1,     3,
2000
       1,     3,     1,     2,     3,     1,    18,    17,    10,     9,
2001
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2002
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2003
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2004
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2005
       3,     3,     2,     3,     2,     3,     2,     3,     2,     3,
2006
       2,     3,     2,     3,     3,     3,     3,     3,     5,     3,
2007
       3,     5,     3,     3,     3,     3,     3,     3,     3,     3,
2008
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2009
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2010
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2011
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2012
       3,     3,     3,     3,     3,     3,     5,     3,     3,     3,
2013
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2014
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2015
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2016
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2017
       3,     3,     5,     5,     3,     3,     3,     3,     3,     3,
2018
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2019
       3,     3,     3,     3,     3,     3,     2,     3,     2,     6,
2020
       4,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2021
       3,     3,     3,     3,     2,     2,     2,     8,     8,     8,
2022
       2,     1,     1,     1,     1,     1,     3,     1,     1,     2,
2023
       2,     1,     1,     1,     1,     1,     4,     7,     2,     7,
2024
       2,     4,     7,     2,     7,     2,     4,     2,     4,     2,
2025
       4,     2,     9,     2,     7,     2,     3,     3,     2,     3,
2026
       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2027
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2028
       1,     3,     3,     3,     3,     3,     1,     1,     1,     1,
2029
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2030
       1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
2031
       3,     2,     3,     3,     3,     3,     1,     1,     1,     3,
2032
       2,     1,     3,     2,     1,     3,     2,     2,     1,     2,
2033
       2,     1,     2,     2,     1,     1,     1,     1,     2,     1,
2034
       2,     2,     2,     1,     1,     1,     1,     2,     1,     2,
2035
       5,     7,     5,     7,     5,     7,     7,     2,     1,     2,
2036
       1,     4,     3,     4,     3,     3,     2,     1,     3,     1,
2037
       2,     2,     1,     2,     3,     1,     2,     3,     1,     1,
2038
       1,     1,     3,     3,     3,     3,     3,     4,     4,     2,
2039
       1,     1,     1,     1,     1,     3,     6,     4,     1,     3,
2040
       1,     3,     2,     4,     6,     2,     4,     6,     3,     5,
2041
       1,     4,     6,     2,     4,     6,     2,     4,     4,     6,
2042
       2,     4,     3,     4,     4,     2,     4,     4,     4,     4,
2043
       6,     6,     6,     8,     8,     6,     4
2044
};
2045
2046
2047
#define yyerrok         (yyerrstatus = 0)
2048
#define yyclearin       (yychar = YYEMPTY)
2049
0
#define YYEMPTY         (-2)
2050
0
#define YYEOF           0
2051
2052
0
#define YYACCEPT        goto yyacceptlab
2053
0
#define YYABORT         goto yyabortlab
2054
0
#define YYERROR         goto yyerrorlab
2055
2056
2057
#define YYRECOVERING()  (!!yyerrstatus)
2058
2059
#define YYBACKUP(Token, Value)                                    \
2060
  do                                                              \
2061
    if (yychar == YYEMPTY)                                        \
2062
      {                                                           \
2063
        yychar = (Token);                                         \
2064
        yylval = (Value);                                         \
2065
        YYPOPSTACK (yylen);                                       \
2066
        yystate = *yyssp;                                         \
2067
        goto yybackup;                                            \
2068
      }                                                           \
2069
    else                                                          \
2070
      {                                                           \
2071
        yyerror (YY_("syntax error: cannot back up")); \
2072
        YYERROR;                                                  \
2073
      }                                                           \
2074
  while (0)
2075
2076
/* Error token number */
2077
0
#define YYTERROR        1
2078
#define YYERRCODE       256
2079
2080
2081
2082
/* Enable debugging if requested.  */
2083
#if YYDEBUG
2084
2085
# ifndef YYFPRINTF
2086
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2087
#  define YYFPRINTF fprintf
2088
# endif
2089
2090
# define YYDPRINTF(Args)                        \
2091
do {                                            \
2092
  if (yydebug)                                  \
2093
    YYFPRINTF Args;                             \
2094
} while (0)
2095
2096
/* This macro is provided for backward compatibility. */
2097
#ifndef YY_LOCATION_PRINT
2098
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2099
#endif
2100
2101
2102
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2103
do {                                                                      \
2104
  if (yydebug)                                                            \
2105
    {                                                                     \
2106
      YYFPRINTF (stderr, "%s ", Title);                                   \
2107
      yy_symbol_print (stderr,                                            \
2108
                  Type, Value); \
2109
      YYFPRINTF (stderr, "\n");                                           \
2110
    }                                                                     \
2111
} while (0)
2112
2113
2114
/*-----------------------------------.
2115
| Print this symbol's value on YYO.  |
2116
`-----------------------------------*/
2117
2118
static void
2119
yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
2120
{
2121
  FILE *yyoutput = yyo;
2122
  YYUSE (yyoutput);
2123
  if (!yyvaluep)
2124
    return;
2125
# ifdef YYPRINT
2126
  if (yytype < YYNTOKENS)
2127
    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
2128
# endif
2129
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2130
  YYUSE (yytype);
2131
  YY_IGNORE_MAYBE_UNINITIALIZED_END
2132
}
2133
2134
2135
/*---------------------------.
2136
| Print this symbol on YYO.  |
2137
`---------------------------*/
2138
2139
static void
2140
yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
2141
{
2142
  YYFPRINTF (yyo, "%s %s (",
2143
             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2144
2145
  yy_symbol_value_print (yyo, yytype, yyvaluep);
2146
  YYFPRINTF (yyo, ")");
2147
}
2148
2149
/*------------------------------------------------------------------.
2150
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
2151
| TOP (included).                                                   |
2152
`------------------------------------------------------------------*/
2153
2154
static void
2155
yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2156
{
2157
  YYFPRINTF (stderr, "Stack now");
2158
  for (; yybottom <= yytop; yybottom++)
2159
    {
2160
      int yybot = *yybottom;
2161
      YYFPRINTF (stderr, " %d", yybot);
2162
    }
2163
  YYFPRINTF (stderr, "\n");
2164
}
2165
2166
# define YY_STACK_PRINT(Bottom, Top)                            \
2167
do {                                                            \
2168
  if (yydebug)                                                  \
2169
    yy_stack_print ((Bottom), (Top));                           \
2170
} while (0)
2171
2172
2173
/*------------------------------------------------.
2174
| Report that the YYRULE is going to be reduced.  |
2175
`------------------------------------------------*/
2176
2177
static void
2178
yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
2179
{
2180
  int yylno = yyrline[yyrule];
2181
  int yynrhs = yyr2[yyrule];
2182
  int yyi;
2183
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2184
             yyrule - 1, yylno);
2185
  /* The symbols being reduced.  */
2186
  for (yyi = 0; yyi < yynrhs; yyi++)
2187
    {
2188
      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
2189
      yy_symbol_print (stderr,
2190
                       yystos[+yyssp[yyi + 1 - yynrhs]],
2191
                       &yyvsp[(yyi + 1) - (yynrhs)]
2192
                                              );
2193
      YYFPRINTF (stderr, "\n");
2194
    }
2195
}
2196
2197
# define YY_REDUCE_PRINT(Rule)          \
2198
do {                                    \
2199
  if (yydebug)                          \
2200
    yy_reduce_print (yyssp, yyvsp, Rule); \
2201
} while (0)
2202
2203
/* Nonzero means print parse trace.  It is left uninitialized so that
2204
   multiple parsers can coexist.  */
2205
int yydebug;
2206
#else /* !YYDEBUG */
2207
# define YYDPRINTF(Args)
2208
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2209
# define YY_STACK_PRINT(Bottom, Top)
2210
# define YY_REDUCE_PRINT(Rule)
2211
#endif /* !YYDEBUG */
2212
2213
2214
/* YYINITDEPTH -- initial size of the parser's stacks.  */
2215
#ifndef YYINITDEPTH
2216
0
# define YYINITDEPTH 200
2217
#endif
2218
2219
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2220
   if the built-in stack extension method is used).
2221
2222
   Do not make this value too large; the results are undefined if
2223
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2224
   evaluated with infinite-precision integer arithmetic.  */
2225
2226
#ifndef YYMAXDEPTH
2227
0
# define YYMAXDEPTH 10000
2228
#endif
2229
2230
2231
#if YYERROR_VERBOSE
2232
2233
# ifndef yystrlen
2234
#  if defined __GLIBC__ && defined _STRING_H
2235
#   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2236
#  else
2237
/* Return the length of YYSTR.  */
2238
static YYPTRDIFF_T
2239
yystrlen (const char *yystr)
2240
{
2241
  YYPTRDIFF_T yylen;
2242
  for (yylen = 0; yystr[yylen]; yylen++)
2243
    continue;
2244
  return yylen;
2245
}
2246
#  endif
2247
# endif
2248
2249
# ifndef yystpcpy
2250
#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2251
#   define yystpcpy stpcpy
2252
#  else
2253
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2254
   YYDEST.  */
2255
static char *
2256
yystpcpy (char *yydest, const char *yysrc)
2257
{
2258
  char *yyd = yydest;
2259
  const char *yys = yysrc;
2260
2261
  while ((*yyd++ = *yys++) != '\0')
2262
    continue;
2263
2264
  return yyd - 1;
2265
}
2266
#  endif
2267
# endif
2268
2269
# ifndef yytnamerr
2270
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2271
   quotes and backslashes, so that it's suitable for yyerror.  The
2272
   heuristic is that double-quoting is unnecessary unless the string
2273
   contains an apostrophe, a comma, or backslash (other than
2274
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
2275
   null, do not copy; instead, return the length of what the result
2276
   would have been.  */
2277
static YYPTRDIFF_T
2278
yytnamerr (char *yyres, const char *yystr)
2279
{
2280
  if (*yystr == '"')
2281
    {
2282
      YYPTRDIFF_T yyn = 0;
2283
      char const *yyp = yystr;
2284
2285
      for (;;)
2286
        switch (*++yyp)
2287
          {
2288
          case '\'':
2289
          case ',':
2290
            goto do_not_strip_quotes;
2291
2292
          case '\\':
2293
            if (*++yyp != '\\')
2294
              goto do_not_strip_quotes;
2295
            else
2296
              goto append;
2297
2298
          append:
2299
          default:
2300
            if (yyres)
2301
              yyres[yyn] = *yyp;
2302
            yyn++;
2303
            break;
2304
2305
          case '"':
2306
            if (yyres)
2307
              yyres[yyn] = '\0';
2308
            return yyn;
2309
          }
2310
    do_not_strip_quotes: ;
2311
    }
2312
2313
  if (yyres)
2314
    return yystpcpy (yyres, yystr) - yyres;
2315
  else
2316
    return yystrlen (yystr);
2317
}
2318
# endif
2319
2320
/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2321
   about the unexpected token YYTOKEN for the state stack whose top is
2322
   YYSSP.
2323
2324
   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
2325
   not large enough to hold the message.  In that case, also set
2326
   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
2327
   required number of bytes is too large to store.  */
2328
static int
2329
yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
2330
                yy_state_t *yyssp, int yytoken)
2331
{
2332
  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2333
  /* Internationalized format string. */
2334
  const char *yyformat = YY_NULLPTR;
2335
  /* Arguments of yyformat: reported tokens (one for the "unexpected",
2336
     one per "expected"). */
2337
  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2338
  /* Actual size of YYARG. */
2339
  int yycount = 0;
2340
  /* Cumulated lengths of YYARG.  */
2341
  YYPTRDIFF_T yysize = 0;
2342
2343
  /* There are many possibilities here to consider:
2344
     - If this state is a consistent state with a default action, then
2345
       the only way this function was invoked is if the default action
2346
       is an error action.  In that case, don't check for expected
2347
       tokens because there are none.
2348
     - The only way there can be no lookahead present (in yychar) is if
2349
       this state is a consistent state with a default action.  Thus,
2350
       detecting the absence of a lookahead is sufficient to determine
2351
       that there is no unexpected or expected token to report.  In that
2352
       case, just report a simple "syntax error".
2353
     - Don't assume there isn't a lookahead just because this state is a
2354
       consistent state with a default action.  There might have been a
2355
       previous inconsistent state, consistent state with a non-default
2356
       action, or user semantic action that manipulated yychar.
2357
     - Of course, the expected token list depends on states to have
2358
       correct lookahead information, and it depends on the parser not
2359
       to perform extra reductions after fetching a lookahead from the
2360
       scanner and before detecting a syntax error.  Thus, state merging
2361
       (from LALR or IELR) and default reductions corrupt the expected
2362
       token list.  However, the list is correct for canonical LR with
2363
       one exception: it will still contain any token that will not be
2364
       accepted due to an error action in a later state.
2365
  */
2366
  if (yytoken != YYEMPTY)
2367
    {
2368
      int yyn = yypact[+*yyssp];
2369
      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2370
      yysize = yysize0;
2371
      yyarg[yycount++] = yytname[yytoken];
2372
      if (!yypact_value_is_default (yyn))
2373
        {
2374
          /* Start YYX at -YYN if negative to avoid negative indexes in
2375
             YYCHECK.  In other words, skip the first -YYN actions for
2376
             this state because they are default actions.  */
2377
          int yyxbegin = yyn < 0 ? -yyn : 0;
2378
          /* Stay within bounds of both yycheck and yytname.  */
2379
          int yychecklim = YYLAST - yyn + 1;
2380
          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2381
          int yyx;
2382
2383
          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2384
            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2385
                && !yytable_value_is_error (yytable[yyx + yyn]))
2386
              {
2387
                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2388
                  {
2389
                    yycount = 1;
2390
                    yysize = yysize0;
2391
                    break;
2392
                  }
2393
                yyarg[yycount++] = yytname[yyx];
2394
                {
2395
                  YYPTRDIFF_T yysize1
2396
                    = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2397
                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2398
                    yysize = yysize1;
2399
                  else
2400
                    return 2;
2401
                }
2402
              }
2403
        }
2404
    }
2405
2406
  switch (yycount)
2407
    {
2408
# define YYCASE_(N, S)                      \
2409
      case N:                               \
2410
        yyformat = S;                       \
2411
      break
2412
    default: /* Avoid compiler warnings. */
2413
      YYCASE_(0, YY_("syntax error"));
2414
      YYCASE_(1, YY_("syntax error, unexpected %s"));
2415
      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2416
      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2417
      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2418
      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2419
# undef YYCASE_
2420
    }
2421
2422
  {
2423
    /* Don't count the "%s"s in the final size, but reserve room for
2424
       the terminator.  */
2425
    YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
2426
    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2427
      yysize = yysize1;
2428
    else
2429
      return 2;
2430
  }
2431
2432
  if (*yymsg_alloc < yysize)
2433
    {
2434
      *yymsg_alloc = 2 * yysize;
2435
      if (! (yysize <= *yymsg_alloc
2436
             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2437
        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2438
      return 1;
2439
    }
2440
2441
  /* Avoid sprintf, as that infringes on the user's name space.
2442
     Don't have undefined behavior even if the translation
2443
     produced a string with the wrong number of "%s"s.  */
2444
  {
2445
    char *yyp = *yymsg;
2446
    int yyi = 0;
2447
    while ((*yyp = *yyformat) != '\0')
2448
      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2449
        {
2450
          yyp += yytnamerr (yyp, yyarg[yyi++]);
2451
          yyformat += 2;
2452
        }
2453
      else
2454
        {
2455
          ++yyp;
2456
          ++yyformat;
2457
        }
2458
  }
2459
  return 0;
2460
}
2461
#endif /* YYERROR_VERBOSE */
2462
2463
/*-----------------------------------------------.
2464
| Release the memory associated to this symbol.  |
2465
`-----------------------------------------------*/
2466
2467
static void
2468
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2469
0
{
2470
0
  YYUSE (yyvaluep);
2471
0
  if (!yymsg)
2472
0
    yymsg = "Deleting";
2473
0
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2474
2475
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2476
0
  YYUSE (yytype);
2477
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
2478
0
}
2479
2480
2481
2482
2483
/* The lookahead symbol.  */
2484
int yychar;
2485
2486
/* The semantic value of the lookahead symbol.  */
2487
YYSTYPE yylval;
2488
/* Number of syntax errors so far.  */
2489
int yynerrs;
2490
2491
2492
/*----------.
2493
| yyparse.  |
2494
`----------*/
2495
2496
int
2497
yyparse (void)
2498
0
{
2499
0
    yy_state_fast_t yystate;
2500
    /* Number of tokens to shift before error messages enabled.  */
2501
0
    int yyerrstatus;
2502
2503
    /* The stacks and their tools:
2504
       'yyss': related to states.
2505
       'yyvs': related to semantic values.
2506
2507
       Refer to the stacks through separate pointers, to allow yyoverflow
2508
       to reallocate them elsewhere.  */
2509
2510
    /* The state stack.  */
2511
0
    yy_state_t yyssa[YYINITDEPTH];
2512
0
    yy_state_t *yyss;
2513
0
    yy_state_t *yyssp;
2514
2515
    /* The semantic value stack.  */
2516
0
    YYSTYPE yyvsa[YYINITDEPTH];
2517
0
    YYSTYPE *yyvs;
2518
0
    YYSTYPE *yyvsp;
2519
2520
0
    YYPTRDIFF_T yystacksize;
2521
2522
0
  int yyn;
2523
0
  int yyresult;
2524
  /* Lookahead token as an internal (translated) token number.  */
2525
0
  int yytoken = 0;
2526
  /* The variables used to return semantic value and location from the
2527
     action routines.  */
2528
0
  YYSTYPE yyval;
2529
2530
#if YYERROR_VERBOSE
2531
  /* Buffer for error messages, and its allocated size.  */
2532
  char yymsgbuf[128];
2533
  char *yymsg = yymsgbuf;
2534
  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
2535
#endif
2536
2537
0
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
2538
2539
  /* The number of symbols on the RHS of the reduced rule.
2540
     Keep to zero when no symbol should be popped.  */
2541
0
  int yylen = 0;
2542
2543
0
  yyssp = yyss = yyssa;
2544
0
  yyvsp = yyvs = yyvsa;
2545
0
  yystacksize = YYINITDEPTH;
2546
2547
0
  YYDPRINTF ((stderr, "Starting parse\n"));
2548
2549
0
  yystate = 0;
2550
0
  yyerrstatus = 0;
2551
0
  yynerrs = 0;
2552
0
  yychar = YYEMPTY; /* Cause a token to be read.  */
2553
0
  goto yysetstate;
2554
2555
2556
/*------------------------------------------------------------.
2557
| yynewstate -- push a new state, which is found in yystate.  |
2558
`------------------------------------------------------------*/
2559
0
yynewstate:
2560
  /* In all cases, when you get here, the value and location stacks
2561
     have just been pushed.  So pushing a state here evens the stacks.  */
2562
0
  yyssp++;
2563
2564
2565
/*--------------------------------------------------------------------.
2566
| yysetstate -- set current state (the top of the stack) to yystate.  |
2567
`--------------------------------------------------------------------*/
2568
0
yysetstate:
2569
0
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2570
0
  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
2571
0
  YY_IGNORE_USELESS_CAST_BEGIN
2572
0
  *yyssp = YY_CAST (yy_state_t, yystate);
2573
0
  YY_IGNORE_USELESS_CAST_END
2574
2575
0
  if (yyss + yystacksize - 1 <= yyssp)
2576
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
2577
    goto yyexhaustedlab;
2578
#else
2579
0
    {
2580
      /* Get the current used size of the three stacks, in elements.  */
2581
0
      YYPTRDIFF_T yysize = yyssp - yyss + 1;
2582
2583
# if defined yyoverflow
2584
      {
2585
        /* Give user a chance to reallocate the stack.  Use copies of
2586
           these so that the &'s don't force the real ones into
2587
           memory.  */
2588
        yy_state_t *yyss1 = yyss;
2589
        YYSTYPE *yyvs1 = yyvs;
2590
2591
        /* Each stack pointer address is followed by the size of the
2592
           data in use in that stack, in bytes.  This used to be a
2593
           conditional around just the two extra args, but that might
2594
           be undefined if yyoverflow is a macro.  */
2595
        yyoverflow (YY_("memory exhausted"),
2596
                    &yyss1, yysize * YYSIZEOF (*yyssp),
2597
                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
2598
                    &yystacksize);
2599
        yyss = yyss1;
2600
        yyvs = yyvs1;
2601
      }
2602
# else /* defined YYSTACK_RELOCATE */
2603
      /* Extend the stack our own way.  */
2604
0
      if (YYMAXDEPTH <= yystacksize)
2605
0
        goto yyexhaustedlab;
2606
0
      yystacksize *= 2;
2607
0
      if (YYMAXDEPTH < yystacksize)
2608
0
        yystacksize = YYMAXDEPTH;
2609
2610
0
      {
2611
0
        yy_state_t *yyss1 = yyss;
2612
0
        union yyalloc *yyptr =
2613
0
          YY_CAST (union yyalloc *,
2614
0
                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
2615
0
        if (! yyptr)
2616
0
          goto yyexhaustedlab;
2617
0
        YYSTACK_RELOCATE (yyss_alloc, yyss);
2618
0
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2619
0
# undef YYSTACK_RELOCATE
2620
0
        if (yyss1 != yyssa)
2621
0
          YYSTACK_FREE (yyss1);
2622
0
      }
2623
0
# endif
2624
2625
0
      yyssp = yyss + yysize - 1;
2626
0
      yyvsp = yyvs + yysize - 1;
2627
2628
0
      YY_IGNORE_USELESS_CAST_BEGIN
2629
0
      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
2630
0
                  YY_CAST (long, yystacksize)));
2631
0
      YY_IGNORE_USELESS_CAST_END
2632
2633
0
      if (yyss + yystacksize - 1 <= yyssp)
2634
0
        YYABORT;
2635
0
    }
2636
0
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
2637
2638
0
  if (yystate == YYFINAL)
2639
0
    YYACCEPT;
2640
2641
0
  goto yybackup;
2642
2643
2644
/*-----------.
2645
| yybackup.  |
2646
`-----------*/
2647
0
yybackup:
2648
  /* Do appropriate processing given the current state.  Read a
2649
     lookahead token if we need one and don't already have one.  */
2650
2651
  /* First try to decide what to do without reference to lookahead token.  */
2652
0
  yyn = yypact[yystate];
2653
0
  if (yypact_value_is_default (yyn))
2654
0
    goto yydefault;
2655
2656
  /* Not known => get a lookahead token if don't already have one.  */
2657
2658
  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
2659
0
  if (yychar == YYEMPTY)
2660
0
    {
2661
0
      YYDPRINTF ((stderr, "Reading a token: "));
2662
0
      yychar = yylex ();
2663
0
    }
2664
2665
0
  if (yychar <= YYEOF)
2666
0
    {
2667
0
      yychar = yytoken = YYEOF;
2668
0
      YYDPRINTF ((stderr, "Now at end of input.\n"));
2669
0
    }
2670
0
  else
2671
0
    {
2672
0
      yytoken = YYTRANSLATE (yychar);
2673
0
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2674
0
    }
2675
2676
  /* If the proper action on seeing token YYTOKEN is to reduce or to
2677
     detect an error, take that action.  */
2678
0
  yyn += yytoken;
2679
0
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2680
0
    goto yydefault;
2681
0
  yyn = yytable[yyn];
2682
0
  if (yyn <= 0)
2683
0
    {
2684
0
      if (yytable_value_is_error (yyn))
2685
0
        goto yyerrlab;
2686
0
      yyn = -yyn;
2687
0
      goto yyreduce;
2688
0
    }
2689
2690
  /* Count tokens shifted since error; after three, turn off error
2691
     status.  */
2692
0
  if (yyerrstatus)
2693
0
    yyerrstatus--;
2694
2695
  /* Shift the lookahead token.  */
2696
0
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2697
0
  yystate = yyn;
2698
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2699
0
  *++yyvsp = yylval;
2700
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
2701
2702
  /* Discard the shifted token.  */
2703
0
  yychar = YYEMPTY;
2704
0
  goto yynewstate;
2705
2706
2707
/*-----------------------------------------------------------.
2708
| yydefault -- do the default action for the current state.  |
2709
`-----------------------------------------------------------*/
2710
0
yydefault:
2711
0
  yyn = yydefact[yystate];
2712
0
  if (yyn == 0)
2713
0
    goto yyerrlab;
2714
0
  goto yyreduce;
2715
2716
2717
/*-----------------------------.
2718
| yyreduce -- do a reduction.  |
2719
`-----------------------------*/
2720
0
yyreduce:
2721
  /* yyn is the number of a rule to reduce with.  */
2722
0
  yylen = yyr2[yyn];
2723
2724
  /* If YYLEN is nonzero, implement the default value of the action:
2725
     '$$ = $1'.
2726
2727
     Otherwise, the following line sets YYVAL to garbage.
2728
     This behavior is undocumented and Bison
2729
     users should not rely upon it.  Assigning to YYVAL
2730
     unconditionally makes the parser a bit smaller, and it avoids a
2731
     GCC warning that YYVAL may be used uninitialized.  */
2732
0
  yyval = yyvsp[1-yylen];
2733
2734
2735
0
  YY_REDUCE_PRINT (yyn);
2736
0
  switch (yyn)
2737
0
    {
2738
0
  case 3:
2739
0
#line 539 "cfg.y"
2740
0
                                     {}
2741
0
#line 2742 "cfg.tab.c"
2742
0
    break;
2743
2744
0
  case 4:
2745
0
#line 540 "cfg.y"
2746
0
                            {}
2747
0
#line 2748 "cfg.tab.c"
2748
0
    break;
2749
2750
0
  case 5:
2751
0
#line 541 "cfg.y"
2752
0
                                   { yyerror(""); YYABORT;}
2753
0
#line 2754 "cfg.tab.c"
2754
0
    break;
2755
2756
0
  case 8:
2757
0
#line 546 "cfg.y"
2758
0
                  {rt=REQUEST_ROUTE;}
2759
0
#line 2760 "cfg.tab.c"
2760
0
    break;
2761
2762
0
  case 10:
2763
0
#line 547 "cfg.y"
2764
0
                  {rt=FAILURE_ROUTE;}
2765
0
#line 2766 "cfg.tab.c"
2766
0
    break;
2767
2768
0
  case 12:
2769
0
#line 548 "cfg.y"
2770
0
                  {rt=ONREPLY_ROUTE;}
2771
0
#line 2772 "cfg.tab.c"
2772
0
    break;
2773
2774
0
  case 14:
2775
0
#line 549 "cfg.y"
2776
0
                  {rt=BRANCH_ROUTE;}
2777
0
#line 2778 "cfg.tab.c"
2778
0
    break;
2779
2780
0
  case 16:
2781
0
#line 550 "cfg.y"
2782
0
                  {rt=ERROR_ROUTE;}
2783
0
#line 2784 "cfg.tab.c"
2784
0
    break;
2785
2786
0
  case 18:
2787
0
#line 551 "cfg.y"
2788
0
                  {rt=LOCAL_ROUTE;}
2789
0
#line 2790 "cfg.tab.c"
2790
0
    break;
2791
2792
0
  case 20:
2793
0
#line 552 "cfg.y"
2794
0
                  {rt=STARTUP_ROUTE;}
2795
0
#line 2796 "cfg.tab.c"
2796
0
    break;
2797
2798
0
  case 22:
2799
0
#line 553 "cfg.y"
2800
0
                  {rt=TIMER_ROUTE;}
2801
0
#line 2802 "cfg.tab.c"
2802
0
    break;
2803
2804
0
  case 24:
2805
0
#line 554 "cfg.y"
2806
0
                  {rt=EVENT_ROUTE;}
2807
0
#line 2808 "cfg.tab.c"
2808
0
    break;
2809
2810
0
  case 27:
2811
0
#line 559 "cfg.y"
2812
0
                                        { IFOR();
2813
0
              tmp=ip_addr2a((yyvsp[0].ipaddr));
2814
0
              if(tmp==0){
2815
0
                LM_CRIT("cfg. parser: bad ip address.\n");
2816
0
                (yyval.strval)=0;
2817
0
              }else{
2818
0
                (yyval.strval)=pkg_malloc(strlen(tmp)+1);
2819
0
                if ((yyval.strval)==0){
2820
0
                  LM_CRIT("cfg. parser: out of memory.\n");
2821
0
                  YYABORT;
2822
0
                }else{
2823
0
                  memcpy((yyval.strval), tmp, strlen(tmp)+1);
2824
0
                }
2825
0
              }
2826
0
            }
2827
0
#line 2828 "cfg.tab.c"
2828
0
    break;
2829
2830
0
  case 28:
2831
0
#line 574 "cfg.y"
2832
0
                                        { IFOR();
2833
0
              (yyval.strval)=pkg_malloc(strlen((yyvsp[0].strval))+1);
2834
0
              if ((yyval.strval)==0){
2835
0
                  LM_CRIT("cfg. parser: out of memory.\n");
2836
0
                  YYABORT;
2837
0
              }else{
2838
0
                  memcpy((yyval.strval), (yyvsp[0].strval), strlen((yyvsp[0].strval))+1);
2839
0
              }
2840
0
            }
2841
0
#line 2842 "cfg.tab.c"
2842
0
    break;
2843
2844
0
  case 29:
2845
0
#line 583 "cfg.y"
2846
0
                                        { IFOR();
2847
0
              if ((yyvsp[0].strval)==0) {
2848
0
                (yyval.strval) = 0;
2849
0
              } else {
2850
0
                (yyval.strval)=pkg_malloc(strlen((yyvsp[0].strval))+1);
2851
0
                if ((yyval.strval)==0){
2852
0
                  LM_CRIT("cfg. parser: out of memory.\n");
2853
0
                  YYABORT;
2854
0
                }else{
2855
0
                  memcpy((yyval.strval), (yyvsp[0].strval), strlen((yyvsp[0].strval))+1);
2856
0
                }
2857
0
              }
2858
0
            }
2859
0
#line 2860 "cfg.tab.c"
2860
0
    break;
2861
2862
0
  case 30:
2863
0
#line 598 "cfg.y"
2864
0
                    {(yyval.strval)=".";}
2865
0
#line 2866 "cfg.tab.c"
2866
0
    break;
2867
2868
0
  case 31:
2869
0
#line 599 "cfg.y"
2870
0
                              {(yyval.strval)="-"; }
2871
0
#line 2872 "cfg.tab.c"
2872
0
    break;
2873
2874
0
  case 32:
2875
0
#line 602 "cfg.y"
2876
0
                                        { (yyval.strval)=(yyvsp[0].strval); }
2877
0
#line 2878 "cfg.tab.c"
2878
0
    break;
2879
2880
0
  case 33:
2881
0
#line 603 "cfg.y"
2882
0
                                { IFOR();
2883
0
            (yyval.strval)=(char*)pkg_malloc(strlen((yyvsp[-2].strval))+1+strlen((yyvsp[0].strval))+1);
2884
0
            if ((yyval.strval)==0){
2885
0
              LM_CRIT("cfg. parser: memory allocation"
2886
0
                    " failure while parsing host\n");
2887
0
              YYABORT;
2888
0
            }else{
2889
0
              memcpy((yyval.strval), (yyvsp[-2].strval), strlen((yyvsp[-2].strval)));
2890
0
              (yyval.strval)[strlen((yyvsp[-2].strval))]=*(yyvsp[-1].strval);
2891
0
              memcpy((yyval.strval)+strlen((yyvsp[-2].strval))+1, (yyvsp[0].strval), strlen((yyvsp[0].strval)));
2892
0
              (yyval.strval)[strlen((yyvsp[-2].strval))+1+strlen((yyvsp[0].strval))]=0;
2893
0
            }
2894
0
            pkg_free((yyvsp[-2].strval)); pkg_free((yyvsp[0].strval));
2895
0
          }
2896
0
#line 2897 "cfg.tab.c"
2897
0
    break;
2898
2899
0
  case 34:
2900
0
#line 617 "cfg.y"
2901
0
                         { (yyval.strval)=0; pkg_free((yyvsp[-2].strval));
2902
0
          yyerror("invalid hostname (use quotes if hostname "
2903
0
            "has config keywords)"); }
2904
0
#line 2905 "cfg.tab.c"
2905
0
    break;
2906
2907
0
  case 35:
2908
0
#line 622 "cfg.y"
2909
0
           { IFOR();
2910
0
    if (parse_proto((unsigned char *)(yyvsp[0].strval), strlen((yyvsp[0].strval)), &i_tmp) < 0) {
2911
0
      yyerrorf("cannot handle protocol <%s>\n", (yyvsp[0].strval));
2912
0
      YYABORT;
2913
0
    }
2914
0
    pkg_free((yyvsp[0].strval));
2915
0
    (yyval.intval) = i_tmp;
2916
0
   }
2917
0
#line 2918 "cfg.tab.c"
2918
0
    break;
2919
2920
0
  case 36:
2921
0
#line 632 "cfg.y"
2922
0
                        { (yyval.intval)=(yyvsp[0].intval); }
2923
0
#line 2924 "cfg.tab.c"
2924
0
    break;
2925
2926
0
  case 37:
2927
0
#line 633 "cfg.y"
2928
0
                                { (yyval.intval)=0; }
2929
0
#line 2930 "cfg.tab.c"
2930
0
    break;
2931
2932
0
  case 38:
2933
0
#line 636 "cfg.y"
2934
0
                                               { IFOR();
2935
0
        if ((yyvsp[-2].intval) > (yyvsp[0].intval)) {
2936
0
          yyerrorf("invalid port range (%d > %d)\n", (int)(yyvsp[-2].intval), (int)(yyvsp[0].intval));
2937
0
          YYABORT;
2938
0
        }
2939
0
        pr_tmp = mk_port_range((yyvsp[-2].intval), (yyvsp[0].intval));
2940
0
        if (!pr_tmp) {
2941
0
          yyerror("cannot allocate new portrange\n");
2942
0
          YYABORT;
2943
0
        }
2944
0
        pr_tmp->next = (yyvsp[-4].portrange);
2945
0
        (yyval.portrange) = pr_tmp;
2946
0
      }
2947
0
#line 2948 "cfg.tab.c"
2948
0
    break;
2949
2950
0
  case 39:
2951
0
#line 649 "cfg.y"
2952
0
                                          { IFOR();
2953
0
        pr_tmp = mk_port_range((yyvsp[0].intval), (yyvsp[0].intval));
2954
0
        if (!pr_tmp) {
2955
0
          yyerror("cannot allocate new portrange\n");
2956
0
          YYABORT;
2957
0
        }
2958
0
        pr_tmp->next = (yyvsp[-2].portrange);
2959
0
        (yyval.portrange) = pr_tmp;
2960
0
      }
2961
0
#line 2962 "cfg.tab.c"
2962
0
    break;
2963
2964
0
  case 40:
2965
0
#line 658 "cfg.y"
2966
0
                                       { IFOR();
2967
0
        if ((yyvsp[-2].intval) > (yyvsp[0].intval)) {
2968
0
          yyerrorf("invalid port range (%d > %d)\n", (int)(yyvsp[-2].intval), (int)(yyvsp[0].intval));
2969
0
          YYABORT;
2970
0
        }
2971
0
        (yyval.portrange)=mk_port_range((yyvsp[-2].intval), (yyvsp[0].intval));
2972
0
      }
2973
0
#line 2974 "cfg.tab.c"
2974
0
    break;
2975
2976
0
  case 41:
2977
0
#line 665 "cfg.y"
2978
0
                          { IFOR(); (yyval.portrange)=mk_port_range((yyvsp[0].intval), (yyvsp[0].intval)); }
2979
0
#line 2980 "cfg.tab.c"
2980
0
    break;
2981
2982
0
  case 42:
2983
0
#line 667 "cfg.y"
2984
0
                        { (yyval.intval)=(yyvsp[0].intval); }
2985
0
#line 2986 "cfg.tab.c"
2986
0
    break;
2987
2988
0
  case 43:
2989
0
#line 668 "cfg.y"
2990
0
                                { (yyval.intval)=(yyvsp[0].intval); }
2991
0
#line 2992 "cfg.tab.c"
2992
0
    break;
2993
2994
0
  case 44:
2995
0
#line 669 "cfg.y"
2996
0
                                { (yyval.intval)=-(yyvsp[0].intval); }
2997
0
#line 2998 "cfg.tab.c"
2998
0
    break;
2999
3000
0
  case 45:
3001
0
#line 673 "cfg.y"
3002
0
                                        { IFOR();
3003
0
        (yyval.sockid)=mk_listen_id((yyvsp[0].strval), (yyvsp[-2].intval), 0); }
3004
0
#line 3005 "cfg.tab.c"
3005
0
    break;
3006
3007
0
  case 46:
3008
0
#line 675 "cfg.y"
3009
0
                                                                { IFOR();
3010
0
        (yyval.sockid)=mk_listen_id((yyvsp[-2].strval), (yyvsp[-4].intval), (yyvsp[0].intval));}
3011
0
#line 3012 "cfg.tab.c"
3012
0
    break;
3013
3014
0
  case 47:
3015
0
#line 677 "cfg.y"
3016
0
                                                            {
3017
0
        (yyval.sockid)=0;
3018
0
        yyerror("port number expected");
3019
0
        YYABORT;
3020
0
        }
3021
0
#line 3022 "cfg.tab.c"
3022
0
    break;
3023
3024
0
  case 48:
3025
0
#line 682 "cfg.y"
3026
0
                                       { (yyval.sockid)=0;
3027
0
        yyerror("protocol expected");
3028
0
        YYABORT;
3029
0
      }
3030
0
#line 3031 "cfg.tab.c"
3031
0
    break;
3032
3033
0
  case 49:
3034
0
#line 690 "cfg.y"
3035
0
                                                                { IFOR();
3036
0
        (yyval.sockid)=mk_listen_id(0, (yyvsp[-2].intval), 0); }
3037
0
#line 3038 "cfg.tab.c"
3038
0
    break;
3039
3040
0
  case 50:
3041
0
#line 692 "cfg.y"
3042
0
                                                { IFOR();
3043
0
        (yyval.sockid)=mk_listen_id_range((yyvsp[0].strval), (yyvsp[-2].intval), 0); }
3044
0
#line 3045 "cfg.tab.c"
3045
0
    break;
3046
3047
0
  case 51:
3048
0
#line 694 "cfg.y"
3049
0
                                                                { IFOR();
3050
0
        (yyval.sockid)=mk_listen_id_range(0, (yyvsp[-4].intval), (yyvsp[0].portrange)); }
3051
0
#line 3052 "cfg.tab.c"
3052
0
    break;
3053
3054
0
  case 52:
3055
0
#line 696 "cfg.y"
3056
0
                                                                { IFOR();
3057
0
        (yyval.sockid)=mk_listen_id_range((yyvsp[-2].strval), (yyvsp[-4].intval), (yyvsp[0].portrange)); }
3058
0
#line 3059 "cfg.tab.c"
3059
0
    break;
3060
3061
0
  case 53:
3062
0
#line 698 "cfg.y"
3063
0
                                                        { IFOR();
3064
0
        (yyval.sockid)=0;
3065
0
        yyerror("invalid port range");
3066
0
        YYABORT;
3067
0
      }
3068
0
#line 3069 "cfg.tab.c"
3069
0
    break;
3070
3071
0
  case 54:
3072
0
#line 703 "cfg.y"
3073
0
                                                                { IFOR();
3074
0
        (yyval.sockid)=0;
3075
0
        yyerror("invalid port range");
3076
0
        YYABORT;
3077
0
      }
3078
0
#line 3079 "cfg.tab.c"
3079
0
    break;
3080
3081
0
  case 55:
3082
0
#line 710 "cfg.y"
3083
0
                                                                        { IFOR();
3084
0
        (yyval.sockid)=mk_listen_id((yyvsp[0].strval), PROTO_NONE, 0); }
3085
0
#line 3086 "cfg.tab.c"
3086
0
    break;
3087
3088
0
  case 56:
3089
0
#line 712 "cfg.y"
3090
0
                                                                        { IFOR();
3091
0
        (yyval.sockid)=mk_listen_id((yyvsp[0].strval), PROTO_NONE, 0); }
3092
0
#line 3093 "cfg.tab.c"
3093
0
    break;
3094
3095
0
  case 57:
3096
0
#line 714 "cfg.y"
3097
0
                                                        { IFOR();
3098
0
        (yyval.sockid)=mk_listen_id((yyvsp[-2].strval), PROTO_NONE, (yyvsp[0].intval)); }
3099
0
#line 3100 "cfg.tab.c"
3100
0
    break;
3101
3102
0
  case 58:
3103
0
#line 716 "cfg.y"
3104
0
                                                        {
3105
0
        (yyval.sockid)=0;
3106
0
        yyerror(" port number expected");
3107
0
        }
3108
0
#line 3109 "cfg.tab.c"
3109
0
    break;
3110
3111
0
  case 60:
3112
0
#line 723 "cfg.y"
3113
0
                                              { (yyval.sockid)=(yyvsp[0].sockid); }
3114
0
#line 3115 "cfg.tab.c"
3115
0
    break;
3116
3117
0
  case 61:
3118
0
#line 724 "cfg.y"
3119
0
                                              {
3120
0
        (yyval.sockid)=(yyvsp[-1].sockid);
3121
0
        (yyval.sockid)->flags |= SI_ACCEPT_SUBDOMAIN_ALIAS;
3122
0
        }
3123
0
#line 3124 "cfg.tab.c"
3124
0
    break;
3125
3126
0
  case 62:
3127
0
#line 730 "cfg.y"
3128
0
                                        { IFOR();  (yyval.sockid)=(yyvsp[0].sockid) ; }
3129
0
#line 3130 "cfg.tab.c"
3130
0
    break;
3131
3132
0
  case 63:
3133
0
#line 731 "cfg.y"
3134
0
                                        { IFOR(); (yyval.sockid)=(yyvsp[-1].sockid); (yyval.sockid)->next=(yyvsp[0].sockid); }
3135
0
#line 3136 "cfg.tab.c"
3136
0
    break;
3137
3138
0
  case 64:
3139
0
#line 734 "cfg.y"
3140
0
                                                                { IFOR();
3141
0
          (yyval.sockid)=mk_listen_id((yyvsp[0].strval), PROTO_NONE, 0); }
3142
0
#line 3143 "cfg.tab.c"
3143
0
    break;
3144
3145
0
  case 65:
3146
0
#line 736 "cfg.y"
3147
0
                                                                { IFOR();
3148
0
          (yyval.sockid)=mk_listen_id_range((yyvsp[-2].strval), PROTO_NONE, (yyvsp[0].portrange)); }
3149
0
#line 3150 "cfg.tab.c"
3150
0
    break;
3151
3152
0
  case 66:
3153
0
#line 738 "cfg.y"
3154
0
                                                      {
3155
0
          (yyval.sockid)=0;
3156
0
          yyerror(" port number expected");
3157
0
          }
3158
0
#line 3159 "cfg.tab.c"
3159
0
    break;
3160
3161
0
  case 67:
3162
0
#line 744 "cfg.y"
3163
0
                          { IFOR();
3164
0
          p_tmp.flags |= SI_IS_ANYCAST;
3165
0
          }
3166
0
#line 3167 "cfg.tab.c"
3167
0
    break;
3168
3169
0
  case 68:
3170
0
#line 747 "cfg.y"
3171
0
                                       { IFOR();
3172
0
          p_tmp.flags |= SI_FRAG;
3173
0
          }
3174
0
#line 3175 "cfg.tab.c"
3175
0
    break;
3176
3177
0
  case 69:
3178
0
#line 750 "cfg.y"
3179
0
                                             { IFOR();
3180
0
          p_tmp.flags |= SI_REUSEPORT;
3181
0
          }
3182
0
#line 3183 "cfg.tab.c"
3183
0
    break;
3184
3185
0
  case 70:
3186
0
#line 753 "cfg.y"
3187
0
                                                   { IFOR();
3188
0
          p_tmp.flags |= SI_ACCEPT_SUBDOMAIN_ALIAS;
3189
0
          }
3190
0
#line 3191 "cfg.tab.c"
3191
0
    break;
3192
3193
0
  case 71:
3194
0
#line 756 "cfg.y"
3195
0
                                                       { IFOR();
3196
0
          p_tmp.flags |= SI_PROXY_IN;
3197
0
          }
3198
0
#line 3199 "cfg.tab.c"
3199
0
    break;
3200
3201
0
  case 72:
3202
0
#line 759 "cfg.y"
3203
0
                                                      { IFOR();
3204
0
          p_tmp.flags |= SI_PROXY_OUT;
3205
0
          }
3206
0
#line 3207 "cfg.tab.c"
3207
0
    break;
3208
3209
0
  case 73:
3210
0
#line 762 "cfg.y"
3211
0
                                                 { IFOR();
3212
0
          p_tmp.flags |= SI_PROXY;
3213
0
          }
3214
0
#line 3215 "cfg.tab.c"
3215
0
    break;
3216
3217
0
  case 74:
3218
0
#line 765 "cfg.y"
3219
0
                                                     { IFOR();
3220
0
          p_tmp.workers=(yyvsp[0].intval);
3221
0
          }
3222
0
#line 3223 "cfg.tab.c"
3223
0
    break;
3224
3225
0
  case 75:
3226
0
#line 768 "cfg.y"
3227
0
                                                  { IFOR();
3228
0
          p_tmp.tos=(yyvsp[0].intval);
3229
0
          }
3230
0
#line 3231 "cfg.tab.c"
3231
0
    break;
3232
3233
0
  case 76:
3234
0
#line 771 "cfg.y"
3235
0
                                                   { IFOR();
3236
0
          p_tmp.socket = (yyvsp[0].sockid);
3237
0
          }
3238
0
#line 3239 "cfg.tab.c"
3239
0
    break;
3240
3241
0
  case 77:
3242
0
#line 774 "cfg.y"
3243
0
                                         { IFOR();
3244
0
          p_tmp.tag = (yyvsp[0].strval);
3245
0
          }
3246
0
#line 3247 "cfg.tab.c"
3247
0
    break;
3248
3249
0
  case 78:
3250
0
#line 777 "cfg.y"
3251
0
                                                              { IFOR();
3252
0
          p_tmp.auto_scaling_profile=(yyvsp[0].strval);
3253
0
          }
3254
0
#line 3255 "cfg.tab.c"
3255
0
    break;
3256
3257
0
  case 81:
3258
0
#line 786 "cfg.y"
3259
0
                               { IFOR();
3260
0
        (yyval.bondlst) = new_socket_bond_elem((yyvsp[0].strval));
3261
0
        if (!(yyval.bondlst)) {
3262
0
          yyerror("failed to alloc BOND element\n");YYABORT;
3263
0
        }
3264
0
      }
3265
0
#line 3266 "cfg.tab.c"
3266
0
    break;
3267
3268
0
  case 82:
3269
0
#line 792 "cfg.y"
3270
0
                                                       { IFOR();
3271
0
        (yyval.bondlst) = new_socket_bond_elem((yyvsp[-2].strval));
3272
0
        if (!(yyval.bondlst)) {
3273
0
          yyerror("failed to alloc BOND element\n");YYABORT;
3274
0
        }
3275
0
        (yyval.bondlst)->next = (yyvsp[0].bondlst);
3276
0
      }
3277
0
#line 3278 "cfg.tab.c"
3278
0
    break;
3279
3280
0
  case 83:
3281
0
#line 801 "cfg.y"
3282
0
                                { (yyval.sockid)=(yyvsp[0].sockid); }
3283
0
#line 3284 "cfg.tab.c"
3284
0
    break;
3285
3286
0
  case 84:
3287
0
#line 802 "cfg.y"
3288
0
                                         { IFOR();
3289
0
          memset(&p_tmp, 0, sizeof(p_tmp));
3290
0
        }
3291
0
#line 3292 "cfg.tab.c"
3292
0
    break;
3293
3294
0
  case 85:
3295
0
#line 804 "cfg.y"
3296
0
                                                        { IFOR();
3297
0
          (yyval.sockid)=(yyvsp[-2].sockid); fill_socket_id(&p_tmp, (yyval.sockid));
3298
0
        }
3299
0
#line 3300 "cfg.tab.c"
3300
0
    break;
3301
3302
0
  case 86:
3303
0
#line 807 "cfg.y"
3304
0
                                                                        { IFOR();
3305
0
        if (!mk_bond_id((yyvsp[-3].strval), (yyvsp[-1].bondlst))) {
3306
0
          yyerror("failed to add new BOND socket\n");YYABORT;
3307
0
        }
3308
0
        (yyval.sockid) = NULL; /*trick to avoid being added as regular interface*/
3309
0
        }
3310
0
#line 3311 "cfg.tab.c"
3311
0
    break;
3312
3313
0
  case 87:
3314
0
#line 815 "cfg.y"
3315
0
                        { (yyval.intval)=PROTO_NONE; }
3316
0
#line 3317 "cfg.tab.c"
3317
0
    break;
3318
3319
0
  case 88:
3320
0
#line 816 "cfg.y"
3321
0
                                { (yyval.intval)=(yyvsp[0].intval); }
3322
0
#line 3323 "cfg.tab.c"
3323
0
    break;
3324
3325
0
  case 89:
3326
0
#line 818 "cfg.y"
3327
0
                       {  IFOR(); (yyval.multistr)=new_string((yyvsp[0].strval)); }
3328
0
#line 3329 "cfg.tab.c"
3329
0
    break;
3330
3331
0
  case 90:
3332
0
#line 819 "cfg.y"
3333
0
                                      { IFOR(); (yyval.multistr)=new_string((yyvsp[-1].strval)); (yyval.multistr)->next=(yyvsp[0].multistr); }
3334
0
#line 3335 "cfg.tab.c"
3335
0
    break;
3336
3337
0
  case 91:
3338
0
#line 822 "cfg.y"
3339
0
                                                                       {
3340
0
        IFOR(pkg_free((yyvsp[-5].ipnet)));
3341
0
        s_tmp.s=(yyvsp[-1].strval);
3342
0
        s_tmp.len=strlen((yyvsp[-1].strval));
3343
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[-5].ipnet),&s_tmp,(yyvsp[-3].intval),(yyvsp[-7].intval),0)) {
3344
0
          yyerror("failed to add backlist element\n");YYABORT;
3345
0
        }
3346
0
      }
3347
0
#line 3348 "cfg.tab.c"
3348
0
    break;
3349
3350
0
  case 92:
3351
0
#line 830 "cfg.y"
3352
0
                                                                                  {
3353
0
        IFOR(pkg_free((yyvsp[-5].ipnet)));
3354
0
        s_tmp.s=(yyvsp[-1].strval);
3355
0
        s_tmp.len=strlen((yyvsp[-1].strval));
3356
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[-5].ipnet),&s_tmp,
3357
0
        (yyvsp[-3].intval),(yyvsp[-7].intval),BLR_APPLY_CONTRARY)) {
3358
0
          yyerror("failed to add backlist element\n");YYABORT;
3359
0
        }
3360
0
      }
3361
0
#line 3362 "cfg.tab.c"
3362
0
    break;
3363
3364
0
  case 93:
3365
0
#line 839 "cfg.y"
3366
0
                                                                 {
3367
0
        IFOR(pkg_free((yyvsp[-3].ipnet)));
3368
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[-3].ipnet),NULL,(yyvsp[-1].intval),(yyvsp[-5].intval),0)) {
3369
0
          yyerror("failed to add backlist element\n");YYABORT;
3370
0
        }
3371
0
      }
3372
0
#line 3373 "cfg.tab.c"
3373
0
    break;
3374
3375
0
  case 94:
3376
0
#line 845 "cfg.y"
3377
0
                                                                     {
3378
0
        IFOR(pkg_free((yyvsp[-3].ipnet)));
3379
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[-3].ipnet),NULL,
3380
0
        (yyvsp[-1].intval),(yyvsp[-5].intval),BLR_APPLY_CONTRARY)) {
3381
0
          yyerror("failed to add backlist element\n");YYABORT;
3382
0
        }
3383
0
      }
3384
0
#line 3385 "cfg.tab.c"
3385
0
    break;
3386
3387
0
  case 95:
3388
0
#line 852 "cfg.y"
3389
0
                                                      {
3390
0
        IFOR(pkg_free((yyvsp[-1].ipnet)));
3391
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[-1].ipnet),NULL,0,(yyvsp[-3].intval),0)) {
3392
0
          yyerror("failed to add backlist element\n");YYABORT;
3393
0
        }
3394
0
      }
3395
0
#line 3396 "cfg.tab.c"
3396
0
    break;
3397
3398
0
  case 96:
3399
0
#line 858 "cfg.y"
3400
0
                                                          {
3401
0
        IFOR(pkg_free((yyvsp[-1].ipnet)));
3402
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[-1].ipnet),NULL,
3403
0
        0,(yyvsp[-3].intval),BLR_APPLY_CONTRARY)) {
3404
0
          yyerror("failed to add backlist element\n");YYABORT;
3405
0
        }
3406
0
      }
3407
0
#line 3408 "cfg.tab.c"
3408
0
    break;
3409
3410
0
  case 97:
3411
0
#line 865 "cfg.y"
3412
0
                                                 {
3413
0
        IFOR(pkg_free((yyvsp[-3].ipnet)));
3414
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[-3].ipnet),NULL,(yyvsp[-1].intval),PROTO_NONE,0)) {
3415
0
          yyerror("failed to add backlist element\n");YYABORT;
3416
0
        }
3417
0
      }
3418
0
#line 3419 "cfg.tab.c"
3419
0
    break;
3420
3421
0
  case 98:
3422
0
#line 871 "cfg.y"
3423
0
                                                     {
3424
0
        IFOR(pkg_free((yyvsp[-3].ipnet)));
3425
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[-3].ipnet),NULL,
3426
0
        (yyvsp[-1].intval),PROTO_NONE,BLR_APPLY_CONTRARY)) {
3427
0
          yyerror("failed to add backlist element\n");YYABORT;
3428
0
        }
3429
0
      }
3430
0
#line 3431 "cfg.tab.c"
3431
0
    break;
3432
3433
0
  case 99:
3434
0
#line 878 "cfg.y"
3435
0
                                      {
3436
0
        IFOR(pkg_free((yyvsp[-1].ipnet)));
3437
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[-1].ipnet),NULL,0,PROTO_NONE,0)) {
3438
0
          yyerror("failed to add backlist element\n"); YYABORT;
3439
0
        }
3440
0
      }
3441
0
#line 3442 "cfg.tab.c"
3442
0
    break;
3443
3444
0
  case 100:
3445
0
#line 884 "cfg.y"
3446
0
                                          {
3447
0
        IFOR(pkg_free((yyvsp[-1].ipnet)));
3448
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[-1].ipnet),NULL,
3449
0
        0,PROTO_NONE,BLR_APPLY_CONTRARY)) {
3450
0
          yyerror("failed to add backlist element\n");YYABORT;
3451
0
        }
3452
0
      }
3453
0
#line 3454 "cfg.tab.c"
3454
0
    break;
3455
3456
0
  case 101:
3457
0
#line 891 "cfg.y"
3458
0
                        {
3459
0
        IFOR(pkg_free((yyvsp[0].ipnet)));
3460
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[0].ipnet),NULL,0,PROTO_NONE,0)) {
3461
0
          yyerror("failed to add backlist element\n"); YYABORT;
3462
0
        }
3463
0
      }
3464
0
#line 3465 "cfg.tab.c"
3465
0
    break;
3466
3467
0
  case 102:
3468
0
#line 897 "cfg.y"
3469
0
                            {
3470
0
        IFOR(pkg_free((yyvsp[0].ipnet)));
3471
0
        if (add_rule_to_list(&bl_head,&bl_tail,(yyvsp[0].ipnet),NULL,
3472
0
        0,PROTO_NONE,BLR_APPLY_CONTRARY)) {
3473
0
          yyerror("failed to add backlist element\n");YYABORT;
3474
0
        }
3475
0
      }
3476
0
#line 3477 "cfg.tab.c"
3477
0
    break;
3478
3479
0
  case 106:
3480
0
#line 911 "cfg.y"
3481
0
                    { (yyval.intval) = BL_READONLY_LIST; }
3482
0
#line 3483 "cfg.tab.c"
3483
0
    break;
3484
3485
0
  case 107:
3486
0
#line 912 "cfg.y"
3487
0
                          { (yyval.intval) = BL_DO_EXPIRE; }
3488
0
#line 3489 "cfg.tab.c"
3489
0
    break;
3490
3491
0
  case 108:
3492
0
#line 913 "cfg.y"
3493
0
                           { (yyval.intval) = BL_BY_DEFAULT; }
3494
0
#line 3495 "cfg.tab.c"
3495
0
    break;
3496
3497
0
  case 109:
3498
0
#line 916 "cfg.y"
3499
0
                                       { (yyval.intval) = (yyvsp[-2].intval) | (yyvsp[0].intval); }
3500
0
#line 3501 "cfg.tab.c"
3501
0
    break;
3502
3503
0
  case 110:
3504
0
#line 917 "cfg.y"
3505
0
                            {}
3506
0
#line 3507 "cfg.tab.c"
3507
0
    break;
3508
3509
0
  case 111:
3510
0
#line 920 "cfg.y"
3511
0
                                               {}
3512
0
#line 3513 "cfg.tab.c"
3513
0
    break;
3514
3515
0
  case 112:
3516
0
#line 921 "cfg.y"
3517
0
                            {}
3518
0
#line 3519 "cfg.tab.c"
3519
0
    break;
3520
3521
0
  case 113:
3522
0
#line 922 "cfg.y"
3523
0
                                       { yyerror("bad black list element");}
3524
0
#line 3525 "cfg.tab.c"
3525
0
    break;
3526
3527
0
  case 114:
3528
0
#line 925 "cfg.y"
3529
0
                                            {IFOR(); add_mpath((yyvsp[0].strval));}
3530
0
#line 3531 "cfg.tab.c"
3531
0
    break;
3532
3533
0
  case 115:
3534
0
#line 926 "cfg.y"
3535
0
                         { IFOR(); add_mpath((yyvsp[0].strval));}
3536
0
#line 3537 "cfg.tab.c"
3537
0
    break;
3538
3539
0
  case 116:
3540
0
#line 933 "cfg.y"
3541
0
                                              { IFOR();
3542
0
      if (create_auto_scaling_profile((yyvsp[-17].strval),(yyvsp[-15].intval),(yyvsp[-13].intval),(yyvsp[-10].intval),(yyvsp[-8].intval),
3543
0
      (yyvsp[-6].intval), (yyvsp[-4].intval), (yyvsp[-1].intval),10*(yyvsp[-1].intval))<0)
3544
0
        yyerror("failed to create auto scaling profile");
3545
0
     }
3546
0
#line 3547 "cfg.tab.c"
3547
0
    break;
3548
3549
0
  case 117:
3550
0
#line 941 "cfg.y"
3551
0
                                              { IFOR();
3552
0
      if (create_auto_scaling_profile((yyvsp[-16].strval),(yyvsp[-14].intval),(yyvsp[-12].intval),(yyvsp[-9].intval),(yyvsp[-9].intval),
3553
0
      (yyvsp[-6].intval), (yyvsp[-4].intval), (yyvsp[-1].intval), 10*(yyvsp[-1].intval))<0)
3554
0
        yyerror("failed to create auto scaling profile");
3555
0
     }
3556
0
#line 3557 "cfg.tab.c"
3557
0
    break;
3558
3559
0
  case 118:
3560
0
#line 947 "cfg.y"
3561
0
                                                            { IFOR();
3562
0
      if (create_auto_scaling_profile((yyvsp[-9].strval),(yyvsp[-7].intval),(yyvsp[-5].intval),(yyvsp[-2].intval),(yyvsp[0].intval),
3563
0
      0, 0, 0, 0)<0)
3564
0
        yyerror("failed to create auto scaling profile");
3565
0
    }
3566
0
#line 3567 "cfg.tab.c"
3567
0
    break;
3568
3569
0
  case 119:
3570
0
#line 953 "cfg.y"
3571
0
                                              { IFOR();
3572
0
      if (create_auto_scaling_profile((yyvsp[-8].strval),(yyvsp[-6].intval),(yyvsp[-4].intval),(yyvsp[-1].intval),(yyvsp[-1].intval),
3573
0
      0, 0, 0, 0)<0)
3574
0
        yyerror("failed to create auto scaling profile");
3575
0
    }
3576
0
#line 3577 "cfg.tab.c"
3577
0
    break;
3578
3579
0
  case 120:
3580
0
#line 960 "cfg.y"
3581
0
                                   { IFOR();
3582
      /* in debug mode, force logging to DEBUG level*/
3583
0
      *log_level = debug_mode?L_DBG:(yyvsp[0].intval);
3584
0
      }
3585
0
#line 3586 "cfg.tab.c"
3586
0
    break;
3587
3588
0
  case 121:
3589
0
#line 964 "cfg.y"
3590
0
                                            { IFOR();
3591
0
      pi_framework.s = (yyvsp[0].strval);
3592
0
      pi_framework.len = strlen((yyvsp[0].strval));
3593
0
      }
3594
0
#line 3595 "cfg.tab.c"
3595
0
    break;
3596
3597
0
  case 122:
3598
0
#line 968 "cfg.y"
3599
0
                                           { yyerror("string value expected"); }
3600
0
#line 3601 "cfg.tab.c"
3601
0
    break;
3602
3603
0
  case 123:
3604
0
#line 969 "cfg.y"
3605
0
                                         { IFOR();
3606
0
      if (*(yyvsp[0].strval)) {
3607
0
        int len = strlen((yyvsp[0].strval));
3608
0
        char *buf = pkg_malloc(len + 2);
3609
0
        if (!buf)
3610
0
          yyerror("oom");
3611
0
        sprintf(buf, "%s:", (yyvsp[0].strval));
3612
0
        log_prefix = buf;
3613
0
      } else {
3614
0
        log_prefix = (yyvsp[0].strval);
3615
0
      }
3616
0
      }
3617
0
#line 3618 "cfg.tab.c"
3618
0
    break;
3619
3620
0
  case 124:
3621
0
#line 981 "cfg.y"
3622
0
                                         { yyerror("string value expected"); }
3623
0
#line 3624 "cfg.tab.c"
3624
0
    break;
3625
3626
0
  case 125:
3627
0
#line 982 "cfg.y"
3628
0
                                               { IFOR(); enable_asserts=(yyvsp[0].intval); }
3629
0
#line 3630 "cfg.tab.c"
3630
0
    break;
3631
3632
0
  case 126:
3633
0
#line 983 "cfg.y"
3634
0
                                              { yyerror("boolean value expected"); }
3635
0
#line 3636 "cfg.tab.c"
3636
0
    break;
3637
3638
0
  case 127:
3639
0
#line 984 "cfg.y"
3640
0
                                                { IFOR(); abort_on_assert=(yyvsp[0].intval); }
3641
0
#line 3642 "cfg.tab.c"
3642
0
    break;
3643
3644
0
  case 128:
3645
0
#line 985 "cfg.y"
3646
0
                                               { yyerror("boolean value expected"); }
3647
0
#line 3648 "cfg.tab.c"
3648
0
    break;
3649
3650
0
  case 129:
3651
0
#line 986 "cfg.y"
3652
0
                                           { IFOR();
3653
0
      debug_mode=(yyvsp[0].intval);
3654
0
      if (debug_mode) {
3655
0
        *log_level = L_DBG;
3656
0
        stderr_enabled=1;
3657
0
        syslog_enabled=0;
3658
3659
0
        s_tmp.s=STDERR_CONSUMER_NAME;
3660
0
        s_tmp.len=strlen(STDERR_CONSUMER_NAME);
3661
0
        set_log_consumer_mute_state(&s_tmp, 0);
3662
0
        s_tmp.s=SYSLOG_CONSUMER_NAME;
3663
0
        s_tmp.len=strlen(SYSLOG_CONSUMER_NAME);
3664
0
        set_log_consumer_mute_state(&s_tmp, 1);
3665
0
      }
3666
0
      }
3667
0
#line 3668 "cfg.tab.c"
3668
0
    break;
3669
3670
0
  case 130:
3671
0
#line 1002 "cfg.y"
3672
0
                        { yyerror("boolean value expected for debug_mode"); }
3673
0
#line 3674 "cfg.tab.c"
3674
0
    break;
3675
3676
0
  case 131:
3677
0
#line 1005 "cfg.y"
3678
0
                        { IFOR(); log_stdout=(yyvsp[0].intval); }
3679
0
#line 3680 "cfg.tab.c"
3680
0
    break;
3681
3682
0
  case 132:
3683
0
#line 1006 "cfg.y"
3684
0
                                        { yyerror("boolean value expected"); }
3685
0
#line 3686 "cfg.tab.c"
3686
0
    break;
3687
3688
0
  case 133:
3689
0
#line 1007 "cfg.y"
3690
0
                                                {
3691
      /* in config-check or debug mode we force logging
3692
       * to standard error */
3693
0
      IFOR();
3694
0
      if (!config_check && !debug_mode) {
3695
0
        stderr_enabled=(yyvsp[0].intval);
3696
0
        s_tmp.s=STDERR_CONSUMER_NAME;
3697
0
        s_tmp.len=strlen(STDERR_CONSUMER_NAME);
3698
0
        set_log_consumer_mute_state(&s_tmp, !(yyvsp[0].intval));
3699
0
      }
3700
0
      }
3701
0
#line 3702 "cfg.tab.c"
3702
0
    break;
3703
3704
0
  case 134:
3705
0
#line 1018 "cfg.y"
3706
0
                                               { yyerror("boolean value expected"); }
3707
0
#line 3708 "cfg.tab.c"
3708
0
    break;
3709
3710
0
  case 135:
3711
0
#line 1019 "cfg.y"
3712
0
                                              {
3713
0
      IFOR();
3714
      /* in config-check or debug mode we force logging
3715
       * to standard error */
3716
0
      if (!config_check && !debug_mode) {
3717
0
        syslog_enabled=(yyvsp[0].intval);
3718
0
        s_tmp.s=SYSLOG_CONSUMER_NAME;
3719
0
        s_tmp.len=strlen(SYSLOG_CONSUMER_NAME);
3720
0
        set_log_consumer_mute_state(&s_tmp, !(yyvsp[0].intval));
3721
0
      }
3722
0
      }
3723
0
#line 3724 "cfg.tab.c"
3724
0
    break;
3725
3726
0
  case 136:
3727
0
#line 1030 "cfg.y"
3728
0
                                             { yyerror("boolean value expected"); }
3729
0
#line 3730 "cfg.tab.c"
3730
0
    break;
3731
3732
0
  case 137:
3733
0
#line 1031 "cfg.y"
3734
0
                                                 {
3735
0
      IFOR();
3736
0
      if ((yyvsp[0].intval)) {
3737
0
        if (init_log_msg_buf(0) < 0) {
3738
0
          yyerror("failed to allocate msg log buffer");
3739
0
          YYABORT;
3740
0
        }
3741
0
      }
3742
0
      log_event_enabled=(yyvsp[0].intval); }
3743
0
#line 3744 "cfg.tab.c"
3744
0
    break;
3745
3746
0
  case 138:
3747
0
#line 1040 "cfg.y"
3748
0
                                                { yyerror("boolean value expected"); }
3749
0
#line 3750 "cfg.tab.c"
3750
0
    break;
3751
3752
0
  case 139:
3753
0
#line 1041 "cfg.y"
3754
0
                                                      {
3755
0
      IFOR();
3756
0
      s_tmp.s=STDERR_CONSUMER_NAME;
3757
0
      s_tmp.len=strlen(STDERR_CONSUMER_NAME);
3758
0
      set_log_consumer_level_filter(&s_tmp, (yyvsp[0].intval));
3759
0
      }
3760
0
#line 3761 "cfg.tab.c"
3761
0
    break;
3762
3763
0
  case 140:
3764
0
#line 1047 "cfg.y"
3765
0
                                                    { yyerror("number expected"); }
3766
0
#line 3767 "cfg.tab.c"
3767
0
    break;
3768
3769
0
  case 141:
3770
0
#line 1048 "cfg.y"
3771
0
                                                    {
3772
0
      IFOR();
3773
0
      s_tmp.s=SYSLOG_CONSUMER_NAME;
3774
0
      s_tmp.len=strlen(SYSLOG_CONSUMER_NAME);
3775
0
      set_log_consumer_level_filter(&s_tmp, (yyvsp[0].intval));
3776
0
      }
3777
0
#line 3778 "cfg.tab.c"
3778
0
    break;
3779
3780
0
  case 142:
3781
0
#line 1054 "cfg.y"
3782
0
                                                  { yyerror("number expected"); }
3783
0
#line 3784 "cfg.tab.c"
3784
0
    break;
3785
3786
0
  case 143:
3787
0
#line 1055 "cfg.y"
3788
0
                                                       { IFOR();
3789
0
              log_event_level_filter = (yyvsp[0].intval); }
3790
0
#line 3791 "cfg.tab.c"
3791
0
    break;
3792
3793
0
  case 144:
3794
0
#line 1057 "cfg.y"
3795
0
                                                     { yyerror("number expected"); }
3796
0
#line 3797 "cfg.tab.c"
3797
0
    break;
3798
3799
0
  case 145:
3800
0
#line 1058 "cfg.y"
3801
0
                                               { IFOR();
3802
0
      s_tmp.s = (yyvsp[0].strval);
3803
0
      s_tmp.len = strlen((yyvsp[0].strval));
3804
0
      if ((i_tmp = parse_log_format(&s_tmp)) < 0) {
3805
0
        yyerror("unknown log format");
3806
0
      } else {
3807
0
        if (i_tmp != LOG_FORMAT_PLAIN) {
3808
0
          if (init_log_json_buf(0) < 0) {
3809
0
            yyerror("failed to allocate json log buffer");
3810
0
            YYABORT;
3811
0
          }
3812
0
          if (init_log_msg_buf(0) < 0) {
3813
0
            yyerror("failed to allocate msg log buffer");
3814
0
            YYABORT;
3815
0
          }
3816
3817
0
          if (i_tmp == LOG_FORMAT_JSON_CEE && init_log_cee_hostname() < 0) {
3818
0
            yyerror("failed to allocate hostname buffer");
3819
0
            YYABORT;
3820
0
          }
3821
0
        }
3822
3823
0
        stderr_log_format = i_tmp;
3824
0
      }
3825
0
      }
3826
0
#line 3827 "cfg.tab.c"
3827
0
    break;
3828
3829
0
  case 146:
3830
0
#line 1083 "cfg.y"
3831
0
                                             { IFOR();
3832
0
      s_tmp.s = (yyvsp[0].strval);
3833
0
      s_tmp.len = strlen((yyvsp[0].strval));
3834
0
      if ((i_tmp = parse_log_format(&s_tmp)) < 0) {
3835
0
        yyerror("unknown log format");
3836
0
      } else {
3837
0
        if (i_tmp != LOG_FORMAT_PLAIN) {
3838
0
          if (init_log_json_buf(0) < 0) {
3839
0
            yyerror("failed to allocate json log buffer");
3840
0
            YYABORT;
3841
0
          }
3842
0
          if (init_log_msg_buf(0) < 0) {
3843
0
            yyerror("failed to allocate msg log buffer");
3844
0
            YYABORT;
3845
0
          }
3846
3847
0
          if (i_tmp == LOG_FORMAT_JSON_CEE && init_log_cee_hostname() < 0) {
3848
0
            yyerror("failed to allocate hostname buffer");
3849
0
            YYABORT;
3850
0
          }
3851
0
        }
3852
3853
0
        syslog_log_format = i_tmp;
3854
0
      }
3855
0
      }
3856
0
#line 3857 "cfg.tab.c"
3857
0
    break;
3858
3859
0
  case 147:
3860
0
#line 1108 "cfg.y"
3861
0
                                                 {
3862
0
      IFOR();
3863
0
      log_json_buf_size = (yyvsp[0].intval);
3864
0
      if (init_log_json_buf(1) < 0) {
3865
0
        yyerror("failed to realloc json log buffer");
3866
0
        YYABORT;
3867
0
      }
3868
0
      }
3869
0
#line 3870 "cfg.tab.c"
3870
0
    break;
3871
3872
0
  case 148:
3873
0
#line 1116 "cfg.y"
3874
0
                                                { yyerror("number expected"); }
3875
0
#line 3876 "cfg.tab.c"
3876
0
    break;
3877
3878
0
  case 149:
3879
0
#line 1117 "cfg.y"
3880
0
                                                {
3881
0
      IFOR();
3882
0
      log_msg_buf_size = (yyvsp[0].intval);
3883
0
      if (init_log_msg_buf(1) < 0) {
3884
0
        yyerror("failed to realloc msg log buffer");
3885
0
        YYABORT;
3886
0
      }
3887
0
      }
3888
0
#line 3889 "cfg.tab.c"
3889
0
    break;
3890
3891
0
  case 150:
3892
0
#line 1125 "cfg.y"
3893
0
                                               { yyerror("number expected"); }
3894
0
#line 3895 "cfg.tab.c"
3895
0
    break;
3896
3897
0
  case 151:
3898
0
#line 1126 "cfg.y"
3899
0
                                                    { IFOR();
3900
0
      if ((yyvsp[0].intval) > LOG_RATELIMIT_PERIOD_MAX) {
3901
0
        LM_WARN("config file %s, line %d: log_ratelimit_period %ld is "
3902
0
          "above the maximum, using %d\n", get_cfg_file_name, line,
3903
0
          (yyvsp[0].intval), LOG_RATELIMIT_PERIOD_MAX);
3904
0
        log_ratelimit_period = LOG_RATELIMIT_PERIOD_MAX;
3905
0
      } else {
3906
0
        log_ratelimit_period = (yyvsp[0].intval);
3907
0
      }
3908
0
      }
3909
0
#line 3910 "cfg.tab.c"
3910
0
    break;
3911
3912
0
  case 152:
3913
0
#line 1136 "cfg.y"
3914
0
                                                   { yyerror("number expected"); }
3915
0
#line 3916 "cfg.tab.c"
3916
0
    break;
3917
3918
0
  case 153:
3919
0
#line 1137 "cfg.y"
3920
0
                                           { IFOR();
3921
0
      if ( (i_tmp=str2facility((yyvsp[0].strval)))==-1)
3922
0
        yyerror("bad facility (see syslog(3) man page)");
3923
0
      if (!config_check)
3924
0
        log_facility=i_tmp;
3925
0
      }
3926
0
#line 3927 "cfg.tab.c"
3927
0
    break;
3928
3929
0
  case 154:
3930
0
#line 1143 "cfg.y"
3931
0
                                              { yyerror("ID expected"); }
3932
0
#line 3933 "cfg.tab.c"
3933
0
    break;
3934
3935
0
  case 155:
3936
0
#line 1144 "cfg.y"
3937
0
                                           { IFOR(); log_name=(yyvsp[0].strval); }
3938
0
#line 3939 "cfg.tab.c"
3939
0
    break;
3940
3941
0
  case 156:
3942
0
#line 1145 "cfg.y"
3943
0
                                          { yyerror("string value expected"); }
3944
0
#line 3945 "cfg.tab.c"
3945
0
    break;
3946
3947
0
  case 157:
3948
0
#line 1146 "cfg.y"
3949
0
                                     { IFOR(); received_dns|= ((yyvsp[0].intval))?DO_DNS:0; }
3950
0
#line 3951 "cfg.tab.c"
3951
0
    break;
3952
3953
0
  case 158:
3954
0
#line 1147 "cfg.y"
3955
0
                                  { yyerror("boolean value expected"); }
3956
0
#line 3957 "cfg.tab.c"
3957
0
    break;
3958
3959
0
  case 159:
3960
0
#line 1148 "cfg.y"
3961
0
                                       { IFOR(); received_dns|= ((yyvsp[0].intval))?DO_REV_DNS:0; }
3962
0
#line 3963 "cfg.tab.c"
3963
0
    break;
3964
3965
0
  case 160:
3966
0
#line 1149 "cfg.y"
3967
0
                                      { yyerror("boolean value expected"); }
3968
0
#line 3969 "cfg.tab.c"
3969
0
    break;
3970
3971
0
  case 161:
3972
0
#line 1150 "cfg.y"
3973
0
                                              { IFOR(); dns_try_ipv6=(yyvsp[0].intval); }
3974
0
#line 3975 "cfg.tab.c"
3975
0
    break;
3976
3977
0
  case 162:
3978
0
#line 1151 "cfg.y"
3979
0
                                     { yyerror("boolean value expected"); }
3980
0
#line 3981 "cfg.tab.c"
3981
0
    break;
3982
3983
0
  case 163:
3984
0
#line 1152 "cfg.y"
3985
0
                                               { IFOR(); dns_try_naptr=(yyvsp[0].intval); }
3986
0
#line 3987 "cfg.tab.c"
3987
0
    break;
3988
3989
0
  case 164:
3990
0
#line 1153 "cfg.y"
3991
0
                                      { yyerror("boolean value expected"); }
3992
0
#line 3993 "cfg.tab.c"
3993
0
    break;
3994
3995
0
  case 165:
3996
0
#line 1154 "cfg.y"
3997
0
                                               { IFOR(); dns_retr_time=(yyvsp[0].intval); }
3998
0
#line 3999 "cfg.tab.c"
3999
0
    break;
4000
4001
0
  case 166:
4002
0
#line 1155 "cfg.y"
4003
0
                                      { yyerror("number expected"); }
4004
0
#line 4005 "cfg.tab.c"
4005
0
    break;
4006
4007
0
  case 167:
4008
0
#line 1156 "cfg.y"
4009
0
                                             { IFOR(); dns_retr_no=(yyvsp[0].intval); }
4010
0
#line 4011 "cfg.tab.c"
4011
0
    break;
4012
4013
0
  case 168:
4014
0
#line 1157 "cfg.y"
4015
0
                                    { yyerror("number expected"); }
4016
0
#line 4017 "cfg.tab.c"
4017
0
    break;
4018
4019
0
  case 169:
4020
0
#line 1158 "cfg.y"
4021
0
                                                { IFOR(); dns_servers_no=(yyvsp[0].intval); }
4022
0
#line 4023 "cfg.tab.c"
4023
0
    break;
4024
4025
0
  case 170:
4026
0
#line 1159 "cfg.y"
4027
0
                                       { yyerror("number expected"); }
4028
0
#line 4029 "cfg.tab.c"
4029
0
    break;
4030
4031
0
  case 171:
4032
0
#line 1160 "cfg.y"
4033
0
                                                { IFOR(); dns_search_list=(yyvsp[0].intval); }
4034
0
#line 4035 "cfg.tab.c"
4035
0
    break;
4036
4037
0
  case 172:
4038
0
#line 1161 "cfg.y"
4039
0
                                       { yyerror("boolean value expected"); }
4040
0
#line 4041 "cfg.tab.c"
4041
0
    break;
4042
4043
0
  case 173:
4044
0
#line 1162 "cfg.y"
4045
0
                                               { IFOR(); max_while_loops=(yyvsp[0].intval); }
4046
0
#line 4047 "cfg.tab.c"
4047
0
    break;
4048
4049
0
  case 174:
4050
0
#line 1163 "cfg.y"
4051
0
                                              { yyerror("number expected"); }
4052
0
#line 4053 "cfg.tab.c"
4053
0
    break;
4054
4055
0
  case 175:
4056
0
#line 1164 "cfg.y"
4057
0
                                         { IFOR(); maxbuffer=(yyvsp[0].intval); }
4058
0
#line 4059 "cfg.tab.c"
4059
0
    break;
4060
4061
0
  case 176:
4062
0
#line 1165 "cfg.y"
4063
0
                                        { yyerror("number expected"); }
4064
0
#line 4065 "cfg.tab.c"
4065
0
    break;
4066
4067
0
  case 177:
4068
0
#line 1166 "cfg.y"
4069
0
                                           { IFOR(); udp_workers_no=(yyvsp[0].intval); }
4070
0
#line 4071 "cfg.tab.c"
4071
0
    break;
4072
4073
0
  case 178:
4074
0
#line 1167 "cfg.y"
4075
0
                                                                       { IFOR();
4076
0
        udp_workers_no=(yyvsp[-2].intval);
4077
0
        udp_auto_scaling_profile=(yyvsp[0].strval);
4078
0
    }
4079
0
#line 4080 "cfg.tab.c"
4080
0
    break;
4081
4082
0
  case 179:
4083
0
#line 1171 "cfg.y"
4084
0
                                          { yyerror("number expected"); }
4085
0
#line 4086 "cfg.tab.c"
4086
0
    break;
4087
4088
0
  case 180:
4089
0
#line 1172 "cfg.y"
4090
0
                                             { IFOR();
4091
0
        timer_workers_no=(yyvsp[0].intval);
4092
0
    }
4093
0
#line 4094 "cfg.tab.c"
4094
0
    break;
4095
4096
0
  case 181:
4097
0
#line 1175 "cfg.y"
4098
0
                                                                         { IFOR();
4099
0
        timer_workers_no=(yyvsp[-2].intval);
4100
0
        timer_auto_scaling_profile=(yyvsp[0].strval);
4101
0
    }
4102
0
#line 4103 "cfg.tab.c"
4103
0
    break;
4104
4105
0
  case 182:
4106
0
#line 1179 "cfg.y"
4107
0
                                         { check_via=(yyvsp[0].intval); }
4108
0
#line 4109 "cfg.tab.c"
4109
0
    break;
4110
4111
0
  case 183:
4112
0
#line 1180 "cfg.y"
4113
0
                                        { yyerror("boolean value expected"); }
4114
0
#line 4115 "cfg.tab.c"
4115
0
    break;
4116
4117
0
  case 184:
4118
0
#line 1181 "cfg.y"
4119
0
                                                         { IFOR();
4120
      #ifdef HP_MALLOC
4121
      shm_hash_split_percentage=(yyvsp[0].intval);
4122
      #else
4123
0
      LM_ERR("Cannot set parameter; Please recompile with support "
4124
0
        "for HP_MALLOC\n");
4125
0
      #endif
4126
0
      }
4127
0
#line 4128 "cfg.tab.c"
4128
0
    break;
4129
4130
0
  case 185:
4131
0
#line 1189 "cfg.y"
4132
0
                                                        {
4133
      #ifdef HP_MALLOC
4134
      yyerror("number expected");
4135
      #else
4136
0
      LM_ERR("Cannot set parameter; Please recompile with support "
4137
0
        "for HP_MALLOC\n");
4138
0
      #endif
4139
0
        }
4140
0
#line 4141 "cfg.tab.c"
4141
0
    break;
4142
4143
0
  case 186:
4144
0
#line 1197 "cfg.y"
4145
0
                                                       { IFOR();
4146
      #ifdef HP_MALLOC
4147
      shm_secondary_hash_size=(yyvsp[0].intval);
4148
      #else
4149
0
      LM_ERR("Cannot set parameter; Please recompile with support"
4150
0
        " for HP_MALLOC\n");
4151
0
      #endif
4152
0
      }
4153
0
#line 4154 "cfg.tab.c"
4154
0
    break;
4155
4156
0
  case 187:
4157
0
#line 1205 "cfg.y"
4158
0
                                                      {
4159
      #ifdef HP_MALLOC
4160
      yyerror("number expected");
4161
      #else
4162
0
      LM_ERR("Cannot set parameter; Please recompile with support "
4163
0
        "for HP_MALLOC\n");
4164
0
      #endif
4165
0
      }
4166
0
#line 4167 "cfg.tab.c"
4167
0
    break;
4168
4169
0
  case 188:
4170
0
#line 1213 "cfg.y"
4171
0
                                                   { IFOR();
4172
      #ifdef HP_MALLOC
4173
      mem_warming_enabled = (yyvsp[0].intval);
4174
      #else
4175
0
      LM_ERR("Cannot set parameter; Please recompile with support"
4176
0
        " for HP_MALLOC\n");
4177
0
      #endif
4178
0
      }
4179
0
#line 4180 "cfg.tab.c"
4180
0
    break;
4181
4182
0
  case 189:
4183
0
#line 1221 "cfg.y"
4184
0
                                                  {
4185
      #ifdef HP_MALLOC
4186
      yyerror("number expected");
4187
      #else
4188
0
      LM_ERR("Cannot set parameter; Please recompile with support "
4189
0
        "for HP_MALLOC\n");
4190
0
      #endif
4191
0
      }
4192
0
#line 4193 "cfg.tab.c"
4193
0
    break;
4194
4195
0
  case 190:
4196
0
#line 1229 "cfg.y"
4197
0
                                                        { IFOR();
4198
      #ifdef HP_MALLOC
4199
      mem_warming_pattern_file = (yyvsp[0].strval);
4200
      #else
4201
0
      LM_ERR("Cannot set parameter; Please recompile with "
4202
0
        "support for HP_MALLOC\n");
4203
0
      #endif
4204
0
      }
4205
0
#line 4206 "cfg.tab.c"
4206
0
    break;
4207
4208
0
  case 191:
4209
0
#line 1237 "cfg.y"
4210
0
                                                       {
4211
      #ifdef HP_MALLOC
4212
      yyerror("string expected");
4213
      #else
4214
0
      LM_ERR("Cannot set parameter; Please recompile with support "
4215
0
        "for HP_MALLOC\n");
4216
0
      #endif
4217
0
      }
4218
0
#line 4219 "cfg.tab.c"
4219
0
    break;
4220
4221
0
  case 192:
4222
0
#line 1245 "cfg.y"
4223
0
                                                      { IFOR();
4224
      #ifdef HP_MALLOC
4225
      mem_warming_percentage = (yyvsp[0].intval);
4226
      #else
4227
0
      LM_ERR("Cannot set parameter; Please recompile with "
4228
0
        "support for HP_MALLOC\n");
4229
0
      #endif
4230
0
      }
4231
0
#line 4232 "cfg.tab.c"
4232
0
    break;
4233
4234
0
  case 193:
4235
0
#line 1253 "cfg.y"
4236
0
                                                     {
4237
      #ifdef HP_MALLOC
4238
      yyerror("number expected");
4239
      #else
4240
0
      LM_ERR("Cannot set parameter; Please recompile with support "
4241
0
        "for HP_MALLOC\n");
4242
0
      #endif
4243
0
      }
4244
0
#line 4245 "cfg.tab.c"
4245
0
    break;
4246
4247
0
  case 194:
4248
0
#line 1261 "cfg.y"
4249
0
                                            { IFOR();
4250
0
      rpm_mem_file = (yyvsp[0].strval);
4251
0
      }
4252
0
#line 4253 "cfg.tab.c"
4253
0
    break;
4254
4255
0
  case 195:
4256
0
#line 1264 "cfg.y"
4257
0
                                           { yyerror("string value expected"); }
4258
0
#line 4259 "cfg.tab.c"
4259
0
    break;
4260
4261
0
  case 196:
4262
0
#line 1265 "cfg.y"
4263
0
                                            { IFOR();
4264
0
      rpm_mem_size = (yyvsp[0].intval) * 1024 * 1024;
4265
0
      }
4266
0
#line 4267 "cfg.tab.c"
4267
0
    break;
4268
4269
0
  case 197:
4270
0
#line 1268 "cfg.y"
4271
0
                                           { yyerror("int value expected"); }
4272
0
#line 4273 "cfg.tab.c"
4273
0
    break;
4274
4275
0
  case 198:
4276
0
#line 1269 "cfg.y"
4277
0
                                       { IFOR(); memlog=(yyvsp[0].intval); memdump=(yyvsp[0].intval); }
4278
0
#line 4279 "cfg.tab.c"
4279
0
    break;
4280
4281
0
  case 199:
4282
0
#line 1270 "cfg.y"
4283
0
                                     { yyerror("int value expected"); }
4284
0
#line 4285 "cfg.tab.c"
4285
0
    break;
4286
4287
0
  case 200:
4288
0
#line 1271 "cfg.y"
4289
0
                                                { IFOR(); shm_memlog_size=(yyvsp[0].intval);}
4290
0
#line 4291 "cfg.tab.c"
4291
0
    break;
4292
4293
0
  case 201:
4294
0
#line 1272 "cfg.y"
4295
0
                                              { yyerror("int value expected"); }
4296
0
#line 4297 "cfg.tab.c"
4297
0
    break;
4298
4299
0
  case 202:
4300
0
#line 1273 "cfg.y"
4301
0
                                        { IFOR(); memdump=(yyvsp[0].intval); }
4302
0
#line 4303 "cfg.tab.c"
4303
0
    break;
4304
4305
0
  case 203:
4306
0
#line 1274 "cfg.y"
4307
0
                                      { yyerror("int value expected"); }
4308
0
#line 4309 "cfg.tab.c"
4309
0
    break;
4310
4311
0
  case 204:
4312
0
#line 1275 "cfg.y"
4313
0
                                                {  IFOR();execmsgthreshold=(yyvsp[0].intval); }
4314
0
#line 4315 "cfg.tab.c"
4315
0
    break;
4316
4317
0
  case 205:
4318
0
#line 1276 "cfg.y"
4319
0
                                               { yyerror("int value expected"); }
4320
0
#line 4321 "cfg.tab.c"
4321
0
    break;
4322
4323
0
  case 206:
4324
0
#line 1277 "cfg.y"
4325
0
                                                      { IFOR(); worker_reactor_timeout=(yyvsp[0].intval); }
4326
0
#line 4327 "cfg.tab.c"
4327
0
    break;
4328
4329
0
  case 207:
4330
0
#line 1278 "cfg.y"
4331
0
                                                     { yyerror("int value expected"); }
4332
0
#line 4333 "cfg.tab.c"
4333
0
    break;
4334
4335
0
  case 208:
4336
0
#line 1279 "cfg.y"
4337
0
                                                { IFOR(); execdnsthreshold=(yyvsp[0].intval); }
4338
0
#line 4339 "cfg.tab.c"
4339
0
    break;
4340
4341
0
  case 209:
4342
0
#line 1280 "cfg.y"
4343
0
                                               { yyerror("int value expected"); }
4344
0
#line 4345 "cfg.tab.c"
4345
0
    break;
4346
4347
0
  case 210:
4348
0
#line 1281 "cfg.y"
4349
0
                                            { IFOR(); tcpthreshold=(yyvsp[0].intval); }
4350
0
#line 4351 "cfg.tab.c"
4351
0
    break;
4352
4353
0
  case 211:
4354
0
#line 1282 "cfg.y"
4355
0
                                           { yyerror("int value expected"); }
4356
0
#line 4357 "cfg.tab.c"
4357
0
    break;
4358
4359
0
  case 212:
4360
0
#line 1283 "cfg.y"
4361
0
                                                   { IFOR();
4362
0
      #ifdef STATISTICS
4363
0
      if ((yyvsp[0].intval) < 0 || (yyvsp[0].intval) > 100)
4364
0
        yyerror("SHM threshold has to be a percentage between"
4365
0
          " 0 and 100");
4366
0
      event_shm_threshold=(yyvsp[0].intval);
4367
      #else
4368
      yyerror("statistics support not compiled in");
4369
      #endif /* STATISTICS */
4370
0
      }
4371
0
#line 4372 "cfg.tab.c"
4372
0
    break;
4373
4374
0
  case 213:
4375
0
#line 1293 "cfg.y"
4376
0
                                                  { yyerror("int value expected"); }
4377
0
#line 4378 "cfg.tab.c"
4378
0
    break;
4379
4380
0
  case 214:
4381
0
#line 1294 "cfg.y"
4382
0
                                                   { IFOR();
4383
      #ifdef PKG_MALLOC
4384
      #ifdef STATISTICS
4385
      if ((yyvsp[0].intval) < 0 || (yyvsp[0].intval) > 100)
4386
        yyerror("PKG threshold has to be a percentage between "
4387
          "0 and 100");
4388
      event_pkg_threshold=(yyvsp[0].intval);
4389
      #else
4390
      yyerror("statistics support not compiled in");
4391
      #endif
4392
      #else
4393
0
      yyerror("pkg_malloc support not compiled in");
4394
0
      #endif
4395
0
      }
4396
0
#line 4397 "cfg.tab.c"
4397
0
    break;
4398
4399
0
  case 215:
4400
0
#line 1308 "cfg.y"
4401
0
                                                  { yyerror("int value expected"); }
4402
0
#line 4403 "cfg.tab.c"
4403
0
    break;
4404
4405
0
  case 216:
4406
0
#line 1309 "cfg.y"
4407
0
                                               { IFOR(); query_buffer_size=(yyvsp[0].intval); }
4408
0
#line 4409 "cfg.tab.c"
4409
0
    break;
4410
4411
0
  case 217:
4412
0
#line 1310 "cfg.y"
4413
0
                                              { yyerror("int value expected"); }
4414
0
#line 4415 "cfg.tab.c"
4415
0
    break;
4416
4417
0
  case 218:
4418
0
#line 1311 "cfg.y"
4419
0
                                              { IFOR(); query_flush_time=(yyvsp[0].intval); }
4420
0
#line 4421 "cfg.tab.c"
4421
0
    break;
4422
4423
0
  case 219:
4424
0
#line 1312 "cfg.y"
4425
0
                                             { yyerror("int value expected"); }
4426
0
#line 4427 "cfg.tab.c"
4427
0
    break;
4428
4429
0
  case 220:
4430
0
#line 1313 "cfg.y"
4431
0
                                           { IFOR(); sip_warning=(yyvsp[0].intval); }
4432
0
#line 4433 "cfg.tab.c"
4433
0
    break;
4434
4435
0
  case 221:
4436
0
#line 1314 "cfg.y"
4437
0
                                          { yyerror("boolean value expected"); }
4438
0
#line 4439 "cfg.tab.c"
4439
0
    break;
4440
4441
0
  case 222:
4442
0
#line 1315 "cfg.y"
4443
0
                                          { IFOR(); chroot_dir=(yyvsp[0].strval); }
4444
0
#line 4445 "cfg.tab.c"
4445
0
    break;
4446
4447
0
  case 223:
4448
0
#line 1316 "cfg.y"
4449
0
                                          { IFOR(); chroot_dir=(yyvsp[0].strval); }
4450
0
#line 4451 "cfg.tab.c"
4451
0
    break;
4452
4453
0
  case 224:
4454
0
#line 1317 "cfg.y"
4455
0
                                          { yyerror("string value expected"); }
4456
0
#line 4457 "cfg.tab.c"
4457
0
    break;
4458
4459
0
  case 225:
4460
0
#line 1318 "cfg.y"
4461
0
                                        { IFOR(); working_dir=(yyvsp[0].strval); }
4462
0
#line 4463 "cfg.tab.c"
4463
0
    break;
4464
4465
0
  case 226:
4466
0
#line 1319 "cfg.y"
4467
0
                                        { IFOR(); working_dir=(yyvsp[0].strval); }
4468
0
#line 4469 "cfg.tab.c"
4469
0
    break;
4470
4471
0
  case 227:
4472
0
#line 1320 "cfg.y"
4473
0
                                        { yyerror("string value expected"); }
4474
0
#line 4475 "cfg.tab.c"
4475
0
    break;
4476
4477
0
  case 228:
4478
0
#line 1321 "cfg.y"
4479
0
                                      { IFOR(); mhomed=(yyvsp[0].intval); }
4480
0
#line 4481 "cfg.tab.c"
4481
0
    break;
4482
4483
0
  case 229:
4484
0
#line 1322 "cfg.y"
4485
0
                                     { yyerror("boolean value expected"); }
4486
0
#line 4487 "cfg.tab.c"
4487
0
    break;
4488
4489
0
  case 230:
4490
0
#line 1323 "cfg.y"
4491
0
                                       { IFOR();
4492
0
                  io_poll_method=get_poll_type((yyvsp[0].strval));
4493
0
                  if (io_poll_method==POLL_NONE){
4494
0
                    LM_CRIT("bad poll method name:"
4495
0
                      " %s\n, try one of %s.\n",
4496
0
                      (yyvsp[0].strval), poll_support);
4497
0
                    yyerror("bad poll_method "
4498
0
                      "value");
4499
0
                  }
4500
0
                }
4501
0
#line 4502 "cfg.tab.c"
4502
0
    break;
4503
4504
0
  case 231:
4505
0
#line 1333 "cfg.y"
4506
0
                                           { IFOR();
4507
0
                  io_poll_method=get_poll_type((yyvsp[0].strval));
4508
0
                  if (io_poll_method==POLL_NONE){
4509
0
                    LM_CRIT("bad poll method name:"
4510
0
                      " %s\n, try one of %s.\n",
4511
0
                      (yyvsp[0].strval), poll_support);
4512
0
                    yyerror("bad poll_method "
4513
0
                      "value");
4514
0
                  }
4515
0
                  }
4516
0
#line 4517 "cfg.tab.c"
4517
0
    break;
4518
4519
0
  case 232:
4520
0
#line 1343 "cfg.y"
4521
0
                                          { yyerror("poll method name expected"); }
4522
0
#line 4523 "cfg.tab.c"
4523
0
    break;
4524
4525
0
  case 233:
4526
0
#line 1344 "cfg.y"
4527
0
                                                  { IFOR();
4528
0
        if ((yyvsp[0].intval) < TCP_ALIAS_NEVER || (yyvsp[0].intval) > TCP_ALIAS_ALWAYS)
4529
0
          yyerror("invalid 'tcp_accept_aliases' value");
4530
0
        tcp_accept_aliases=(yyvsp[0].intval);
4531
0
    }
4532
0
#line 4533 "cfg.tab.c"
4533
0
    break;
4534
4535
0
  case 234:
4536
0
#line 1349 "cfg.y"
4537
0
                                                 { yyerror("boolean value expected"); }
4538
0
#line 4539 "cfg.tab.c"
4539
0
    break;
4540
4541
0
  case 235:
4542
0
#line 1350 "cfg.y"
4543
0
                                           { IFOR();
4544
0
        tcp_workers_no=(yyvsp[0].intval);
4545
0
    }
4546
0
#line 4547 "cfg.tab.c"
4547
0
    break;
4548
4549
0
  case 236:
4550
0
#line 1353 "cfg.y"
4551
0
                                                                      { IFOR();
4552
0
        tcp_workers_no=(yyvsp[-2].intval);
4553
0
        tcp_auto_scaling_profile=(yyvsp[0].strval);
4554
0
    }
4555
0
#line 4556 "cfg.tab.c"
4556
0
    break;
4557
4558
0
  case 237:
4559
0
#line 1357 "cfg.y"
4560
0
                                          { yyerror("number expected"); }
4561
0
#line 4562 "cfg.tab.c"
4562
0
    break;
4563
4564
0
  case 238:
4565
0
#line 1358 "cfg.y"
4566
0
                                                   { IFOR();
4567
0
        if ((yyvsp[0].intval) <= 0)
4568
0
          yyerror("invalid 'tcp_connect_timeout' (value too low!)");
4569
0
        tcp_connect_timeout=(yyvsp[0].intval);
4570
0
    }
4571
0
#line 4572 "cfg.tab.c"
4572
0
    break;
4573
4574
0
  case 239:
4575
0
#line 1363 "cfg.y"
4576
0
                                                  { yyerror("number expected"); }
4577
0
#line 4578 "cfg.tab.c"
4578
0
    break;
4579
4580
0
  case 240:
4581
0
#line 1364 "cfg.y"
4582
0
                                                { IFOR();
4583
0
        tcp_con_lifetime=(yyvsp[0].intval);
4584
0
    }
4585
0
#line 4586 "cfg.tab.c"
4586
0
    break;
4587
4588
0
  case 241:
4589
0
#line 1367 "cfg.y"
4590
0
                                               { yyerror("number expected"); }
4591
0
#line 4592 "cfg.tab.c"
4592
0
    break;
4593
4594
0
  case 242:
4595
0
#line 1368 "cfg.y"
4596
0
                                                  { IFOR();
4597
0
        tcp_socket_backlog=(yyvsp[0].intval);
4598
0
    }
4599
0
#line 4600 "cfg.tab.c"
4600
0
    break;
4601
4602
0
  case 243:
4603
0
#line 1371 "cfg.y"
4604
0
                                                 { yyerror("number expected"); }
4605
0
#line 4606 "cfg.tab.c"
4606
0
    break;
4607
4608
0
  case 244:
4609
0
#line 1372 "cfg.y"
4610
0
                                                   { IFOR();
4611
0
        tcp_max_connections=(yyvsp[0].intval);
4612
0
    }
4613
0
#line 4614 "cfg.tab.c"
4614
0
    break;
4615
4616
0
  case 245:
4617
0
#line 1375 "cfg.y"
4618
0
                                                  { yyerror("number expected"); }
4619
0
#line 4620 "cfg.tab.c"
4620
0
    break;
4621
4622
0
  case 246:
4623
0
#line 1376 "cfg.y"
4624
0
                                                 { IFOR();
4625
0
        tcp_no_new_conn_bflag =
4626
0
          get_flag_id_by_name(FLAG_TYPE_BRANCH, (yyvsp[0].strval), 0);
4627
0
        if (!flag_in_range( (flag_t)tcp_no_new_conn_bflag ) )
4628
0
          yyerror("invalid TCP no_new_conn Branch Flag");
4629
0
        flag_idx2mask( &tcp_no_new_conn_bflag );
4630
0
    }
4631
0
#line 4632 "cfg.tab.c"
4632
0
    break;
4633
4634
0
  case 247:
4635
0
#line 1383 "cfg.y"
4636
0
                                                    { yyerror("number value expected"); }
4637
0
#line 4638 "cfg.tab.c"
4638
0
    break;
4639
4640
0
  case 248:
4641
0
#line 1384 "cfg.y"
4642
0
                                                   { IFOR();
4643
0
        tcp_no_new_conn_rplflag =
4644
0
          get_flag_id_by_name(FLAG_TYPE_MSG, (yyvsp[0].strval), 0);
4645
0
        if (!flag_in_range( (flag_t)tcp_no_new_conn_rplflag ) )
4646
0
          yyerror("invalid TCP no_new_conn RePLy Flag");
4647
0
        flag_idx2mask( &tcp_no_new_conn_rplflag );
4648
0
    }
4649
0
#line 4650 "cfg.tab.c"
4650
0
    break;
4651
4652
0
  case 249:
4653
0
#line 1391 "cfg.y"
4654
0
                                                      { yyerror("number value expected"); }
4655
0
#line 4656 "cfg.tab.c"
4656
0
    break;
4657
4658
0
  case 250:
4659
0
#line 1393 "cfg.y"
4660
0
                                             { IFOR();
4661
0
        tcp_keepalive=!!(yyvsp[0].intval);
4662
0
    }
4663
0
#line 4664 "cfg.tab.c"
4664
0
    break;
4665
4666
0
  case 251:
4667
0
#line 1396 "cfg.y"
4668
0
                                            { yyerror("boolean value expected"); }
4669
0
#line 4670 "cfg.tab.c"
4670
0
    break;
4671
4672
0
  case 252:
4673
0
#line 1397 "cfg.y"
4674
0
                                                    { IFOR();
4675
0
        reactor_dbg_fd_check=!!(yyvsp[0].intval);
4676
0
        }
4677
0
#line 4678 "cfg.tab.c"
4678
0
    break;
4679
4680
0
  case 253:
4681
0
#line 1400 "cfg.y"
4682
0
                                                   { yyerror("boolean value expected"); }
4683
0
#line 4684 "cfg.tab.c"
4684
0
    break;
4685
4686
0
  case 254:
4687
0
#line 1401 "cfg.y"
4688
0
                                                { IFOR();
4689
0
        tcp_max_msg_time=(yyvsp[0].intval);
4690
0
    }
4691
0
#line 4692 "cfg.tab.c"
4692
0
    break;
4693
4694
0
  case 255:
4695
0
#line 1404 "cfg.y"
4696
0
                                               { yyerror("number expected"); }
4697
0
#line 4698 "cfg.tab.c"
4698
0
    break;
4699
4700
0
  case 256:
4701
0
#line 1405 "cfg.y"
4702
0
                                           { IFOR();
4703
0
        if ((yyvsp[0].intval) <= 0)
4704
0
          yyerror("invalid 'tcp_threads' value");
4705
0
        tcp_threads=(yyvsp[0].intval);
4706
0
    }
4707
0
#line 4708 "cfg.tab.c"
4708
0
    break;
4709
4710
0
  case 257:
4711
0
#line 1410 "cfg.y"
4712
0
                                          {
4713
0
      yyerror("number value expected");
4714
0
    }
4715
0
#line 4716 "cfg.tab.c"
4716
0
    break;
4717
4718
0
  case 258:
4719
0
#line 1413 "cfg.y"
4720
0
                                                        { IFOR();
4721
      #ifndef HAVE_TCP_KEEPCNT
4722
        warn("cannot be enabled TCP_KEEPCOUNT (no OS support)");
4723
      #else
4724
0
        tcp_keepcount=(yyvsp[0].intval);
4725
0
      #endif
4726
0
    }
4727
0
#line 4728 "cfg.tab.c"
4728
0
    break;
4729
4730
0
  case 259:
4731
0
#line 1420 "cfg.y"
4732
0
                                            { yyerror("int value expected"); }
4733
0
#line 4734 "cfg.tab.c"
4734
0
    break;
4735
4736
0
  case 260:
4737
0
#line 1421 "cfg.y"
4738
0
                                                        { IFOR();
4739
      #ifndef HAVE_TCP_KEEPIDLE
4740
        warn("cannot be enabled TCP_KEEPIDLE (no OS support)");
4741
      #else
4742
0
        tcp_keepidle=(yyvsp[0].intval);
4743
0
      #endif
4744
0
    }
4745
0
#line 4746 "cfg.tab.c"
4746
0
    break;
4747
4748
0
  case 261:
4749
0
#line 1428 "cfg.y"
4750
0
                                           { yyerror("int value expected"); }
4751
0
#line 4752 "cfg.tab.c"
4752
0
    break;
4753
4754
0
  case 262:
4755
0
#line 1429 "cfg.y"
4756
0
                                                { IFOR();
4757
      #ifndef HAVE_TCP_KEEPINTVL
4758
        warn("cannot be enabled TCP_KEEPINTERVAL (no OS support)");
4759
      #else
4760
0
        tcp_keepinterval=(yyvsp[0].intval);
4761
0
       #endif
4762
0
    }
4763
0
#line 4764 "cfg.tab.c"
4764
0
    break;
4765
4766
0
  case 263:
4767
0
#line 1436 "cfg.y"
4768
0
                                               { yyerror("int value expected"); }
4769
0
#line 4770 "cfg.tab.c"
4770
0
    break;
4771
4772
0
  case 264:
4773
0
#line 1437 "cfg.y"
4774
0
                                                { IFOR();
4775
0
              server_signature=(yyvsp[0].intval); }
4776
0
#line 4777 "cfg.tab.c"
4777
0
    break;
4778
4779
0
  case 265:
4780
0
#line 1439 "cfg.y"
4781
0
                                               { yyerror("boolean value expected"); }
4782
0
#line 4783 "cfg.tab.c"
4783
0
    break;
4784
4785
0
  case 266:
4786
0
#line 1440 "cfg.y"
4787
0
                                             { IFOR();
4788
0
              server_header->s=(yyvsp[0].strval);
4789
0
              server_header->len=strlen((yyvsp[0].strval));
4790
0
              }
4791
0
#line 4792 "cfg.tab.c"
4792
0
    break;
4793
4794
0
  case 267:
4795
0
#line 1444 "cfg.y"
4796
0
                                            { yyerror("string value expected"); }
4797
0
#line 4798 "cfg.tab.c"
4798
0
    break;
4799
4800
0
  case 268:
4801
0
#line 1445 "cfg.y"
4802
0
                                                 { user_agent_header->s=(yyvsp[0].strval);
4803
0
      user_agent_header->len=strlen((yyvsp[0].strval));
4804
0
                  }
4805
0
#line 4806 "cfg.tab.c"
4806
0
    break;
4807
4808
0
  case 269:
4809
0
#line 1448 "cfg.y"
4810
0
                                                { yyerror("string value expected"); }
4811
0
#line 4812 "cfg.tab.c"
4812
0
    break;
4813
4814
0
  case 270:
4815
0
#line 1449 "cfg.y"
4816
0
                                                 { IFOR();
4817
0
              pv_print_buf_size = (yyvsp[0].intval); }
4818
0
#line 4819 "cfg.tab.c"
4819
0
    break;
4820
4821
0
  case 271:
4822
0
#line 1451 "cfg.y"
4823
0
                                                { yyerror("number expected"); }
4824
0
#line 4825 "cfg.tab.c"
4825
0
    break;
4826
4827
0
  case 272:
4828
0
#line 1452 "cfg.y"
4829
0
                                             { IFOR();
4830
0
              xlog_buf_size = (yyvsp[0].intval); }
4831
0
#line 4832 "cfg.tab.c"
4832
0
    break;
4833
4834
0
  case 273:
4835
0
#line 1454 "cfg.y"
4836
0
                                                { IFOR();
4837
0
              xlog_force_color = (yyvsp[0].intval); }
4838
0
#line 4839 "cfg.tab.c"
4839
0
    break;
4840
4841
0
  case 274:
4842
0
#line 1456 "cfg.y"
4843
0
                                                { IFOR();
4844
0
              xlog_print_level = (yyvsp[0].intval); }
4845
0
#line 4846 "cfg.tab.c"
4846
0
    break;
4847
4848
0
  case 275:
4849
0
#line 1458 "cfg.y"
4850
0
                                            { yyerror("number expected"); }
4851
0
#line 4852 "cfg.tab.c"
4852
0
    break;
4853
4854
0
  case 276:
4855
0
#line 1459 "cfg.y"
4856
0
                                               { yyerror("boolean value expected"); }
4857
0
#line 4858 "cfg.tab.c"
4858
0
    break;
4859
4860
0
  case 277:
4861
0
#line 1460 "cfg.y"
4862
0
                                               { yyerror("number expected"); }
4863
0
#line 4864 "cfg.tab.c"
4864
0
    break;
4865
4866
0
  case 278:
4867
0
#line 1461 "cfg.y"
4868
0
                                           { IFOR();
4869
0
              *xlog_level = (yyvsp[0].intval); }
4870
0
#line 4871 "cfg.tab.c"
4871
0
    break;
4872
4873
0
  case 279:
4874
0
#line 1463 "cfg.y"
4875
0
                                         { yyerror("number expected"); }
4876
0
#line 4877 "cfg.tab.c"
4877
0
    break;
4878
4879
0
  case 280:
4880
0
#line 1464 "cfg.y"
4881
0
                                          { IFOR();
4882
0
              for (lst_tmp = (yyvsp[0].sockid); lst_tmp; lst_tmp = lst_tmp->next) {
4883
0
                if (add_listening_socket(lst_tmp)!=0){
4884
0
                  LM_CRIT("cfg. parser: failed"
4885
0
                      " to add listening socket\n");
4886
0
                  break;
4887
0
                }
4888
0
              }
4889
0
            }
4890
0
#line 4891 "cfg.tab.c"
4891
0
    break;
4892
4893
0
  case 281:
4894
0
#line 1473 "cfg.y"
4895
0
                                      { yyerror("ip address or hostname "
4896
0
            "expected (use quotes if the hostname includes"
4897
0
            " config keywords)"); }
4898
0
#line 4899 "cfg.tab.c"
4899
0
    break;
4900
4901
0
  case 282:
4902
0
#line 1476 "cfg.y"
4903
0
                                                           { IFOR();
4904
              /* convert STIRNG ($3) to an ID */
4905
              /* update the memstats type for each module */
4906
0
              #ifndef SHM_EXTRA_STATS
4907
0
                LM_CRIT("SHM_EXTRA_STATS not defined");
4908
0
                YYABORT;
4909
              #else
4910
4911
              #ifdef SHM_SHOW_DEFAULT_GROUP
4912
              if(strcmp((yyvsp[-2].strval), "default") == 0){
4913
                LM_CRIT("default group  name is not allowed");
4914
                YYABORT;
4915
              }
4916
              #endif
4917
4918
              for(tmp_mod = mod_names; tmp_mod; tmp_mod=tmp_mod->next){
4919
                if(strcmp((yyvsp[-2].strval), tmp_mod->s) == 0){
4920
                  LM_CRIT("The same mem-group name is used twice: [%s] [%s]\n", (yyvsp[-2].strval), tmp_mod->s);
4921
                  YYABORT;
4922
                }
4923
              }
4924
4925
              tmp_mod = pkg_malloc(sizeof(struct multi_str));
4926
              if(!tmp_mod){
4927
                LM_CRIT("out of pkg memory");
4928
                YYABORT;
4929
              }
4930
4931
              tmp_mod->s = (yyvsp[-2].strval);
4932
              tmp_mod->next = mod_names;
4933
              mod_names = tmp_mod;
4934
              for (tmp_mod = (yyvsp[0].multistr); tmp_mod; tmp_mod = tmp_mod->next){
4935
                if(set_mem_idx(tmp_mod->s, mem_free_idx)){
4936
                  YYABORT;
4937
                }
4938
              }
4939
4940
              mem_free_idx++;
4941
4942
              if(alloc_group_stat()){
4943
                YYABORT;
4944
              }
4945
              #endif
4946
0
            }
4947
0
#line 4948 "cfg.tab.c"
4948
0
    break;
4949
4950
0
  case 283:
4951
0
#line 1520 "cfg.y"
4952
0
                                                    { yyerror("invalid or no module specified"); }
4953
0
#line 4954 "cfg.tab.c"
4954
0
    break;
4955
4956
0
  case 284:
4957
0
#line 1521 "cfg.y"
4958
0
                                      { IFOR();
4959
0
              for(lst_tmp=(yyvsp[0].sockid); lst_tmp; lst_tmp=lst_tmp->next)
4960
0
                add_alias(lst_tmp->name, strlen(lst_tmp->name),
4961
0
                      lst_tmp->port, lst_tmp->proto, si_subdomain_to_alias_flag(lst_tmp->flags));
4962
0
                }
4963
0
#line 4964 "cfg.tab.c"
4964
0
    break;
4965
4966
0
  case 285:
4967
0
#line 1526 "cfg.y"
4968
0
                                      { yyerror("hostname expected (use quotes"
4969
0
              " if the hostname includes config keywords)"); }
4970
0
#line 4971 "cfg.tab.c"
4971
0
    break;
4972
4973
0
  case 286:
4974
0
#line 1528 "cfg.y"
4975
0
                                            { IFOR();
4976
0
                auto_aliases=(yyvsp[0].intval); }
4977
0
#line 4978 "cfg.tab.c"
4978
0
    break;
4979
4980
0
  case 287:
4981
0
#line 1530 "cfg.y"
4982
0
                                            { yyerror("number  expected"); }
4983
0
#line 4984 "cfg.tab.c"
4984
0
    break;
4985
4986
0
  case 288:
4987
0
#line 1531 "cfg.y"
4988
0
                                                     { IFOR();
4989
0
                if ((yyvsp[0].strval)) {
4990
0
                  default_global_address->s=(yyvsp[0].strval);
4991
0
                  default_global_address->len=strlen((yyvsp[0].strval));
4992
0
                }
4993
0
                }
4994
0
#line 4995 "cfg.tab.c"
4995
0
    break;
4996
4997
0
  case 289:
4998
0
#line 1537 "cfg.y"
4999
0
                                                 {yyerror("ip address or hostname "
5000
0
                        "expected"); }
5001
0
#line 5002 "cfg.tab.c"
5002
0
    break;
5003
5004
0
  case 290:
5005
0
#line 1539 "cfg.y"
5006
0
                                               { IFOR();
5007
0
                tmp = int2str((yyvsp[0].intval), &i_tmp);
5008
0
                if (i_tmp > default_global_port->len)
5009
0
                  default_global_port->s =
5010
0
                  pkg_realloc(default_global_port->s, i_tmp);
5011
0
                if (!default_global_port->s) {
5012
0
                  LM_CRIT("cfg. parser: out of memory.\n");
5013
0
                  YYABORT;
5014
0
                } else {
5015
0
                  default_global_port->len = i_tmp;
5016
0
                  memcpy(default_global_port->s, tmp,
5017
0
                      default_global_port->len);
5018
0
                }
5019
0
                }
5020
0
#line 5021 "cfg.tab.c"
5021
0
    break;
5022
5023
0
  case 291:
5024
0
#line 1553 "cfg.y"
5025
0
                                             {yyerror("ip address or hostname "
5026
0
                        "expected"); }
5027
0
#line 5028 "cfg.tab.c"
5028
0
    break;
5029
5030
0
  case 292:
5031
0
#line 1555 "cfg.y"
5032
0
                                            { IFOR();
5033
0
                    disable_core_dump=(yyvsp[0].intval);
5034
0
                  }
5035
0
#line 5036 "cfg.tab.c"
5036
0
    break;
5037
5038
0
  case 293:
5039
0
#line 1558 "cfg.y"
5040
0
                                           { yyerror("boolean value expected"); }
5041
0
#line 5042 "cfg.tab.c"
5042
0
    break;
5043
5044
0
  case 294:
5045
0
#line 1559 "cfg.y"
5046
0
                                             { IFOR();
5047
0
                    open_files_limit=(yyvsp[0].intval);
5048
0
                  }
5049
0
#line 5050 "cfg.tab.c"
5050
0
    break;
5051
5052
0
  case 295:
5053
0
#line 1562 "cfg.y"
5054
0
                                            { yyerror("number expected"); }
5055
0
#line 5056 "cfg.tab.c"
5056
0
    break;
5057
5058
0
  case 296:
5059
0
#line 1563 "cfg.y"
5060
0
                                              { IFOR();
5061
                #ifdef USE_MCAST
5062
                    mcast_loopback=(yyvsp[0].intval);
5063
                #else
5064
0
                  warn("no multicast support compiled in");
5065
0
                #endif
5066
0
      }
5067
0
#line 5068 "cfg.tab.c"
5068
0
    break;
5069
5070
0
  case 297:
5071
0
#line 1570 "cfg.y"
5072
0
                                             { yyerror("boolean value expected"); }
5073
0
#line 5074 "cfg.tab.c"
5074
0
    break;
5075
5076
0
  case 298:
5077
0
#line 1571 "cfg.y"
5078
0
                                         { IFOR();
5079
                #ifdef USE_MCAST
5080
                    mcast_ttl=(yyvsp[0].intval);
5081
                #else
5082
0
                  warn("no multicast support compiled in");
5083
0
                #endif
5084
0
      }
5085
0
#line 5086 "cfg.tab.c"
5086
0
    break;
5087
5088
0
  case 299:
5089
0
#line 1578 "cfg.y"
5090
0
                                        { yyerror("number expected as tos"); }
5091
0
#line 5092 "cfg.tab.c"
5092
0
    break;
5093
5094
0
  case 300:
5095
0
#line 1579 "cfg.y"
5096
0
                                   { IFOR(); tos = (yyvsp[0].intval);
5097
0
              if (tos<0)
5098
0
                yyerror("invalid tos value");
5099
0
     }
5100
0
#line 5101 "cfg.tab.c"
5101
0
    break;
5102
5103
0
  case 301:
5104
0
#line 1583 "cfg.y"
5105
0
                               { IFOR();
5106
0
              if (strcasecmp((yyvsp[0].strval),"IPTOS_LOWDELAY")) {
5107
0
                tos=IPTOS_LOWDELAY;
5108
0
              } else if (strcasecmp((yyvsp[0].strval),"IPTOS_THROUGHPUT")) {
5109
0
                tos=IPTOS_THROUGHPUT;
5110
0
              } else if (strcasecmp((yyvsp[0].strval),"IPTOS_RELIABILITY")) {
5111
0
                tos=IPTOS_RELIABILITY;
5112
0
#if defined(IPTOS_MINCOST)
5113
0
              } else if (strcasecmp((yyvsp[0].strval),"IPTOS_MINCOST")) {
5114
0
                tos=IPTOS_MINCOST;
5115
0
#endif
5116
0
#if defined(IPTOS_LOWCOST)
5117
0
              } else if (strcasecmp((yyvsp[0].strval),"IPTOS_LOWCOST")) {
5118
0
                tos=IPTOS_LOWCOST;
5119
0
#endif
5120
0
              } else {
5121
0
                yyerror("invalid tos value - allowed: "
5122
0
                  "IPTOS_LOWDELAY,IPTOS_THROUGHPUT,"
5123
0
                  "IPTOS_RELIABILITY"
5124
0
#if defined(IPTOS_LOWCOST)
5125
0
                  ",IPTOS_LOWCOST"
5126
0
#endif
5127
0
#if defined(IPTOS_MINCOST)
5128
0
                  ",IPTOS_MINCOST"
5129
0
#endif
5130
0
                  "\n");
5131
0
              }
5132
0
     }
5133
0
#line 5134 "cfg.tab.c"
5134
0
    break;
5135
5136
0
  case 302:
5137
0
#line 1611 "cfg.y"
5138
0
                                  { yyerror("number expected"); }
5139
0
#line 5140 "cfg.tab.c"
5140
0
    break;
5141
5142
0
  case 303:
5143
0
#line 1612 "cfg.y"
5144
0
                                             {IFOR();}
5145
0
#line 5146 "cfg.tab.c"
5146
0
    break;
5147
5148
0
  case 304:
5149
0
#line 1613 "cfg.y"
5150
0
                                     { yyerror("string value expected"); }
5151
0
#line 5152 "cfg.tab.c"
5152
0
    break;
5153
5154
0
  case 305:
5155
0
#line 1614 "cfg.y"
5156
0
                                                    { IFOR();
5157
0
                    disable_dns_failover=(yyvsp[0].intval);
5158
0
                  }
5159
0
#line 5160 "cfg.tab.c"
5160
0
    break;
5161
5162
0
  case 306:
5163
0
#line 1617 "cfg.y"
5164
0
                                             { yyerror("boolean value expected"); }
5165
0
#line 5166 "cfg.tab.c"
5166
0
    break;
5167
5168
0
  case 307:
5169
0
#line 1618 "cfg.y"
5170
0
                                                     { IFOR();
5171
0
                    disable_dns_blacklist=(yyvsp[0].intval);
5172
0
                  }
5173
0
#line 5174 "cfg.tab.c"
5174
0
    break;
5175
5176
0
  case 308:
5177
0
#line 1621 "cfg.y"
5178
0
                                              { yyerror("boolean value expected"); }
5179
0
#line 5180 "cfg.tab.c"
5180
0
    break;
5181
5182
0
  case 309:
5183
0
#line 1622 "cfg.y"
5184
0
                                                                   { IFOR();
5185
0
        s_tmp.s = (yyvsp[-3].strval);
5186
0
        s_tmp.len = strlen((yyvsp[-3].strval));
5187
0
        if (create_bl_head(_str("script"), (yyvsp[-1].intval),
5188
0
            bl_head, bl_tail, &s_tmp)==0) {
5189
0
          yyerror("failed to create blacklist\n");
5190
0
          YYABORT;
5191
0
        }
5192
0
        bl_head = bl_tail = NULL;
5193
0
        }
5194
0
#line 5195 "cfg.tab.c"
5195
0
    break;
5196
5197
0
  case 310:
5198
0
#line 1632 "cfg.y"
5199
0
                                                  { IFOR();
5200
0
        s_tmp.s = (yyvsp[-1].strval);
5201
0
        s_tmp.len = strlen((yyvsp[-1].strval));
5202
0
        if (create_bl_head(_str("script"), BL_READONLY_LIST,
5203
0
            bl_head, bl_tail, &s_tmp)==0) {
5204
0
          yyerror("failed to create blacklist\n");
5205
0
          YYABORT;
5206
0
        }
5207
0
        bl_head = bl_tail = NULL;
5208
0
        }
5209
0
#line 5210 "cfg.tab.c"
5210
0
    break;
5211
5212
0
  case 311:
5213
0
#line 1642 "cfg.y"
5214
0
                                                     { IFOR();
5215
0
        sl_fwd_disabled=(yyvsp[0].intval); }
5216
0
#line 5217 "cfg.tab.c"
5217
0
    break;
5218
5219
0
  case 312:
5220
0
#line 1644 "cfg.y"
5221
0
                                                { IFOR();
5222
0
        db_version_table=(yyvsp[0].strval); }
5223
0
#line 5224 "cfg.tab.c"
5224
0
    break;
5225
5226
0
  case 313:
5227
0
#line 1646 "cfg.y"
5228
0
                                               { yyerror("string value expected"); }
5229
0
#line 5230 "cfg.tab.c"
5230
0
    break;
5231
5232
0
  case 314:
5233
0
#line 1647 "cfg.y"
5234
0
                                              { IFOR();
5235
0
        db_default_url=(yyvsp[0].strval); }
5236
0
#line 5237 "cfg.tab.c"
5237
0
    break;
5238
5239
0
  case 315:
5240
0
#line 1649 "cfg.y"
5241
0
                                             { yyerror("string value expected"); }
5242
0
#line 5243 "cfg.tab.c"
5243
0
    break;
5244
5245
0
  case 316:
5246
0
#line 1650 "cfg.y"
5247
0
                                                        { IFOR();
5248
0
        db_max_async_connections=(yyvsp[0].intval); }
5249
0
#line 5250 "cfg.tab.c"
5250
0
    break;
5251
5252
0
  case 317:
5253
0
#line 1652 "cfg.y"
5254
0
                                                       {
5255
0
        yyerror("integer value expected");
5256
0
        }
5257
0
#line 5258 "cfg.tab.c"
5258
0
    break;
5259
5260
0
  case 318:
5261
0
#line 1655 "cfg.y"
5262
0
                                                       { IFOR();
5263
0
        disable_503_translation=(yyvsp[0].intval); }
5264
0
#line 5265 "cfg.tab.c"
5265
0
    break;
5266
5267
0
  case 319:
5268
0
#line 1657 "cfg.y"
5269
0
                                                      {
5270
0
        yyerror("integer value expected");
5271
0
        }
5272
0
#line 5273 "cfg.tab.c"
5273
0
    break;
5274
5275
0
  case 320:
5276
0
#line 1660 "cfg.y"
5277
0
                                                                    {}
5278
0
#line 5279 "cfg.tab.c"
5279
0
    break;
5280
5281
0
  case 321:
5282
0
#line 1661 "cfg.y"
5283
0
                                                   {
5284
0
        yyerror("bad auto-scaling profile definition");
5285
0
        }
5286
0
#line 5287 "cfg.tab.c"
5287
0
    break;
5288
5289
0
  case 322:
5290
0
#line 1664 "cfg.y"
5291
0
                                                  { IFOR();
5292
0
        auto_scaling_cycle=(yyvsp[0].intval); }
5293
0
#line 5294 "cfg.tab.c"
5294
0
    break;
5295
5296
0
  case 323:
5297
0
#line 1666 "cfg.y"
5298
0
                                                 {
5299
0
        yyerror("integer value expected");
5300
0
        }
5301
0
#line 5302 "cfg.tab.c"
5302
0
    break;
5303
5304
0
  case 324:
5305
0
#line 1669 "cfg.y"
5306
0
                              { yyerror("unknown config variable"); }
5307
0
#line 5308 "cfg.tab.c"
5308
0
    break;
5309
5310
0
  case 325:
5311
0
#line 1672 "cfg.y"
5312
0
                                        { IFOR();
5313
0
      if (load_module((yyvsp[0].strval)) < 0)
5314
0
        yyerrorf("failed to load module %s\n", (yyvsp[0].strval));
5315
0
    }
5316
0
#line 5317 "cfg.tab.c"
5317
0
    break;
5318
5319
0
  case 326:
5320
0
#line 1676 "cfg.y"
5321
0
                                        { yyerror("string expected");  }
5322
0
#line 5323 "cfg.tab.c"
5323
0
    break;
5324
5325
0
  case 327:
5326
0
#line 1677 "cfg.y"
5327
0
                                                                          { IFOR();
5328
0
        if (set_mod_param_regex((yyvsp[-5].strval), (yyvsp[-3].strval), STR_PARAM, (yyvsp[-1].strval)) != 0) {
5329
0
          yyerrorf("Parameter <%s> not found in module <%s> - "
5330
0
            "can't set", (yyvsp[-3].strval), (yyvsp[-5].strval));
5331
0
        }
5332
0
      }
5333
0
#line 5334 "cfg.tab.c"
5334
0
    break;
5335
5336
0
  case 328:
5337
0
#line 1683 "cfg.y"
5338
0
                                                                                 { IFOR();
5339
0
        if (set_mod_param_regex((yyvsp[-5].strval), (yyvsp[-3].strval), STR_PARAM, (yyvsp[-1].strval)) != 0) {
5340
0
          yyerrorf("Parameter <%s> not found in module <%s> - "
5341
0
            "can't set", (yyvsp[-3].strval), (yyvsp[-5].strval));
5342
0
        }
5343
0
      }
5344
0
#line 5345 "cfg.tab.c"
5345
0
    break;
5346
5347
0
  case 329:
5348
0
#line 1689 "cfg.y"
5349
0
                                                                           { IFOR();
5350
0
        if (set_mod_param_regex((yyvsp[-5].strval), (yyvsp[-3].strval), INT_PARAM, (void*)(yyvsp[-1].intval)) != 0) {
5351
0
          yyerrorf("Parameter <%s> not found in module <%s> - "
5352
0
            "can't set", (yyvsp[-3].strval), (yyvsp[-5].strval));
5353
0
        }
5354
0
      }
5355
0
#line 5356 "cfg.tab.c"
5356
0
    break;
5357
5358
0
  case 330:
5359
0
#line 1695 "cfg.y"
5360
0
                                 { yyerror("Invalid arguments"); }
5361
0
#line 5362 "cfg.tab.c"
5362
0
    break;
5363
5364
0
  case 331:
5365
0
#line 1699 "cfg.y"
5366
0
                       { (yyval.ipaddr)=(yyvsp[0].ipaddr); }
5367
0
#line 5368 "cfg.tab.c"
5368
0
    break;
5369
5370
0
  case 332:
5371
0
#line 1700 "cfg.y"
5372
0
                       { (yyval.ipaddr)=(yyvsp[0].ipaddr); }
5373
0
#line 5374 "cfg.tab.c"
5374
0
    break;
5375
5376
0
  case 333:
5377
0
#line 1703 "cfg.y"
5378
0
                 {
5379
0
          (yyval.ipaddr)=pkg_malloc(sizeof(struct ip_addr));
5380
0
          if ((yyval.ipaddr)==0){
5381
0
            LM_CRIT("ERROR: cfg. parser: out of memory.\n");
5382
0
            YYABORT;
5383
0
          }else{
5384
0
            memset((yyval.ipaddr), 0, sizeof(struct ip_addr));
5385
0
            (yyval.ipaddr)->af=AF_INET;
5386
0
            (yyval.ipaddr)->len=16;
5387
0
            if (inet_pton(AF_INET, (yyvsp[0].strval), (yyval.ipaddr)->u.addr)<=0){
5388
0
              yyerror("bad ipv4 address");
5389
0
            }
5390
0
          }
5391
0
        }
5392
0
#line 5393 "cfg.tab.c"
5393
0
    break;
5394
5395
0
  case 334:
5396
0
#line 1719 "cfg.y"
5397
0
                         {
5398
0
          (yyval.ipaddr)=pkg_malloc(sizeof(struct ip_addr));
5399
0
          if ((yyval.ipaddr)==0){
5400
0
            LM_CRIT("ERROR: cfg. parser: out of memory.\n");
5401
0
            YYABORT;
5402
0
          }else{
5403
0
            memset((yyval.ipaddr), 0, sizeof(struct ip_addr));
5404
0
            (yyval.ipaddr)->af=AF_INET6;
5405
0
            (yyval.ipaddr)->len=16;
5406
0
            if (inet_pton(AF_INET6, (yyvsp[0].strval), (yyval.ipaddr)->u.addr)<=0){
5407
0
              yyerror("bad ipv6 address");
5408
0
            }
5409
0
          }
5410
0
        }
5411
0
#line 5412 "cfg.tab.c"
5412
0
    break;
5413
5414
0
  case 335:
5415
0
#line 1735 "cfg.y"
5416
0
                 { (yyval.ipaddr)=(yyvsp[0].ipaddr); }
5417
0
#line 5418 "cfg.tab.c"
5418
0
    break;
5419
5420
0
  case 336:
5421
0
#line 1736 "cfg.y"
5422
0
                                 {(yyval.ipaddr)=(yyvsp[-1].ipaddr); }
5423
0
#line 5424 "cfg.tab.c"
5424
0
    break;
5425
5426
0
  case 337:
5427
0
#line 1739 "cfg.y"
5428
0
                {
5429
0
        if (parse_ipnet((yyvsp[0].strval), strlen((yyvsp[0].strval)), &net_tmp) < 0)
5430
0
          yyerror("unable to parse ip and/or netmask\n");
5431
5432
0
        (yyval.ipnet) = net_tmp;
5433
0
      }
5434
0
#line 5435 "cfg.tab.c"
5435
0
    break;
5436
5437
0
  case 338:
5438
0
#line 1745 "cfg.y"
5439
0
                        {
5440
0
        (yyval.ipnet)=mk_net_bitlen((yyvsp[0].ipaddr), (yyvsp[0].ipaddr)->len*8);
5441
0
        pkg_free((yyvsp[0].ipaddr));
5442
0
      }
5443
0
#line 5444 "cfg.tab.c"
5444
0
    break;
5445
5446
0
  case 339:
5447
0
#line 1755 "cfg.y"
5448
0
                              {
5449
0
        (yyval.strval) = pkg_malloc( strlen((yyvsp[-1].strval)) + strlen((yyvsp[0].strval)) + 1);
5450
0
        if ((yyval.strval)==0){
5451
0
          yyerror("cfg. parser: out of memory");
5452
0
          YYABORT;
5453
0
        } else {
5454
0
          strcpy((yyval.strval),(yyvsp[-1].strval)); strcat((yyval.strval),(yyvsp[0].strval));
5455
0
          pkg_free((yyvsp[-1].strval)); pkg_free((yyvsp[0].strval));
5456
0
        }
5457
0
      }
5458
0
#line 5459 "cfg.tab.c"
5459
0
    break;
5460
5461
0
  case 340:
5462
0
#line 1765 "cfg.y"
5463
0
                                       {
5464
0
        (yyval.strval) = pkg_malloc( strlen((yyvsp[-1].strval)) + strlen((yyvsp[0].strval)) + 1);
5465
0
        if ((yyval.strval)==0){
5466
0
          LM_CRIT("ERROR: cfg. parser: out of memory.\n");
5467
0
          YYABORT;
5468
0
        } else {
5469
0
          strcpy((yyval.strval),(yyvsp[-1].strval)); strcat((yyval.strval),(yyvsp[0].strval));
5470
0
          pkg_free((yyvsp[-1].strval)); pkg_free((yyvsp[0].strval));
5471
0
        }
5472
0
      }
5473
0
#line 5474 "cfg.tab.c"
5474
0
    break;
5475
5476
0
  case 341:
5477
0
#line 1776 "cfg.y"
5478
0
                {
5479
0
        (yyval.strval) = (yyvsp[0].strval);
5480
0
        }
5481
0
#line 5482 "cfg.tab.c"
5482
0
    break;
5483
5484
0
  case 342:
5485
0
#line 1779 "cfg.y"
5486
0
                         {
5487
0
        tmp=int2str((yyvsp[0].intval), &i_tmp);
5488
0
        if (((yyval.strval)=pkg_malloc(i_tmp+1))==0) {
5489
0
          yyerror("cfg. parser: out of memory.\n");
5490
0
          YYABORT;
5491
0
        }
5492
0
        memcpy( (yyval.strval), tmp, i_tmp);
5493
0
        (yyval.strval)[i_tmp] = 0;
5494
0
        }
5495
0
#line 5496 "cfg.tab.c"
5496
0
    break;
5497
5498
0
  case 343:
5499
0
#line 1788 "cfg.y"
5500
0
                        {
5501
0
        (yyval.strval) = (yyvsp[0].strval);
5502
0
    }
5503
0
#line 5504 "cfg.tab.c"
5504
0
    break;
5505
5506
0
  case 344:
5507
0
#line 1793 "cfg.y"
5508
0
                           {
5509
        /* check to see if there are any "$" in the string name */
5510
0
        tmp = strchr((yyvsp[0].strval), '$');
5511
0
        if (!tmp) {
5512
          /* route name is a cosntant string - search for the route */
5513
0
          rn_tmp.data = 0;
5514
0
          rn_tmp.iname = get_script_route_idx((yyvsp[0].strval), sroutes->request,
5515
0
              RT_NO, 0);
5516
0
          if (rn_tmp.iname==-1)
5517
0
            yyerror("too many script routes");
5518
0
          (yyval.intval) = NUMBER_ST;
5519
0
        } else {
5520
0
          tstr.s = (yyvsp[0].strval);
5521
0
          tstr.len = strlen(tstr.s);
5522
0
          if (pv_parse_format(&tstr, &elem) < 0) {
5523
0
            yyerror("cannot parse format");
5524
0
            YYABORT;
5525
0
          }
5526
          /* the route name is a format, so we can't evaluate it now */
5527
0
          rn_tmp.ename = elem;
5528
0
          (yyval.intval) = SCRIPTVAR_ELEM_ST;
5529
0
        }
5530
0
      }
5531
0
#line 5532 "cfg.tab.c"
5532
0
    break;
5533
5534
0
  case 345:
5535
0
#line 1816 "cfg.y"
5536
0
                             {
5537
0
        rn_tmp.sname = (yyvsp[0].specval);
5538
0
        (yyval.intval) = SCRIPTVAR_ST;
5539
0
    }
5540
0
#line 5541 "cfg.tab.c"
5541
0
    break;
5542
5543
0
  case 346:
5544
0
#line 1821 "cfg.y"
5545
0
                                        {
5546
0
            if (sroutes->request[DEFAULT_RT].a!=0) {
5547
0
              yyerror("overwriting default "
5548
0
                "request routing table");
5549
0
              YYABORT;
5550
0
            }
5551
0
            push((yyvsp[-1].action), &sroutes->request[DEFAULT_RT].a);
5552
0
          }
5553
0
#line 5554 "cfg.tab.c"
5554
0
    break;
5555
5556
0
  case 347:
5557
0
#line 1829 "cfg.y"
5558
0
                                                                       {
5559
0
            if ( strtol((yyvsp[-4].strval),&tmp,10)==0 && *tmp==0) {
5560
              /* route[0] detected */
5561
0
              if (sroutes->request[DEFAULT_RT].a!=0) {
5562
0
                yyerror("overwriting(2) default "
5563
0
                  "request routing table");
5564
0
                YYABORT;
5565
0
              }
5566
0
              push((yyvsp[-1].action), &sroutes->request[DEFAULT_RT].a);
5567
0
            } else {
5568
0
              i_tmp = get_script_route_idx( (yyvsp[-4].strval),
5569
0
                sroutes->request, RT_NO,1);
5570
0
              if (i_tmp==-1) YYABORT;
5571
0
              push((yyvsp[-1].action), &sroutes->request[i_tmp].a);
5572
0
            }
5573
0
          }
5574
0
#line 5575 "cfg.tab.c"
5575
0
    break;
5576
5577
0
  case 348:
5578
0
#line 1845 "cfg.y"
5579
0
                              { yyerror("invalid  route  statement"); }
5580
0
#line 5581 "cfg.tab.c"
5581
0
    break;
5582
5583
0
  case 349:
5584
0
#line 1848 "cfg.y"
5585
0
                                                                                {
5586
0
            i_tmp = get_script_route_idx( (yyvsp[-4].strval), sroutes->failure,
5587
0
              FAILURE_RT_NO,1);
5588
0
            if (i_tmp==-1) YYABORT;
5589
0
            push((yyvsp[-1].action), &sroutes->failure[i_tmp].a);
5590
0
          }
5591
0
#line 5592 "cfg.tab.c"
5592
0
    break;
5593
5594
0
  case 350:
5595
0
#line 1854 "cfg.y"
5596
0
                                      { yyerror("invalid failure_route statement"); }
5597
0
#line 5598 "cfg.tab.c"
5598
0
    break;
5599
5600
0
  case 351:
5601
0
#line 1857 "cfg.y"
5602
0
                                                       {
5603
0
            if (sroutes->onreply[DEFAULT_RT].a!=0) {
5604
0
              yyerror("overwriting default "
5605
0
                "onreply routing table");
5606
0
              YYABORT;
5607
0
            }
5608
0
            push((yyvsp[-1].action), &sroutes->onreply[DEFAULT_RT].a);
5609
0
          }
5610
0
#line 5611 "cfg.tab.c"
5611
0
    break;
5612
5613
0
  case 352:
5614
0
#line 1865 "cfg.y"
5615
0
                                                                               {
5616
0
            i_tmp = get_script_route_idx( (yyvsp[-4].strval), sroutes->onreply,
5617
0
              ONREPLY_RT_NO,1);
5618
0
            if (i_tmp==-1) YYABORT;
5619
0
            push((yyvsp[-1].action), &sroutes->onreply[i_tmp].a);
5620
0
          }
5621
0
#line 5622 "cfg.tab.c"
5622
0
    break;
5623
5624
0
  case 353:
5625
0
#line 1871 "cfg.y"
5626
0
                                      { yyerror("invalid onreply_route statement"); }
5627
0
#line 5628 "cfg.tab.c"
5628
0
    break;
5629
5630
0
  case 354:
5631
0
#line 1874 "cfg.y"
5632
0
                                                                              {
5633
0
            i_tmp = get_script_route_idx( (yyvsp[-4].strval), sroutes->branch,
5634
0
              BRANCH_RT_NO,1);
5635
0
            if (i_tmp==-1) YYABORT;
5636
0
            push((yyvsp[-1].action), &sroutes->branch[i_tmp].a);
5637
0
          }
5638
0
#line 5639 "cfg.tab.c"
5639
0
    break;
5640
5641
0
  case 355:
5642
0
#line 1880 "cfg.y"
5643
0
                                     { yyerror("invalid branch_route statement"); }
5644
0
#line 5645 "cfg.tab.c"
5645
0
    break;
5646
5647
0
  case 356:
5648
0
#line 1883 "cfg.y"
5649
0
                                                    {
5650
0
            if (sroutes->error.a!=0) {
5651
0
              yyerror("overwriting default "
5652
0
                "error routing table");
5653
0
              YYABORT;
5654
0
            }
5655
0
            push((yyvsp[-1].action), &sroutes->error.a);
5656
0
          }
5657
0
#line 5658 "cfg.tab.c"
5658
0
    break;
5659
5660
0
  case 357:
5661
0
#line 1891 "cfg.y"
5662
0
                                    { yyerror("invalid error_route statement"); }
5663
0
#line 5664 "cfg.tab.c"
5664
0
    break;
5665
5666
0
  case 358:
5667
0
#line 1894 "cfg.y"
5668
0
                                                    {
5669
0
            if (sroutes->local.a!=0) {
5670
0
              yyerror("re-definition of local "
5671
0
                "route detected");
5672
0
              YYABORT;
5673
0
            }
5674
0
            push((yyvsp[-1].action), &sroutes->local.a);
5675
0
          }
5676
0
#line 5677 "cfg.tab.c"
5677
0
    break;
5678
5679
0
  case 359:
5680
0
#line 1902 "cfg.y"
5681
0
                                    { yyerror("invalid local_route statement"); }
5682
0
#line 5683 "cfg.tab.c"
5683
0
    break;
5684
5685
0
  case 360:
5686
0
#line 1905 "cfg.y"
5687
0
                                                        {
5688
0
            if (sroutes->startup.a!=0) {
5689
0
              yyerror("re-definition of startup "
5690
0
                "route detected");
5691
0
              YYABORT;
5692
0
            }
5693
0
            push((yyvsp[-1].action), &sroutes->startup.a);
5694
0
          }
5695
0
#line 5696 "cfg.tab.c"
5696
0
    break;
5697
5698
0
  case 361:
5699
0
#line 1913 "cfg.y"
5700
0
                                      { yyerror("invalid startup_route statement"); }
5701
0
#line 5702 "cfg.tab.c"
5702
0
    break;
5703
5704
0
  case 362:
5705
0
#line 1916 "cfg.y"
5706
0
                                                                                          {
5707
0
            i_tmp = 0;
5708
0
            while(i_tmp<TIMER_RT_NO && sroutes->timer[i_tmp].a!=0){
5709
0
              i_tmp++;
5710
0
            }
5711
0
            if(i_tmp == TIMER_RT_NO) {
5712
0
              yyerror("Too many timer routes defined\n");
5713
0
              YYABORT;
5714
0
            }
5715
0
            sroutes->timer[i_tmp].name = (yyvsp[-6].strval);
5716
0
            sroutes->timer[i_tmp].interval = (yyvsp[-4].intval);
5717
0
            push((yyvsp[-1].action), &sroutes->timer[i_tmp].a);
5718
0
          }
5719
0
#line 5720 "cfg.tab.c"
5720
0
    break;
5721
5722
0
  case 363:
5723
0
#line 1929 "cfg.y"
5724
0
                                    { yyerror("invalid timer_route statement"); }
5725
0
#line 5726 "cfg.tab.c"
5726
0
    break;
5727
5728
0
  case 364:
5729
0
#line 1932 "cfg.y"
5730
0
                                                                            {
5731
0
            i_tmp = get_script_route_idx((yyvsp[-4].strval), sroutes->event,
5732
0
                EVENT_RT_NO,1);
5733
0
            if (i_tmp==-1) YYABORT;
5734
0
            push((yyvsp[-1].action), &sroutes->event[i_tmp].a);
5735
0
          }
5736
0
#line 5737 "cfg.tab.c"
5737
0
    break;
5738
5739
0
  case 365:
5740
0
#line 1938 "cfg.y"
5741
0
                                    { yyerror("invalid event_route statement"); }
5742
0
#line 5743 "cfg.tab.c"
5743
0
    break;
5744
5745
0
  case 366:
5746
0
#line 1943 "cfg.y"
5747
0
                        { (yyval.expr)=mk_exp(AND_OP, (yyvsp[-2].expr), (yyvsp[0].expr)); }
5748
0
#line 5749 "cfg.tab.c"
5749
0
    break;
5750
5751
0
  case 367:
5752
0
#line 1944 "cfg.y"
5753
0
                                { (yyval.expr)=mk_exp(OR_OP, (yyvsp[-2].expr), (yyvsp[0].expr));  }
5754
0
#line 5755 "cfg.tab.c"
5755
0
    break;
5756
5757
0
  case 368:
5758
0
#line 1945 "cfg.y"
5759
0
                                        { (yyval.expr)=mk_exp(NOT_OP, (yyvsp[0].expr), 0);  }
5760
0
#line 5761 "cfg.tab.c"
5761
0
    break;
5762
5763
0
  case 369:
5764
0
#line 1946 "cfg.y"
5765
0
                                { (yyval.expr)=mk_exp(EVAL_OP, (yyvsp[-1].expr), 0); }
5766
0
#line 5767 "cfg.tab.c"
5767
0
    break;
5768
5769
0
  case 370:
5770
0
#line 1947 "cfg.y"
5771
0
                                  { (yyval.expr)=(yyvsp[-1].expr); }
5772
0
#line 5773 "cfg.tab.c"
5773
0
    break;
5774
5775
0
  case 371:
5776
0
#line 1948 "cfg.y"
5777
0
                                        { (yyval.expr)=(yyvsp[0].expr); }
5778
0
#line 5779 "cfg.tab.c"
5779
0
    break;
5780
5781
0
  case 372:
5782
0
#line 1951 "cfg.y"
5783
0
                          {(yyval.intval)=EQUAL_OP; }
5784
0
#line 5785 "cfg.tab.c"
5785
0
    break;
5786
5787
0
  case 373:
5788
0
#line 1952 "cfg.y"
5789
0
                                {(yyval.intval)=DIFF_OP; }
5790
0
#line 5791 "cfg.tab.c"
5791
0
    break;
5792
5793
0
  case 374:
5794
0
#line 1955 "cfg.y"
5795
0
                {(yyval.intval)=GT_OP; }
5796
0
#line 5797 "cfg.tab.c"
5797
0
    break;
5798
5799
0
  case 375:
5800
0
#line 1956 "cfg.y"
5801
0
                        {(yyval.intval)=LT_OP; }
5802
0
#line 5803 "cfg.tab.c"
5803
0
    break;
5804
5805
0
  case 376:
5806
0
#line 1957 "cfg.y"
5807
0
                        {(yyval.intval)=GTE_OP; }
5808
0
#line 5809 "cfg.tab.c"
5809
0
    break;
5810
5811
0
  case 377:
5812
0
#line 1958 "cfg.y"
5813
0
                        {(yyval.intval)=LTE_OP; }
5814
0
#line 5815 "cfg.tab.c"
5815
0
    break;
5816
5817
0
  case 378:
5818
0
#line 1960 "cfg.y"
5819
0
                {(yyval.intval)=MATCH_OP; }
5820
0
#line 5821 "cfg.tab.c"
5821
0
    break;
5822
5823
0
  case 379:
5824
0
#line 1961 "cfg.y"
5825
0
                                {(yyval.intval)=NOTMATCH_OP; }
5826
0
#line 5827 "cfg.tab.c"
5827
0
    break;
5828
5829
0
  case 380:
5830
0
#line 1964 "cfg.y"
5831
0
                {(yyval.intval)=(yyvsp[0].intval); }
5832
0
#line 5833 "cfg.tab.c"
5833
0
    break;
5834
5835
0
  case 381:
5836
0
#line 1965 "cfg.y"
5837
0
                        {(yyval.intval)=(yyvsp[0].intval); }
5838
0
#line 5839 "cfg.tab.c"
5839
0
    break;
5840
5841
0
  case 382:
5842
0
#line 1968 "cfg.y"
5843
0
                {(yyval.intval)=(yyvsp[0].intval); }
5844
0
#line 5845 "cfg.tab.c"
5845
0
    break;
5846
5847
0
  case 383:
5848
0
#line 1969 "cfg.y"
5849
0
                     {(yyval.intval)=(yyvsp[0].intval); }
5850
0
#line 5851 "cfg.tab.c"
5851
0
    break;
5852
5853
0
  case 384:
5854
0
#line 1970 "cfg.y"
5855
0
                                {(yyval.intval)=(yyvsp[0].intval); }
5856
0
#line 5857 "cfg.tab.c"
5857
0
    break;
5858
5859
0
  case 385:
5860
0
#line 1973 "cfg.y"
5861
0
                                {
5862
0
        spec = (pv_spec_t*)pkg_malloc(sizeof(pv_spec_t));
5863
0
        if (spec==NULL){
5864
0
          yyerror("no more pkg memory\n");
5865
0
          YYABORT;
5866
0
        }
5867
0
        memset(spec, 0, sizeof(pv_spec_t));
5868
0
        tstr.s = (yyvsp[0].strval);
5869
0
        tstr.len = strlen(tstr.s);
5870
0
        if(pv_parse_spec(&tstr, spec)==NULL)
5871
0
        {
5872
0
          yyerror("unknown script variable");
5873
0
        }
5874
5875
0
        (yyval.specval) = spec;
5876
0
      }
5877
0
#line 5878 "cfg.tab.c"
5878
0
    break;
5879
5880
0
  case 386:
5881
0
#line 1989 "cfg.y"
5882
0
                               {
5883
0
      (yyval.specval)=0; yyerror("invalid script variable name");
5884
0
    }
5885
0
#line 5886 "cfg.tab.c"
5886
0
    break;
5887
5888
0
  case 387:
5889
0
#line 1994 "cfg.y"
5890
0
                                {(yyval.expr)=(yyvsp[0].expr); }
5891
0
#line 5892 "cfg.tab.c"
5892
0
    break;
5893
5894
0
  case 388:
5895
0
#line 1995 "cfg.y"
5896
0
                                        {(yyval.expr)=mk_elem( NO_OP, ACTION_O, 0, ACTIONS_ST, (yyvsp[0].action) ); }
5897
0
#line 5898 "cfg.tab.c"
5898
0
    break;
5899
5900
0
  case 389:
5901
0
#line 1996 "cfg.y"
5902
0
                                        {(yyval.expr)=mk_elem( NO_OP, NUMBER_O, 0, NUMBER_ST,
5903
0
                      (void*)(yyvsp[0].intval) ); }
5904
0
#line 5905 "cfg.tab.c"
5905
0
    break;
5906
5907
0
  case 390:
5908
0
#line 1998 "cfg.y"
5909
0
                                {
5910
0
        (yyval.expr)=mk_elem(NO_OP, SCRIPTVAR_O,0,SCRIPTVAR_ST,(void*)(yyvsp[0].specval));
5911
0
      }
5912
0
#line 5913 "cfg.tab.c"
5913
0
    break;
5914
5915
0
  case 391:
5916
0
#line 2003 "cfg.y"
5917
0
                                      {
5918
0
        (yyval.expr)=mk_elem( (yyvsp[-1].intval), SCRIPTVAR_O,(void*)(yyvsp[-2].specval),SCRIPTVAR_ST,(void*)(yyvsp[0].specval));
5919
0
      }
5920
0
#line 5921 "cfg.tab.c"
5921
0
    break;
5922
5923
0
  case 392:
5924
0
#line 2006 "cfg.y"
5925
0
                                          {
5926
0
        (yyval.expr)=mk_elem( (yyvsp[-1].intval), SCRIPTVAR_O,(void*)(yyvsp[-2].specval),STR_ST,(yyvsp[0].strval));
5927
0
      }
5928
0
#line 5929 "cfg.tab.c"
5929
0
    break;
5930
5931
0
  case 393:
5932
0
#line 2009 "cfg.y"
5933
0
                                           {
5934
0
        (yyval.expr)=mk_elem( (yyvsp[-1].intval), SCRIPTVAR_O,(void*)(yyvsp[-2].specval),NUMBER_ST,(void *)(yyvsp[0].intval));
5935
0
      }
5936
0
#line 5937 "cfg.tab.c"
5937
0
    break;
5938
5939
0
  case 394:
5940
0
#line 2012 "cfg.y"
5941
0
                                                {
5942
0
        (yyval.expr)=mk_elem( (yyvsp[-1].intval), SCRIPTVAR_O,(void*)(yyvsp[-2].specval), NULLV_ST, 0);
5943
0
      }
5944
0
#line 5945 "cfg.tab.c"
5945
0
    break;
5946
5947
0
  case 395:
5948
0
#line 2015 "cfg.y"
5949
0
                                           {
5950
0
        (yyval.expr)=mk_elem((yyvsp[-1].intval), SCRIPTVAR_O, (void*)(yyvsp[-2].specval), NET_ST, (yyvsp[0].ipnet));
5951
0
      }
5952
0
#line 5953 "cfg.tab.c"
5953
0
    break;
5954
5955
0
  case 396:
5956
0
#line 2021 "cfg.y"
5957
0
              { (yyval.intval) = EQ_T; }
5958
0
#line 5959 "cfg.tab.c"
5959
0
    break;
5960
5961
0
  case 397:
5962
0
#line 2022 "cfg.y"
5963
0
                  { (yyval.intval) = COLONEQ_T; }
5964
0
#line 5965 "cfg.tab.c"
5965
0
    break;
5966
5967
0
  case 398:
5968
0
#line 2023 "cfg.y"
5969
0
                 { (yyval.intval) = PLUSEQ_T; }
5970
0
#line 5971 "cfg.tab.c"
5971
0
    break;
5972
5973
0
  case 399:
5974
0
#line 2024 "cfg.y"
5975
0
                  { (yyval.intval) = MINUSEQ_T;}
5976
0
#line 5977 "cfg.tab.c"
5977
0
    break;
5978
5979
0
  case 400:
5980
0
#line 2025 "cfg.y"
5981
0
                  { (yyval.intval) = DIVEQ_T; }
5982
0
#line 5983 "cfg.tab.c"
5983
0
    break;
5984
5985
0
  case 401:
5986
0
#line 2026 "cfg.y"
5987
0
                 { (yyval.intval) = MULTEQ_T; }
5988
0
#line 5989 "cfg.tab.c"
5989
0
    break;
5990
5991
0
  case 402:
5992
0
#line 2027 "cfg.y"
5993
0
                   { (yyval.intval) = MODULOEQ_T; }
5994
0
#line 5995 "cfg.tab.c"
5995
0
    break;
5996
5997
0
  case 403:
5998
0
#line 2028 "cfg.y"
5999
0
                 { (yyval.intval) = BANDEQ_T; }
6000
0
#line 6001 "cfg.tab.c"
6001
0
    break;
6002
6003
0
  case 404:
6004
0
#line 2029 "cfg.y"
6005
0
                { (yyval.intval) = BOREQ_T; }
6006
0
#line 6007 "cfg.tab.c"
6007
0
    break;
6008
6009
0
  case 405:
6010
0
#line 2030 "cfg.y"
6011
0
                 { (yyval.intval) = BXOREQ_T; }
6012
0
#line 6013 "cfg.tab.c"
6013
0
    break;
6014
6015
0
  case 406:
6016
0
#line 2034 "cfg.y"
6017
0
                { (yyval.expr) = mk_elem(VALUE_OP, NUMBERV_O, (void*)(yyvsp[0].intval), 0, 0); }
6018
0
#line 6019 "cfg.tab.c"
6019
0
    break;
6020
6021
0
  case 407:
6022
0
#line 2035 "cfg.y"
6023
0
                 { (yyval.expr) = mk_elem(VALUE_OP, STRINGV_O, (yyvsp[0].strval), 0, 0); }
6024
0
#line 6025 "cfg.tab.c"
6025
0
    break;
6026
6027
0
  case 408:
6028
0
#line 2036 "cfg.y"
6029
0
                     { (yyval.expr) = mk_elem(VALUE_OP, SCRIPTVAR_O, (yyvsp[0].specval), 0, 0); }
6030
0
#line 6031 "cfg.tab.c"
6031
0
    break;
6032
6033
0
  case 409:
6034
0
#line 2037 "cfg.y"
6035
0
                   { (yyval.expr)= (yyvsp[0].expr); }
6036
0
#line 6037 "cfg.tab.c"
6037
0
    break;
6038
6039
0
  case 410:
6040
0
#line 2038 "cfg.y"
6041
0
              { (yyval.expr)=mk_elem( NO_OP, ACTION_O, 0, ACTIONS_ST, (yyvsp[0].action) ); }
6042
0
#line 6043 "cfg.tab.c"
6043
0
    break;
6044
6045
0
  case 411:
6046
0
#line 2039 "cfg.y"
6047
0
                                   {
6048
0
        (yyval.expr) = mk_elem(PLUS_OP, EXPR_O, (yyvsp[-2].expr), EXPR_ST, (yyvsp[0].expr));
6049
0
      }
6050
0
#line 6051 "cfg.tab.c"
6051
0
    break;
6052
6053
0
  case 412:
6054
0
#line 2042 "cfg.y"
6055
0
                                    {
6056
0
        (yyval.expr) = mk_elem(MINUS_OP, EXPR_O, (yyvsp[-2].expr), EXPR_ST, (yyvsp[0].expr));
6057
0
      }
6058
0
#line 6059 "cfg.tab.c"
6059
0
    break;
6060
6061
0
  case 413:
6062
0
#line 2045 "cfg.y"
6063
0
                                   {
6064
0
        (yyval.expr) = mk_elem(MULT_OP, EXPR_O, (yyvsp[-2].expr), EXPR_ST, (yyvsp[0].expr));
6065
0
      }
6066
0
#line 6067 "cfg.tab.c"
6067
0
    break;
6068
6069
0
  case 414:
6070
0
#line 2048 "cfg.y"
6071
0
                                    {
6072
0
        (yyval.expr) = mk_elem(DIV_OP, EXPR_O, (yyvsp[-2].expr), EXPR_ST, (yyvsp[0].expr));
6073
0
      }
6074
0
#line 6075 "cfg.tab.c"
6075
0
    break;
6076
6077
0
  case 415:
6078
0
#line 2051 "cfg.y"
6079
0
                                     {
6080
0
        (yyval.expr) = mk_elem(MODULO_OP, EXPR_O, (yyvsp[-2].expr), EXPR_ST, (yyvsp[0].expr));
6081
0
      }
6082
0
#line 6083 "cfg.tab.c"
6083
0
    break;
6084
6085
0
  case 416:
6086
0
#line 2054 "cfg.y"
6087
0
                                   {
6088
0
        (yyval.expr) = mk_elem(BAND_OP, EXPR_O, (yyvsp[-2].expr), EXPR_ST, (yyvsp[0].expr));
6089
0
      }
6090
0
#line 6091 "cfg.tab.c"
6091
0
    break;
6092
6093
0
  case 417:
6094
0
#line 2057 "cfg.y"
6095
0
                                  {
6096
0
        (yyval.expr) = mk_elem(BOR_OP, EXPR_O, (yyvsp[-2].expr), EXPR_ST, (yyvsp[0].expr));
6097
0
      }
6098
0
#line 6099 "cfg.tab.c"
6099
0
    break;
6100
6101
0
  case 418:
6102
0
#line 2060 "cfg.y"
6103
0
                                   {
6104
0
        (yyval.expr) = mk_elem(BXOR_OP, EXPR_O, (yyvsp[-2].expr), EXPR_ST, (yyvsp[0].expr));
6105
0
      }
6106
0
#line 6107 "cfg.tab.c"
6107
0
    break;
6108
6109
0
  case 419:
6110
0
#line 2063 "cfg.y"
6111
0
                                      {
6112
0
        (yyval.expr) = mk_elem(BLSHIFT_OP, EXPR_O, (yyvsp[-2].expr), EXPR_ST, (yyvsp[0].expr));
6113
0
      }
6114
0
#line 6115 "cfg.tab.c"
6115
0
    break;
6116
6117
0
  case 420:
6118
0
#line 2066 "cfg.y"
6119
0
                                      {
6120
0
        (yyval.expr) = mk_elem(BRSHIFT_OP, EXPR_O, (yyvsp[-2].expr), EXPR_ST, (yyvsp[0].expr));
6121
0
      }
6122
0
#line 6123 "cfg.tab.c"
6123
0
    break;
6124
6125
0
  case 421:
6126
0
#line 2069 "cfg.y"
6127
0
                         {
6128
0
        (yyval.expr) = mk_elem(BNOT_OP, EXPR_O, (yyvsp[0].expr), 0, 0);
6129
0
      }
6130
0
#line 6131 "cfg.tab.c"
6131
0
    break;
6132
6133
0
  case 422:
6134
0
#line 2072 "cfg.y"
6135
0
                                  { (yyval.expr) = (yyvsp[-1].expr); }
6136
0
#line 6137 "cfg.tab.c"
6137
0
    break;
6138
6139
0
  case 423:
6140
0
#line 2075 "cfg.y"
6141
0
                                          {
6142
0
      if(!pv_is_w((yyvsp[-2].specval)))
6143
0
        yyerror("invalid left operand in assignment");
6144
0
      if((yyvsp[-2].specval)->trans!=0)
6145
0
        yyerror("transformations not accepted in left side "
6146
0
          "of assignment");
6147
6148
0
      mk_action2( (yyval.action), (yyvsp[-1].intval),
6149
0
          SCRIPTVAR_ST,
6150
0
          EXPR_ST,
6151
0
          (yyvsp[-2].specval),
6152
0
          (yyvsp[0].expr));
6153
0
    }
6154
0
#line 6155 "cfg.tab.c"
6155
0
    break;
6156
6157
0
  case 424:
6158
0
#line 2088 "cfg.y"
6159
0
                                  {
6160
0
      if(!pv_is_w((yyvsp[-2].specval)))
6161
0
        yyerror("invalid left operand in assignment");
6162
0
      if((yyvsp[-2].specval)->trans!=0)
6163
0
        yyerror("transformations not accepted in left side "
6164
0
          "of assignment");
6165
6166
0
      mk_action2( (yyval.action), EQ_T,
6167
0
          SCRIPTVAR_ST,
6168
0
          NULLV_ST,
6169
0
          (yyvsp[-2].specval),
6170
0
          0);
6171
0
    }
6172
0
#line 6173 "cfg.tab.c"
6173
0
    break;
6174
6175
0
  case 425:
6176
0
#line 2101 "cfg.y"
6177
0
                                    {
6178
0
      if(!pv_is_w((yyvsp[-2].specval)))
6179
0
        yyerror("invalid left operand in assignment");
6180
0
      if((yyvsp[-2].specval)->trans!=0)
6181
0
        yyerror("transformations not accepted in left side "
6182
0
          "of assignment");
6183
6184
0
      mk_action2( (yyval.action), COLONEQ_T,
6185
0
          SCRIPTVAR_ST,
6186
0
          NULLV_ST,
6187
0
          (yyvsp[-2].specval),
6188
0
          0);
6189
0
    }
6190
0
#line 6191 "cfg.tab.c"
6191
0
    break;
6192
6193
0
  case 426:
6194
0
#line 2116 "cfg.y"
6195
0
                                                                { (yyval.action)=(yyvsp[0].action); }
6196
0
#line 6197 "cfg.tab.c"
6197
0
    break;
6198
6199
0
  case 427:
6200
0
#line 2117 "cfg.y"
6201
0
                                                                { (yyval.action)=(yyvsp[0].action); }
6202
0
#line 6203 "cfg.tab.c"
6203
0
    break;
6204
6205
0
  case 428:
6206
0
#line 2118 "cfg.y"
6207
0
                                                                { (yyval.action)=(yyvsp[0].action); }
6208
0
#line 6209 "cfg.tab.c"
6209
0
    break;
6210
6211
0
  case 429:
6212
0
#line 2119 "cfg.y"
6213
0
                                                { (yyval.action)=(yyvsp[-1].action); }
6214
0
#line 6215 "cfg.tab.c"
6215
0
    break;
6216
6217
0
  case 430:
6218
0
#line 2120 "cfg.y"
6219
0
                                                        { (yyval.action)=0; }
6220
0
#line 6221 "cfg.tab.c"
6221
0
    break;
6222
6223
0
  case 431:
6224
0
#line 2123 "cfg.y"
6225
0
                                                                { (yyval.action)=(yyvsp[0].action); }
6226
0
#line 6227 "cfg.tab.c"
6227
0
    break;
6228
6229
0
  case 432:
6230
0
#line 2124 "cfg.y"
6231
0
                                                        { (yyval.action)=(yyvsp[-1].action); }
6232
0
#line 6233 "cfg.tab.c"
6233
0
    break;
6234
6235
0
  case 433:
6236
0
#line 2125 "cfg.y"
6237
0
                                                        { (yyval.action)=0; }
6238
0
#line 6239 "cfg.tab.c"
6239
0
    break;
6240
6241
0
  case 434:
6242
0
#line 2128 "cfg.y"
6243
0
                                                        { (yyval.action)=(yyvsp[0].action); }
6244
0
#line 6245 "cfg.tab.c"
6245
0
    break;
6246
6247
0
  case 435:
6248
0
#line 2129 "cfg.y"
6249
0
                                                { (yyval.action)=(yyvsp[-1].action); }
6250
0
#line 6251 "cfg.tab.c"
6251
0
    break;
6252
6253
0
  case 436:
6254
0
#line 2130 "cfg.y"
6255
0
                                                        { (yyval.action)=0; }
6256
0
#line 6257 "cfg.tab.c"
6257
0
    break;
6258
6259
0
  case 437:
6260
0
#line 2133 "cfg.y"
6261
0
                                {(yyval.action)=append_action((yyvsp[-1].action), (yyvsp[0].action)); }
6262
0
#line 6263 "cfg.tab.c"
6263
0
    break;
6264
6265
0
  case 438:
6266
0
#line 2134 "cfg.y"
6267
0
                                                {(yyval.action)=(yyvsp[0].action);}
6268
0
#line 6269 "cfg.tab.c"
6269
0
    break;
6270
6271
0
  case 439:
6272
0
#line 2135 "cfg.y"
6273
0
                                { (yyval.action)=0; yyerror("bad command!)"); }
6274
0
#line 6275 "cfg.tab.c"
6275
0
    break;
6276
6277
0
  case 440:
6278
0
#line 2139 "cfg.y"
6279
0
                                        {(yyval.action)=append_action((yyvsp[-1].action), (yyvsp[0].action)); }
6280
0
#line 6281 "cfg.tab.c"
6281
0
    break;
6282
6283
0
  case 441:
6284
0
#line 2140 "cfg.y"
6285
0
                                                {(yyval.action)=(yyvsp[0].action);}
6286
0
#line 6287 "cfg.tab.c"
6287
0
    break;
6288
6289
0
  case 442:
6290
0
#line 2141 "cfg.y"
6291
0
                                    { (yyval.action)=0; yyerror("bad command!)"); }
6292
0
#line 6293 "cfg.tab.c"
6293
0
    break;
6294
6295
0
  case 443:
6296
0
#line 2144 "cfg.y"
6297
0
                              {(yyval.action)=(yyvsp[-1].action);}
6298
0
#line 6299 "cfg.tab.c"
6299
0
    break;
6300
6301
0
  case 444:
6302
0
#line 2145 "cfg.y"
6303
0
                         {(yyval.action)=(yyvsp[0].action);}
6304
0
#line 6305 "cfg.tab.c"
6305
0
    break;
6306
6307
0
  case 445:
6308
0
#line 2146 "cfg.y"
6309
0
                            {(yyval.action)=(yyvsp[0].action);}
6310
0
#line 6311 "cfg.tab.c"
6311
0
    break;
6312
6313
0
  case 446:
6314
0
#line 2147 "cfg.y"
6315
0
                              {(yyval.action)=(yyvsp[0].action);}
6316
0
#line 6317 "cfg.tab.c"
6317
0
    break;
6318
6319
0
  case 447:
6320
0
#line 2148 "cfg.y"
6321
0
                             {(yyval.action)=(yyvsp[0].action);}
6322
0
#line 6323 "cfg.tab.c"
6323
0
    break;
6324
6325
0
  case 448:
6326
0
#line 2149 "cfg.y"
6327
0
                                       {(yyval.action)=(yyvsp[-1].action);}
6328
0
#line 6329 "cfg.tab.c"
6329
0
    break;
6330
6331
0
  case 449:
6332
0
#line 2150 "cfg.y"
6333
0
                                              {(yyval.action)=0;}
6334
0
#line 6335 "cfg.tab.c"
6335
0
    break;
6336
6337
0
  case 450:
6338
0
#line 2151 "cfg.y"
6339
0
                            { (yyval.action)=0; yyerror("bad command: missing ';'?"); }
6340
0
#line 6341 "cfg.tab.c"
6341
0
    break;
6342
6343
0
  case 451:
6344
0
#line 2154 "cfg.y"
6345
0
                            { mk_action0((yyval.action), BREAK_T);}
6346
0
#line 6347 "cfg.tab.c"
6347
0
    break;
6348
6349
0
  case 452:
6350
0
#line 2155 "cfg.y"
6351
0
                                {(yyval.action)=(yyvsp[-1].action);}
6352
0
#line 6353 "cfg.tab.c"
6353
0
    break;
6354
6355
0
  case 453:
6356
0
#line 2156 "cfg.y"
6357
0
                             {(yyval.action)=(yyvsp[0].action);}
6358
0
#line 6359 "cfg.tab.c"
6359
0
    break;
6360
6361
0
  case 454:
6362
0
#line 2157 "cfg.y"
6363
0
                            {(yyval.action)=(yyvsp[0].action);}
6364
0
#line 6365 "cfg.tab.c"
6365
0
    break;
6366
6367
0
  case 455:
6368
0
#line 2158 "cfg.y"
6369
0
                              {(yyval.action)=(yyvsp[0].action);}
6370
0
#line 6371 "cfg.tab.c"
6371
0
    break;
6372
6373
0
  case 456:
6374
0
#line 2159 "cfg.y"
6375
0
                             {(yyval.action)=(yyvsp[0].action);}
6376
0
#line 6377 "cfg.tab.c"
6377
0
    break;
6378
6379
0
  case 457:
6380
0
#line 2160 "cfg.y"
6381
0
                                       {(yyval.action)=(yyvsp[-1].action);}
6382
0
#line 6383 "cfg.tab.c"
6383
0
    break;
6384
6385
0
  case 458:
6386
0
#line 2161 "cfg.y"
6387
0
                                              {(yyval.action)=0;}
6388
0
#line 6389 "cfg.tab.c"
6389
0
    break;
6390
6391
0
  case 459:
6392
0
#line 2162 "cfg.y"
6393
0
                            { (yyval.action)=0; yyerror("bad command: missing ';'?"); }
6394
0
#line 6395 "cfg.tab.c"
6395
0
    break;
6396
6397
0
  case 460:
6398
0
#line 2165 "cfg.y"
6399
0
                                                                { mk_action3( (yyval.action), IF_T,
6400
0
                           EXPR_ST,
6401
0
                           ACTIONS_ST,
6402
0
                           NOSUBTYPE,
6403
0
                           (yyvsp[-2].expr),
6404
0
                           (yyvsp[0].action),
6405
0
                           0);
6406
0
                  }
6407
0
#line 6408 "cfg.tab.c"
6408
0
    break;
6409
6410
0
  case 461:
6411
0
#line 2173 "cfg.y"
6412
0
                                                                        { mk_action3( (yyval.action), IF_T,
6413
0
                           EXPR_ST,
6414
0
                           ACTIONS_ST,
6415
0
                           ACTIONS_ST,
6416
0
                           (yyvsp[-4].expr),
6417
0
                           (yyvsp[-2].action),
6418
0
                           (yyvsp[0].action));
6419
0
                  }
6420
0
#line 6421 "cfg.tab.c"
6421
0
    break;
6422
6423
0
  case 462:
6424
0
#line 2183 "cfg.y"
6425
0
                                                                        { mk_action3( (yyval.action), IF_T,
6426
0
                           EXPR_ST,
6427
0
                           ACTIONS_ST,
6428
0
                           NOSUBTYPE,
6429
0
                           (yyvsp[-2].expr),
6430
0
                           (yyvsp[0].action),
6431
0
                           0);
6432
0
                  }
6433
0
#line 6434 "cfg.tab.c"
6434
0
    break;
6435
6436
0
  case 463:
6437
0
#line 2191 "cfg.y"
6438
0
                                                                { mk_action3( (yyval.action), IF_T,
6439
0
                           EXPR_ST,
6440
0
                           ACTIONS_ST,
6441
0
                           ACTIONS_ST,
6442
0
                           (yyvsp[-4].expr),
6443
0
                           (yyvsp[-2].action),
6444
0
                           (yyvsp[0].action));
6445
0
                  }
6446
0
#line 6447 "cfg.tab.c"
6447
0
    break;
6448
6449
0
  case 464:
6450
0
#line 2201 "cfg.y"
6451
0
                                                        { mk_action2( (yyval.action), WHILE_T,
6452
0
                           EXPR_ST,
6453
0
                           ACTIONS_ST,
6454
0
                           (yyvsp[-2].expr),
6455
0
                           (yyvsp[0].action));
6456
0
                  }
6457
0
#line 6458 "cfg.tab.c"
6458
0
    break;
6459
6460
0
  case 465:
6461
0
#line 2209 "cfg.y"
6462
0
                                                                   {
6463
0
          if ((yyvsp[-4].specval)->type != PVT_SCRIPTVAR &&
6464
0
              (yyvsp[-4].specval)->type != PVT_AVP &&
6465
0
            pv_type((yyvsp[-4].specval)->type) != PVT_JSON) {
6466
0
            yyerror("\nfor-each statement: only \"var\", \"avp\" "
6467
0
                      "and \"json\" iterators are supported!");
6468
0
          }
6469
6470
0
          mk_action3( (yyval.action), FOR_EACH_T,
6471
0
                      SCRIPTVAR_ST,
6472
0
                      SCRIPTVAR_ST,
6473
0
                      ACTIONS_ST,
6474
0
                      (yyvsp[-4].specval),
6475
0
                      (yyvsp[-2].specval),
6476
0
                      (yyvsp[0].action));
6477
0
          }
6478
0
#line 6479 "cfg.tab.c"
6479
0
    break;
6480
6481
0
  case 466:
6482
0
#line 2227 "cfg.y"
6483
0
                                                                                        {
6484
0
                      mk_action2( (yyval.action), SWITCH_T,
6485
0
                            SCRIPTVAR_ST,
6486
0
                            ACTIONS_ST,
6487
0
                            (yyvsp[-4].specval),
6488
0
                            (yyvsp[-1].action));
6489
0
                  }
6490
0
#line 6491 "cfg.tab.c"
6491
0
    break;
6492
6493
0
  case 467:
6494
0
#line 2236 "cfg.y"
6495
0
                                  { (yyval.action)=append_action((yyvsp[-1].action), (yyvsp[0].action)); }
6496
0
#line 6497 "cfg.tab.c"
6497
0
    break;
6498
6499
0
  case 468:
6500
0
#line 2237 "cfg.y"
6501
0
                                                { (yyval.action)=(yyvsp[0].action); }
6502
0
#line 6503 "cfg.tab.c"
6503
0
    break;
6504
6505
0
  case 469:
6506
0
#line 2239 "cfg.y"
6507
0
                                        {(yyval.action)=append_action((yyvsp[-1].action), (yyvsp[0].action)); }
6508
0
#line 6509 "cfg.tab.c"
6509
0
    break;
6510
6511
0
  case 470:
6512
0
#line 2240 "cfg.y"
6513
0
                                                {(yyval.action)=(yyvsp[0].action);}
6514
0
#line 6515 "cfg.tab.c"
6515
0
    break;
6516
6517
0
  case 471:
6518
0
#line 2243 "cfg.y"
6519
0
                                         { mk_action2( (yyval.action), CASE_T,
6520
0
                          NUMBER_ST,
6521
0
                          ACTIONS_ST,
6522
0
                          (void*)(yyvsp[-2].intval),
6523
0
                          (yyvsp[0].action));
6524
0
                      }
6525
0
#line 6526 "cfg.tab.c"
6526
0
    break;
6527
6528
0
  case 472:
6529
0
#line 2249 "cfg.y"
6530
0
                                     { mk_action2( (yyval.action), CASE_T,
6531
0
                          NUMBER_ST,
6532
0
                          ACTIONS_ST,
6533
0
                          (void*)(yyvsp[-1].intval),
6534
0
                          NULL);
6535
0
              }
6536
0
#line 6537 "cfg.tab.c"
6537
0
    break;
6538
6539
0
  case 473:
6540
0
#line 2255 "cfg.y"
6541
0
                                                { mk_action2( (yyval.action), CASE_T,
6542
0
                          STR_ST,
6543
0
                          ACTIONS_ST,
6544
0
                          (void*)(yyvsp[-2].strval),
6545
0
                          (yyvsp[0].action));
6546
0
                      }
6547
0
#line 6548 "cfg.tab.c"
6548
0
    break;
6549
6550
0
  case 474:
6551
0
#line 2261 "cfg.y"
6552
0
                                    { mk_action2( (yyval.action), CASE_T,
6553
0
                          STR_ST,
6554
0
                          ACTIONS_ST,
6555
0
                          (void*)(yyvsp[-1].strval),
6556
0
                          NULL);
6557
0
              }
6558
0
#line 6559 "cfg.tab.c"
6559
0
    break;
6560
6561
0
  case 475:
6562
0
#line 2269 "cfg.y"
6563
0
                                       { mk_action1( (yyval.action), DEFAULT_T,
6564
0
                          ACTIONS_ST, (yyvsp[0].action));
6565
0
                  }
6566
0
#line 6567 "cfg.tab.c"
6567
0
    break;
6568
6569
0
  case 476:
6570
0
#line 2272 "cfg.y"
6571
0
                                { mk_action1( (yyval.action), DEFAULT_T, ACTIONS_ST, NULL); }
6572
0
#line 6573 "cfg.tab.c"
6573
0
    break;
6574
6575
0
  case 477:
6576
0
#line 2275 "cfg.y"
6577
0
                   {
6578
0
                    elems[1].type = STR_ST;
6579
0
                    elems[1].u.data = (yyvsp[0].strval);
6580
0
                    (yyval.intval)=1;
6581
0
                    }
6582
0
#line 6583 "cfg.tab.c"
6583
0
    break;
6584
6585
0
  case 478:
6586
0
#line 2280 "cfg.y"
6587
0
                                          {
6588
0
                    if ((yyvsp[-2].intval)+1>=MAX_ACTION_ELEMS) {
6589
0
                      yyerror("too many arguments "
6590
0
                        "in function\n");
6591
0
                      (yyval.intval)=0;
6592
0
                    }
6593
0
                    elems[(yyvsp[-2].intval)+1].type = STR_ST;
6594
0
                    elems[(yyvsp[-2].intval)+1].u.data = (yyvsp[0].strval);
6595
0
                    (yyval.intval)=(yyvsp[-2].intval)+1;
6596
0
                    }
6597
0
#line 6598 "cfg.tab.c"
6598
0
    break;
6599
6600
0
  case 479:
6601
0
#line 2290 "cfg.y"
6602
0
                        {
6603
0
                    elems[1].type = NULLV_ST;
6604
0
                    elems[1].u.data = NULL;
6605
0
                    elems[2].type = NULLV_ST;
6606
0
                    elems[2].u.data = NULL;
6607
0
                    (yyval.intval)=2;
6608
0
                    }
6609
0
#line 6610 "cfg.tab.c"
6610
0
    break;
6611
6612
0
  case 480:
6613
0
#line 2297 "cfg.y"
6614
0
                               {
6615
0
                    elems[1].type = NULLV_ST;
6616
0
                    elems[1].u.data = NULL;
6617
0
                    elems[2].type = STR_ST;
6618
0
                    elems[2].u.data = (yyvsp[0].strval);
6619
0
                    (yyval.intval)=2;
6620
0
                    }
6621
0
#line 6622 "cfg.tab.c"
6622
0
    break;
6623
6624
0
  case 481:
6625
0
#line 2304 "cfg.y"
6626
0
                                   {
6627
0
                    if ((yyvsp[-1].intval)+1>=MAX_ACTION_ELEMS) {
6628
0
                      yyerror("too many arguments "
6629
0
                        "in function\n");
6630
0
                      (yyval.intval)=0;
6631
0
                    }
6632
0
                    elems[(yyvsp[-1].intval)+1].type = NULLV_ST;
6633
0
                    elems[(yyvsp[-1].intval)+1].u.data = NULL;
6634
0
                    (yyval.intval)=(yyvsp[-1].intval)+1;
6635
0
                    }
6636
0
#line 6637 "cfg.tab.c"
6637
0
    break;
6638
6639
0
  case 482:
6640
0
#line 2314 "cfg.y"
6641
0
                          {
6642
0
                    elems[1].type = NUMBER_ST;
6643
0
                    elems[1].u.number = (yyvsp[0].intval);
6644
0
                    (yyval.intval)=1;
6645
0
                    }
6646
0
#line 6647 "cfg.tab.c"
6647
0
    break;
6648
6649
0
  case 483:
6650
0
#line 2319 "cfg.y"
6651
0
                                {
6652
0
                    elems[1].type = NULLV_ST;
6653
0
                    elems[1].u.data = NULL;
6654
0
                    elems[2].type = NUMBER_ST;
6655
0
                    elems[2].u.number = (yyvsp[0].intval);
6656
0
                    (yyval.intval)=2;
6657
0
                    }
6658
0
#line 6659 "cfg.tab.c"
6659
0
    break;
6660
6661
0
  case 484:
6662
0
#line 2326 "cfg.y"
6663
0
                                           {
6664
0
                    if ((yyvsp[-2].intval)+1>=MAX_ACTION_ELEMS) {
6665
0
                      yyerror("too many arguments "
6666
0
                        "in function\n");
6667
0
                      (yyval.intval)=0;
6668
0
                    }
6669
0
                    elems[(yyvsp[-2].intval)+1].type = NUMBER_ST;
6670
0
                    elems[(yyvsp[-2].intval)+1].u.number = (yyvsp[0].intval);
6671
0
                    (yyval.intval)=(yyvsp[-2].intval)+1;
6672
0
                    }
6673
0
#line 6674 "cfg.tab.c"
6674
0
    break;
6675
6676
0
  case 485:
6677
0
#line 2336 "cfg.y"
6678
0
                             {
6679
0
                    elems[1].type = SCRIPTVAR_ST;
6680
0
                    elems[1].u.data = (yyvsp[0].specval);
6681
0
                    (yyval.intval)=1;
6682
0
                    }
6683
0
#line 6684 "cfg.tab.c"
6684
0
    break;
6685
6686
0
  case 486:
6687
0
#line 2341 "cfg.y"
6688
0
                                   {
6689
0
                    elems[1].type = NULLV_ST;
6690
0
                    elems[1].u.data = NULL;
6691
0
                    elems[2].type = SCRIPTVAR_ST;
6692
0
                    elems[2].u.data = (yyvsp[0].specval);
6693
0
                    (yyval.intval)=2;
6694
0
                    }
6695
0
#line 6696 "cfg.tab.c"
6696
0
    break;
6697
6698
0
  case 487:
6699
0
#line 2348 "cfg.y"
6700
0
                                              {
6701
0
                    if ((yyvsp[-2].intval)+1>=MAX_ACTION_ELEMS) {
6702
0
                      yyerror("too many arguments "
6703
0
                        "in function\n");
6704
0
                      (yyval.intval)=0;
6705
0
                    }
6706
0
                    elems[(yyvsp[-2].intval)+1].type = SCRIPTVAR_ST;
6707
0
                    elems[(yyvsp[-2].intval)+1].u.data = (yyvsp[0].specval);
6708
0
                    (yyval.intval)=(yyvsp[-2].intval)+1;
6709
0
                    }
6710
0
#line 6711 "cfg.tab.c"
6711
0
    break;
6712
6713
0
  case 488:
6714
0
#line 2360 "cfg.y"
6715
0
                    {
6716
0
            route_elems[0].type = STRING_ST;
6717
0
            route_elems[0].u.string = (yyvsp[0].strval);
6718
0
            (yyval.intval)=1;
6719
0
      }
6720
0
#line 6721 "cfg.tab.c"
6721
0
    break;
6722
6723
0
  case 489:
6724
0
#line 2365 "cfg.y"
6725
0
                          {
6726
0
            route_elems[0].type = NUMBER_ST;
6727
0
            route_elems[0].u.number = (long)(yyvsp[0].intval);
6728
0
            (yyval.intval)=1;
6729
0
      }
6730
0
#line 6731 "cfg.tab.c"
6731
0
    break;
6732
6733
0
  case 490:
6734
0
#line 2370 "cfg.y"
6735
0
                        {
6736
0
            route_elems[0].type = NULLV_ST;
6737
0
            route_elems[0].u.data = 0;
6738
0
            (yyval.intval)=1;
6739
0
      }
6740
0
#line 6741 "cfg.tab.c"
6741
0
    break;
6742
6743
0
  case 491:
6744
0
#line 2375 "cfg.y"
6745
0
                             {
6746
0
            route_elems[0].type = SCRIPTVAR_ST;
6747
0
            route_elems[0].u.data = (yyvsp[0].specval);
6748
0
            (yyval.intval)=1;
6749
0
      }
6750
0
#line 6751 "cfg.tab.c"
6751
0
    break;
6752
6753
0
  case 492:
6754
0
#line 2380 "cfg.y"
6755
0
                                           {
6756
0
            if ((yyvsp[-2].intval)>=MAX_ACTION_ELEMS) {
6757
0
              yyerror("too many arguments in function\n");
6758
0
              (yyval.intval)=-1;
6759
0
            } else {
6760
0
              route_elems[(yyvsp[-2].intval)].type = STRING_ST;
6761
0
              route_elems[(yyvsp[-2].intval)].u.data = (yyvsp[0].strval);
6762
0
              (yyval.intval)=(yyvsp[-2].intval)+1;
6763
0
            }
6764
0
      }
6765
0
#line 6766 "cfg.tab.c"
6766
0
    break;
6767
6768
0
  case 493:
6769
0
#line 2390 "cfg.y"
6770
0
                                            {
6771
0
            if ((yyvsp[-2].intval)>=MAX_ACTION_ELEMS) {
6772
0
              yyerror("too many arguments in function\n");
6773
0
              (yyval.intval)=-1;
6774
0
            } else {
6775
0
              route_elems[(yyvsp[-2].intval)].type = NUMBER_ST;
6776
0
              route_elems[(yyvsp[-2].intval)].u.data = (void*)(long)(yyvsp[0].intval);
6777
0
              (yyval.intval)=(yyvsp[-2].intval)+1;
6778
0
            }
6779
0
      }
6780
0
#line 6781 "cfg.tab.c"
6781
0
    break;
6782
6783
0
  case 494:
6784
0
#line 2400 "cfg.y"
6785
0
                                               {
6786
0
            if ((yyvsp[-2].intval)+1>=MAX_ACTION_ELEMS) {
6787
0
              yyerror("too many arguments in function\n");
6788
0
              (yyval.intval)=-1;
6789
0
            } else {
6790
0
              route_elems[(yyvsp[-2].intval)].type = SCRIPTVAR_ST;
6791
0
              route_elems[(yyvsp[-2].intval)].u.data = (yyvsp[0].specval);
6792
0
              (yyval.intval)=(yyvsp[-2].intval)+1;
6793
0
            }
6794
0
      }
6795
0
#line 6796 "cfg.tab.c"
6796
0
    break;
6797
6798
0
  case 495:
6799
0
#line 2410 "cfg.y"
6800
0
                                          {
6801
0
            if ((yyvsp[-2].intval)+1>=MAX_ACTION_ELEMS) {
6802
0
              yyerror("too many arguments in function\n");
6803
0
              (yyval.intval)=-1;
6804
0
            } else {
6805
0
              route_elems[(yyvsp[-2].intval)].type = NULLV_ST;
6806
0
              route_elems[(yyvsp[-2].intval)].u.data = 0;
6807
0
              (yyval.intval)=(yyvsp[-2].intval)+1;
6808
0
            }
6809
0
      }
6810
0
#line 6811 "cfg.tab.c"
6811
0
    break;
6812
6813
0
  case 496:
6814
0
#line 2422 "cfg.y"
6815
0
                             {
6816
0
        const acmd_export_t* acmd_tmp=find_mod_acmd_export_t((yyvsp[-2].strval));
6817
0
        if (acmd_tmp==0){
6818
0
          yyerrorf("unknown async command <%s>, "
6819
0
            "missing loadmodule?", (yyvsp[-2].strval));
6820
0
          (yyval.action)=0;
6821
0
        }else{
6822
0
          if (check_acmd_call_params(acmd_tmp,elems,0)<0) {
6823
0
            yyerrorf("too few parameters "
6824
0
              "for command <%s>\n", (yyvsp[-2].strval));
6825
0
            (yyval.action)=0;
6826
0
          } else {
6827
0
            elems[0].type = ACMD_ST;
6828
0
            elems[0].u.data_const = acmd_tmp;
6829
0
            mk_action_((yyval.action), AMODULE_T, 1, elems);
6830
0
          }
6831
0
        }
6832
0
      }
6833
0
#line 6834 "cfg.tab.c"
6834
0
    break;
6835
6836
0
  case 497:
6837
0
#line 2440 "cfg.y"
6838
0
                                                      {
6839
0
        const acmd_export_t* acmd_tmp=find_mod_acmd_export_t((yyvsp[-3].strval));
6840
0
        if (acmd_tmp==0){
6841
0
          yyerrorf("unknown async command <%s>, "
6842
0
            "missing loadmodule?", (yyvsp[-3].strval));
6843
0
          (yyval.action)=0;
6844
0
        }else{
6845
0
          rc = check_acmd_call_params(acmd_tmp,elems,(yyvsp[-1].intval));
6846
0
          switch (rc) {
6847
0
          case -1:
6848
0
            yyerrorf("too few parameters "
6849
0
              "for async command <%s>\n", (yyvsp[-3].strval));
6850
0
            (yyval.action)=0;
6851
0
            break;
6852
0
          case -2:
6853
0
            yyerrorf("too many parameters "
6854
0
              "for async command <%s>\n", (yyvsp[-3].strval));
6855
0
            (yyval.action)=0;
6856
0
            break;
6857
0
          case -3:
6858
0
            yyerrorf("mandatory parameter "
6859
0
              " omitted for async command <%s>\n", (yyvsp[-3].strval));
6860
0
            (yyval.action)=0;
6861
0
            break;
6862
0
          default:
6863
0
            elems[0].type = ACMD_ST;
6864
0
            elems[0].u.data_const = acmd_tmp;
6865
0
            mk_action_((yyval.action), AMODULE_T, (yyvsp[-1].intval)+1, elems);
6866
0
          }
6867
0
        }
6868
0
      }
6869
0
#line 6870 "cfg.tab.c"
6870
0
    break;
6871
6872
0
  case 498:
6873
0
#line 2471 "cfg.y"
6874
0
                                                 {
6875
0
        (yyval.action)=0;
6876
0
        yyerrorf("bad arguments for command <%s>", (yyvsp[-3].strval));
6877
0
      }
6878
0
#line 6879 "cfg.tab.c"
6879
0
    break;
6880
6881
0
  case 499:
6882
0
#line 2475 "cfg.y"
6883
0
                                   {
6884
0
        (yyval.action)=0;
6885
0
        yyerrorf("bare word <%s> found, command calls need '()'", (yyvsp[-1].strval));
6886
0
      }
6887
0
#line 6888 "cfg.tab.c"
6888
0
    break;
6889
6890
0
  case 500:
6891
0
#line 2481 "cfg.y"
6892
0
                         { sr_tmp.rspec = (yyvsp[0].specval); (yyval.return_params) = mk_script_return(SCRIPT_ROUTE_RET_VAR);}
6893
0
#line 6894 "cfg.tab.c"
6894
0
    break;
6895
6896
0
  case 501:
6897
0
#line 2482 "cfg.y"
6898
0
                          { sr_tmp.rint = (yyvsp[0].intval); (yyval.return_params) = mk_script_return(SCRIPT_ROUTE_RET_INT);}
6899
0
#line 6900 "cfg.tab.c"
6900
0
    break;
6901
6902
0
  case 502:
6903
0
#line 2483 "cfg.y"
6904
0
                         { sr_tmp.rstr.s = (yyvsp[0].strval); sr_tmp.rstr.len = strlen((yyvsp[0].strval));
6905
0
          (yyval.return_params) = mk_script_return(SCRIPT_ROUTE_RET_STR);}
6906
0
#line 6907 "cfg.tab.c"
6907
0
    break;
6908
6909
0
  case 503:
6910
0
#line 2485 "cfg.y"
6911
0
                        { (yyval.return_params) = mk_script_return(SCRIPT_ROUTE_RET_NULL);}
6912
0
#line 6913 "cfg.tab.c"
6913
0
    break;
6914
6915
0
  case 504:
6916
0
#line 2488 "cfg.y"
6917
0
                            { (yyval.return_params) = (yyvsp[0].return_params); }
6918
0
#line 6919 "cfg.tab.c"
6919
0
    break;
6920
6921
0
  case 505:
6922
0
#line 2489 "cfg.y"
6923
0
                                                   { (yyvsp[0].return_params)->next = (yyvsp[-2].return_params); (yyval.return_params) = (yyvsp[0].return_params); }
6924
0
#line 6925 "cfg.tab.c"
6925
0
    break;
6926
6927
0
  case 506:
6928
0
#line 2492 "cfg.y"
6929
0
                                                 {
6930
0
      mk_action2( (yyval.action), ASSERT_T, EXPR_ST, STRING_ST, (yyvsp[-3].expr), (yyvsp[-1].strval));
6931
0
      }
6932
0
#line 6933 "cfg.tab.c"
6933
0
    break;
6934
6935
0
  case 507:
6936
0
#line 2495 "cfg.y"
6937
0
                                                 {
6938
0
      mk_action2( (yyval.action), ASSERT_T, EXPR_ST, STRING_ST, (yyvsp[-1].expr), NULL);
6939
0
      }
6940
0
#line 6941 "cfg.tab.c"
6941
0
    break;
6942
6943
0
  case 508:
6944
0
#line 2498 "cfg.y"
6945
0
                                                 {mk_action0( (yyval.action), DROP_T); }
6946
0
#line 6947 "cfg.tab.c"
6947
0
    break;
6948
6949
0
  case 509:
6950
0
#line 2499 "cfg.y"
6951
0
                                     {mk_action0( (yyval.action), DROP_T); }
6952
0
#line 6953 "cfg.tab.c"
6953
0
    break;
6954
6955
0
  case 510:
6956
0
#line 2500 "cfg.y"
6957
0
                                                 {mk_action0( (yyval.action), EXIT_T); }
6958
0
#line 6959 "cfg.tab.c"
6959
0
    break;
6960
6961
0
  case 511:
6962
0
#line 2501 "cfg.y"
6963
0
                                     {mk_action0( (yyval.action), EXIT_T); }
6964
0
#line 6965 "cfg.tab.c"
6965
0
    break;
6966
6967
0
  case 512:
6968
0
#line 2503 "cfg.y"
6969
0
                                                         {mk_action2( (yyval.action), RETURN_T,
6970
0
                SCRIPTVAR_ST,
6971
0
                NULLV_ST,
6972
0
                (void*)(yyvsp[0].specval),
6973
0
                NULL); }
6974
0
#line 6975 "cfg.tab.c"
6975
0
    break;
6976
6977
0
  case 513:
6978
0
#line 2509 "cfg.y"
6979
0
                                                         {mk_action2( (yyval.action), RETURN_T,
6980
0
                SCRIPTVAR_ST,
6981
0
                NULLV_ST,
6982
0
                (void*)(yyvsp[-1].specval),
6983
0
                NULL); }
6984
0
#line 6985 "cfg.tab.c"
6985
0
    break;
6986
6987
0
  case 514:
6988
0
#line 2515 "cfg.y"
6989
0
                                                         {mk_action2( (yyval.action), RETURN_T,
6990
0
                SCRIPTVAR_ST,
6991
0
                EXPR_ST,
6992
0
                (void*)(yyvsp[-3].specval),
6993
0
                (yyvsp[-1].return_params)); }
6994
0
#line 6995 "cfg.tab.c"
6995
0
    break;
6996
6997
0
  case 515:
6998
0
#line 2521 "cfg.y"
6999
0
                                                         {mk_action2( (yyval.action), RETURN_T,
7000
0
                NUMBER_ST,
7001
0
                NULLV_ST,
7002
0
                (void*)(yyvsp[0].intval),
7003
0
                NULL); }
7004
0
#line 7005 "cfg.tab.c"
7005
0
    break;
7006
7007
0
  case 516:
7008
0
#line 2527 "cfg.y"
7009
0
                                                         {mk_action2( (yyval.action), RETURN_T,
7010
0
                NUMBER_ST,
7011
0
                NULLV_ST,
7012
0
                (void*)(yyvsp[-1].intval),
7013
0
                NULL); }
7014
0
#line 7015 "cfg.tab.c"
7015
0
    break;
7016
7017
0
  case 517:
7018
0
#line 2533 "cfg.y"
7019
0
                                                         {mk_action2( (yyval.action), RETURN_T,
7020
0
                NUMBER_ST,
7021
0
                EXPR_ST,
7022
0
                (void*)(yyvsp[-3].intval),
7023
0
                (yyvsp[-1].return_params)); }
7024
0
#line 7025 "cfg.tab.c"
7025
0
    break;
7026
7027
0
  case 518:
7028
0
#line 2539 "cfg.y"
7029
0
                                                         {mk_action2( (yyval.action), RETURN_T,
7030
0
                NUMBER_ST,
7031
0
                NULLV_ST,
7032
0
                (void*)1,
7033
0
                NULL); }
7034
0
#line 7035 "cfg.tab.c"
7035
0
    break;
7036
7037
0
  case 519:
7038
0
#line 2545 "cfg.y"
7039
0
                                                         {mk_action2( (yyval.action), RETURN_T,
7040
0
                NUMBER_ST,
7041
0
                EXPR_ST,
7042
0
                (void*)1,
7043
0
                (yyvsp[-1].return_params)); }
7044
0
#line 7045 "cfg.tab.c"
7045
0
    break;
7046
7047
0
  case 520:
7048
0
#line 2550 "cfg.y"
7049
0
                                                 {mk_action2( (yyval.action), RETURN_T,
7050
0
                NUMBER_ST,
7051
0
                NULLV_ST,
7052
0
                (void*)1,
7053
0
                NULL); }
7054
0
#line 7055 "cfg.tab.c"
7055
0
    break;
7056
7057
0
  case 521:
7058
0
#line 2555 "cfg.y"
7059
0
                                                {mk_action2( (yyval.action), LOG_T, NUMBER_ST,
7060
0
                          STRING_ST,(void*)4,(yyvsp[-1].strval));
7061
0
                  }
7062
0
#line 7063 "cfg.tab.c"
7063
0
    break;
7064
7065
0
  case 522:
7066
0
#line 2558 "cfg.y"
7067
0
                                                                {mk_action2( (yyval.action), LOG_T,
7068
0
                                NUMBER_ST,
7069
0
                                STRING_ST,
7070
0
                                (void*)(yyvsp[-3].intval),
7071
0
                                (yyvsp[-1].strval));
7072
0
                        }
7073
0
#line 7074 "cfg.tab.c"
7074
0
    break;
7075
7076
0
  case 523:
7077
0
#line 2564 "cfg.y"
7078
0
                                { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
7079
0
#line 7080 "cfg.tab.c"
7080
0
    break;
7081
7082
0
  case 524:
7083
0
#line 2565 "cfg.y"
7084
0
                                              { (yyval.action)=0; yyerror("bad log"
7085
0
                  "argument"); }
7086
0
#line 7087 "cfg.tab.c"
7087
0
    break;
7088
7089
0
  case 525:
7090
0
#line 2567 "cfg.y"
7091
0
                                                          {mk_action2( (yyval.action), ERROR_T,
7092
0
                                STRING_ST,
7093
0
                                STRING_ST,
7094
0
                                (yyvsp[-3].strval),
7095
0
                                (yyvsp[-1].strval));
7096
0
                          }
7097
0
#line 7098 "cfg.tab.c"
7098
0
    break;
7099
7100
0
  case 526:
7101
0
#line 2573 "cfg.y"
7102
0
                              { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
7103
0
#line 7104 "cfg.tab.c"
7104
0
    break;
7105
7106
0
  case 527:
7107
0
#line 2574 "cfg.y"
7108
0
                                            { (yyval.action)=0; yyerror("bad error"
7109
0
                            "argument"); }
7110
0
#line 7111 "cfg.tab.c"
7111
0
    break;
7112
7113
0
  case 528:
7114
0
#line 2576 "cfg.y"
7115
0
                                                        {
7116
0
            mk_action2( (yyval.action), ROUTE_T, (yyvsp[-1].intval), 0, rn_tmp.data, 0);
7117
0
          }
7118
0
#line 7119 "cfg.tab.c"
7119
0
    break;
7120
7121
0
  case 529:
7122
0
#line 2580 "cfg.y"
7123
0
                                                                        {
7124
0
            if ((yyvsp[-1].intval) <= 0) yyerror("too many route parameters");
7125
7126
            /* duplicate the list */
7127
0
            a_tmp = pkg_malloc((yyvsp[-1].intval) * sizeof(action_elem_t));
7128
0
            if (!a_tmp) {
7129
0
              yyerror("no more pkg memory");
7130
0
              YYABORT;
7131
0
            }
7132
0
            memcpy(a_tmp, route_elems, (yyvsp[-1].intval)*sizeof(action_elem_t));
7133
7134
0
            mk_action3( (yyval.action), ROUTE_T, (yyvsp[-3].intval),  /* route idx */
7135
0
              NUMBER_ST,          /* number of params */
7136
0
              SCRIPTVAR_ST,       /* parameters */
7137
0
              rn_tmp.data,
7138
0
              (void*)(long)(yyvsp[-1].intval),
7139
0
              (void*)a_tmp);
7140
0
          }
7141
0
#line 7142 "cfg.tab.c"
7142
0
    break;
7143
7144
0
  case 530:
7145
0
#line 2599 "cfg.y"
7146
0
                              { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
7147
0
#line 7148 "cfg.tab.c"
7148
0
    break;
7149
7150
0
  case 531:
7151
0
#line 2600 "cfg.y"
7152
0
                                            { (yyval.action)=0; yyerror("bad route"
7153
0
            "argument"); }
7154
0
#line 7155 "cfg.tab.c"
7155
0
    break;
7156
7157
0
  case 532:
7158
0
#line 2602 "cfg.y"
7159
0
                                        {
7160
0
                const cmd_export_t* cmd_tmp=find_cmd_export_t((yyvsp[-2].strval), rt);
7161
0
                if (cmd_tmp==0){
7162
0
                  if (find_cmd_export_t((yyvsp[-2].strval), 0)) {
7163
0
                    yyerrorf("Command <%s> cannot be "
7164
0
                      "used in the block\n", (yyvsp[-2].strval));
7165
0
                  } else {
7166
0
                    yyerrorf("unknown command <%s>, "
7167
0
                      "missing loadmodule?", (yyvsp[-2].strval));
7168
0
                  }
7169
0
                  (yyval.action)=0;
7170
0
                }else{
7171
0
                  if (check_cmd_call_params(cmd_tmp,elems,0)<0) {
7172
0
                    yyerrorf("too few parameters "
7173
0
                      "for command <%s>\n", (yyvsp[-2].strval));
7174
0
                    (yyval.action)=0;
7175
0
                  } else {
7176
0
                    elems[0].type = CMD_ST;
7177
0
                    elems[0].u.data_const = cmd_tmp;
7178
0
                    mk_action_((yyval.action), CMD_T, 1, elems);
7179
0
                  }
7180
0
                }
7181
0
              }
7182
0
#line 7183 "cfg.tab.c"
7183
0
    break;
7184
7185
0
  case 533:
7186
0
#line 2625 "cfg.y"
7187
0
                                                {
7188
0
                const cmd_export_t* cmd_tmp=find_cmd_export_t((yyvsp[-3].strval), rt);
7189
0
                if (cmd_tmp==0){
7190
0
                  if (find_cmd_export_t((yyvsp[-3].strval), 0)) {
7191
0
                    yyerrorf("Command <%s> cannot be "
7192
0
                      "used in the block\n", (yyvsp[-3].strval));
7193
0
                  } else {
7194
0
                    yyerrorf("unknown command <%s>, "
7195
0
                      "missing loadmodule?", (yyvsp[-3].strval));
7196
0
                  }
7197
0
                  (yyval.action)=0;
7198
0
                }else{
7199
0
                  rc = check_cmd_call_params(cmd_tmp,elems,(yyvsp[-1].intval));
7200
0
                  switch (rc) {
7201
0
                  case -1:
7202
0
                    yyerrorf("too few parameters "
7203
0
                      "for command <%s>\n", (yyvsp[-3].strval));
7204
0
                    (yyval.action)=0;
7205
0
                    break;
7206
0
                  case -2:
7207
0
                    yyerrorf("too many parameters "
7208
0
                      "for command <%s>\n", (yyvsp[-3].strval));
7209
0
                    (yyval.action)=0;
7210
0
                    break;
7211
0
                  case -3:
7212
0
                    yyerrorf("mandatory parameter "
7213
0
                      "omitted for command <%s>\n", (yyvsp[-3].strval));
7214
0
                    (yyval.action)=0;
7215
0
                    break;
7216
0
                  default:
7217
0
                    elems[0].type = CMD_ST;
7218
0
                    elems[0].u.data_const = cmd_tmp;
7219
0
                    mk_action_((yyval.action), CMD_T, (yyvsp[-1].intval)+1, elems);
7220
0
                  }
7221
0
                }
7222
0
              }
7223
0
#line 7224 "cfg.tab.c"
7224
0
    break;
7225
7226
0
  case 534:
7227
0
#line 2661 "cfg.y"
7228
0
                                         { (yyval.action)=0; yyerrorf("bad arguments for "
7229
0
                        "command <%s>", (yyvsp[-3].strval)); }
7230
0
#line 7231 "cfg.tab.c"
7231
0
    break;
7232
7233
0
  case 535:
7234
0
#line 2663 "cfg.y"
7235
0
                           { (yyval.action)=0;
7236
0
      yyerrorf("bare word <%s> found, command calls need '()'", (yyvsp[-1].strval));
7237
0
      }
7238
0
#line 7239 "cfg.tab.c"
7239
0
    break;
7240
7241
0
  case 536:
7242
0
#line 2666 "cfg.y"
7243
0
                                            {
7244
0
        mk_action1((yyval.action), XDBG_T, STR_ST, (yyvsp[-1].strval)); }
7245
0
#line 7246 "cfg.tab.c"
7246
0
    break;
7247
7248
0
  case 537:
7249
0
#line 2668 "cfg.y"
7250
0
                                                   {
7251
0
        mk_action1((yyval.action), XDBG_T, STR_ST, (yyvsp[-1].strval)); }
7252
0
#line 7253 "cfg.tab.c"
7253
0
    break;
7254
7255
0
  case 538:
7256
0
#line 2670 "cfg.y"
7257
0
                                            {
7258
0
        mk_action1((yyval.action), XLOG_T, STR_ST, (yyvsp[-1].strval)); }
7259
0
#line 7260 "cfg.tab.c"
7260
0
    break;
7261
7262
0
  case 539:
7263
0
#line 2672 "cfg.y"
7264
0
                                                   {
7265
0
        mk_action1((yyval.action), XLOG_T, STR_ST, (yyvsp[-1].strval)); }
7266
0
#line 7267 "cfg.tab.c"
7267
0
    break;
7268
7269
0
  case 540:
7270
0
#line 2674 "cfg.y"
7271
0
                                                         {
7272
0
        mk_action2((yyval.action), XLOG_T, STR_ST, STR_ST, (yyvsp[-3].strval), (yyvsp[-1].strval)); }
7273
0
#line 7274 "cfg.tab.c"
7274
0
    break;
7275
7276
0
  case 541:
7277
0
#line 2676 "cfg.y"
7278
0
                                                                {
7279
0
        mk_action2((yyval.action), XLOG_T, STR_ST, STR_ST, (yyvsp[-3].strval), (yyvsp[-1].strval)); }
7280
0
#line 7281 "cfg.tab.c"
7281
0
    break;
7282
7283
0
  case 542:
7284
0
#line 2678 "cfg.y"
7285
0
                                                                        {
7286
0
        rt_ref = ref_script_route_by_name( (yyvsp[-1].strval), sroutes->request,
7287
0
          RT_NO, REQUEST_ROUTE, 0);
7288
0
        if (rt_ref==NULL) yyerror("fail to create route reference");
7289
0
        mk_action2((yyval.action), ASYNC_T, ACTIONS_ST, ROUTE_REF_ST,
7290
0
            (yyvsp[-3].action), (void*)rt_ref);
7291
0
        }
7292
0
#line 7293 "cfg.tab.c"
7293
0
    break;
7294
7295
0
  case 543:
7296
0
#line 2685 "cfg.y"
7297
0
                                                                                     {
7298
0
        rt_ref = ref_script_route_by_name( (yyvsp[-3].strval), sroutes->request,
7299
0
          RT_NO, REQUEST_ROUTE, 0);
7300
0
        if (rt_ref==NULL) yyerror("fail to create route reference");
7301
0
        mk_action3((yyval.action), ASYNC_T, ACTIONS_ST, ROUTE_REF_ST, NUMBER_ST,
7302
0
            (yyvsp[-5].action), (void*)rt_ref, (void*)(long)(yyvsp[-1].intval));
7303
0
        }
7304
0
#line 7305 "cfg.tab.c"
7305
0
    break;
7306
7307
0
  case 544:
7308
0
#line 2692 "cfg.y"
7309
0
                                                                                      {
7310
0
        rt_ref = ref_script_route_by_name( (yyvsp[-3].strval), sroutes->request,
7311
0
          RT_NO, REQUEST_ROUTE, 0);
7312
0
        if (rt_ref==NULL) yyerror("fail to create route reference");
7313
0
        mk_action3((yyval.action), LAUNCH_T, ACTIONS_ST, ROUTE_REF_ST, STRING_ST,
7314
0
            (yyvsp[-5].action), (void*)rt_ref, (yyvsp[-1].strval));
7315
0
        }
7316
0
#line 7317 "cfg.tab.c"
7317
0
    break;
7318
7319
0
  case 545:
7320
0
#line 2699 "cfg.y"
7321
0
                                                                         {
7322
0
        rt_ref = ref_script_route_by_name( (yyvsp[-1].strval), sroutes->request,
7323
0
          RT_NO, REQUEST_ROUTE, 0);
7324
0
        if (rt_ref==NULL) yyerror("fail to create route reference");
7325
0
        mk_action2((yyval.action), LAUNCH_T, ACTIONS_ST, ROUTE_REF_ST,
7326
0
            (yyvsp[-3].action), (void*)rt_ref);
7327
0
        }
7328
0
#line 7329 "cfg.tab.c"
7329
0
    break;
7330
7331
0
  case 546:
7332
0
#line 2706 "cfg.y"
7333
0
                                                        {
7334
0
        mk_action2((yyval.action), LAUNCH_T, ACTIONS_ST, ROUTE_REF_ST,
7335
0
            (yyvsp[-1].action), (void*)NULL);
7336
0
        }
7337
0
#line 7338 "cfg.tab.c"
7338
0
    break;
7339
7340
7341
0
#line 7342 "cfg.tab.c"
7342
7343
0
      default: break;
7344
0
    }
7345
  /* User semantic actions sometimes alter yychar, and that requires
7346
     that yytoken be updated with the new translation.  We take the
7347
     approach of translating immediately before every use of yytoken.
7348
     One alternative is translating here after every semantic action,
7349
     but that translation would be missed if the semantic action invokes
7350
     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
7351
     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
7352
     incorrect destructor might then be invoked immediately.  In the
7353
     case of YYERROR or YYBACKUP, subsequent parser actions might lead
7354
     to an incorrect destructor call or verbose syntax error message
7355
     before the lookahead is translated.  */
7356
0
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
7357
7358
0
  YYPOPSTACK (yylen);
7359
0
  yylen = 0;
7360
0
  YY_STACK_PRINT (yyss, yyssp);
7361
7362
0
  *++yyvsp = yyval;
7363
7364
  /* Now 'shift' the result of the reduction.  Determine what state
7365
     that goes to, based on the state we popped back to and the rule
7366
     number reduced by.  */
7367
0
  {
7368
0
    const int yylhs = yyr1[yyn] - YYNTOKENS;
7369
0
    const int yyi = yypgoto[yylhs] + *yyssp;
7370
0
    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
7371
0
               ? yytable[yyi]
7372
0
               : yydefgoto[yylhs]);
7373
0
  }
7374
7375
0
  goto yynewstate;
7376
7377
7378
/*--------------------------------------.
7379
| yyerrlab -- here on detecting error.  |
7380
`--------------------------------------*/
7381
0
yyerrlab:
7382
  /* Make sure we have latest lookahead translation.  See comments at
7383
     user semantic actions for why this is necessary.  */
7384
0
  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
7385
7386
  /* If not already recovering from an error, report this error.  */
7387
0
  if (!yyerrstatus)
7388
0
    {
7389
0
      ++yynerrs;
7390
0
#if ! YYERROR_VERBOSE
7391
0
      yyerror (YY_("syntax error"));
7392
#else
7393
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
7394
                                        yyssp, yytoken)
7395
      {
7396
        char const *yymsgp = YY_("syntax error");
7397
        int yysyntax_error_status;
7398
        yysyntax_error_status = YYSYNTAX_ERROR;
7399
        if (yysyntax_error_status == 0)
7400
          yymsgp = yymsg;
7401
        else if (yysyntax_error_status == 1)
7402
          {
7403
            if (yymsg != yymsgbuf)
7404
              YYSTACK_FREE (yymsg);
7405
            yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
7406
            if (!yymsg)
7407
              {
7408
                yymsg = yymsgbuf;
7409
                yymsg_alloc = sizeof yymsgbuf;
7410
                yysyntax_error_status = 2;
7411
              }
7412
            else
7413
              {
7414
                yysyntax_error_status = YYSYNTAX_ERROR;
7415
                yymsgp = yymsg;
7416
              }
7417
          }
7418
        yyerror (yymsgp);
7419
        if (yysyntax_error_status == 2)
7420
          goto yyexhaustedlab;
7421
      }
7422
# undef YYSYNTAX_ERROR
7423
#endif
7424
0
    }
7425
7426
7427
7428
0
  if (yyerrstatus == 3)
7429
0
    {
7430
      /* If just tried and failed to reuse lookahead token after an
7431
         error, discard it.  */
7432
7433
0
      if (yychar <= YYEOF)
7434
0
        {
7435
          /* Return failure if at end of input.  */
7436
0
          if (yychar == YYEOF)
7437
0
            YYABORT;
7438
0
        }
7439
0
      else
7440
0
        {
7441
0
          yydestruct ("Error: discarding",
7442
0
                      yytoken, &yylval);
7443
0
          yychar = YYEMPTY;
7444
0
        }
7445
0
    }
7446
7447
  /* Else will try to reuse lookahead token after shifting the error
7448
     token.  */
7449
0
  goto yyerrlab1;
7450
7451
7452
/*---------------------------------------------------.
7453
| yyerrorlab -- error raised explicitly by YYERROR.  |
7454
`---------------------------------------------------*/
7455
0
yyerrorlab:
7456
  /* Pacify compilers when the user code never invokes YYERROR and the
7457
     label yyerrorlab therefore never appears in user code.  */
7458
0
  if (0)
7459
0
    YYERROR;
7460
7461
  /* Do not reclaim the symbols of the rule whose action triggered
7462
     this YYERROR.  */
7463
0
  YYPOPSTACK (yylen);
7464
0
  yylen = 0;
7465
0
  YY_STACK_PRINT (yyss, yyssp);
7466
0
  yystate = *yyssp;
7467
0
  goto yyerrlab1;
7468
7469
7470
/*-------------------------------------------------------------.
7471
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
7472
`-------------------------------------------------------------*/
7473
0
yyerrlab1:
7474
0
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
7475
7476
0
  for (;;)
7477
0
    {
7478
0
      yyn = yypact[yystate];
7479
0
      if (!yypact_value_is_default (yyn))
7480
0
        {
7481
0
          yyn += YYTERROR;
7482
0
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
7483
0
            {
7484
0
              yyn = yytable[yyn];
7485
0
              if (0 < yyn)
7486
0
                break;
7487
0
            }
7488
0
        }
7489
7490
      /* Pop the current state because it cannot handle the error token.  */
7491
0
      if (yyssp == yyss)
7492
0
        YYABORT;
7493
7494
7495
0
      yydestruct ("Error: popping",
7496
0
                  yystos[yystate], yyvsp);
7497
0
      YYPOPSTACK (1);
7498
0
      yystate = *yyssp;
7499
0
      YY_STACK_PRINT (yyss, yyssp);
7500
0
    }
7501
7502
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7503
0
  *++yyvsp = yylval;
7504
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
7505
7506
7507
  /* Shift the error token.  */
7508
0
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
7509
7510
0
  yystate = yyn;
7511
0
  goto yynewstate;
7512
7513
7514
/*-------------------------------------.
7515
| yyacceptlab -- YYACCEPT comes here.  |
7516
`-------------------------------------*/
7517
0
yyacceptlab:
7518
0
  yyresult = 0;
7519
0
  goto yyreturn;
7520
7521
7522
/*-----------------------------------.
7523
| yyabortlab -- YYABORT comes here.  |
7524
`-----------------------------------*/
7525
0
yyabortlab:
7526
0
  yyresult = 1;
7527
0
  goto yyreturn;
7528
7529
7530
0
#if !defined yyoverflow || YYERROR_VERBOSE
7531
/*-------------------------------------------------.
7532
| yyexhaustedlab -- memory exhaustion comes here.  |
7533
`-------------------------------------------------*/
7534
0
yyexhaustedlab:
7535
0
  yyerror (YY_("memory exhausted"));
7536
0
  yyresult = 2;
7537
  /* Fall through.  */
7538
0
#endif
7539
7540
7541
/*-----------------------------------------------------.
7542
| yyreturn -- parsing is finished, return the result.  |
7543
`-----------------------------------------------------*/
7544
0
yyreturn:
7545
0
  if (yychar != YYEMPTY)
7546
0
    {
7547
      /* Make sure we have latest lookahead translation.  See comments at
7548
         user semantic actions for why this is necessary.  */
7549
0
      yytoken = YYTRANSLATE (yychar);
7550
0
      yydestruct ("Cleanup: discarding lookahead",
7551
0
                  yytoken, &yylval);
7552
0
    }
7553
  /* Do not reclaim the symbols of the rule whose action triggered
7554
     this YYABORT or YYACCEPT.  */
7555
0
  YYPOPSTACK (yylen);
7556
0
  YY_STACK_PRINT (yyss, yyssp);
7557
0
  while (yyssp != yyss)
7558
0
    {
7559
0
      yydestruct ("Cleanup: popping",
7560
0
                  yystos[+*yyssp], yyvsp);
7561
0
      YYPOPSTACK (1);
7562
0
    }
7563
0
#ifndef yyoverflow
7564
0
  if (yyss != yyssa)
7565
0
    YYSTACK_FREE (yyss);
7566
0
#endif
7567
#if YYERROR_VERBOSE
7568
  if (yymsg != yymsgbuf)
7569
    YYSTACK_FREE (yymsg);
7570
#endif
7571
0
  return yyresult;
7572
0
}
7573
#line 2713 "cfg.y"
7574
7575
7576
static inline void ALLOW_UNUSED warn(char* s)
7577
0
{
7578
0
  LM_WARN("warning in config file %s, line %d, column %d-%d: %s\n",
7579
0
      get_cfg_file_name, line, startcolumn, column, s);
7580
0
}
7581
7582
static void yyerror(char* s)
7583
0
{
7584
0
  cfg_dump_backtrace();
7585
0
  LM_CRIT("parse error in %s:%d:%d-%d: %s\n",
7586
0
      get_cfg_file_name, line, startcolumn, column, s);
7587
0
  _cfg_dump_context(get_cfg_file_name, line, startcolumn, column, 1);
7588
0
  cfg_errors++;
7589
0
}
7590
7591
0
#define ERROR_MAXLEN 1024
7592
static void yyerrorf(char *fmt, ...)
7593
0
{
7594
0
  char *tmp = pkg_malloc(ERROR_MAXLEN);
7595
0
  va_list ap;
7596
0
  va_start(ap, fmt);
7597
7598
0
  vsnprintf(tmp, ERROR_MAXLEN, fmt, ap);
7599
0
  yyerror(tmp);
7600
7601
0
  pkg_free(tmp);
7602
0
  va_end(ap);
7603
0
}
7604
7605
7606
static struct socket_id* mk_listen_id(char* host, enum sip_protos proto,
7607
                                  int port)
7608
0
{
7609
0
  struct socket_id* l;
7610
0
  l=pkg_malloc(sizeof(struct socket_id));
7611
0
  if (l==0){
7612
0
    LM_CRIT("cfg. parser: out of memory.\n");
7613
0
  }else{
7614
0
    memset(l, 0, sizeof(*l));
7615
0
    l->name     = host;
7616
0
    l->proto    = proto;
7617
0
    l->port     = port;
7618
0
  }
7619
7620
0
  return l;
7621
0
}
7622
7623
static struct socket_id* mk_bond_id(char *bond_name,
7624
    struct socket_bond_elem *bond_list)
7625
0
{
7626
0
  struct socket_id *sid;
7627
7628
0
  sid = mk_listen_id( bond_name, PROTO_BOND, 0);
7629
0
  if (!sid) {
7630
0
    LM_CRIT("cfg. parser: out of memory.\n");
7631
0
    return NULL;
7632
0
  }
7633
0
  sid->bond_list = bond_list;
7634
0
  add_bond_socket_id(sid);
7635
0
  return sid;
7636
0
}
7637
7638
static struct socket_id* mk_listen_id_range(char* host, enum sip_protos proto, struct port_range *pr)
7639
0
{
7640
0
  int port;
7641
0
  struct socket_id *sid, *first_sid = NULL;
7642
0
  if (!pr)
7643
0
    return mk_listen_id(host, proto, 0);
7644
0
  while (pr) {
7645
0
    for (port = pr->max; port >= pr->min; port--) {
7646
0
      sid = mk_listen_id(host, proto, port);
7647
0
      if (!sid)
7648
0
        return first_sid;
7649
0
      sid->next = first_sid;
7650
0
      first_sid = sid;
7651
0
    }
7652
0
    pr = pr->next;
7653
0
  }
7654
0
  return first_sid;
7655
0
}
7656
7657
static struct socket_bond_elem *new_socket_bond_elem(char *name)
7658
0
{
7659
0
  struct socket_bond_elem *elem = pkg_malloc(sizeof *elem);
7660
7661
0
  if (!elem) {
7662
0
    LM_CRIT("cfg. parser: out of memory.\n");
7663
0
    pkg_free(name);
7664
0
    return NULL;
7665
0
  }
7666
0
  elem->name = name;
7667
0
  elem->next = NULL;
7668
0
  return elem;
7669
0
}
7670
7671
static void fill_socket_id(struct listen_param *param, struct socket_id *s)
7672
0
{
7673
0
  int warn;
7674
0
  struct socket_id *socket;
7675
0
  while (s) {
7676
0
    s->flags |= param->flags;
7677
0
    s->workers = param->workers;
7678
0
    s->tos = param->tos;
7679
0
    s->auto_scaling_profile = param->auto_scaling_profile;
7680
0
    s->tag = param->tag;
7681
0
    if (param->socket) {
7682
0
      socket = param->socket;
7683
0
      param->socket = param->socket->next;
7684
0
      set_listen_id_adv(s, socket->name, socket->port);
7685
0
      pkg_free(socket);
7686
0
    } else if (!warn) {
7687
0
      LM_WARN("inconsistent port range with advertised ports - skipping advertised\n");
7688
0
      warn = 1;
7689
0
    }
7690
0
    s = s->next;
7691
0
  }
7692
  /* free remaining sockets, if any */
7693
0
  while (param->socket) {
7694
0
    if (!warn) {
7695
0
      LM_WARN("inconsistent port range with advertised ports - too many adverised\n");
7696
0
      warn = 1;
7697
0
    }
7698
0
    socket = param->socket->next;
7699
0
    param->socket = param->socket->next;
7700
0
    pkg_free(socket);
7701
0
  }
7702
0
}
7703
7704
static struct multi_str *new_string(char *s)
7705
0
{
7706
0
  struct multi_str *ms = pkg_malloc(sizeof(struct multi_str));
7707
0
  if (!ms) {
7708
0
    LM_CRIT("cfg. parser: out of memory.\n");
7709
0
  }else{
7710
0
    ms->s    = s;
7711
0
    ms->next = NULL;
7712
0
  }
7713
0
  return ms;
7714
0
}
7715
7716
static struct port_range* mk_port_range(int min, int max)
7717
0
{
7718
0
  struct port_range *pr = pkg_malloc(sizeof *pr);
7719
0
  if (pr) {
7720
0
    memset(pr, 0, sizeof *pr);
7721
0
    pr->min = min;
7722
0
    pr->max = max;
7723
0
    pr->next = NULL;
7724
0
  } else {
7725
0
    LM_CRIT("cfg. parser: out of memory.\n");
7726
0
  }
7727
0
  return pr;
7728
0
}
7729
7730
static struct socket_id* set_listen_id_adv(struct socket_id* sock,
7731
                      char *adv_name,
7732
                      int adv_port)
7733
0
{
7734
0
  sock->adv_name=adv_name;
7735
0
  sock->adv_port=adv_port;
7736
0
  return sock;
7737
0
}
7738
7739
static int parse_ipnet(char *in, int len, struct net **ipnet)
7740
0
{
7741
0
  char *p = NULL;
7742
0
  str ip_s, mask_s;
7743
0
  struct ip_addr *ip = NULL, *mask = NULL, *ip_tmp;
7744
0
  int af;
7745
0
  unsigned int bitlen;
7746
7747
0
  p = q_memchr(in, '.', len);
7748
0
  if (p)
7749
0
    af = AF_INET;
7750
0
  else if (q_memchr(in, ':', len)) {
7751
0
    af = AF_INET6;
7752
0
  } else {
7753
0
    LM_ERR("Not an IP");
7754
0
    return -1;
7755
0
  }
7756
7757
0
  p = q_memchr(in, '/', len);
7758
0
  if (!p) {
7759
0
    LM_ERR("No netmask\n");
7760
0
    return -1;
7761
0
  }
7762
0
  ip_s.s = in;
7763
0
  ip_s.len = p - in;
7764
7765
0
  mask_s.s = p + 1;
7766
0
  mask_s.len = len - ip_s.len - 1;
7767
0
  if (!mask_s.s || mask_s.len == 0) {
7768
0
    LM_ERR("Empty netmask\n");
7769
0
    return -1;
7770
0
  }
7771
7772
0
  ip_tmp = (af == AF_INET) ? str2ip(&ip_s) : str2ip6(&ip_s);
7773
0
  if (!ip_tmp) {
7774
0
    LM_ERR("Invalid IP\n");
7775
0
    return -1;
7776
0
  }
7777
0
  ip = pkg_malloc(sizeof *ip);
7778
0
  if (!ip) {
7779
0
    LM_CRIT("No more pkg memory\n");
7780
0
    return -1;
7781
0
  }
7782
0
  memcpy(ip, ip_tmp, sizeof *ip);
7783
7784
0
  p = (af == AF_INET) ? q_memchr(p, '.', len-(p-in)+1) : q_memchr(p, ':', len-(p-in)+1);
7785
0
  if (p) {
7786
0
    ip_tmp = (af == AF_INET) ? str2ip(&mask_s) : str2ip6(&mask_s);
7787
0
    if (!ip_tmp) {
7788
0
      LM_ERR("Invalid netmask\n");
7789
0
      return -1;
7790
0
    }
7791
0
    mask = pkg_malloc(sizeof *mask);
7792
0
    if (!mask) {
7793
0
      LM_CRIT("No more pkg memory\n");
7794
0
      return -1;
7795
0
    }
7796
0
    memcpy(mask, ip_tmp, sizeof *mask);
7797
7798
0
    *ipnet = mk_net(ip, mask);
7799
0
  } else {
7800
0
    if (str2int(&mask_s, &bitlen) < 0) {
7801
0
      LM_ERR("Invalid netmask bitlen\n");
7802
0
      return -1;
7803
0
    }
7804
7805
0
    *ipnet = mk_net_bitlen(ip, bitlen);
7806
0
  }
7807
7808
0
  pkg_free(ip);
7809
0
  pkg_free(mask);
7810
7811
0
  if (*ipnet == NULL)
7812
0
      return -1;
7813
7814
0
  return 0;
7815
0
}