Coverage Report

Created: 2026-03-11 06:49

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