Coverage Report

Created: 2026-10-17 06:23

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