Coverage Report

Created: 2025-07-18 06:32

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