ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 9776
Committed: Thu Dec 3 15:51:08 2020 UTC (4 years, 8 months ago) by michael
Content type: text/x-csrc
File size: 206529 byte(s)
Log Message:
- Re-create autogenerated parser files

File Contents

# User Rev Content
1 michael 9751 /* A Bison parser, made by GNU Bison 3.5.1. */
2 michael 913
3 michael 1133 /* Bison implementation for Yacc-like parsers in C
4 michael 2473
5 michael 9751 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
6 michael 8866 Inc.
7 michael 2473
8 michael 967 This program is free software: you can redistribute it and/or modify
9 michael 913 it under the terms of the GNU General Public License as published by
10 michael 967 the Free Software Foundation, either version 3 of the License, or
11     (at your option) any later version.
12 michael 2473
13 michael 913 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 michael 2473
18 michael 913 You should have received a copy of the GNU General Public License
19 michael 967 along with this program. If not, see <http://www.gnu.org/licenses/>. */
20 michael 913
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 michael 2473
31 michael 913 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 michael 8760 /* Undocumented macros, especially those whose name start with YY_,
45     are private implementation details. Do not rely on them. */
46    
47 michael 913 /* Identify Bison output. */
48     #define YYBISON 1
49    
50     /* Bison version. */
51 michael 9751 #define YYBISON_VERSION "3.5.1"
52 michael 913
53     /* Skeleton name. */
54     #define YYSKELETON_NAME "yacc.c"
55    
56     /* Pure parsers. */
57     #define YYPURE 0
58    
59 michael 967 /* Push parsers. */
60     #define YYPUSH 0
61    
62     /* Pull parsers. */
63     #define YYPULL 1
64    
65 michael 913
66    
67    
68 michael 8760 /* First part of user prologue. */
69 michael 9751 #line 28 "conf_parser.y"
70 michael 967
71    
72 michael 1009 #include "config.h"
73 michael 967 #include "stdinc.h"
74     #include "ircd.h"
75     #include "list.h"
76 michael 8459 #include "parse.h"
77 michael 1309 #include "conf.h"
78 michael 1632 #include "conf_class.h"
79 michael 7213 #include "conf_cluster.h"
80 michael 7308 #include "conf_gecos.h"
81 michael 4545 #include "conf_pseudo.h"
82 michael 7238 #include "conf_resv.h"
83 michael 7252 #include "conf_service.h"
84 michael 7213 #include "conf_shared.h"
85 michael 967 #include "event.h"
86 michael 6162 #include "id.h"
87 michael 1309 #include "log.h"
88 michael 967 #include "irc_string.h"
89     #include "memory.h"
90     #include "modules.h"
91 michael 3347 #include "server.h"
92 michael 967 #include "hostmask.h"
93     #include "listener.h"
94 michael 3347 #include "user.h"
95 michael 2150 #include "motd.h"
96 michael 967
97 michael 1329 int yylex(void);
98    
99 michael 1646 static struct
100 michael 967 {
101 michael 3473 struct
102     {
103 michael 1646 dlink_list list;
104     } mask,
105     leaf,
106     hub;
107 michael 967
108 michael 3473 struct
109     {
110 michael 1646 char buf[IRCD_BUFSIZE];
111     } name,
112 michael 4545 nick,
113 michael 1646 user,
114     host,
115     addr,
116 michael 1647 bind,
117 michael 1646 file,
118 michael 1647 ciph,
119 michael 2228 cert,
120 michael 1647 rpass,
121     spass,
122 michael 5557 whois,
123 michael 4545 class,
124     target,
125     prepend,
126     command;
127 michael 1646
128 michael 3473 struct
129     {
130 michael 1646 unsigned int value;
131     } flags,
132     modes,
133 michael 1647 size,
134     type,
135 michael 1646 port,
136 michael 9098 timeout,
137 michael 1647 aftype,
138 michael 1646 ping_freq,
139 michael 8497 max_perip_local,
140     max_perip_global,
141 michael 1646 con_freq,
142 michael 1783 min_idle,
143     max_idle,
144 michael 1646 max_total,
145     max_sendq,
146     max_recvq,
147 michael 3933 max_channels,
148 michael 1646 cidr_bitlen_ipv4,
149     cidr_bitlen_ipv6,
150     number_per_cidr;
151     } block_state;
152    
153 michael 967 static void
154 michael 1646 reset_block_state(void)
155 michael 967 {
156 michael 9127 dlink_node *node, *node_next;
157     dlink_list *tab[] = { &block_state.mask.list,
158     &block_state.leaf.list, &block_state.hub.list, NULL };
159 michael 1646
160 michael 9127 for (dlink_list **list = tab; *list; ++list)
161 michael 1646 {
162 michael 9127 DLINK_FOREACH_SAFE(node, node_next, (*list)->head)
163     {
164     xfree(node->data);
165     dlinkDelete(node, *list);
166     free_dlink_node(node);
167     }
168 michael 1646 }
169    
170     memset(&block_state, 0, sizeof(block_state));
171 michael 967 }
172    
173    
174 michael 9751 #line 175 "conf_parser.c"
175    
176     # ifndef YY_CAST
177     # ifdef __cplusplus
178     # define YY_CAST(Type, Val) static_cast<Type> (Val)
179     # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
180     # else
181     # define YY_CAST(Type, Val) ((Type) (Val))
182     # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
183     # endif
184     # endif
185 michael 2570 # ifndef YY_NULLPTR
186 michael 8760 # if defined __cplusplus
187     # if 201103L <= __cplusplus
188     # define YY_NULLPTR nullptr
189     # else
190     # define YY_NULLPTR 0
191     # endif
192 michael 1425 # else
193 michael 8760 # define YY_NULLPTR ((void*)0)
194 michael 1425 # endif
195     # endif
196    
197 michael 967 /* Enabling verbose error messages. */
198     #ifdef YYERROR_VERBOSE
199     # undef YYERROR_VERBOSE
200     # define YYERROR_VERBOSE 1
201     #else
202     # define YYERROR_VERBOSE 0
203     #endif
204    
205 michael 9751 /* Use api.header.include to #include this header
206     instead of duplicating it here. */
207 michael 1736 #ifndef YY_YY_CONF_PARSER_H_INCLUDED
208     # define YY_YY_CONF_PARSER_H_INCLUDED
209 michael 2473 /* Debug traces. */
210 michael 1466 #ifndef YYDEBUG
211     # define YYDEBUG 0
212 michael 967 #endif
213 michael 1466 #if YYDEBUG
214     extern int yydebug;
215     #endif
216 michael 967
217 michael 2473 /* Token type. */
218 michael 913 #ifndef YYTOKENTYPE
219     # define YYTOKENTYPE
220 michael 2473 enum yytokentype
221     {
222     ACCEPT_PASSWORD = 258,
223     ADMIN = 259,
224     AFTYPE = 260,
225     ANTI_NICK_FLOOD = 261,
226     ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
227     AUTOCONN = 263,
228 michael 4313 AWAY_COUNT = 264,
229     AWAY_TIME = 265,
230 michael 9776 BOT = 266,
231     BYTES = 267,
232     KBYTES = 268,
233     MBYTES = 269,
234     CALLER_ID_WAIT = 270,
235     CAN_FLOOD = 271,
236     CHANNEL = 272,
237     CIDR_BITLEN_IPV4 = 273,
238     CIDR_BITLEN_IPV6 = 274,
239     CLASS = 275,
240     CLIENT = 276,
241     CLOSE = 277,
242     CONNECT = 278,
243     CONNECTFREQ = 279,
244     CYCLE_ON_HOST_CHANGE = 280,
245     DEFAULT_FLOODCOUNT = 281,
246     DEFAULT_FLOODTIME = 282,
247     DEFAULT_JOIN_FLOOD_COUNT = 283,
248     DEFAULT_JOIN_FLOOD_TIME = 284,
249     DEFAULT_MAX_CLIENTS = 285,
250     DEFER = 286,
251     DENY = 287,
252     DESCRIPTION = 288,
253     DIE = 289,
254     DISABLE_AUTH = 290,
255     DISABLE_FAKE_CHANNELS = 291,
256     DISABLE_REMOTE_COMMANDS = 292,
257     DLINE_MIN_CIDR = 293,
258     DLINE_MIN_CIDR6 = 294,
259     DOTS_IN_IDENT = 295,
260     EMAIL = 296,
261     ENABLE_EXTBANS = 297,
262     ENCRYPTED = 298,
263     EXCEED_LIMIT = 299,
264     EXEMPT = 300,
265     EXPIRATION = 301,
266     FAILED_OPER_NOTICE = 302,
267     FLATTEN_LINKS = 303,
268     FLATTEN_LINKS_DELAY = 304,
269     FLATTEN_LINKS_FILE = 305,
270     GECOS = 306,
271     GENERAL = 307,
272     HIDDEN = 308,
273     HIDDEN_NAME = 309,
274     HIDE_CHANS = 310,
275     HIDE_IDLE = 311,
276     HIDE_IDLE_FROM_OPERS = 312,
277     HIDE_SERVER_IPS = 313,
278     HIDE_SERVERS = 314,
279     HIDE_SERVICES = 315,
280     HOST = 316,
281     HUB = 317,
282     HUB_MASK = 318,
283     INVISIBLE_ON_CONNECT = 319,
284     INVITE_CLIENT_COUNT = 320,
285     INVITE_CLIENT_TIME = 321,
286     INVITE_DELAY_CHANNEL = 322,
287     INVITE_EXPIRE_TIME = 323,
288     IP = 324,
289     IRCD_AUTH = 325,
290     IRCD_FLAGS = 326,
291     IRCD_SID = 327,
292     JOIN = 328,
293     KILL = 329,
294     KILL_CHASE_TIME_LIMIT = 330,
295     KLINE = 331,
296     KLINE_EXEMPT = 332,
297     KLINE_MIN_CIDR = 333,
298     KLINE_MIN_CIDR6 = 334,
299     KNOCK_CLIENT_COUNT = 335,
300     KNOCK_CLIENT_TIME = 336,
301     KNOCK_DELAY_CHANNEL = 337,
302     LEAF_MASK = 338,
303     LISTEN = 339,
304     MASK = 340,
305     MAX_ACCEPT = 341,
306     MAX_BANS = 342,
307     MAX_BANS_LARGE = 343,
308     MAX_CHANNELS = 344,
309     MAX_IDLE = 345,
310     MAX_INVITES = 346,
311     MAX_MONITOR = 347,
312     MAX_NICK_CHANGES = 348,
313     MAX_NICK_LENGTH = 349,
314     MAX_NICK_TIME = 350,
315     MAX_NUMBER = 351,
316     MAX_TARGETS = 352,
317     MAX_TOPIC_LENGTH = 353,
318     MIN_IDLE = 354,
319     MIN_NONWILDCARD = 355,
320     MIN_NONWILDCARD_SIMPLE = 356,
321     MODULE = 357,
322     MODULES = 358,
323     MOTD = 359,
324     NAME = 360,
325     NEED_IDENT = 361,
326     NEED_PASSWORD = 362,
327     NETWORK_DESCRIPTION = 363,
328     NETWORK_NAME = 364,
329     NICK = 365,
330     NO_OPER_FLOOD = 366,
331     NO_TILDE = 367,
332     NUMBER_PER_CIDR = 368,
333     NUMBER_PER_IP_GLOBAL = 369,
334     NUMBER_PER_IP_LOCAL = 370,
335     OPER_ONLY_UMODES = 371,
336     OPER_UMODES = 372,
337     OPERATOR = 373,
338     OPERS_BYPASS_CALLERID = 374,
339     PACE_WAIT = 375,
340     PACE_WAIT_SIMPLE = 376,
341     PASSWORD = 377,
342     PATH = 378,
343     PING_COOKIE = 379,
344     PING_TIME = 380,
345     PORT = 381,
346     RANDOM_IDLE = 382,
347     REASON = 383,
348     REDIRPORT = 384,
349     REDIRSERV = 385,
350     REHASH = 386,
351     REMOTE = 387,
352     REMOTEBAN = 388,
353     RESV = 389,
354     RESV_EXEMPT = 390,
355     RSA_PRIVATE_KEY_FILE = 391,
356     SECONDS = 392,
357     MINUTES = 393,
358     HOURS = 394,
359     DAYS = 395,
360     WEEKS = 396,
361     MONTHS = 397,
362     YEARS = 398,
363     SEND_PASSWORD = 399,
364     SENDQ = 400,
365     SERVERHIDE = 401,
366     SERVERINFO = 402,
367     SHORT_MOTD = 403,
368     SPOOF = 404,
369     SQUIT = 405,
370     STATS_E_DISABLED = 406,
371     STATS_I_OPER_ONLY = 407,
372     STATS_K_OPER_ONLY = 408,
373     STATS_M_OPER_ONLY = 409,
374     STATS_O_OPER_ONLY = 410,
375     STATS_P_OPER_ONLY = 411,
376     STATS_U_OPER_ONLY = 412,
377     T_ALL = 413,
378     T_BIND = 414,
379     T_CALLERID = 415,
380     T_CCONN = 416,
381     T_COMMAND = 417,
382     T_CLUSTER = 418,
383     T_DEAF = 419,
384     T_DEBUG = 420,
385     T_DLINE = 421,
386     T_EXTERNAL = 422,
387     T_FARCONNECT = 423,
388     T_FILE = 424,
389     T_FLOOD = 425,
390     T_GLOBOPS = 426,
391     T_INVISIBLE = 427,
392     T_IPV4 = 428,
393     T_IPV6 = 429,
394     T_LOCOPS = 430,
395     T_LOG = 431,
396     T_NCHANGE = 432,
397     T_NONONREG = 433,
398     T_OPME = 434,
399     T_PREPEND = 435,
400     T_PSEUDO = 436,
401     T_RECVQ = 437,
402     T_REJ = 438,
403     T_RESTART = 439,
404     T_SERVER = 440,
405     T_SERVICE = 441,
406     T_SERVNOTICE = 442,
407     T_SET = 443,
408     T_SHARED = 444,
409     T_SIZE = 445,
410     T_SKILL = 446,
411     T_SOFTCALLERID = 447,
412     T_SPY = 448,
413     T_TARGET = 449,
414     T_TLS = 450,
415     T_UMODES = 451,
416     T_UNDLINE = 452,
417     T_UNLIMITED = 453,
418     T_UNRESV = 454,
419     T_UNXLINE = 455,
420     T_WALLOP = 456,
421     T_WALLOPS = 457,
422     T_WEBIRC = 458,
423     TBOOL = 459,
424     THROTTLE_COUNT = 460,
425     THROTTLE_TIME = 461,
426     TIMEOUT = 462,
427     TLS_CERTIFICATE_FILE = 463,
428     TLS_CERTIFICATE_FINGERPRINT = 464,
429     TLS_CIPHER_LIST = 465,
430     TLS_CIPHER_SUITES = 466,
431     TLS_CONNECTION_REQUIRED = 467,
432     TLS_DH_PARAM_FILE = 468,
433     TLS_MESSAGE_DIGEST_ALGORITHM = 469,
434     TLS_SUPPORTED_GROUPS = 470,
435     TS_MAX_DELTA = 471,
436     TS_WARN_DELTA = 472,
437     TWODOTS = 473,
438     TYPE = 474,
439     UNKLINE = 475,
440     USE_LOGGING = 476,
441     USER = 477,
442     VHOST = 478,
443     VHOST6 = 479,
444     WARN_NO_CONNECT_BLOCK = 480,
445     WHOIS = 481,
446     WHOWAS_HISTORY_LENGTH = 482,
447     XLINE = 483,
448     XLINE_EXEMPT = 484,
449     QSTRING = 485,
450     NUMBER = 486
451 michael 2473 };
452 michael 913 #endif
453     /* Tokens. */
454     #define ACCEPT_PASSWORD 258
455 michael 1520 #define ADMIN 259
456     #define AFTYPE 260
457     #define ANTI_NICK_FLOOD 261
458     #define ANTI_SPAM_EXIT_MESSAGE_TIME 262
459     #define AUTOCONN 263
460 michael 4313 #define AWAY_COUNT 264
461     #define AWAY_TIME 265
462 michael 9776 #define BOT 266
463     #define BYTES 267
464     #define KBYTES 268
465     #define MBYTES 269
466     #define CALLER_ID_WAIT 270
467     #define CAN_FLOOD 271
468     #define CHANNEL 272
469     #define CIDR_BITLEN_IPV4 273
470     #define CIDR_BITLEN_IPV6 274
471     #define CLASS 275
472     #define CLIENT 276
473     #define CLOSE 277
474     #define CONNECT 278
475     #define CONNECTFREQ 279
476     #define CYCLE_ON_HOST_CHANGE 280
477     #define DEFAULT_FLOODCOUNT 281
478     #define DEFAULT_FLOODTIME 282
479     #define DEFAULT_JOIN_FLOOD_COUNT 283
480     #define DEFAULT_JOIN_FLOOD_TIME 284
481     #define DEFAULT_MAX_CLIENTS 285
482     #define DEFER 286
483     #define DENY 287
484     #define DESCRIPTION 288
485     #define DIE 289
486     #define DISABLE_AUTH 290
487     #define DISABLE_FAKE_CHANNELS 291
488     #define DISABLE_REMOTE_COMMANDS 292
489     #define DLINE_MIN_CIDR 293
490     #define DLINE_MIN_CIDR6 294
491     #define DOTS_IN_IDENT 295
492     #define EMAIL 296
493     #define ENABLE_EXTBANS 297
494     #define ENCRYPTED 298
495     #define EXCEED_LIMIT 299
496     #define EXEMPT 300
497     #define EXPIRATION 301
498     #define FAILED_OPER_NOTICE 302
499     #define FLATTEN_LINKS 303
500     #define FLATTEN_LINKS_DELAY 304
501     #define FLATTEN_LINKS_FILE 305
502     #define GECOS 306
503     #define GENERAL 307
504     #define HIDDEN 308
505     #define HIDDEN_NAME 309
506     #define HIDE_CHANS 310
507     #define HIDE_IDLE 311
508     #define HIDE_IDLE_FROM_OPERS 312
509     #define HIDE_SERVER_IPS 313
510     #define HIDE_SERVERS 314
511     #define HIDE_SERVICES 315
512     #define HOST 316
513     #define HUB 317
514     #define HUB_MASK 318
515     #define INVISIBLE_ON_CONNECT 319
516     #define INVITE_CLIENT_COUNT 320
517     #define INVITE_CLIENT_TIME 321
518     #define INVITE_DELAY_CHANNEL 322
519     #define INVITE_EXPIRE_TIME 323
520     #define IP 324
521     #define IRCD_AUTH 325
522     #define IRCD_FLAGS 326
523     #define IRCD_SID 327
524     #define JOIN 328
525     #define KILL 329
526     #define KILL_CHASE_TIME_LIMIT 330
527     #define KLINE 331
528     #define KLINE_EXEMPT 332
529     #define KLINE_MIN_CIDR 333
530     #define KLINE_MIN_CIDR6 334
531     #define KNOCK_CLIENT_COUNT 335
532     #define KNOCK_CLIENT_TIME 336
533     #define KNOCK_DELAY_CHANNEL 337
534     #define LEAF_MASK 338
535     #define LISTEN 339
536     #define MASK 340
537     #define MAX_ACCEPT 341
538     #define MAX_BANS 342
539     #define MAX_BANS_LARGE 343
540     #define MAX_CHANNELS 344
541     #define MAX_IDLE 345
542     #define MAX_INVITES 346
543     #define MAX_MONITOR 347
544     #define MAX_NICK_CHANGES 348
545     #define MAX_NICK_LENGTH 349
546     #define MAX_NICK_TIME 350
547     #define MAX_NUMBER 351
548     #define MAX_TARGETS 352
549     #define MAX_TOPIC_LENGTH 353
550     #define MIN_IDLE 354
551     #define MIN_NONWILDCARD 355
552     #define MIN_NONWILDCARD_SIMPLE 356
553     #define MODULE 357
554     #define MODULES 358
555     #define MOTD 359
556     #define NAME 360
557     #define NEED_IDENT 361
558     #define NEED_PASSWORD 362
559     #define NETWORK_DESCRIPTION 363
560     #define NETWORK_NAME 364
561     #define NICK 365
562     #define NO_OPER_FLOOD 366
563     #define NO_TILDE 367
564     #define NUMBER_PER_CIDR 368
565     #define NUMBER_PER_IP_GLOBAL 369
566     #define NUMBER_PER_IP_LOCAL 370
567     #define OPER_ONLY_UMODES 371
568     #define OPER_UMODES 372
569     #define OPERATOR 373
570     #define OPERS_BYPASS_CALLERID 374
571     #define PACE_WAIT 375
572     #define PACE_WAIT_SIMPLE 376
573     #define PASSWORD 377
574     #define PATH 378
575     #define PING_COOKIE 379
576     #define PING_TIME 380
577     #define PORT 381
578     #define RANDOM_IDLE 382
579     #define REASON 383
580     #define REDIRPORT 384
581     #define REDIRSERV 385
582     #define REHASH 386
583     #define REMOTE 387
584     #define REMOTEBAN 388
585     #define RESV 389
586     #define RESV_EXEMPT 390
587     #define RSA_PRIVATE_KEY_FILE 391
588     #define SECONDS 392
589     #define MINUTES 393
590     #define HOURS 394
591     #define DAYS 395
592     #define WEEKS 396
593     #define MONTHS 397
594     #define YEARS 398
595     #define SEND_PASSWORD 399
596     #define SENDQ 400
597     #define SERVERHIDE 401
598     #define SERVERINFO 402
599     #define SHORT_MOTD 403
600     #define SPOOF 404
601     #define SQUIT 405
602     #define STATS_E_DISABLED 406
603     #define STATS_I_OPER_ONLY 407
604     #define STATS_K_OPER_ONLY 408
605     #define STATS_M_OPER_ONLY 409
606     #define STATS_O_OPER_ONLY 410
607     #define STATS_P_OPER_ONLY 411
608     #define STATS_U_OPER_ONLY 412
609     #define T_ALL 413
610     #define T_BIND 414
611     #define T_CALLERID 415
612     #define T_CCONN 416
613     #define T_COMMAND 417
614     #define T_CLUSTER 418
615     #define T_DEAF 419
616     #define T_DEBUG 420
617     #define T_DLINE 421
618     #define T_EXTERNAL 422
619     #define T_FARCONNECT 423
620     #define T_FILE 424
621     #define T_FLOOD 425
622     #define T_GLOBOPS 426
623     #define T_INVISIBLE 427
624     #define T_IPV4 428
625     #define T_IPV6 429
626     #define T_LOCOPS 430
627     #define T_LOG 431
628     #define T_NCHANGE 432
629     #define T_NONONREG 433
630     #define T_OPME 434
631     #define T_PREPEND 435
632     #define T_PSEUDO 436
633     #define T_RECVQ 437
634     #define T_REJ 438
635     #define T_RESTART 439
636     #define T_SERVER 440
637     #define T_SERVICE 441
638     #define T_SERVNOTICE 442
639     #define T_SET 443
640     #define T_SHARED 444
641     #define T_SIZE 445
642     #define T_SKILL 446
643     #define T_SOFTCALLERID 447
644     #define T_SPY 448
645     #define T_TARGET 449
646     #define T_TLS 450
647     #define T_UMODES 451
648     #define T_UNDLINE 452
649     #define T_UNLIMITED 453
650     #define T_UNRESV 454
651     #define T_UNXLINE 455
652     #define T_WALLOP 456
653     #define T_WALLOPS 457
654     #define T_WEBIRC 458
655     #define TBOOL 459
656     #define THROTTLE_COUNT 460
657     #define THROTTLE_TIME 461
658     #define TIMEOUT 462
659     #define TLS_CERTIFICATE_FILE 463
660     #define TLS_CERTIFICATE_FINGERPRINT 464
661     #define TLS_CIPHER_LIST 465
662     #define TLS_CIPHER_SUITES 466
663     #define TLS_CONNECTION_REQUIRED 467
664     #define TLS_DH_PARAM_FILE 468
665     #define TLS_MESSAGE_DIGEST_ALGORITHM 469
666     #define TLS_SUPPORTED_GROUPS 470
667     #define TS_MAX_DELTA 471
668     #define TS_WARN_DELTA 472
669     #define TWODOTS 473
670     #define TYPE 474
671     #define UNKLINE 475
672     #define USE_LOGGING 476
673     #define USER 477
674     #define VHOST 478
675     #define VHOST6 479
676     #define WARN_NO_CONNECT_BLOCK 480
677     #define WHOIS 481
678     #define WHOWAS_HISTORY_LENGTH 482
679     #define XLINE 483
680     #define XLINE_EXEMPT 484
681     #define QSTRING 485
682     #define NUMBER 486
683 michael 913
684 michael 2473 /* Value type. */
685 michael 967 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
686 michael 2473 union YYSTYPE
687 michael 913 {
688 michael 9751 #line 133 "conf_parser.y"
689 michael 913
690 michael 967 int number;
691     char *string;
692 michael 913
693 michael 9776 #line 694 "conf_parser.c"
694 michael 9751
695 michael 2473 };
696 michael 5398 typedef union YYSTYPE YYSTYPE;
697 michael 967 # define YYSTYPE_IS_TRIVIAL 1
698 michael 913 # define YYSTYPE_IS_DECLARED 1
699     #endif
700    
701 michael 2473
702 michael 1466 extern YYSTYPE yylval;
703 michael 913
704 michael 1466 int yyparse (void);
705    
706 michael 1736 #endif /* !YY_YY_CONF_PARSER_H_INCLUDED */
707 michael 1466
708 michael 913
709    
710     #ifdef short
711     # undef short
712     #endif
713    
714 michael 9751 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
715     <limits.h> and (if available) <stdint.h> are included
716     so that the code can choose integer types of a good width. */
717    
718     #ifndef __PTRDIFF_MAX__
719     # include <limits.h> /* INFRINGES ON USER NAME SPACE */
720     # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
721     # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
722     # define YY_STDINT_H
723     # endif
724 michael 913 #endif
725    
726 michael 9751 /* Narrow types that promote to a signed type and that can represent a
727     signed or unsigned integer of at least N bits. In tables they can
728     save space and decrease cache pressure. Promoting to a signed type
729     helps avoid bugs in integer arithmetic. */
730    
731     #ifdef __INT_LEAST8_MAX__
732     typedef __INT_LEAST8_TYPE__ yytype_int8;
733     #elif defined YY_STDINT_H
734     typedef int_least8_t yytype_int8;
735 michael 2473 #else
736 michael 913 typedef signed char yytype_int8;
737     #endif
738    
739 michael 9751 #ifdef __INT_LEAST16_MAX__
740     typedef __INT_LEAST16_TYPE__ yytype_int16;
741     #elif defined YY_STDINT_H
742     typedef int_least16_t yytype_int16;
743 michael 913 #else
744 michael 9751 typedef short yytype_int16;
745 michael 913 #endif
746    
747 michael 9751 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
748     typedef __UINT_LEAST8_TYPE__ yytype_uint8;
749     #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
750     && UINT_LEAST8_MAX <= INT_MAX)
751     typedef uint_least8_t yytype_uint8;
752     #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
753     typedef unsigned char yytype_uint8;
754 michael 913 #else
755 michael 9751 typedef short yytype_uint8;
756 michael 913 #endif
757    
758 michael 9751 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
759     typedef __UINT_LEAST16_TYPE__ yytype_uint16;
760     #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
761     && UINT_LEAST16_MAX <= INT_MAX)
762     typedef uint_least16_t yytype_uint16;
763     #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
764     typedef unsigned short yytype_uint16;
765     #else
766     typedef int yytype_uint16;
767     #endif
768    
769     #ifndef YYPTRDIFF_T
770     # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
771     # define YYPTRDIFF_T __PTRDIFF_TYPE__
772     # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
773     # elif defined PTRDIFF_MAX
774     # ifndef ptrdiff_t
775     # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
776     # endif
777     # define YYPTRDIFF_T ptrdiff_t
778     # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
779     # else
780     # define YYPTRDIFF_T long
781     # define YYPTRDIFF_MAXIMUM LONG_MAX
782     # endif
783     #endif
784    
785 michael 913 #ifndef YYSIZE_T
786     # ifdef __SIZE_TYPE__
787     # define YYSIZE_T __SIZE_TYPE__
788     # elif defined size_t
789     # define YYSIZE_T size_t
790 michael 9751 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
791 michael 913 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
792     # define YYSIZE_T size_t
793     # else
794 michael 8760 # define YYSIZE_T unsigned
795 michael 913 # endif
796     #endif
797    
798 michael 9751 #define YYSIZE_MAXIMUM \
799     YY_CAST (YYPTRDIFF_T, \
800     (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
801     ? YYPTRDIFF_MAXIMUM \
802     : YY_CAST (YYSIZE_T, -1)))
803 michael 913
804 michael 9751 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
805    
806     /* Stored state numbers (used for stacks). */
807     typedef yytype_int16 yy_state_t;
808    
809     /* State numbers in computations. */
810     typedef int yy_state_fast_t;
811    
812 michael 913 #ifndef YY_
813 michael 1089 # if defined YYENABLE_NLS && YYENABLE_NLS
814 michael 913 # if ENABLE_NLS
815     # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
816 michael 1619 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
817 michael 913 # endif
818     # endif
819     # ifndef YY_
820 michael 1619 # define YY_(Msgid) Msgid
821 michael 913 # endif
822     #endif
823    
824 michael 9751 #ifndef YY_ATTRIBUTE_PURE
825     # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
826     # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
827 michael 2570 # else
828 michael 9751 # define YY_ATTRIBUTE_PURE
829 michael 1835 # endif
830     #endif
831    
832 michael 2570 #ifndef YY_ATTRIBUTE_UNUSED
833 michael 9751 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
834     # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
835     # else
836     # define YY_ATTRIBUTE_UNUSED
837     # endif
838 michael 2570 #endif
839    
840 michael 913 /* Suppress unused-variable warnings by "using" E. */
841     #if ! defined lint || defined __GNUC__
842 michael 1619 # define YYUSE(E) ((void) (E))
843 michael 913 #else
844 michael 1619 # define YYUSE(E) /* empty */
845 michael 913 #endif
846    
847 michael 8760 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
848 michael 2473 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
849 michael 9751 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
850     _Pragma ("GCC diagnostic push") \
851     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
852 michael 2473 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
853 michael 9751 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
854 michael 2473 _Pragma ("GCC diagnostic pop")
855 michael 913 #else
856 michael 2473 # define YY_INITIAL_VALUE(Value) Value
857 michael 913 #endif
858 michael 2473 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
859     # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
860     # define YY_IGNORE_MAYBE_UNINITIALIZED_END
861 michael 913 #endif
862 michael 2473 #ifndef YY_INITIAL_VALUE
863     # define YY_INITIAL_VALUE(Value) /* Nothing. */
864     #endif
865 michael 913
866 michael 9751 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
867     # define YY_IGNORE_USELESS_CAST_BEGIN \
868     _Pragma ("GCC diagnostic push") \
869     _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
870     # define YY_IGNORE_USELESS_CAST_END \
871     _Pragma ("GCC diagnostic pop")
872     #endif
873     #ifndef YY_IGNORE_USELESS_CAST_BEGIN
874     # define YY_IGNORE_USELESS_CAST_BEGIN
875     # define YY_IGNORE_USELESS_CAST_END
876     #endif
877 michael 2473
878 michael 9751
879     #define YY_ASSERT(E) ((void) (0 && (E)))
880    
881 michael 913 #if ! defined yyoverflow || YYERROR_VERBOSE
882    
883     /* The parser invokes alloca or malloc; define the necessary symbols. */
884    
885     # ifdef YYSTACK_USE_ALLOCA
886     # if YYSTACK_USE_ALLOCA
887     # ifdef __GNUC__
888     # define YYSTACK_ALLOC __builtin_alloca
889     # elif defined __BUILTIN_VA_ARG_INCR
890     # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
891     # elif defined _AIX
892     # define YYSTACK_ALLOC __alloca
893     # elif defined _MSC_VER
894     # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
895     # define alloca _alloca
896     # else
897     # define YYSTACK_ALLOC alloca
898 michael 2473 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
899 michael 913 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
900 michael 1425 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
901 michael 1133 # ifndef EXIT_SUCCESS
902     # define EXIT_SUCCESS 0
903 michael 913 # endif
904     # endif
905     # endif
906     # endif
907     # endif
908    
909     # ifdef YYSTACK_ALLOC
910 michael 2473 /* Pacify GCC's 'empty if-body' warning. */
911     # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
912 michael 913 # ifndef YYSTACK_ALLOC_MAXIMUM
913     /* The OS might guarantee only one guard page at the bottom of the stack,
914     and a page size can be as small as 4096 bytes. So we cannot safely
915     invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
916     to allow for a few compiler-allocated temporary stack slots. */
917     # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
918     # endif
919     # else
920     # define YYSTACK_ALLOC YYMALLOC
921     # define YYSTACK_FREE YYFREE
922     # ifndef YYSTACK_ALLOC_MAXIMUM
923     # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
924     # endif
925 michael 1133 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
926 michael 913 && ! ((defined YYMALLOC || defined malloc) \
927 michael 2473 && (defined YYFREE || defined free)))
928 michael 913 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
929 michael 1133 # ifndef EXIT_SUCCESS
930     # define EXIT_SUCCESS 0
931 michael 913 # endif
932     # endif
933     # ifndef YYMALLOC
934     # define YYMALLOC malloc
935 michael 2473 # if ! defined malloc && ! defined EXIT_SUCCESS
936 michael 913 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
937     # endif
938     # endif
939     # ifndef YYFREE
940     # define YYFREE free
941 michael 2473 # if ! defined free && ! defined EXIT_SUCCESS
942 michael 913 void free (void *); /* INFRINGES ON USER NAME SPACE */
943     # endif
944     # endif
945     # endif
946     #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
947    
948    
949     #if (! defined yyoverflow \
950     && (! defined __cplusplus \
951 michael 2473 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
952 michael 913
953     /* A type that is properly aligned for any stack member. */
954     union yyalloc
955     {
956 michael 9751 yy_state_t yyss_alloc;
957 michael 967 YYSTYPE yyvs_alloc;
958     };
959 michael 913
960     /* The size of the maximum gap between one aligned stack and the next. */
961 michael 9751 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
962 michael 913
963     /* The size of an array large to enough to hold all stacks, each with
964     N elements. */
965     # define YYSTACK_BYTES(N) \
966 michael 9751 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
967 michael 913 + YYSTACK_GAP_MAXIMUM)
968    
969 michael 1133 # define YYCOPY_NEEDED 1
970 michael 913
971     /* Relocate STACK from its old location to the new one. The
972     local variables YYSIZE and YYSTACKSIZE give the old and new number of
973     elements in the stack, and YYPTR gives the new location of the
974     stack. Advance YYPTR to a properly aligned location for the next
975     stack. */
976 michael 2473 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
977     do \
978     { \
979 michael 9751 YYPTRDIFF_T yynewbytes; \
980 michael 2473 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
981     Stack = &yyptr->Stack_alloc; \
982 michael 9751 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
983     yyptr += yynewbytes / YYSIZEOF (*yyptr); \
984 michael 2473 } \
985     while (0)
986 michael 913
987     #endif
988    
989 michael 1133 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
990 michael 1425 /* Copy COUNT objects from SRC to DST. The source and destination do
991 michael 1133 not overlap. */
992     # ifndef YYCOPY
993     # if defined __GNUC__ && 1 < __GNUC__
994 michael 1425 # define YYCOPY(Dst, Src, Count) \
995 michael 9751 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
996 michael 1133 # else
997 michael 1425 # define YYCOPY(Dst, Src, Count) \
998     do \
999     { \
1000 michael 9751 YYPTRDIFF_T yyi; \
1001 michael 1425 for (yyi = 0; yyi < (Count); yyi++) \
1002     (Dst)[yyi] = (Src)[yyi]; \
1003     } \
1004 michael 2473 while (0)
1005 michael 1133 # endif
1006     # endif
1007     #endif /* !YYCOPY_NEEDED */
1008    
1009 michael 913 /* YYFINAL -- State number of the termination state. */
1010     #define YYFINAL 2
1011     /* YYLAST -- Last index in YYTABLE. */
1012 michael 9776 #define YYLAST 1240
1013 michael 913
1014     /* YYNTOKENS -- Number of terminals. */
1015 michael 9776 #define YYNTOKENS 238
1016 michael 913 /* YYNNTS -- Number of nonterminals. */
1017 michael 9235 #define YYNNTS 294
1018 michael 913 /* YYNRULES -- Number of rules. */
1019 michael 9776 #define YYNRULES 665
1020 michael 2473 /* YYNSTATES -- Number of states. */
1021 michael 9776 #define YYNSTATES 1311
1022 michael 913
1023     #define YYUNDEFTOK 2
1024 michael 9776 #define YYMAXUTOK 486
1025 michael 913
1026 michael 9751
1027 michael 8866 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1028     as returned by yylex, with out-of-bounds checking. */
1029 michael 2473 #define YYTRANSLATE(YYX) \
1030 michael 9751 (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1031 michael 913
1032 michael 2473 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1033 michael 8866 as returned by yylex. */
1034 michael 1247 static const yytype_uint8 yytranslate[] =
1035 michael 913 {
1036     0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1037     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1038     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1039     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1040 michael 9776 2, 2, 2, 2, 236, 2, 2, 2, 2, 2,
1041     2, 2, 2, 2, 2, 2, 2, 2, 237, 232,
1042     2, 235, 2, 2, 2, 2, 2, 2, 2, 2,
1043 michael 913 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1044     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1045     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1046     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1047     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1048 michael 9776 2, 2, 2, 234, 2, 233, 2, 2, 2, 2,
1049 michael 913 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1050     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1051     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1052     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1053     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1054     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1055     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1056     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1057     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1058     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1059     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1060     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1061     2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1062     5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1063     15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1064     25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1065     35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1066     45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1067     55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1068     65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1069     75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1070     85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1071     95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1072     105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1073     115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1074     125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1075     135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1076     145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1077     155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1078     165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1079     175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1080     185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1081     195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1082 michael 1751 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1083 michael 6603 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1084 michael 9776 225, 226, 227, 228, 229, 230, 231
1085 michael 913 };
1086    
1087     #if YYDEBUG
1088 michael 2473 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1089 michael 9751 static const yytype_int16 yyrline[] =
1090 michael 913 {
1091 michael 9776 0, 366, 366, 367, 370, 371, 372, 373, 374, 375,
1092     376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
1093     386, 387, 388, 389, 390, 391, 392, 393, 397, 397,
1094     398, 399, 400, 401, 402, 403, 404, 405, 408, 408,
1095     409, 410, 411, 412, 419, 421, 421, 422, 422, 422,
1096     424, 430, 440, 442, 442, 443, 444, 445, 446, 447,
1097     448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
1098     458, 459, 462, 471, 480, 489, 498, 507, 516, 525,
1099     540, 555, 565, 579, 588, 611, 634, 657, 667, 669,
1100     669, 670, 671, 672, 673, 675, 684, 693, 707, 706,
1101     724, 724, 725, 725, 725, 727, 733, 744, 743, 762,
1102     762, 763, 763, 763, 763, 763, 765, 771, 777, 783,
1103     805, 806, 806, 808, 808, 809, 811, 818, 818, 831,
1104     832, 834, 834, 835, 835, 837, 845, 848, 854, 853,
1105     859, 859, 860, 864, 868, 872, 876, 880, 884, 888,
1106     899, 898, 961, 961, 962, 963, 964, 965, 966, 967,
1107     968, 969, 970, 971, 972, 974, 980, 986, 992, 998,
1108     1009, 1015, 1026, 1033, 1032, 1038, 1038, 1039, 1043, 1047,
1109     1051, 1055, 1059, 1063, 1067, 1071, 1075, 1079, 1083, 1087,
1110     1091, 1095, 1099, 1103, 1107, 1111, 1115, 1119, 1123, 1130,
1111     1129, 1135, 1135, 1136, 1140, 1144, 1148, 1152, 1156, 1160,
1112     1164, 1168, 1172, 1176, 1180, 1184, 1188, 1192, 1196, 1200,
1113     1204, 1208, 1212, 1216, 1220, 1224, 1228, 1232, 1236, 1240,
1114     1244, 1248, 1259, 1258, 1314, 1314, 1315, 1316, 1317, 1318,
1115     1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328,
1116     1329, 1330, 1332, 1338, 1344, 1350, 1356, 1362, 1368, 1374,
1117     1380, 1387, 1393, 1399, 1405, 1414, 1424, 1423, 1429, 1429,
1118     1430, 1434, 1445, 1444, 1451, 1450, 1455, 1455, 1456, 1460,
1119     1464, 1468, 1472, 1478, 1478, 1479, 1479, 1479, 1479, 1479,
1120     1481, 1481, 1483, 1483, 1485, 1498, 1515, 1521, 1532, 1531,
1121     1578, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586,
1122     1587, 1589, 1595, 1601, 1607, 1619, 1618, 1624, 1624, 1625,
1123     1629, 1633, 1637, 1641, 1645, 1649, 1653, 1657, 1663, 1677,
1124     1686, 1700, 1699, 1714, 1714, 1715, 1715, 1715, 1715, 1717,
1125     1723, 1729, 1739, 1741, 1741, 1742, 1742, 1744, 1761, 1760,
1126     1783, 1783, 1784, 1784, 1784, 1784, 1786, 1792, 1812, 1811,
1127     1817, 1817, 1818, 1822, 1826, 1830, 1834, 1838, 1842, 1846,
1128     1850, 1854, 1865, 1864, 1883, 1883, 1884, 1884, 1884, 1886,
1129     1893, 1892, 1898, 1898, 1899, 1903, 1907, 1911, 1915, 1919,
1130     1923, 1927, 1931, 1935, 1946, 1945, 2023, 2023, 2024, 2025,
1131     2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035,
1132     2036, 2037, 2038, 2039, 2041, 2047, 2053, 2059, 2065, 2078,
1133     2091, 2097, 2103, 2107, 2114, 2113, 2118, 2118, 2119, 2123,
1134     2129, 2140, 2146, 2152, 2158, 2174, 2173, 2197, 2197, 2198,
1135     2198, 2198, 2200, 2220, 2231, 2230, 2255, 2255, 2256, 2256,
1136     2256, 2258, 2264, 2274, 2276, 2276, 2277, 2277, 2279, 2297,
1137     2296, 2317, 2317, 2318, 2318, 2318, 2320, 2326, 2336, 2338,
1138     2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347,
1139     2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357,
1140     2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367,
1141     2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377,
1142     2378, 2379, 2380, 2381, 2382, 2383, 2384, 2387, 2392, 2397,
1143 michael 9756 2402, 2407, 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447,
1144     2452, 2457, 2462, 2467, 2472, 2477, 2482, 2487, 2492, 2497,
1145     2502, 2507, 2512, 2517, 2522, 2527, 2532, 2537, 2542, 2547,
1146 michael 9776 2552, 2557, 2562, 2567, 2572, 2577, 2583, 2582, 2587, 2587,
1147     2588, 2591, 2594, 2597, 2600, 2603, 2606, 2609, 2612, 2615,
1148     2618, 2621, 2624, 2627, 2630, 2633, 2636, 2639, 2642, 2645,
1149     2648, 2651, 2657, 2656, 2661, 2661, 2662, 2665, 2668, 2671,
1150     2674, 2677, 2680, 2683, 2686, 2689, 2692, 2695, 2698, 2701,
1151     2704, 2707, 2710, 2713, 2716, 2719, 2724, 2729, 2734, 2739,
1152     2748, 2750, 2750, 2751, 2752, 2753, 2754, 2755, 2756, 2757,
1153     2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, 2768,
1154     2773, 2778, 2783, 2788, 2793, 2798, 2803, 2808, 2813, 2818,
1155     2823, 2828, 2833, 2838, 2847, 2849, 2849, 2850, 2851, 2852,
1156     2853, 2854, 2855, 2856, 2857, 2858, 2859, 2861, 2867, 2883,
1157     2892, 2898, 2904, 2910, 2919, 2925
1158 michael 913 };
1159     #endif
1160    
1161 michael 1466 #if YYDEBUG || YYERROR_VERBOSE || 0
1162 michael 913 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1163     First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1164     static const char *const yytname[] =
1165     {
1166 michael 1520 "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ADMIN", "AFTYPE",
1167 michael 4313 "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME", "AUTOCONN",
1168 michael 9776 "AWAY_COUNT", "AWAY_TIME", "BOT", "BYTES", "KBYTES", "MBYTES",
1169     "CALLER_ID_WAIT", "CAN_FLOOD", "CHANNEL", "CIDR_BITLEN_IPV4",
1170     "CIDR_BITLEN_IPV6", "CLASS", "CLIENT", "CLOSE", "CONNECT", "CONNECTFREQ",
1171     "CYCLE_ON_HOST_CHANGE", "DEFAULT_FLOODCOUNT", "DEFAULT_FLOODTIME",
1172     "DEFAULT_JOIN_FLOOD_COUNT", "DEFAULT_JOIN_FLOOD_TIME",
1173     "DEFAULT_MAX_CLIENTS", "DEFER", "DENY", "DESCRIPTION", "DIE",
1174     "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS", "DISABLE_REMOTE_COMMANDS",
1175     "DLINE_MIN_CIDR", "DLINE_MIN_CIDR6", "DOTS_IN_IDENT", "EMAIL",
1176     "ENABLE_EXTBANS", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "EXPIRATION",
1177     "FAILED_OPER_NOTICE", "FLATTEN_LINKS", "FLATTEN_LINKS_DELAY",
1178     "FLATTEN_LINKS_FILE", "GECOS", "GENERAL", "HIDDEN", "HIDDEN_NAME",
1179     "HIDE_CHANS", "HIDE_IDLE", "HIDE_IDLE_FROM_OPERS", "HIDE_SERVER_IPS",
1180     "HIDE_SERVERS", "HIDE_SERVICES", "HOST", "HUB", "HUB_MASK",
1181     "INVISIBLE_ON_CONNECT", "INVITE_CLIENT_COUNT", "INVITE_CLIENT_TIME",
1182     "INVITE_DELAY_CHANNEL", "INVITE_EXPIRE_TIME", "IP", "IRCD_AUTH",
1183     "IRCD_FLAGS", "IRCD_SID", "JOIN", "KILL", "KILL_CHASE_TIME_LIMIT",
1184     "KLINE", "KLINE_EXEMPT", "KLINE_MIN_CIDR", "KLINE_MIN_CIDR6",
1185     "KNOCK_CLIENT_COUNT", "KNOCK_CLIENT_TIME", "KNOCK_DELAY_CHANNEL",
1186     "LEAF_MASK", "LISTEN", "MASK", "MAX_ACCEPT", "MAX_BANS",
1187     "MAX_BANS_LARGE", "MAX_CHANNELS", "MAX_IDLE", "MAX_INVITES",
1188     "MAX_MONITOR", "MAX_NICK_CHANGES", "MAX_NICK_LENGTH", "MAX_NICK_TIME",
1189     "MAX_NUMBER", "MAX_TARGETS", "MAX_TOPIC_LENGTH", "MIN_IDLE",
1190     "MIN_NONWILDCARD", "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "MOTD",
1191     "NAME", "NEED_IDENT", "NEED_PASSWORD", "NETWORK_DESCRIPTION",
1192     "NETWORK_NAME", "NICK", "NO_OPER_FLOOD", "NO_TILDE", "NUMBER_PER_CIDR",
1193 michael 9751 "NUMBER_PER_IP_GLOBAL", "NUMBER_PER_IP_LOCAL", "OPER_ONLY_UMODES",
1194     "OPER_UMODES", "OPERATOR", "OPERS_BYPASS_CALLERID", "PACE_WAIT",
1195     "PACE_WAIT_SIMPLE", "PASSWORD", "PATH", "PING_COOKIE", "PING_TIME",
1196 michael 9756 "PORT", "RANDOM_IDLE", "REASON", "REDIRPORT", "REDIRSERV", "REHASH",
1197     "REMOTE", "REMOTEBAN", "RESV", "RESV_EXEMPT", "RSA_PRIVATE_KEY_FILE",
1198     "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS",
1199     "SEND_PASSWORD", "SENDQ", "SERVERHIDE", "SERVERINFO", "SHORT_MOTD",
1200     "SPOOF", "SQUIT", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1201 michael 9751 "STATS_K_OPER_ONLY", "STATS_M_OPER_ONLY", "STATS_O_OPER_ONLY",
1202     "STATS_P_OPER_ONLY", "STATS_U_OPER_ONLY", "T_ALL", "T_BIND",
1203     "T_CALLERID", "T_CCONN", "T_COMMAND", "T_CLUSTER", "T_DEAF", "T_DEBUG",
1204     "T_DLINE", "T_EXTERNAL", "T_FARCONNECT", "T_FILE", "T_FLOOD",
1205     "T_GLOBOPS", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_LOG",
1206     "T_NCHANGE", "T_NONONREG", "T_OPME", "T_PREPEND", "T_PSEUDO", "T_RECVQ",
1207     "T_REJ", "T_RESTART", "T_SERVER", "T_SERVICE", "T_SERVNOTICE", "T_SET",
1208     "T_SHARED", "T_SIZE", "T_SKILL", "T_SOFTCALLERID", "T_SPY", "T_TARGET",
1209     "T_TLS", "T_UMODES", "T_UNDLINE", "T_UNLIMITED", "T_UNRESV", "T_UNXLINE",
1210     "T_WALLOP", "T_WALLOPS", "T_WEBIRC", "TBOOL", "THROTTLE_COUNT",
1211     "THROTTLE_TIME", "TIMEOUT", "TLS_CERTIFICATE_FILE",
1212     "TLS_CERTIFICATE_FINGERPRINT", "TLS_CIPHER_LIST", "TLS_CIPHER_SUITES",
1213     "TLS_CONNECTION_REQUIRED", "TLS_DH_PARAM_FILE",
1214     "TLS_MESSAGE_DIGEST_ALGORITHM", "TLS_SUPPORTED_GROUPS", "TS_MAX_DELTA",
1215     "TS_WARN_DELTA", "TWODOTS", "TYPE", "UNKLINE", "USE_LOGGING", "USER",
1216     "VHOST", "VHOST6", "WARN_NO_CONNECT_BLOCK", "WHOIS",
1217 michael 9756 "WHOWAS_HISTORY_LENGTH", "XLINE", "XLINE_EXEMPT", "QSTRING", "NUMBER",
1218     "';'", "'}'", "'{'", "'='", "','", "':'", "$accept", "conf", "conf_item",
1219     "timespec_", "timespec", "sizespec_", "sizespec", "modules_entry",
1220     "modules_items", "modules_item", "modules_module", "modules_path",
1221     "serverinfo_entry", "serverinfo_items", "serverinfo_item",
1222     "serverinfo_tls_certificate_file", "serverinfo_rsa_private_key_file",
1223     "serverinfo_tls_dh_param_file", "serverinfo_tls_cipher_list",
1224     "serverinfo_tls_cipher_suites",
1225 michael 9146 "serverinfo_tls_message_digest_algorithm",
1226     "serverinfo_tls_supported_groups", "serverinfo_name", "serverinfo_sid",
1227 michael 8318 "serverinfo_description", "serverinfo_network_name",
1228 michael 9692 "serverinfo_network_description", "serverinfo_default_max_clients",
1229 michael 8866 "serverinfo_max_nick_length", "serverinfo_max_topic_length",
1230     "serverinfo_hub", "admin_entry", "admin_items", "admin_item",
1231     "admin_name", "admin_email", "admin_description", "motd_entry", "$@1",
1232     "motd_items", "motd_item", "motd_mask", "motd_file", "pseudo_entry",
1233     "$@2", "pseudo_items", "pseudo_item", "pseudo_command", "pseudo_name",
1234     "pseudo_prepend", "pseudo_target", "logging_entry", "logging_items",
1235     "logging_item", "logging_use_logging", "logging_file_entry", "$@3",
1236     "logging_file_items", "logging_file_item", "logging_file_name",
1237     "logging_file_size", "logging_file_type", "$@4",
1238     "logging_file_type_items", "logging_file_type_item", "oper_entry", "$@5",
1239     "oper_items", "oper_item", "oper_name", "oper_user", "oper_password",
1240 michael 9146 "oper_whois", "oper_encrypted", "oper_tls_certificate_fingerprint",
1241     "oper_tls_connection_required", "oper_class", "oper_umodes", "$@6",
1242 michael 8318 "oper_umodes_items", "oper_umodes_item", "oper_flags", "$@7",
1243     "oper_flags_items", "oper_flags_item", "class_entry", "$@8",
1244 michael 6595 "class_items", "class_item", "class_name", "class_ping_time",
1245 michael 8497 "class_number_per_ip_local", "class_number_per_ip_global",
1246     "class_connectfreq", "class_max_channels", "class_max_number",
1247     "class_sendq", "class_recvq", "class_cidr_bitlen_ipv4",
1248     "class_cidr_bitlen_ipv6", "class_number_per_cidr", "class_min_idle",
1249     "class_max_idle", "class_flags", "$@9", "class_flags_items",
1250     "class_flags_item", "listen_entry", "$@10", "listen_flags", "$@11",
1251     "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1252     "listen_port", "$@12", "port_items", "port_item", "listen_address",
1253     "listen_host", "auth_entry", "$@13", "auth_items", "auth_item",
1254     "auth_user", "auth_passwd", "auth_class", "auth_encrypted", "auth_flags",
1255     "$@14", "auth_flags_items", "auth_flags_item", "auth_spoof",
1256     "auth_redir_serv", "auth_redir_port", "resv_entry", "$@15", "resv_items",
1257     "resv_item", "resv_mask", "resv_reason", "resv_exempt", "service_entry",
1258 michael 8318 "service_items", "service_item", "service_name", "shared_entry", "$@16",
1259 michael 1783 "shared_items", "shared_item", "shared_name", "shared_user",
1260 michael 8318 "shared_type", "$@17", "shared_types", "shared_type_item",
1261     "cluster_entry", "$@18", "cluster_items", "cluster_item", "cluster_name",
1262     "cluster_type", "$@19", "cluster_types", "cluster_type_item",
1263     "connect_entry", "$@20", "connect_items", "connect_item", "connect_name",
1264 michael 9098 "connect_host", "connect_timeout", "connect_bind",
1265     "connect_send_password", "connect_accept_password",
1266 michael 9146 "connect_tls_certificate_fingerprint", "connect_port", "connect_aftype",
1267 michael 9098 "connect_flags", "$@21", "connect_flags_items", "connect_flags_item",
1268     "connect_encrypted", "connect_hub_mask", "connect_leaf_mask",
1269 michael 9146 "connect_class", "connect_tls_cipher_list", "kill_entry", "$@22",
1270 michael 9098 "kill_items", "kill_item", "kill_user", "kill_reason", "deny_entry",
1271     "$@23", "deny_items", "deny_item", "deny_ip", "deny_reason",
1272     "exempt_entry", "exempt_items", "exempt_item", "exempt_ip",
1273     "gecos_entry", "$@24", "gecos_items", "gecos_item", "gecos_name",
1274     "gecos_reason", "general_entry", "general_items", "general_item",
1275 michael 9751 "general_away_count", "general_away_time", "general_max_monitor",
1276 michael 7445 "general_whowas_history_length", "general_cycle_on_host_change",
1277 michael 5806 "general_dline_min_cidr", "general_dline_min_cidr6",
1278     "general_kline_min_cidr", "general_kline_min_cidr6",
1279 michael 8964 "general_kill_chase_time_limit", "general_failed_oper_notice",
1280     "general_anti_nick_flood", "general_max_nick_time",
1281     "general_max_nick_changes", "general_max_accept",
1282     "general_anti_spam_exit_message_time", "general_ts_warn_delta",
1283     "general_ts_max_delta", "general_invisible_on_connect",
1284     "general_warn_no_connect_block", "general_stats_e_disabled",
1285     "general_stats_m_oper_only", "general_stats_o_oper_only",
1286     "general_stats_P_oper_only", "general_stats_u_oper_only",
1287     "general_stats_k_oper_only", "general_stats_i_oper_only",
1288     "general_pace_wait", "general_caller_id_wait",
1289     "general_opers_bypass_callerid", "general_pace_wait_simple",
1290     "general_short_motd", "general_no_oper_flood", "general_dots_in_ident",
1291     "general_max_targets", "general_ping_cookie", "general_disable_auth",
1292     "general_throttle_count", "general_throttle_time", "general_oper_umodes",
1293     "$@25", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1294     "$@26", "umode_items", "umode_item", "general_min_nonwildcard",
1295 michael 3877 "general_min_nonwildcard_simple", "general_default_floodcount",
1296 michael 7861 "general_default_floodtime", "channel_entry", "channel_items",
1297 michael 9235 "channel_item", "channel_enable_extbans",
1298     "channel_disable_fake_channels", "channel_invite_client_count",
1299     "channel_invite_client_time", "channel_invite_delay_channel",
1300     "channel_invite_expire_time", "channel_knock_client_count",
1301     "channel_knock_client_time", "channel_knock_delay_channel",
1302     "channel_max_channels", "channel_max_invites", "channel_max_bans",
1303     "channel_max_bans_large", "channel_default_join_flood_count",
1304     "channel_default_join_flood_time", "serverhide_entry",
1305     "serverhide_items", "serverhide_item", "serverhide_flatten_links",
1306     "serverhide_flatten_links_delay", "serverhide_flatten_links_file",
1307     "serverhide_disable_remote_commands", "serverhide_hide_servers",
1308     "serverhide_hide_services", "serverhide_hidden_name",
1309     "serverhide_hidden", "serverhide_hide_server_ips", YY_NULLPTR
1310 michael 913 };
1311     #endif
1312    
1313     # ifdef YYPRINT
1314 michael 2473 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1315     (internal) symbol number NUM (which must be that of a token). */
1316 michael 9751 static const yytype_int16 yytoknum[] =
1317 michael 913 {
1318     0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1319     265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1320     275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1321     285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1322     295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1323     305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1324     315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1325     325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1326     335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1327     345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1328     355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1329     365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1330     375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1331     385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1332     395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1333     405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1334     415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1335     425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1336     435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1337     445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1338     455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1339 michael 1783 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1340 michael 8866 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
1341 michael 9776 485, 486, 59, 125, 123, 61, 44, 58
1342 michael 913 };
1343     # endif
1344    
1345 michael 9776 #define YYPACT_NINF (-981)
1346 michael 913
1347 michael 9751 #define yypact_value_is_default(Yyn) \
1348     ((Yyn) == YYPACT_NINF)
1349 michael 2473
1350 michael 9751 #define YYTABLE_NINF (-128)
1351 michael 2473
1352 michael 9751 #define yytable_value_is_error(Yyn) \
1353 michael 2473 0
1354    
1355     /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1356     STATE-NUM. */
1357     static const yytype_int16 yypact[] =
1358 michael 913 {
1359 michael 9776 -981, 902, -981, -173, -229, -202, -981, -981, -981, -184,
1360     -981, -177, -981, -981, -981, -172, -981, -981, -981, -163,
1361     -161, -981, -123, -981, -106, -981, -981, -981, -981, -981,
1362     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1363     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1364     -981, 281, 927, -97, -96, -80, 27, -56, 398, -48,
1365     -45, -34, 51, -25, -6, -2, 558, 547, 20, 12,
1366     36, 15, 49, -212, 54, 56, 61, 14, -981, -981,
1367     -981, -981, -981, 68, 70, 71, 72, 75, 81, 82,
1368     91, 92, 94, 96, 97, 98, 99, 100, 2, -981,
1369     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1370     -981, -981, -981, -981, -981, 846, 633, 23, -981, 102,
1371     16, -981, -981, 42, -981, 104, 106, 108, 110, 112,
1372     117, 124, 127, 137, 138, 139, 140, 148, 149, 150,
1373     152, 153, 154, 156, 158, 160, 163, 174, 180, 181,
1374     -981, -981, 182, 187, 191, 192, 193, 194, 196, 197,
1375     199, 200, 206, 207, 208, 213, 214, 215, 217, 218,
1376     39, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1377     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1378     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1379     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1380     -981, -981, -981, -981, -981, -981, -981, 359, 40, 349,
1381     83, 219, 221, 25, -981, -981, -981, 50, 335, 264,
1382     -981, 223, 225, 230, 231, 232, 233, 234, 236, 239,
1383     164, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1384     -981, 171, 243, 245, 250, 251, 252, 257, 261, 262,
1385     265, 268, 269, 270, 271, 277, 278, 285, 143, -981,
1386     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1387     -981, -981, -981, -981, -981, -981, 57, 284, 286, 13,
1388     -981, -981, -981, 363, 220, -981, 300, 28, -981, -981,
1389     8, -981, 307, 308, 309, 310, -981, 224, 312, 336,
1390     337, 314, 312, 312, 312, 325, 312, 312, 327, 329,
1391     332, 333, 334, -981, 339, 330, 340, 341, -981, 343,
1392     347, 348, 350, 351, 352, 353, 355, 357, 361, 362,
1393     179, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1394     -981, -981, -981, -981, -981, -981, -981, 342, 364, 365,
1395     366, 367, 370, 378, -981, 385, 386, 387, 392, 397,
1396     405, 407, 408, 237, -981, -981, -981, -981, -981, -981,
1397     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1398     -981, 411, 412, 38, -981, -981, -981, 338, 401, -981,
1399     -981, 414, 415, 115, -981, -981, -981, 368, 312, 399,
1400     312, 312, 380, 420, 312, 450, 427, 432, 434, 462,
1401     463, 312, 437, 439, 441, 444, 446, 312, 448, 451,
1402     453, 477, 452, 454, 481, 312, 312, 486, 487, 488,
1403     489, 493, 494, 495, 497, 501, 475, 312, 312, 312,
1404     504, 476, 479, -981, 480, 474, 478, -981, 482, 484,
1405     485, 490, 491, 55, -981, -981, -981, -981, -981, -981,
1406     -981, -981, -981, -981, 499, 500, 80, -981, -981, -981,
1407     483, 506, 507, -981, 508, -981, 26, -981, -981, -981,
1408     -981, -981, 492, 498, 512, -981, 513, 511, 515, 3,
1409     -981, -981, -981, 516, 518, 519, -981, 521, 528, -981,
1410     529, 530, 531, 532, 168, -981, -981, -981, -981, -981,
1411     -981, -981, -981, -981, -981, -981, 537, 535, 536, 538,
1412     79, -981, -981, -981, -981, 510, 517, 312, 502, 520,
1413     544, 525, 543, 572, 549, -981, -981, 505, 554, 583,
1414     559, 560, 563, 567, 568, 569, 570, 573, 574, 576,
1415     577, 578, 582, 581, -981, 584, 579, -981, 62, -981,
1416     -981, -981, -981, 598, 585, -981, 52, 586, 580, 587,
1417     588, 589, 105, -981, -981, -981, -981, -981, 590, 593,
1418     -981, 594, 592, -981, 595, 41, -981, -981, -981, -981,
1419     596, 597, 599, -981, 600, 228, 601, 602, 603, 604,
1420     605, 606, 607, 609, 614, 621, 623, 625, 626, 628,
1421     -981, -981, 619, 632, 312, 631, 637, 312, 638, 312,
1422     591, 641, 642, 643, 312, 647, 647, 648, -981, -981,
1423     649, -64, 651, 680, 658, 661, 660, 663, 666, 667,
1424     671, 674, 312, 677, 678, 679, -981, 682, 686, 688,
1425     -981, 689, -981, 694, 696, 695, -981, 697, 698, 699,
1426     700, 701, 705, 706, 707, 708, 709, 711, 712, 714,
1427     716, 717, 718, 720, 725, 726, 730, 732, 733, 734,
1428     735, 736, 722, 618, 738, 741, 742, 743, 745, 746,
1429     747, 748, 749, 750, 751, 752, 753, 755, 756, 757,
1430     758, 764, -981, -981, 767, 794, 675, 769, 687, 770,
1431     771, 772, 778, -981, 773, 774, 779, -981, -981, 782,
1432     783, 784, 786, 789, -981, 790, 791, -981, -981, 795,
1433     796, 792, -981, -981, 797, 825, 798, 800, 801, 799,
1434     802, 831, 807, 808, 809, -981, -981, 810, 812, 813,
1435     814, -981, 815, 818, 819, 820, 821, 822, 823, 824,
1436     826, -981, 827, 828, 829, 830, 832, 834, 835, 836,
1437     837, 838, 839, 840, 841, 842, 843, 844, -981, -981,
1438     833, 804, 845, -981, 847, -981, 121, -981, 850, 851,
1439     852, 854, 853, -981, 855, -981, -981, 856, 857, 859,
1440     858, -981, -981, -981, -981, -981, 312, 312, 312, 312,
1441     312, 312, 312, -981, -981, -981, -981, -981, -981, -981,
1442     -981, -981, -981, -981, -981, -981, -981, -981, -981, 861,
1443     862, 863, -4, 864, 865, 866, 867, 868, 869, 870,
1444     871, 872, 22, 873, 874, -981, 875, 876, 877, 878,
1445     879, 880, 881, 4, 882, 883, 884, 885, 886, 887,
1446     888, 889, -981, 890, 891, -981, -981, 892, 893, -981,
1447     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1448     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1449     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1450     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1451     -981, -981, -981, -981, -981, -214, -981, -981, -981, -981,
1452     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1453     -981, -981, -981, -981, -981, -981, -981, -981, -981, -213,
1454     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1455     -981, -981, -981, -981, -981, -981, -981, -981, -981, 894,
1456     895, 395, 896, 897, 898, 899, 900, -981, 901, 903,
1457     -981, 904, 905, 266, 916, 906, -981, -981, -981, -981,
1458     907, 908, -981, 909, 911, 460, 912, 913, 684, 914,
1459     915, 917, 918, -981, 919, 920, 921, -981, -981, -981,
1460     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1461     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1462     -981, -981, -981, 922, 503, -981, -981, 923, 924, 925,
1463     -981, 111, -981, -981, -981, -981, 926, 929, 930, 931,
1464     -981, -981, 932, 552, 933, -981, -981, -981, -981, -981,
1465     -981, -981, -981, -981, -981, -981, -981, -981, -211, -981,
1466     -981, -981, -981, -981, -981, -981, -981, -981, -981, 647,
1467     647, 647, -981, -981, -981, -981, -981, -981, -981, -981,
1468     -981, -981, -981, -981, -981, -199, -981, -981, -981, -981,
1469     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1470     722, -981, 618, -981, -981, -981, -981, -981, -981, -981,
1471     -981, -981, -981, -981, -160, -981, -981, -981, -981, -981,
1472     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1473     -87, -981, 935, 786, 936, -981, -981, -981, -981, -981,
1474     -981, 934, -981, 937, 938, -981, -981, 939, 940, -981,
1475     -981, 941, -981, -981, -981, -981, -981, -981, -981, -981,
1476     -981, -981, -981, -981, -75, -981, -981, -981, -981, -981,
1477     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1478     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1479     -61, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1480     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1481     -53, -981, -981, 942, -137, 944, 948, -981, -981, -981,
1482     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1483     -981, -981, -981, -30, -981, -981, -981, -4, -981, -981,
1484     -981, -981, 4, -981, -981, -981, 395, -981, 266, -981,
1485     -981, -981, 1006, 435, 1016, 910, 1024, 1025, -981, 460,
1486     -981, 684, -981, 503, 949, 950, 951, 345, -981, -981,
1487     552, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1488     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1489     -981, -981, -981, -981, -981, -7, -981, -981, -981, 345,
1490     -981
1491 michael 913 };
1492    
1493 michael 2473 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1494     Performed when YYTABLE does not specify something else to do. Zero
1495     means the default is an error. */
1496 michael 9751 static const yytype_int16 yydefact[] =
1497 michael 913 {
1498 michael 9776 2, 0, 1, 0, 0, 0, 232, 394, 444, 0,
1499     459, 0, 298, 435, 272, 0, 98, 150, 331, 0,
1500     0, 372, 0, 107, 0, 348, 3, 23, 11, 4,
1501 michael 4545 24, 25, 5, 6, 8, 9, 10, 13, 14, 15,
1502     16, 17, 18, 19, 20, 22, 21, 7, 12, 26,
1503     27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1504 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1505 michael 9140 0, 0, 0, 0, 0, 0, 0, 0, 90, 91,
1506 michael 9776 93, 92, 628, 0, 0, 0, 0, 0, 0, 0,
1507     0, 0, 0, 0, 0, 0, 0, 0, 0, 612,
1508     627, 626, 615, 616, 617, 618, 619, 620, 621, 622,
1509     623, 613, 614, 624, 625, 0, 0, 0, 457, 0,
1510     0, 455, 456, 0, 516, 0, 0, 0, 0, 0,
1511 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1512     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1513 michael 9776 582, 556, 0, 0, 0, 0, 0, 0, 0, 0,
1514 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1515 michael 9776 0, 470, 471, 472, 514, 478, 515, 509, 510, 511,
1516     512, 482, 473, 474, 475, 476, 477, 479, 480, 481,
1517     483, 484, 513, 488, 489, 490, 491, 487, 486, 492,
1518     499, 500, 493, 494, 495, 485, 497, 507, 508, 505,
1519     506, 498, 496, 503, 504, 501, 502, 0, 0, 0,
1520 michael 9235 0, 0, 0, 0, 46, 47, 48, 0, 0, 0,
1521 michael 9776 656, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1522     0, 646, 647, 648, 649, 650, 651, 652, 654, 653,
1523     655, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1524 michael 9235 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,
1525     67, 65, 63, 68, 69, 70, 64, 55, 66, 57,
1526     58, 59, 60, 61, 62, 56, 0, 0, 0, 0,
1527 michael 9776 122, 123, 124, 0, 0, 346, 0, 0, 344, 345,
1528 michael 9235 0, 94, 0, 0, 0, 0, 89, 0, 0, 0,
1529 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1530 michael 9776 0, 0, 0, 611, 0, 0, 0, 0, 266, 0,
1531 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1532 michael 9776 0, 235, 236, 239, 241, 242, 243, 244, 245, 246,
1533     247, 237, 238, 240, 248, 249, 250, 0, 0, 0,
1534     0, 0, 0, 0, 424, 0, 0, 0, 0, 0,
1535     0, 0, 0, 0, 397, 398, 399, 400, 401, 402,
1536     403, 404, 406, 405, 408, 412, 409, 410, 411, 407,
1537     450, 0, 0, 0, 447, 448, 449, 0, 0, 454,
1538     465, 0, 0, 0, 462, 463, 464, 0, 0, 0,
1539 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1540     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1541     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1542 michael 1285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1543 michael 9776 0, 0, 0, 469, 0, 0, 0, 315, 0, 0,
1544     0, 0, 0, 0, 301, 302, 303, 304, 309, 305,
1545     306, 307, 308, 441, 0, 0, 0, 438, 439, 440,
1546     0, 0, 0, 274, 0, 286, 0, 284, 285, 287,
1547     288, 49, 0, 0, 0, 45, 0, 0, 0, 0,
1548     101, 102, 103, 0, 0, 0, 199, 0, 0, 173,
1549 michael 9235 0, 0, 0, 0, 0, 153, 154, 155, 156, 157,
1550     160, 161, 162, 159, 158, 163, 0, 0, 0, 0,
1551 michael 9776 0, 334, 335, 336, 337, 0, 0, 0, 0, 0,
1552     0, 0, 0, 0, 0, 645, 71, 0, 0, 0,
1553 michael 1285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1554 michael 9776 0, 0, 0, 0, 53, 0, 0, 380, 0, 375,
1555     376, 377, 125, 0, 0, 121, 0, 0, 0, 0,
1556 michael 9235 0, 0, 0, 110, 111, 113, 112, 114, 0, 0,
1557 michael 9776 343, 0, 0, 358, 0, 0, 351, 352, 353, 354,
1558 michael 9235 0, 0, 0, 88, 0, 28, 0, 0, 0, 0,
1559 michael 1285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1560 michael 9776 610, 251, 0, 0, 0, 0, 0, 0, 0, 0,
1561     0, 0, 0, 0, 0, 0, 0, 0, 234, 413,
1562 michael 1285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1563 michael 9776 0, 0, 0, 0, 0, 0, 396, 0, 0, 0,
1564     446, 0, 453, 0, 0, 0, 461, 0, 0, 0,
1565 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1566     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1567 michael 8047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1568 michael 9098 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1569 michael 9776 0, 0, 468, 310, 0, 0, 0, 0, 0, 0,
1570     0, 0, 0, 300, 0, 0, 0, 437, 289, 0,
1571     0, 0, 0, 0, 283, 0, 0, 44, 104, 0,
1572 michael 9319 0, 0, 100, 164, 0, 0, 0, 0, 0, 0,
1573 michael 9776 0, 0, 0, 0, 0, 152, 338, 0, 0, 0,
1574     0, 333, 0, 0, 0, 0, 0, 0, 0, 0,
1575     0, 644, 0, 0, 0, 0, 0, 0, 0, 0,
1576     0, 0, 0, 0, 0, 0, 0, 0, 52, 378,
1577     0, 0, 0, 374, 0, 120, 0, 115, 0, 0,
1578     0, 0, 0, 109, 0, 342, 355, 0, 0, 0,
1579     0, 350, 97, 96, 95, 642, 28, 28, 28, 28,
1580     28, 28, 28, 30, 29, 643, 630, 629, 631, 632,
1581     633, 634, 635, 636, 637, 640, 641, 638, 639, 0,
1582 michael 9235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1583 michael 9776 0, 0, 38, 0, 0, 233, 0, 0, 0, 0,
1584 michael 9235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1585 michael 9776 0, 0, 395, 0, 0, 445, 458, 0, 0, 460,
1586     528, 532, 517, 518, 545, 521, 608, 609, 553, 522,
1587     523, 550, 527, 535, 526, 524, 525, 531, 519, 530,
1588     529, 551, 606, 607, 549, 586, 605, 592, 601, 587,
1589     588, 589, 596, 604, 590, 598, 602, 593, 603, 594,
1590     597, 591, 600, 595, 599, 0, 585, 560, 581, 565,
1591     566, 567, 577, 561, 562, 563, 572, 580, 564, 574,
1592     578, 569, 579, 570, 573, 568, 576, 571, 575, 0,
1593     559, 546, 544, 547, 552, 548, 537, 543, 542, 538,
1594     539, 540, 541, 554, 555, 534, 533, 536, 520, 0,
1595     0, 0, 0, 0, 0, 0, 0, 299, 0, 0,
1596     436, 0, 0, 0, 294, 290, 293, 273, 50, 51,
1597     0, 0, 99, 0, 0, 0, 0, 0, 0, 0,
1598     0, 0, 0, 151, 0, 0, 0, 332, 660, 657,
1599     658, 659, 664, 663, 665, 661, 662, 84, 81, 87,
1600     80, 85, 86, 79, 83, 82, 73, 72, 75, 76,
1601     74, 77, 78, 0, 0, 373, 126, 0, 0, 0,
1602     138, 0, 130, 131, 133, 132, 0, 0, 0, 0,
1603     108, 347, 0, 0, 0, 349, 31, 32, 33, 34,
1604     35, 36, 37, 261, 262, 256, 271, 270, 0, 269,
1605     257, 265, 258, 264, 252, 263, 255, 254, 253, 38,
1606     38, 38, 40, 39, 259, 260, 419, 422, 423, 433,
1607     430, 415, 431, 428, 429, 0, 427, 432, 414, 421,
1608     418, 417, 416, 420, 434, 451, 452, 466, 467, 583,
1609     0, 557, 0, 313, 314, 323, 319, 320, 322, 327,
1610     324, 325, 326, 321, 0, 318, 312, 330, 329, 328,
1611     311, 443, 442, 297, 296, 281, 282, 279, 280, 278,
1612     0, 277, 0, 0, 0, 105, 106, 172, 169, 219,
1613     231, 206, 215, 0, 204, 209, 225, 0, 218, 223,
1614     229, 208, 211, 220, 222, 226, 216, 224, 212, 230,
1615     214, 221, 210, 213, 0, 202, 165, 167, 177, 198,
1616     182, 183, 184, 194, 178, 179, 180, 189, 197, 181,
1617     191, 195, 186, 196, 187, 190, 185, 193, 188, 192,
1618     0, 176, 170, 171, 166, 168, 341, 339, 340, 379,
1619     384, 390, 393, 386, 392, 387, 391, 389, 385, 388,
1620     0, 383, 134, 0, 0, 0, 0, 129, 117, 116,
1621     118, 119, 356, 362, 368, 371, 364, 370, 365, 369,
1622     367, 363, 366, 0, 361, 357, 267, 0, 41, 42,
1623     43, 425, 0, 584, 558, 316, 0, 275, 0, 295,
1624     292, 291, 0, 0, 0, 0, 0, 0, 200, 0,
1625     174, 0, 381, 0, 0, 0, 0, 0, 128, 359,
1626     0, 268, 426, 317, 276, 205, 228, 203, 227, 217,
1627     207, 201, 175, 382, 135, 137, 136, 148, 147, 143,
1628     145, 149, 146, 142, 144, 0, 141, 360, 139, 0,
1629     140
1630 michael 913 };
1631    
1632 michael 2473 /* YYPGOTO[NTERM-NUM]. */
1633     static const yytype_int16 yypgoto[] =
1634     {
1635 michael 9776 -981, -981, -981, -293, -306, -980, -635, -981, -981, 946,
1636     -981, -981, -981, -981, 777, -981, -981, -981, -981, -981,
1637     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1638     -981, -981, -981, 980, -981, -981, -981, -981, -981, -981,
1639     668, -981, -981, -981, -981, -981, 608, -981, -981, -981,
1640     -981, -981, -981, 928, -981, -981, -981, -981, 129, -981,
1641     -981, -981, -981, -981, -136, -981, -981, -981, 670, -981,
1642     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1643     -86, -981, -981, -981, -83, -981, -981, -981, 848, -981,
1644     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1645     -981, -981, -981, -981, -981, -981, -60, -981, -981, -981,
1646     -981, -981, -69, -981, 710, -981, -981, -981, 48, -981,
1647     -981, -981, -981, -981, 729, -981, -981, -981, -981, -981,
1648     -981, -981, -63, -981, -981, -981, -981, -981, -981, 664,
1649     -981, -981, -981, -981, -981, 943, -981, -981, -981, -981,
1650     610, -981, -981, -981, -981, -981, -85, -981, -981, -981,
1651     629, -981, -981, -981, -981, -74, -981, -981, -981, 849,
1652     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1653     -981, -981, -54, -981, -981, -981, -981, -981, -981, -981,
1654     -981, 724, -981, -981, -981, -981, -981, 811, -981, -981,
1655     -981, -981, 1081, -981, -981, -981, -981, 803, -981, -981,
1656     -981, -981, 1032, -981, -981, -981, -981, -981, -981, -981,
1657     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1658     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1659     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1660     -981, -981, -981, -981, -981, 95, -981, -981, -981, 93,
1661     -981, -981, -981, -981, -981, -981, 1110, -981, -981, -981,
1662     -981, -981, -981, -981, -981, -981, -981, -981, -981, -981,
1663     -981, -981, -981, -981, 969, -981, -981, -981, -981, -981,
1664     -981, -981, -981, -981
1665 michael 2473 };
1666    
1667     /* YYDEFGOTO[NTERM-NUM]. */
1668 michael 913 static const yytype_int16 yydefgoto[] =
1669     {
1670 michael 9776 -1, 1, 26, 823, 824, 1082, 1083, 27, 223, 224,
1671 michael 9235 225, 226, 28, 268, 269, 270, 271, 272, 273, 274,
1672     275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1673     285, 29, 77, 78, 79, 80, 81, 30, 63, 499,
1674     500, 501, 502, 31, 70, 582, 583, 584, 585, 586,
1675 michael 9776 587, 32, 289, 290, 291, 292, 293, 1041, 1042, 1043,
1676     1044, 1045, 1225, 1305, 1306, 33, 64, 514, 515, 516,
1677     517, 518, 519, 520, 521, 522, 523, 524, 749, 1200,
1678     1201, 525, 746, 1174, 1175, 34, 53, 340, 341, 342,
1679 michael 9235 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
1680 michael 9776 353, 354, 355, 356, 625, 1068, 1069, 35, 61, 485,
1681     731, 1140, 1141, 486, 487, 488, 1144, 985, 986, 489,
1682 michael 9235 490, 36, 59, 463, 464, 465, 466, 467, 468, 469,
1683 michael 9776 716, 1124, 1125, 470, 471, 472, 37, 65, 530, 531,
1684 michael 9235 532, 533, 534, 38, 297, 298, 299, 39, 72, 595,
1685 michael 9776 596, 597, 598, 599, 808, 1243, 1244, 40, 68, 568,
1686     569, 570, 571, 791, 1220, 1221, 41, 54, 373, 374,
1687 michael 9235 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1688 michael 9776 646, 1095, 1096, 385, 386, 387, 388, 389, 42, 60,
1689 michael 9235 476, 477, 478, 479, 43, 55, 393, 394, 395, 396,
1690     44, 120, 121, 122, 45, 57, 403, 404, 405, 406,
1691     46, 170, 171, 172, 173, 174, 175, 176, 177, 178,
1692     179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
1693     189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
1694     199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
1695 michael 9776 209, 210, 211, 433, 949, 950, 212, 432, 925, 926,
1696 michael 9235 213, 214, 215, 216, 47, 98, 99, 100, 101, 102,
1697     103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1698     113, 114, 48, 240, 241, 242, 243, 244, 245, 246,
1699     247, 248, 249, 250
1700 michael 913 };
1701    
1702 michael 2473 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1703     positive, shift that token. If negative, reduce the rule whose
1704     number is the opposite. If YYTABLE_NINF, syntax error. */
1705 michael 1247 static const yytype_int16 yytable[] =
1706 michael 913 {
1707 michael 9776 853, 854, 606, 82, 496, 51, 610, 611, 612, 591,
1708     614, 615, 1093, 287, 287, 73, 295, 118, 1109, 1111,
1709     301, 1246, 1110, 1112, 390, 1247, 220, 480, 118, 295,
1710     83, 84, 52, 1251, 1079, 1080, 1081, 1252, 85, 390,
1711     124, 473, 591, 400, 86, 125, 126, 74, 127, 128,
1712     56, 496, 220, 1066, 129, 75, 454, 58, 565, 49,
1713     50, 1275, 62, 565, 130, 131, 132, 87, 88, 89,
1714     90, 66, 1255, 67, 133, 455, 1256, 134, 135, 136,
1715     526, 473, 91, 92, 93, 119, 137, 481, 497, 94,
1716     95, 96, 391, 97, 852, 482, 119, 483, 456, 1248,
1717     1249, 1250, 668, 138, 670, 671, 577, 391, 674, 857,
1718     858, 69, 1037, 592, 139, 681, 400, 140, 141, 76,
1719     296, 687, 1037, 1067, 527, 142, 457, 221, 71, 695,
1720     696, 143, 144, 296, 145, 497, 146, 115, 116, 147,
1721     148, 707, 708, 709, 251, 1257, 592, 401, 222, 1258,
1722     149, 392, 484, 221, 117, 150, 151, 1268, 152, 153,
1723     154, 1269, 566, 155, 528, 230, 392, 566, 474, 503,
1724     402, 1270, 498, 252, 222, 1271, 253, 458, 123, 1272,
1725     324, -127, -127, 1273, 459, 460, 217, 156, 504, 218,
1726     157, 158, 159, 160, 161, 162, 163, 325, 326, 1094,
1727     219, 231, 1279, 327, 461, 254, 1280, 529, 474, 227,
1728     578, 505, 232, 233, 234, 255, 1038, 235, 236, 498,
1729     401, 577, 237, 238, 239, 1308, 1038, 593, 228, 1309,
1730     594, 764, 229, 288, 288, 322, 741, 256, 357, 506,
1731     358, 257, 359, 402, 164, 165, 574, 305, 258, 398,
1732     328, 259, 260, 852, 286, 166, 167, 360, 494, 733,
1733     593, 589, 475, 594, 168, 526, 169, 579, 329, 330,
1734     294, 659, 452, 507, 810, 331, 567, 462, 332, 261,
1735     361, 567, 73, 300, 333, 580, 796, 1135, 722, 302,
1736     508, 303, 334, 335, 336, 792, 304, 1136, 362, 581,
1737     363, 1039, 475, 307, 337, 308, 309, 310, 364, 527,
1738     311, 1039, 760, 726, 74, 491, 312, 313, 841, 1137,
1739     365, 844, 75, 846, 338, 578, 314, 315, 851, 316,
1740     1040, 317, 318, 319, 320, 321, 503, 397, 802, 407,
1741     1040, 408, 366, 409, 1226, 410, 869, 411, 665, 528,
1742     480, 262, 412, 263, 264, 504, 265, 266, 267, 413,
1743     454, 339, 414, 367, 509, 816, 817, 818, 819, 820,
1744     821, 822, 415, 416, 417, 418, 563, 510, 505, 455,
1745     511, 368, 579, 419, 420, 421, 76, 422, 423, 424,
1746     512, 425, 529, 426, 513, 427, 369, 544, 428, 124,
1747     580, 754, 456, 546, 125, 126, 506, 127, 128, 429,
1748     481, 1115, 637, 129, 581, 430, 431, 434, 482, 1297,
1749     483, 1298, 435, 130, 131, 132, 436, 437, 438, 439,
1750     457, 440, 441, 133, 442, 443, 134, 135, 136, 1116,
1751     507, 444, 445, 446, 370, 137, 371, 372, 447, 448,
1752     449, 1138, 450, 451, 492, 604, 493, 508, 535, 605,
1753     536, 1139, 138, 1299, 1149, 537, 538, 539, 540, 541,
1754     655, 542, 1117, 139, 543, 484, 140, 141, 547, 1300,
1755     548, 458, 1150, 1151, 142, 549, 550, 551, 459, 460,
1756     143, 144, 552, 145, 1152, 146, 553, 554, 147, 148,
1757     555, 1118, 1119, 556, 557, 558, 559, 1120, 461, 149,
1758     1301, 1302, 560, 561, 150, 151, 572, 152, 153, 154,
1759     562, 573, 155, 1056, 1057, 1058, 1059, 1060, 1061, 1062,
1760     1121, 509, 576, 1153, 1154, 588, 1155, 600, 601, 602,
1761     607, 608, 603, 605, 510, 609, 156, 511, 251, 157,
1762     158, 159, 160, 161, 162, 163, 613, 512, 616, 230,
1763     617, 513, 1156, 618, 619, 622, 620, 1303, 661, 1286,
1764     1157, 621, 667, 1304, 639, 623, 624, 252, 626, 1210,
1765     253, 462, 627, 628, 672, 629, 630, 631, 632, 1276,
1766     633, 1158, 634, 1159, 1160, 231, 635, 636, 1122, 640,
1767     641, 642, 643, 164, 165, 644, 232, 233, 234, 254,
1768     1161, 235, 236, 645, 166, 167, 237, 238, 239, 255,
1769     647, 648, 649, 168, 1123, 169, 1162, 650, 1233, 927,
1770     669, 1163, 651, 662, 357, 1164, 358, 1211, 359, 1165,
1771     652, 256, 653, 654, 1166, 257, 657, 658, 1167, 663,
1772     664, 673, 258, 360, 675, 259, 260, 1168, 676, 1169,
1773     1170, 1212, 1171, 677, 928, 678, 679, 680, 682, 1213,
1774     683, 929, 684, 930, 931, 685, 361, 686, 1214, 688,
1775     1172, 691, 689, 261, 690, 694, 1234, 692, 1173, 693,
1776     697, 698, 699, 700, 362, 1178, 363, 701, 702, 703,
1777     1215, 704, 1216, 1217, 364, 705, 706, 711, 710, 714,
1778     1235, 712, 713, 715, 762, 728, 365, 717, 1236, 718,
1779     719, 763, 735, 1218, 766, 720, 721, 1237, 736, 768,
1780     1179, 1219, 765, 905, 724, 725, 772, 1180, 366, 1181,
1781     1182, 729, 730, 732, 737, 738, 739, 769, 743, 1238,
1782     740, 1239, 1240, 744, 745, 262, 747, 263, 264, 367,
1783     265, 266, 267, 748, 750, 751, 752, 753, 906, 756,
1784     757, 758, 1241, 759, 767, 907, 770, 368, 932, 933,
1785     1242, 771, 934, 935, 773, 936, 937, 774, 938, 775,
1786     939, 776, 369, 940, 777, 941, 942, 778, 779, 780,
1787     781, 943, 794, 782, 783, 944, 784, 785, 786, 945,
1788     946, 947, 787, 788, 790, 798, 789, 795, 797, 948,
1789     804, 847, 799, 800, 801, 805, 806, 807, 812, 813,
1790     809, 814, 815, 825, 826, 827, 828, 829, 830, 831,
1791     370, 832, 371, 372, 1183, 1184, 833, 324, 1185, 1186,
1792     839, 1187, 1188, 834, 1189, 835, 1190, 836, 837, 1191,
1793     838, 1192, 1193, 840, 325, 326, 842, 1194, 843, 845,
1794     327, 1195, 848, 849, 850, 1196, 1197, 1198, 852, 856,
1795     855, 859, 908, 909, 860, 1199, 910, 911, 861, 912,
1796     913, 862, 914, 864, 915, 863, 865, 916, 866, 917,
1797     918, 867, 2, 3, 868, 919, 4, 870, 871, 920,
1798     971, 872, 873, 921, 922, 923, 874, 328, 973, 5,
1799     875, 876, 6, 924, 877, 7, 878, 879, 82, 880,
1800     881, 882, 883, 884, 8, 329, 330, 885, 886, 887,
1801     888, 889, 331, 890, 891, 332, 892, 9, 893, 894,
1802     895, 333, 896, 10, 11, 83, 84, 897, 898, 334,
1803     335, 336, 899, 85, 900, 901, 902, 903, 904, 86,
1804     951, 337, 12, 952, 953, 954, 13, 955, 956, 957,
1805     958, 959, 960, 961, 962, 963, 14, 964, 965, 966,
1806     967, 338, 87, 88, 89, 90, 968, 969, 970, 972,
1807     974, 975, 976, 978, 979, 15, 16, 91, 92, 93,
1808     977, 980, 981, 982, 94, 95, 96, 984, 97, 983,
1809     17, 987, 988, 989, 992, 990, 991, 993, 339, 994,
1810     996, 997, 999, 995, 998, 1000, 18, 1001, 1002, 1034,
1811     1004, 1003, 1005, 1006, 1288, 564, 1007, 1008, 19, 20,
1812     1009, 1010, 1011, 1012, 1013, 1014, 1015, 306, 1016, 1017,
1813     1018, 1019, 1020, 1033, 1021, 21, 1022, 1023, 1024, 1025,
1814     1026, 1027, 1028, 1029, 1030, 1031, 1032, 1035, 22, 1036,
1815     1046, 1047, 1048, 23, 1049, 1050, 1052, 1051, 24, 1054,
1816     1055, 25, 1053, 1063, 1064, 1065, 1070, 1071, 1072, 1073,
1817     1074, 1075, 1076, 1077, 1078, 1084, 1085, 1086, 1087, 1088,
1818     1089, 1090, 1091, 1092, 1097, 1098, 1099, 1100, 1101, 1102,
1819     1103, 1104, 1105, 1106, 1107, 1108, 1113, 1114, 1126, 1127,
1820     1128, 1129, 1130, 1131, 1142, 1132, 1133, 1134, 1285, 1145,
1821     1146, 1147, 1143, 1148, 1176, 1177, 1202, 1203, 1287, 1204,
1822     1205, 1206, 1207, 1208, 1209, 1222, 1289, 1290, 1228, 1223,
1823     1224, 1229, 1230, 1231, 1232, 1245, 1259, 742, 1261, 495,
1824     1227, 1262, 1274, 1310, 1263, 1264, 1265, 1266, 1267, 1277,
1825     1278, 1294, 1295, 1296, 755, 1292, 1291, 1281, 638, 1284,
1826     803, 1260, 723, 1283, 761, 1307, 734, 793, 1282, 1293,
1827     727, 399, 453, 1253, 660, 811, 666, 1254, 323, 545,
1828     0, 0, 0, 0, 0, 0, 0, 575, 0, 0,
1829     0, 0, 656, 0, 0, 0, 0, 0, 0, 0,
1830 michael 9235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1831 michael 9776 590
1832 michael 913 };
1833    
1834     static const yytype_int16 yycheck[] =
1835     {
1836 michael 9776 635, 636, 308, 1, 1, 234, 312, 313, 314, 1,
1837     316, 317, 8, 1, 1, 1, 1, 1, 232, 232,
1838     232, 232, 236, 236, 1, 236, 1, 1, 1, 1,
1839     28, 29, 234, 232, 12, 13, 14, 236, 36, 1,
1840     1, 1, 1, 1, 42, 6, 7, 33, 9, 10,
1841     234, 1, 1, 57, 15, 41, 1, 234, 1, 232,
1842     233, 198, 234, 1, 25, 26, 27, 65, 66, 67,
1843     68, 234, 232, 234, 35, 20, 236, 38, 39, 40,
1844     1, 1, 80, 81, 82, 69, 47, 61, 85, 87,
1845     88, 89, 69, 91, 231, 69, 69, 71, 43, 1079,
1846     1080, 1081, 408, 64, 410, 411, 1, 69, 414, 173,
1847     174, 234, 1, 105, 75, 421, 1, 78, 79, 105,
1848     105, 427, 1, 127, 45, 86, 71, 102, 234, 435,
1849     436, 92, 93, 105, 95, 85, 97, 234, 234, 100,
1850     101, 447, 448, 449, 1, 232, 105, 105, 123, 236,
1851     111, 128, 126, 102, 234, 116, 117, 232, 119, 120,
1852     121, 236, 105, 124, 85, 1, 128, 105, 128, 1,
1853     128, 232, 169, 30, 123, 236, 33, 122, 234, 232,
1854     1, 169, 169, 236, 129, 130, 234, 148, 20, 234,
1855     151, 152, 153, 154, 155, 156, 157, 18, 19, 195,
1856     234, 37, 232, 24, 149, 62, 236, 128, 128, 234,
1857     105, 43, 48, 49, 50, 72, 105, 53, 54, 169,
1858     105, 1, 58, 59, 60, 232, 105, 219, 234, 236,
1859     222, 537, 234, 221, 221, 233, 233, 94, 1, 71,
1860     3, 98, 5, 128, 205, 206, 233, 233, 105, 233,
1861     71, 108, 109, 231, 234, 216, 217, 20, 233, 233,
1862     219, 233, 222, 222, 225, 1, 227, 162, 89, 90,
1863     234, 233, 233, 105, 233, 96, 219, 222, 99, 136,
1864     43, 219, 1, 234, 105, 180, 234, 21, 233, 235,
1865     122, 235, 113, 114, 115, 233, 235, 31, 61, 194,
1866     63, 190, 222, 235, 125, 235, 235, 235, 71, 45,
1867     235, 190, 233, 233, 33, 232, 235, 235, 624, 53,
1868     83, 627, 41, 629, 145, 105, 235, 235, 634, 235,
1869     219, 235, 235, 235, 235, 235, 1, 235, 233, 235,
1870     219, 235, 105, 235, 233, 235, 652, 235, 233, 85,
1871     1, 208, 235, 210, 211, 20, 213, 214, 215, 235,
1872     1, 182, 235, 126, 196, 137, 138, 139, 140, 141,
1873     142, 143, 235, 235, 235, 235, 233, 209, 43, 20,
1874     212, 144, 162, 235, 235, 235, 105, 235, 235, 235,
1875     222, 235, 128, 235, 226, 235, 159, 233, 235, 1,
1876     180, 233, 43, 232, 6, 7, 71, 9, 10, 235,
1877     61, 16, 233, 15, 194, 235, 235, 235, 69, 74,
1878     71, 76, 235, 25, 26, 27, 235, 235, 235, 235,
1879     71, 235, 235, 35, 235, 235, 38, 39, 40, 44,
1880     105, 235, 235, 235, 207, 47, 209, 210, 235, 235,
1881     235, 185, 235, 235, 235, 231, 235, 122, 235, 231,
1882     235, 195, 64, 118, 4, 235, 235, 235, 235, 235,
1883     233, 235, 77, 75, 235, 126, 78, 79, 235, 134,
1884     235, 122, 22, 23, 86, 235, 235, 235, 129, 130,
1885     92, 93, 235, 95, 34, 97, 235, 235, 100, 101,
1886     235, 106, 107, 235, 235, 235, 235, 112, 149, 111,
1887     165, 166, 235, 235, 116, 117, 232, 119, 120, 121,
1888     235, 235, 124, 816, 817, 818, 819, 820, 821, 822,
1889     135, 196, 169, 73, 74, 235, 76, 230, 230, 230,
1890     204, 204, 232, 231, 209, 231, 148, 212, 1, 151,
1891     152, 153, 154, 155, 156, 157, 231, 222, 231, 1,
1892     231, 226, 102, 231, 231, 235, 232, 222, 230, 134,
1893     110, 232, 204, 228, 232, 235, 235, 30, 235, 76,
1894     33, 222, 235, 235, 204, 235, 235, 235, 235, 1224,
1895     235, 131, 235, 133, 134, 37, 235, 235, 203, 235,
1896     235, 235, 235, 205, 206, 235, 48, 49, 50, 62,
1897     150, 53, 54, 235, 216, 217, 58, 59, 60, 72,
1898     235, 235, 235, 225, 229, 227, 166, 235, 76, 11,
1899     231, 171, 235, 232, 1, 175, 3, 134, 5, 179,
1900     235, 94, 235, 235, 184, 98, 235, 235, 188, 235,
1901     235, 231, 105, 20, 204, 108, 109, 197, 231, 199,
1902     200, 158, 202, 231, 46, 231, 204, 204, 231, 166,
1903     231, 53, 231, 55, 56, 231, 43, 231, 175, 231,
1904     220, 204, 231, 136, 231, 204, 134, 235, 228, 235,
1905     204, 204, 204, 204, 61, 11, 63, 204, 204, 204,
1906     197, 204, 199, 200, 71, 204, 231, 231, 204, 235,
1907     158, 232, 232, 235, 204, 232, 83, 235, 166, 235,
1908     235, 204, 230, 220, 204, 235, 235, 175, 230, 204,
1909     46, 228, 230, 11, 235, 235, 231, 53, 105, 55,
1910     56, 235, 235, 235, 232, 232, 235, 204, 232, 197,
1911     235, 199, 200, 235, 235, 208, 235, 210, 211, 126,
1912     213, 214, 215, 235, 235, 235, 235, 235, 46, 232,
1913     235, 235, 220, 235, 230, 53, 204, 144, 160, 161,
1914     228, 232, 164, 165, 230, 167, 168, 204, 170, 230,
1915     172, 231, 159, 175, 231, 177, 178, 230, 230, 230,
1916     230, 183, 204, 230, 230, 187, 230, 230, 230, 191,
1917     192, 193, 230, 232, 235, 235, 232, 232, 232, 201,
1918     230, 230, 235, 235, 235, 232, 232, 235, 232, 232,
1919     235, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1920     207, 232, 209, 210, 160, 161, 232, 1, 164, 165,
1921     231, 167, 168, 232, 170, 232, 172, 232, 232, 175,
1922     232, 177, 178, 231, 18, 19, 235, 183, 231, 231,
1923     24, 187, 231, 231, 231, 191, 192, 193, 231, 230,
1924     232, 230, 160, 161, 204, 201, 164, 165, 230, 167,
1925     168, 230, 170, 230, 172, 235, 230, 175, 231, 177,
1926     178, 230, 0, 1, 230, 183, 4, 230, 230, 187,
1927     235, 232, 230, 191, 192, 193, 230, 71, 231, 17,
1928     232, 232, 20, 201, 230, 23, 230, 232, 1, 232,
1929     232, 232, 232, 232, 32, 89, 90, 232, 232, 232,
1930     232, 232, 96, 232, 232, 99, 232, 45, 232, 232,
1931     232, 105, 232, 51, 52, 28, 29, 232, 232, 113,
1932     114, 115, 232, 36, 232, 232, 232, 232, 232, 42,
1933     232, 125, 70, 232, 232, 232, 74, 232, 232, 232,
1934     232, 232, 232, 232, 232, 232, 84, 232, 232, 232,
1935     232, 145, 65, 66, 67, 68, 232, 230, 204, 230,
1936     230, 230, 230, 230, 230, 103, 104, 80, 81, 82,
1937     232, 232, 230, 230, 87, 88, 89, 231, 91, 235,
1938     118, 232, 232, 232, 232, 230, 230, 230, 182, 204,
1939     230, 230, 230, 235, 235, 204, 134, 230, 230, 235,
1940     230, 232, 230, 230, 134, 268, 232, 232, 146, 147,
1941     232, 232, 232, 232, 232, 232, 232, 77, 232, 232,
1942     232, 232, 232, 230, 232, 163, 232, 232, 232, 232,
1943     232, 232, 232, 232, 232, 232, 232, 232, 176, 232,
1944     230, 230, 230, 181, 230, 232, 230, 232, 186, 230,
1945     232, 189, 235, 232, 232, 232, 232, 232, 232, 232,
1946     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1947     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1948     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1949     232, 232, 232, 232, 218, 232, 232, 232, 132, 232,
1950     232, 232, 236, 232, 232, 232, 232, 232, 132, 232,
1951     232, 232, 232, 232, 232, 232, 132, 132, 232, 235,
1952     235, 232, 232, 232, 232, 232, 231, 499, 232, 223,
1953     1041, 237, 230, 1309, 237, 237, 237, 237, 237, 235,
1954     232, 232, 232, 232, 514, 1271, 1269, 1247, 340, 1258,
1955     582, 1143, 463, 1256, 530, 1280, 486, 568, 1252, 1273,
1956     476, 120, 170, 1110, 393, 595, 403, 1112, 98, 240,
1957     -1, -1, -1, -1, -1, -1, -1, 289, -1, -1,
1958     -1, -1, 373, -1, -1, -1, -1, -1, -1, -1,
1959 michael 9235 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1960 michael 9776 297
1961 michael 913 };
1962    
1963 michael 2473 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1964     symbol of state STATE-NUM. */
1965 michael 9751 static const yytype_int16 yystos[] =
1966 michael 913 {
1967 michael 9776 0, 239, 0, 1, 4, 17, 20, 23, 32, 45,
1968     51, 52, 70, 74, 84, 103, 104, 118, 134, 146,
1969     147, 163, 176, 181, 186, 189, 240, 245, 250, 269,
1970     275, 281, 289, 303, 323, 345, 359, 374, 381, 385,
1971     395, 404, 426, 432, 438, 442, 448, 502, 520, 232,
1972     233, 234, 234, 324, 405, 433, 234, 443, 234, 360,
1973     427, 346, 234, 276, 304, 375, 234, 234, 396, 234,
1974     282, 234, 386, 1, 33, 41, 105, 270, 271, 272,
1975     273, 274, 1, 28, 29, 36, 42, 65, 66, 67,
1976     68, 80, 81, 82, 87, 88, 89, 91, 503, 504,
1977     505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
1978     515, 516, 517, 518, 519, 234, 234, 234, 1, 69,
1979     439, 440, 441, 234, 1, 6, 7, 9, 10, 15,
1980     25, 26, 27, 35, 38, 39, 40, 47, 64, 75,
1981     78, 79, 86, 92, 93, 95, 97, 100, 101, 111,
1982     116, 117, 119, 120, 121, 124, 148, 151, 152, 153,
1983     154, 155, 156, 157, 205, 206, 216, 217, 225, 227,
1984     449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
1985     459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
1986     469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
1987     479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
1988     489, 490, 494, 498, 499, 500, 501, 234, 234, 234,
1989     1, 102, 123, 246, 247, 248, 249, 234, 234, 234,
1990     1, 37, 48, 49, 50, 53, 54, 58, 59, 60,
1991     521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
1992     531, 1, 30, 33, 62, 72, 94, 98, 105, 108,
1993     109, 136, 208, 210, 211, 213, 214, 215, 251, 252,
1994     253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
1995     263, 264, 265, 266, 267, 268, 234, 1, 221, 290,
1996     291, 292, 293, 294, 234, 1, 105, 382, 383, 384,
1997     234, 232, 235, 235, 235, 233, 271, 235, 235, 235,
1998     235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1999     235, 235, 233, 504, 1, 18, 19, 24, 71, 89,
2000     90, 96, 99, 105, 113, 114, 115, 125, 145, 182,
2001     325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
2002     335, 336, 337, 338, 339, 340, 341, 1, 3, 5,
2003     20, 43, 61, 63, 71, 83, 105, 126, 144, 159,
2004     207, 209, 210, 406, 407, 408, 409, 410, 411, 412,
2005     413, 414, 415, 416, 417, 421, 422, 423, 424, 425,
2006     1, 69, 128, 434, 435, 436, 437, 235, 233, 440,
2007     1, 105, 128, 444, 445, 446, 447, 235, 235, 235,
2008     235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
2009     235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
2010     235, 235, 495, 491, 235, 235, 235, 235, 235, 235,
2011     235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
2012     235, 235, 233, 450, 1, 20, 43, 71, 122, 129,
2013     130, 149, 222, 361, 362, 363, 364, 365, 366, 367,
2014     371, 372, 373, 1, 128, 222, 428, 429, 430, 431,
2015     1, 61, 69, 71, 126, 347, 351, 352, 353, 357,
2016     358, 232, 235, 235, 233, 247, 1, 85, 169, 277,
2017     278, 279, 280, 1, 20, 43, 71, 105, 122, 196,
2018     209, 212, 222, 226, 305, 306, 307, 308, 309, 310,
2019     311, 312, 313, 314, 315, 319, 1, 45, 85, 128,
2020     376, 377, 378, 379, 380, 235, 235, 235, 235, 235,
2021     235, 235, 235, 235, 233, 522, 232, 235, 235, 235,
2022     235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
2023     235, 235, 235, 233, 252, 1, 105, 219, 397, 398,
2024     399, 400, 232, 235, 233, 291, 169, 1, 105, 162,
2025     180, 194, 283, 284, 285, 286, 287, 288, 235, 233,
2026     383, 1, 105, 219, 222, 387, 388, 389, 390, 391,
2027     230, 230, 230, 232, 231, 231, 242, 204, 204, 231,
2028     242, 242, 242, 231, 242, 242, 231, 231, 231, 231,
2029     232, 232, 235, 235, 235, 342, 235, 235, 235, 235,
2030     235, 235, 235, 235, 235, 235, 235, 233, 326, 232,
2031     235, 235, 235, 235, 235, 235, 418, 235, 235, 235,
2032     235, 235, 235, 235, 235, 233, 407, 235, 235, 233,
2033     435, 230, 232, 235, 235, 233, 445, 204, 242, 231,
2034     242, 242, 204, 231, 242, 204, 231, 231, 231, 204,
2035     204, 242, 231, 231, 231, 231, 231, 242, 231, 231,
2036     231, 204, 235, 235, 204, 242, 242, 204, 204, 204,
2037     204, 204, 204, 204, 204, 204, 231, 242, 242, 242,
2038     204, 231, 232, 232, 235, 235, 368, 235, 235, 235,
2039     235, 235, 233, 362, 235, 235, 233, 429, 232, 235,
2040     235, 348, 235, 233, 352, 230, 230, 232, 232, 235,
2041     235, 233, 278, 232, 235, 235, 320, 235, 235, 316,
2042     235, 235, 235, 235, 233, 306, 232, 235, 235, 235,
2043     233, 377, 204, 204, 242, 230, 204, 230, 204, 204,
2044     204, 232, 231, 230, 204, 230, 231, 231, 230, 230,
2045     230, 230, 230, 230, 230, 230, 230, 230, 232, 232,
2046     235, 401, 233, 398, 204, 232, 234, 232, 235, 235,
2047     235, 235, 233, 284, 230, 232, 232, 235, 392, 235,
2048     233, 388, 232, 232, 232, 232, 137, 138, 139, 140,
2049     141, 142, 143, 241, 242, 232, 232, 232, 232, 232,
2050     232, 232, 232, 232, 232, 232, 232, 232, 232, 231,
2051     231, 242, 235, 231, 242, 231, 242, 230, 231, 231,
2052     231, 242, 231, 244, 244, 232, 230, 173, 174, 230,
2053     204, 230, 230, 235, 230, 230, 231, 230, 230, 242,
2054     230, 230, 232, 230, 230, 232, 232, 230, 230, 232,
2055     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
2056     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
2057     232, 232, 232, 232, 232, 11, 46, 53, 160, 161,
2058     164, 165, 167, 168, 170, 172, 175, 177, 178, 183,
2059     187, 191, 192, 193, 201, 496, 497, 11, 46, 53,
2060     55, 56, 160, 161, 164, 165, 167, 168, 170, 172,
2061     175, 177, 178, 183, 187, 191, 192, 193, 201, 492,
2062     493, 232, 232, 232, 232, 232, 232, 232, 232, 232,
2063     232, 232, 232, 232, 232, 232, 232, 232, 232, 230,
2064     204, 235, 230, 231, 230, 230, 230, 232, 230, 230,
2065     232, 230, 230, 235, 231, 355, 356, 232, 232, 232,
2066     230, 230, 232, 230, 204, 235, 230, 230, 235, 230,
2067     204, 230, 230, 232, 230, 230, 230, 232, 232, 232,
2068     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
2069     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
2070     232, 232, 232, 230, 235, 232, 232, 1, 105, 190,
2071     219, 295, 296, 297, 298, 299, 230, 230, 230, 230,
2072     232, 232, 230, 235, 230, 232, 241, 241, 241, 241,
2073     241, 241, 241, 232, 232, 232, 57, 127, 343, 344,
2074     232, 232, 232, 232, 232, 232, 232, 232, 232, 12,
2075     13, 14, 243, 244, 232, 232, 232, 232, 232, 232,
2076     232, 232, 232, 8, 195, 419, 420, 232, 232, 232,
2077     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
2078     236, 232, 236, 232, 232, 16, 44, 77, 106, 107,
2079     112, 135, 203, 229, 369, 370, 232, 232, 232, 232,
2080     232, 232, 232, 232, 232, 21, 31, 53, 185, 195,
2081     349, 350, 218, 236, 354, 232, 232, 232, 232, 4,
2082     22, 23, 34, 73, 74, 76, 102, 110, 131, 133,
2083     134, 150, 166, 171, 175, 179, 184, 188, 197, 199,
2084     200, 202, 220, 228, 321, 322, 232, 232, 11, 46,
2085     53, 55, 56, 160, 161, 164, 165, 167, 168, 170,
2086     172, 175, 177, 178, 183, 187, 191, 192, 193, 201,
2087     317, 318, 232, 232, 232, 232, 232, 232, 232, 232,
2088     76, 134, 158, 166, 175, 197, 199, 200, 220, 228,
2089     402, 403, 232, 235, 235, 300, 233, 296, 232, 232,
2090     232, 232, 232, 76, 134, 158, 166, 175, 197, 199,
2091     200, 220, 228, 393, 394, 232, 232, 236, 243, 243,
2092     243, 232, 236, 497, 493, 232, 236, 232, 236, 231,
2093     356, 232, 237, 237, 237, 237, 237, 237, 232, 236,
2094     232, 236, 232, 236, 230, 198, 244, 235, 232, 232,
2095     236, 344, 420, 370, 350, 132, 134, 132, 134, 132,
2096     132, 322, 318, 403, 232, 232, 232, 74, 76, 118,
2097     134, 165, 166, 222, 228, 301, 302, 394, 232, 236,
2098     302
2099 michael 913 };
2100    
2101 michael 2473 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
2102 michael 9751 static const yytype_int16 yyr1[] =
2103 michael 2473 {
2104 michael 9776 0, 238, 239, 239, 240, 240, 240, 240, 240, 240,
2105     240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
2106     240, 240, 240, 240, 240, 240, 240, 240, 241, 241,
2107     242, 242, 242, 242, 242, 242, 242, 242, 243, 243,
2108     244, 244, 244, 244, 245, 246, 246, 247, 247, 247,
2109     248, 249, 250, 251, 251, 252, 252, 252, 252, 252,
2110     252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
2111     252, 252, 253, 254, 255, 256, 257, 258, 259, 260,
2112     261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
2113     270, 271, 271, 271, 271, 272, 273, 274, 276, 275,
2114     277, 277, 278, 278, 278, 279, 280, 282, 281, 283,
2115     283, 284, 284, 284, 284, 284, 285, 286, 287, 288,
2116     289, 290, 290, 291, 291, 291, 292, 294, 293, 295,
2117     295, 296, 296, 296, 296, 297, 298, 298, 300, 299,
2118     301, 301, 302, 302, 302, 302, 302, 302, 302, 302,
2119     304, 303, 305, 305, 306, 306, 306, 306, 306, 306,
2120     306, 306, 306, 306, 306, 307, 308, 309, 310, 311,
2121     312, 313, 314, 316, 315, 317, 317, 318, 318, 318,
2122     318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
2123     318, 318, 318, 318, 318, 318, 318, 318, 318, 320,
2124     319, 321, 321, 322, 322, 322, 322, 322, 322, 322,
2125     322, 322, 322, 322, 322, 322, 322, 322, 322, 322,
2126     322, 322, 322, 322, 322, 322, 322, 322, 322, 322,
2127     322, 322, 324, 323, 325, 325, 326, 326, 326, 326,
2128     326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
2129     326, 326, 327, 328, 329, 330, 331, 332, 333, 334,
2130     335, 336, 337, 338, 339, 340, 342, 341, 343, 343,
2131     344, 344, 346, 345, 348, 347, 349, 349, 350, 350,
2132     350, 350, 350, 351, 351, 352, 352, 352, 352, 352,
2133     354, 353, 355, 355, 356, 356, 357, 358, 360, 359,
2134     361, 361, 362, 362, 362, 362, 362, 362, 362, 362,
2135     362, 363, 364, 365, 366, 368, 367, 369, 369, 370,
2136     370, 370, 370, 370, 370, 370, 370, 370, 371, 372,
2137     373, 375, 374, 376, 376, 377, 377, 377, 377, 378,
2138     379, 380, 381, 382, 382, 383, 383, 384, 386, 385,
2139     387, 387, 388, 388, 388, 388, 389, 390, 392, 391,
2140     393, 393, 394, 394, 394, 394, 394, 394, 394, 394,
2141     394, 394, 396, 395, 397, 397, 398, 398, 398, 399,
2142     401, 400, 402, 402, 403, 403, 403, 403, 403, 403,
2143     403, 403, 403, 403, 405, 404, 406, 406, 407, 407,
2144     407, 407, 407, 407, 407, 407, 407, 407, 407, 407,
2145     407, 407, 407, 407, 408, 409, 410, 411, 412, 413,
2146     414, 415, 416, 416, 418, 417, 419, 419, 420, 420,
2147     421, 422, 423, 424, 425, 427, 426, 428, 428, 429,
2148     429, 429, 430, 431, 433, 432, 434, 434, 435, 435,
2149     435, 436, 437, 438, 439, 439, 440, 440, 441, 443,
2150     442, 444, 444, 445, 445, 445, 446, 447, 448, 449,
2151     449, 450, 450, 450, 450, 450, 450, 450, 450, 450,
2152     450, 450, 450, 450, 450, 450, 450, 450, 450, 450,
2153     450, 450, 450, 450, 450, 450, 450, 450, 450, 450,
2154     450, 450, 450, 450, 450, 450, 450, 450, 450, 450,
2155     450, 450, 450, 450, 450, 450, 450, 451, 452, 453,
2156 michael 9319 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
2157     464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
2158     474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
2159 michael 9776 484, 485, 486, 487, 488, 489, 491, 490, 492, 492,
2160     493, 493, 493, 493, 493, 493, 493, 493, 493, 493,
2161     493, 493, 493, 493, 493, 493, 493, 493, 493, 493,
2162     493, 493, 495, 494, 496, 496, 497, 497, 497, 497,
2163     497, 497, 497, 497, 497, 497, 497, 497, 497, 497,
2164     497, 497, 497, 497, 497, 497, 498, 499, 500, 501,
2165     502, 503, 503, 504, 504, 504, 504, 504, 504, 504,
2166     504, 504, 504, 504, 504, 504, 504, 504, 504, 505,
2167     506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
2168     516, 517, 518, 519, 520, 521, 521, 522, 522, 522,
2169     522, 522, 522, 522, 522, 522, 522, 523, 524, 525,
2170     526, 527, 528, 529, 530, 531
2171 michael 2473 };
2172 michael 913
2173 michael 2473 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
2174 michael 9751 static const yytype_int8 yyr2[] =
2175 michael 2473 {
2176     0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
2177     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2178 michael 4545 1, 1, 1, 1, 1, 1, 2, 2, 0, 1,
2179     2, 3, 3, 3, 3, 3, 3, 3, 0, 1,
2180     2, 3, 3, 3, 5, 2, 1, 1, 1, 2,
2181     4, 4, 5, 2, 1, 1, 1, 1, 1, 1,
2182 michael 2473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2183 michael 9140 1, 2, 4, 4, 4, 4, 4, 4, 4, 4,
2184     4, 4, 4, 4, 4, 4, 4, 4, 5, 2,
2185     1, 1, 1, 1, 2, 4, 4, 4, 0, 6,
2186     2, 1, 1, 1, 2, 4, 4, 0, 6, 2,
2187     1, 1, 1, 1, 1, 2, 4, 4, 4, 4,
2188     5, 2, 1, 1, 1, 2, 4, 0, 6, 2,
2189     1, 1, 1, 1, 2, 4, 4, 4, 0, 5,
2190     3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2191     0, 6, 2, 1, 1, 1, 1, 1, 1, 1,
2192     1, 1, 1, 1, 2, 4, 4, 4, 4, 4,
2193     4, 4, 4, 0, 5, 3, 1, 1, 1, 1,
2194 michael 8866 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2195 michael 9776 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
2196     5, 3, 1, 3, 1, 3, 1, 3, 1, 1,
2197     1, 1, 1, 1, 1, 1, 1, 3, 1, 1,
2198     1, 1, 1, 1, 1, 1, 1, 3, 3, 1,
2199     1, 1, 0, 6, 2, 1, 1, 1, 1, 1,
2200 michael 8964 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2201 michael 9776 1, 2, 4, 4, 4, 4, 4, 4, 4, 4,
2202     4, 4, 4, 4, 4, 4, 0, 5, 3, 1,
2203     1, 1, 0, 6, 0, 5, 3, 1, 1, 1,
2204     1, 1, 1, 2, 1, 1, 1, 1, 1, 2,
2205     0, 5, 3, 1, 1, 3, 4, 4, 0, 6,
2206     2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2207     2, 4, 4, 4, 4, 0, 5, 3, 1, 1,
2208     1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
2209     4, 0, 6, 2, 1, 1, 1, 1, 2, 4,
2210     4, 4, 5, 2, 1, 1, 1, 4, 0, 6,
2211     2, 1, 1, 1, 1, 2, 4, 4, 0, 5,
2212     3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2213     1, 1, 0, 6, 2, 1, 1, 1, 2, 4,
2214     0, 5, 3, 1, 1, 1, 1, 1, 1, 1,
2215     1, 1, 1, 1, 0, 6, 2, 1, 1, 1,
2216     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2217     1, 1, 1, 2, 4, 4, 4, 4, 4, 4,
2218 michael 9638 4, 4, 4, 4, 0, 5, 3, 1, 1, 1,
2219 michael 9776 4, 4, 4, 4, 4, 0, 6, 2, 1, 1,
2220     1, 1, 4, 4, 0, 6, 2, 1, 1, 1,
2221     1, 4, 4, 5, 2, 1, 1, 1, 4, 0,
2222     6, 2, 1, 1, 1, 1, 4, 4, 5, 2,
2223 michael 9638 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2224 michael 8964 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2225 michael 9610 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2226 michael 9586 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2227 michael 9776 1, 1, 1, 1, 1, 1, 1, 4, 4, 4,
2228 michael 2473 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2229     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2230     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2231 michael 9776 4, 4, 4, 4, 4, 4, 0, 5, 3, 1,
2232 michael 4313 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2233 michael 2473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2234 michael 9776 1, 1, 0, 5, 3, 1, 1, 1, 1, 1,
2235 michael 6490 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2236 michael 9638 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
2237 michael 9776 5, 2, 1, 1, 1, 1, 1, 1, 1, 1,
2238     1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
2239 michael 9638 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2240 michael 9776 4, 4, 4, 4, 5, 2, 1, 1, 1, 1,
2241     1, 1, 1, 1, 1, 1, 1, 4, 4, 4,
2242     4, 4, 4, 4, 4, 4
2243 michael 2473 };
2244 michael 913
2245    
2246 michael 2473 #define yyerrok (yyerrstatus = 0)
2247     #define yyclearin (yychar = YYEMPTY)
2248     #define YYEMPTY (-2)
2249     #define YYEOF 0
2250 michael 913
2251 michael 2473 #define YYACCEPT goto yyacceptlab
2252     #define YYABORT goto yyabortlab
2253     #define YYERROR goto yyerrorlab
2254 michael 913
2255 michael 2473
2256 michael 913 #define YYRECOVERING() (!!yyerrstatus)
2257    
2258 michael 8866 #define YYBACKUP(Token, Value) \
2259     do \
2260     if (yychar == YYEMPTY) \
2261     { \
2262     yychar = (Token); \
2263     yylval = (Value); \
2264     YYPOPSTACK (yylen); \
2265     yystate = *yyssp; \
2266     goto yybackup; \
2267     } \
2268     else \
2269     { \
2270     yyerror (YY_("syntax error: cannot back up")); \
2271     YYERROR; \
2272     } \
2273     while (0)
2274 michael 913
2275 michael 1651 /* Error token number */
2276 michael 2473 #define YYTERROR 1
2277     #define YYERRCODE 256
2278 michael 913
2279    
2280    
2281     /* Enable debugging if requested. */
2282     #if YYDEBUG
2283    
2284     # ifndef YYFPRINTF
2285     # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2286     # define YYFPRINTF fprintf
2287     # endif
2288    
2289 michael 2473 # define YYDPRINTF(Args) \
2290     do { \
2291     if (yydebug) \
2292     YYFPRINTF Args; \
2293     } while (0)
2294 michael 913
2295 michael 2473 /* This macro is provided for backward compatibility. */
2296     #ifndef YY_LOCATION_PRINT
2297     # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2298     #endif
2299 michael 913
2300    
2301 michael 2473 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2302     do { \
2303     if (yydebug) \
2304     { \
2305     YYFPRINTF (stderr, "%s ", Title); \
2306     yy_symbol_print (stderr, \
2307     Type, Value); \
2308     YYFPRINTF (stderr, "\n"); \
2309     } \
2310     } while (0)
2311 michael 913
2312 michael 2473
2313 michael 8760 /*-----------------------------------.
2314     | Print this symbol's value on YYO. |
2315     `-----------------------------------*/
2316 michael 2473
2317 michael 913 static void
2318 michael 8760 yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
2319 michael 913 {
2320 michael 8760 FILE *yyoutput = yyo;
2321     YYUSE (yyoutput);
2322 michael 913 if (!yyvaluep)
2323     return;
2324     # ifdef YYPRINT
2325     if (yytype < YYNTOKENS)
2326 michael 8760 YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
2327 michael 913 # endif
2328 michael 9751 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2329 michael 1835 YYUSE (yytype);
2330 michael 9751 YY_IGNORE_MAYBE_UNINITIALIZED_END
2331 michael 913 }
2332    
2333    
2334 michael 8760 /*---------------------------.
2335     | Print this symbol on YYO. |
2336     `---------------------------*/
2337 michael 913
2338     static void
2339 michael 8760 yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
2340 michael 913 {
2341 michael 8760 YYFPRINTF (yyo, "%s %s (",
2342 michael 2473 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2343 michael 913
2344 michael 8760 yy_symbol_value_print (yyo, yytype, yyvaluep);
2345     YYFPRINTF (yyo, ")");
2346 michael 913 }
2347    
2348     /*------------------------------------------------------------------.
2349     | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2350     | TOP (included). |
2351     `------------------------------------------------------------------*/
2352    
2353     static void
2354 michael 9751 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2355 michael 913 {
2356     YYFPRINTF (stderr, "Stack now");
2357 michael 967 for (; yybottom <= yytop; yybottom++)
2358     {
2359     int yybot = *yybottom;
2360     YYFPRINTF (stderr, " %d", yybot);
2361     }
2362 michael 913 YYFPRINTF (stderr, "\n");
2363     }
2364    
2365 michael 2473 # define YY_STACK_PRINT(Bottom, Top) \
2366     do { \
2367     if (yydebug) \
2368     yy_stack_print ((Bottom), (Top)); \
2369     } while (0)
2370 michael 913
2371    
2372     /*------------------------------------------------.
2373     | Report that the YYRULE is going to be reduced. |
2374     `------------------------------------------------*/
2375    
2376     static void
2377 michael 9751 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
2378 michael 913 {
2379 michael 9751 int yylno = yyrline[yyrule];
2380 michael 913 int yynrhs = yyr2[yyrule];
2381     int yyi;
2382 michael 9751 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2383 michael 2473 yyrule - 1, yylno);
2384 michael 913 /* The symbols being reduced. */
2385     for (yyi = 0; yyi < yynrhs; yyi++)
2386     {
2387 michael 967 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2388 michael 2473 yy_symbol_print (stderr,
2389 michael 9751 yystos[+yyssp[yyi + 1 - yynrhs]],
2390 michael 8866 &yyvsp[(yyi + 1) - (yynrhs)]
2391 michael 2473 );
2392 michael 967 YYFPRINTF (stderr, "\n");
2393 michael 913 }
2394     }
2395    
2396 michael 2473 # define YY_REDUCE_PRINT(Rule) \
2397     do { \
2398     if (yydebug) \
2399     yy_reduce_print (yyssp, yyvsp, Rule); \
2400     } while (0)
2401 michael 913
2402     /* Nonzero means print parse trace. It is left uninitialized so that
2403     multiple parsers can coexist. */
2404     int yydebug;
2405     #else /* !YYDEBUG */
2406     # define YYDPRINTF(Args)
2407     # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2408     # define YY_STACK_PRINT(Bottom, Top)
2409     # define YY_REDUCE_PRINT(Rule)
2410     #endif /* !YYDEBUG */
2411    
2412    
2413     /* YYINITDEPTH -- initial size of the parser's stacks. */
2414 michael 2473 #ifndef YYINITDEPTH
2415 michael 913 # define YYINITDEPTH 200
2416     #endif
2417    
2418     /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2419     if the built-in stack extension method is used).
2420    
2421     Do not make this value too large; the results are undefined if
2422     YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2423     evaluated with infinite-precision integer arithmetic. */
2424    
2425     #ifndef YYMAXDEPTH
2426     # define YYMAXDEPTH 10000
2427     #endif
2428    
2429    
2430     #if YYERROR_VERBOSE
2431    
2432     # ifndef yystrlen
2433     # if defined __GLIBC__ && defined _STRING_H
2434 michael 9751 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2435 michael 913 # else
2436     /* Return the length of YYSTR. */
2437 michael 9751 static YYPTRDIFF_T
2438 michael 913 yystrlen (const char *yystr)
2439     {
2440 michael 9751 YYPTRDIFF_T yylen;
2441 michael 913 for (yylen = 0; yystr[yylen]; yylen++)
2442     continue;
2443     return yylen;
2444     }
2445     # endif
2446     # endif
2447    
2448     # ifndef yystpcpy
2449     # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2450     # define yystpcpy stpcpy
2451     # else
2452     /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2453     YYDEST. */
2454     static char *
2455     yystpcpy (char *yydest, const char *yysrc)
2456     {
2457     char *yyd = yydest;
2458     const char *yys = yysrc;
2459    
2460     while ((*yyd++ = *yys++) != '\0')
2461     continue;
2462    
2463     return yyd - 1;
2464     }
2465     # endif
2466     # endif
2467    
2468     # ifndef yytnamerr
2469     /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2470     quotes and backslashes, so that it's suitable for yyerror. The
2471     heuristic is that double-quoting is unnecessary unless the string
2472     contains an apostrophe, a comma, or backslash (other than
2473     backslash-backslash). YYSTR is taken from yytname. If YYRES is
2474     null, do not copy; instead, return the length of what the result
2475     would have been. */
2476 michael 9751 static YYPTRDIFF_T
2477 michael 913 yytnamerr (char *yyres, const char *yystr)
2478     {
2479     if (*yystr == '"')
2480     {
2481 michael 9751 YYPTRDIFF_T yyn = 0;
2482 michael 913 char const *yyp = yystr;
2483    
2484     for (;;)
2485 michael 2473 switch (*++yyp)
2486     {
2487     case '\'':
2488     case ',':
2489     goto do_not_strip_quotes;
2490 michael 913
2491 michael 2473 case '\\':
2492     if (*++yyp != '\\')
2493     goto do_not_strip_quotes;
2494 michael 8866 else
2495     goto append;
2496    
2497     append:
2498 michael 2473 default:
2499     if (yyres)
2500     yyres[yyn] = *yyp;
2501     yyn++;
2502     break;
2503 michael 913
2504 michael 2473 case '"':
2505     if (yyres)
2506     yyres[yyn] = '\0';
2507     return yyn;
2508     }
2509 michael 913 do_not_strip_quotes: ;
2510     }
2511    
2512 michael 9751 if (yyres)
2513     return yystpcpy (yyres, yystr) - yyres;
2514     else
2515 michael 913 return yystrlen (yystr);
2516     }
2517     # endif
2518    
2519 michael 1133 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2520     about the unexpected token YYTOKEN for the state stack whose top is
2521     YYSSP.
2522    
2523     Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2524     not large enough to hold the message. In that case, also set
2525     *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2526     required number of bytes is too large to store. */
2527     static int
2528 michael 9751 yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
2529     yy_state_t *yyssp, int yytoken)
2530 michael 913 {
2531 michael 1133 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2532     /* Internationalized format string. */
2533 michael 2570 const char *yyformat = YY_NULLPTR;
2534 michael 9751 /* Arguments of yyformat: reported tokens (one for the "unexpected",
2535     one per "expected"). */
2536 michael 1133 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2537 michael 9751 /* Actual size of YYARG. */
2538 michael 1133 int yycount = 0;
2539 michael 9751 /* Cumulated lengths of YYARG. */
2540     YYPTRDIFF_T yysize = 0;
2541 michael 913
2542 michael 1133 /* There are many possibilities here to consider:
2543     - If this state is a consistent state with a default action, then
2544     the only way this function was invoked is if the default action
2545     is an error action. In that case, don't check for expected
2546     tokens because there are none.
2547     - The only way there can be no lookahead present (in yychar) is if
2548     this state is a consistent state with a default action. Thus,
2549     detecting the absence of a lookahead is sufficient to determine
2550     that there is no unexpected or expected token to report. In that
2551     case, just report a simple "syntax error".
2552     - Don't assume there isn't a lookahead just because this state is a
2553     consistent state with a default action. There might have been a
2554     previous inconsistent state, consistent state with a non-default
2555     action, or user semantic action that manipulated yychar.
2556     - Of course, the expected token list depends on states to have
2557     correct lookahead information, and it depends on the parser not
2558     to perform extra reductions after fetching a lookahead from the
2559     scanner and before detecting a syntax error. Thus, state merging
2560     (from LALR or IELR) and default reductions corrupt the expected
2561     token list. However, the list is correct for canonical LR with
2562     one exception: it will still contain any token that will not be
2563     accepted due to an error action in a later state.
2564     */
2565     if (yytoken != YYEMPTY)
2566 michael 913 {
2567 michael 9751 int yyn = yypact[+*yyssp];
2568     YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2569     yysize = yysize0;
2570 michael 1133 yyarg[yycount++] = yytname[yytoken];
2571     if (!yypact_value_is_default (yyn))
2572     {
2573     /* Start YYX at -YYN if negative to avoid negative indexes in
2574     YYCHECK. In other words, skip the first -YYN actions for
2575     this state because they are default actions. */
2576     int yyxbegin = yyn < 0 ? -yyn : 0;
2577     /* Stay within bounds of both yycheck and yytname. */
2578     int yychecklim = YYLAST - yyn + 1;
2579     int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2580     int yyx;
2581 michael 913
2582 michael 1133 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2583     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2584     && !yytable_value_is_error (yytable[yyx + yyn]))
2585     {
2586     if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2587     {
2588     yycount = 1;
2589     yysize = yysize0;
2590     break;
2591     }
2592     yyarg[yycount++] = yytname[yyx];
2593 michael 1680 {
2594 michael 9751 YYPTRDIFF_T yysize1
2595     = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2596 michael 8866 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2597     yysize = yysize1;
2598     else
2599 michael 1680 return 2;
2600     }
2601 michael 1133 }
2602     }
2603     }
2604 michael 913
2605 michael 1133 switch (yycount)
2606     {
2607     # define YYCASE_(N, S) \
2608     case N: \
2609     yyformat = S; \
2610     break
2611 michael 8760 default: /* Avoid compiler warnings. */
2612 michael 1133 YYCASE_(0, YY_("syntax error"));
2613     YYCASE_(1, YY_("syntax error, unexpected %s"));
2614     YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2615     YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2616     YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2617     YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2618     # undef YYCASE_
2619     }
2620 michael 913
2621 michael 1680 {
2622 michael 9751 /* Don't count the "%s"s in the final size, but reserve room for
2623     the terminator. */
2624     YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
2625 michael 8866 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2626     yysize = yysize1;
2627     else
2628 michael 1680 return 2;
2629     }
2630 michael 913
2631 michael 1133 if (*yymsg_alloc < yysize)
2632     {
2633     *yymsg_alloc = 2 * yysize;
2634     if (! (yysize <= *yymsg_alloc
2635     && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2636     *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2637     return 1;
2638     }
2639 michael 913
2640 michael 1133 /* Avoid sprintf, as that infringes on the user's name space.
2641     Don't have undefined behavior even if the translation
2642     produced a string with the wrong number of "%s"s. */
2643     {
2644     char *yyp = *yymsg;
2645     int yyi = 0;
2646     while ((*yyp = *yyformat) != '\0')
2647     if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2648     {
2649     yyp += yytnamerr (yyp, yyarg[yyi++]);
2650     yyformat += 2;
2651     }
2652     else
2653     {
2654 michael 9751 ++yyp;
2655     ++yyformat;
2656 michael 1133 }
2657     }
2658     return 0;
2659 michael 913 }
2660     #endif /* YYERROR_VERBOSE */
2661    
2662     /*-----------------------------------------------.
2663     | Release the memory associated to this symbol. |
2664     `-----------------------------------------------*/
2665    
2666     static void
2667     yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2668     {
2669     YYUSE (yyvaluep);
2670     if (!yymsg)
2671     yymsg = "Deleting";
2672     YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2673    
2674 michael 2473 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2675 michael 1835 YYUSE (yytype);
2676 michael 2473 YY_IGNORE_MAYBE_UNINITIALIZED_END
2677 michael 913 }
2678    
2679 michael 1133
2680 michael 913
2681    
2682 michael 967 /* The lookahead symbol. */
2683 michael 913 int yychar;
2684    
2685 michael 967 /* The semantic value of the lookahead symbol. */
2686 michael 2473 YYSTYPE yylval;
2687 michael 913 /* Number of syntax errors so far. */
2688     int yynerrs;
2689    
2690    
2691 michael 1133 /*----------.
2692     | yyparse. |
2693     `----------*/
2694 michael 913
2695     int
2696     yyparse (void)
2697     {
2698 michael 9751 yy_state_fast_t yystate;
2699 michael 967 /* Number of tokens to shift before error messages enabled. */
2700     int yyerrstatus;
2701 michael 913
2702 michael 967 /* The stacks and their tools:
2703 michael 2473 'yyss': related to states.
2704     'yyvs': related to semantic values.
2705 michael 913
2706 michael 1425 Refer to the stacks through separate pointers, to allow yyoverflow
2707 michael 967 to reallocate them elsewhere. */
2708 michael 913
2709 michael 967 /* The state stack. */
2710 michael 9751 yy_state_t yyssa[YYINITDEPTH];
2711     yy_state_t *yyss;
2712     yy_state_t *yyssp;
2713 michael 913
2714 michael 967 /* The semantic value stack. */
2715     YYSTYPE yyvsa[YYINITDEPTH];
2716     YYSTYPE *yyvs;
2717     YYSTYPE *yyvsp;
2718 michael 913
2719 michael 9751 YYPTRDIFF_T yystacksize;
2720 michael 913
2721 michael 967 int yyn;
2722     int yyresult;
2723     /* Lookahead token as an internal (translated) token number. */
2724 michael 1619 int yytoken = 0;
2725 michael 913 /* The variables used to return semantic value and location from the
2726     action routines. */
2727     YYSTYPE yyval;
2728    
2729 michael 967 #if YYERROR_VERBOSE
2730     /* Buffer for error messages, and its allocated size. */
2731     char yymsgbuf[128];
2732     char *yymsg = yymsgbuf;
2733 michael 9751 YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
2734 michael 967 #endif
2735 michael 913
2736 michael 967 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2737    
2738 michael 913 /* The number of symbols on the RHS of the reduced rule.
2739     Keep to zero when no symbol should be popped. */
2740     int yylen = 0;
2741    
2742 michael 1651 yyssp = yyss = yyssa;
2743     yyvsp = yyvs = yyvsa;
2744 michael 967 yystacksize = YYINITDEPTH;
2745    
2746 michael 913 YYDPRINTF ((stderr, "Starting parse\n"));
2747    
2748     yystate = 0;
2749     yyerrstatus = 0;
2750     yynerrs = 0;
2751 michael 967 yychar = YYEMPTY; /* Cause a token to be read. */
2752 michael 913 goto yysetstate;
2753    
2754 michael 8866
2755 michael 913 /*------------------------------------------------------------.
2756 michael 8866 | yynewstate -- push a new state, which is found in yystate. |
2757 michael 913 `------------------------------------------------------------*/
2758 michael 8866 yynewstate:
2759 michael 913 /* In all cases, when you get here, the value and location stacks
2760     have just been pushed. So pushing a state here evens the stacks. */
2761     yyssp++;
2762    
2763 michael 8866
2764     /*--------------------------------------------------------------------.
2765 michael 9751 | yysetstate -- set current state (the top of the stack) to yystate. |
2766 michael 8866 `--------------------------------------------------------------------*/
2767     yysetstate:
2768 michael 9751 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2769     YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
2770     YY_IGNORE_USELESS_CAST_BEGIN
2771     *yyssp = YY_CAST (yy_state_t, yystate);
2772     YY_IGNORE_USELESS_CAST_END
2773 michael 913
2774     if (yyss + yystacksize - 1 <= yyssp)
2775 michael 8866 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
2776     goto yyexhaustedlab;
2777     #else
2778 michael 913 {
2779     /* Get the current used size of the three stacks, in elements. */
2780 michael 9751 YYPTRDIFF_T yysize = yyssp - yyss + 1;
2781 michael 913
2782 michael 8866 # if defined yyoverflow
2783 michael 913 {
2784 michael 2473 /* Give user a chance to reallocate the stack. Use copies of
2785     these so that the &'s don't force the real ones into
2786     memory. */
2787 michael 9751 yy_state_t *yyss1 = yyss;
2788 michael 2473 YYSTYPE *yyvs1 = yyvs;
2789 michael 913
2790 michael 2473 /* Each stack pointer address is followed by the size of the
2791     data in use in that stack, in bytes. This used to be a
2792     conditional around just the two extra args, but that might
2793     be undefined if yyoverflow is a macro. */
2794     yyoverflow (YY_("memory exhausted"),
2795 michael 9751 &yyss1, yysize * YYSIZEOF (*yyssp),
2796     &yyvs1, yysize * YYSIZEOF (*yyvsp),
2797 michael 2473 &yystacksize);
2798     yyss = yyss1;
2799     yyvs = yyvs1;
2800 michael 913 }
2801 michael 8866 # else /* defined YYSTACK_RELOCATE */
2802 michael 913 /* Extend the stack our own way. */
2803     if (YYMAXDEPTH <= yystacksize)
2804 michael 2473 goto yyexhaustedlab;
2805 michael 913 yystacksize *= 2;
2806     if (YYMAXDEPTH < yystacksize)
2807 michael 2473 yystacksize = YYMAXDEPTH;
2808 michael 913
2809     {
2810 michael 9751 yy_state_t *yyss1 = yyss;
2811 michael 2473 union yyalloc *yyptr =
2812 michael 9751 YY_CAST (union yyalloc *,
2813     YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
2814 michael 2473 if (! yyptr)
2815     goto yyexhaustedlab;
2816     YYSTACK_RELOCATE (yyss_alloc, yyss);
2817     YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2818 michael 8866 # undef YYSTACK_RELOCATE
2819 michael 2473 if (yyss1 != yyssa)
2820     YYSTACK_FREE (yyss1);
2821 michael 913 }
2822     # endif
2823    
2824     yyssp = yyss + yysize - 1;
2825     yyvsp = yyvs + yysize - 1;
2826    
2827 michael 9751 YY_IGNORE_USELESS_CAST_BEGIN
2828     YYDPRINTF ((stderr, "Stack size increased to %ld\n",
2829     YY_CAST (long, yystacksize)));
2830     YY_IGNORE_USELESS_CAST_END
2831 michael 913
2832     if (yyss + yystacksize - 1 <= yyssp)
2833 michael 2473 YYABORT;
2834 michael 913 }
2835 michael 8866 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
2836 michael 913
2837 michael 967 if (yystate == YYFINAL)
2838     YYACCEPT;
2839    
2840 michael 913 goto yybackup;
2841    
2842 michael 8866
2843 michael 913 /*-----------.
2844     | yybackup. |
2845     `-----------*/
2846     yybackup:
2847     /* Do appropriate processing given the current state. Read a
2848 michael 967 lookahead token if we need one and don't already have one. */
2849 michael 913
2850 michael 967 /* First try to decide what to do without reference to lookahead token. */
2851 michael 913 yyn = yypact[yystate];
2852 michael 1133 if (yypact_value_is_default (yyn))
2853 michael 913 goto yydefault;
2854    
2855 michael 967 /* Not known => get a lookahead token if don't already have one. */
2856 michael 913
2857 michael 967 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
2858 michael 913 if (yychar == YYEMPTY)
2859     {
2860     YYDPRINTF ((stderr, "Reading a token: "));
2861 michael 2473 yychar = yylex ();
2862 michael 913 }
2863    
2864     if (yychar <= YYEOF)
2865     {
2866     yychar = yytoken = YYEOF;
2867     YYDPRINTF ((stderr, "Now at end of input.\n"));
2868     }
2869     else
2870     {
2871     yytoken = YYTRANSLATE (yychar);
2872     YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2873     }
2874    
2875     /* If the proper action on seeing token YYTOKEN is to reduce or to
2876     detect an error, take that action. */
2877     yyn += yytoken;
2878     if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2879     goto yydefault;
2880     yyn = yytable[yyn];
2881     if (yyn <= 0)
2882     {
2883 michael 1133 if (yytable_value_is_error (yyn))
2884     goto yyerrlab;
2885 michael 913 yyn = -yyn;
2886     goto yyreduce;
2887     }
2888    
2889     /* Count tokens shifted since error; after three, turn off error
2890     status. */
2891     if (yyerrstatus)
2892     yyerrstatus--;
2893    
2894 michael 967 /* Shift the lookahead token. */
2895 michael 913 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2896     yystate = yyn;
2897 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2898 michael 913 *++yyvsp = yylval;
2899 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_END
2900 michael 913
2901 michael 9751 /* Discard the shifted token. */
2902     yychar = YYEMPTY;
2903 michael 913 goto yynewstate;
2904    
2905    
2906     /*-----------------------------------------------------------.
2907     | yydefault -- do the default action for the current state. |
2908     `-----------------------------------------------------------*/
2909     yydefault:
2910     yyn = yydefact[yystate];
2911     if (yyn == 0)
2912     goto yyerrlab;
2913     goto yyreduce;
2914    
2915    
2916     /*-----------------------------.
2917 michael 8866 | yyreduce -- do a reduction. |
2918 michael 913 `-----------------------------*/
2919     yyreduce:
2920     /* yyn is the number of a rule to reduce with. */
2921     yylen = yyr2[yyn];
2922    
2923     /* If YYLEN is nonzero, implement the default value of the action:
2924 michael 2473 '$$ = $1'.
2925 michael 913
2926     Otherwise, the following line sets YYVAL to garbage.
2927     This behavior is undocumented and Bison
2928     users should not rely upon it. Assigning to YYVAL
2929     unconditionally makes the parser a bit smaller, and it avoids a
2930     GCC warning that YYVAL may be used uninitialized. */
2931     yyval = yyvsp[1-yylen];
2932    
2933    
2934     YY_REDUCE_PRINT (yyn);
2935     switch (yyn)
2936     {
2937 michael 9751 case 28:
2938 michael 9776 #line 397 "conf_parser.y"
2939 michael 9751 { (yyval.number) = 0; }
2940 michael 9776 #line 2941 "conf_parser.c"
2941 michael 913 break;
2942    
2943 michael 4545 case 30:
2944 michael 9776 #line 398 "conf_parser.y"
2945 michael 9751 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2946 michael 9776 #line 2947 "conf_parser.c"
2947 michael 913 break;
2948    
2949 michael 4545 case 31:
2950 michael 9776 #line 399 "conf_parser.y"
2951 michael 9751 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2952 michael 9776 #line 2953 "conf_parser.c"
2953 michael 913 break;
2954    
2955 michael 4545 case 32:
2956 michael 9776 #line 400 "conf_parser.y"
2957 michael 9751 { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
2958 michael 9776 #line 2959 "conf_parser.c"
2959 michael 913 break;
2960    
2961 michael 4545 case 33:
2962 michael 9776 #line 401 "conf_parser.y"
2963 michael 9751 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
2964 michael 9776 #line 2965 "conf_parser.c"
2965 michael 913 break;
2966    
2967 michael 4545 case 34:
2968 michael 9776 #line 402 "conf_parser.y"
2969 michael 9751 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
2970 michael 9776 #line 2971 "conf_parser.c"
2971 michael 913 break;
2972    
2973 michael 4545 case 35:
2974 michael 9776 #line 403 "conf_parser.y"
2975 michael 9751 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
2976 michael 9776 #line 2977 "conf_parser.c"
2977 michael 913 break;
2978    
2979 michael 4545 case 36:
2980 michael 9776 #line 404 "conf_parser.y"
2981 michael 9751 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
2982 michael 9776 #line 2983 "conf_parser.c"
2983 michael 913 break;
2984    
2985 michael 4545 case 37:
2986 michael 9776 #line 405 "conf_parser.y"
2987 michael 9751 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
2988 michael 9776 #line 2989 "conf_parser.c"
2989 michael 1783 break;
2990    
2991 michael 4545 case 38:
2992 michael 9776 #line 408 "conf_parser.y"
2993 michael 9751 { (yyval.number) = 0; }
2994 michael 9776 #line 2995 "conf_parser.c"
2995 michael 1783 break;
2996    
2997 michael 4545 case 40:
2998 michael 9776 #line 409 "conf_parser.y"
2999 michael 9751 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
3000 michael 9776 #line 3001 "conf_parser.c"
3001 michael 913 break;
3002    
3003 michael 4545 case 41:
3004 michael 9776 #line 410 "conf_parser.y"
3005 michael 9751 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
3006 michael 9776 #line 3007 "conf_parser.c"
3007 michael 913 break;
3008    
3009 michael 4545 case 42:
3010 michael 9776 #line 411 "conf_parser.y"
3011 michael 9751 { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
3012 michael 9776 #line 3013 "conf_parser.c"
3013 michael 913 break;
3014    
3015 michael 4545 case 43:
3016 michael 9776 #line 412 "conf_parser.y"
3017 michael 9751 { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
3018 michael 9776 #line 3019 "conf_parser.c"
3019 michael 913 break;
3020    
3021 michael 4545 case 50:
3022 michael 9776 #line 425 "conf_parser.y"
3023 michael 9751 {
3024 michael 967 if (conf_parser_ctx.pass == 2)
3025 michael 978 add_conf_module(libio_basename(yylval.string));
3026 michael 913 }
3027 michael 9776 #line 3028 "conf_parser.c"
3028 michael 913 break;
3029    
3030 michael 4545 case 51:
3031 michael 9776 #line 431 "conf_parser.y"
3032 michael 9751 {
3033 michael 967 if (conf_parser_ctx.pass == 2)
3034 michael 913 mod_add_path(yylval.string);
3035     }
3036 michael 9776 #line 3037 "conf_parser.c"
3037 michael 913 break;
3038    
3039 michael 9140 case 72:
3040 michael 9776 #line 463 "conf_parser.y"
3041 michael 9751 {
3042 michael 4499 if (conf_parser_ctx.pass == 2)
3043 michael 913 {
3044 michael 9146 xfree(ConfigServerInfo.tls_certificate_file);
3045     ConfigServerInfo.tls_certificate_file = xstrdup(yylval.string);
3046 michael 913 }
3047     }
3048 michael 9776 #line 3049 "conf_parser.c"
3049 michael 913 break;
3050    
3051 michael 9140 case 73:
3052 michael 9776 #line 472 "conf_parser.y"
3053 michael 9751 {
3054 michael 7131 if (conf_parser_ctx.pass == 2)
3055     {
3056     xfree(ConfigServerInfo.rsa_private_key_file);
3057     ConfigServerInfo.rsa_private_key_file = xstrdup(yylval.string);
3058     }
3059 michael 913 }
3060 michael 9776 #line 3061 "conf_parser.c"
3061 michael 913 break;
3062    
3063 michael 9140 case 74:
3064 michael 9776 #line 481 "conf_parser.y"
3065 michael 9751 {
3066 michael 4499 if (conf_parser_ctx.pass == 2)
3067 michael 1306 {
3068 michael 9146 xfree(ConfigServerInfo.tls_dh_param_file);
3069     ConfigServerInfo.tls_dh_param_file = xstrdup(yylval.string);
3070 michael 1306 }
3071     }
3072 michael 9776 #line 3073 "conf_parser.c"
3073 michael 1306 break;
3074    
3075 michael 9140 case 75:
3076 michael 9776 #line 490 "conf_parser.y"
3077 michael 9751 {
3078 michael 4499 if (conf_parser_ctx.pass == 2)
3079 michael 7109 {
3080 michael 9146 xfree(ConfigServerInfo.tls_cipher_list);
3081     ConfigServerInfo.tls_cipher_list = xstrdup(yylval.string);
3082 michael 7109 }
3083 michael 1306 }
3084 michael 9776 #line 3085 "conf_parser.c"
3085 michael 1306 break;
3086    
3087 michael 9140 case 76:
3088 michael 9776 #line 499 "conf_parser.y"
3089 michael 9751 {
3090 michael 4499 if (conf_parser_ctx.pass == 2)
3091 michael 4114 {
3092 michael 9140 xfree(ConfigServerInfo.tls_cipher_suites);
3093     ConfigServerInfo.tls_cipher_suites = xstrdup(yylval.string);
3094     }
3095     }
3096 michael 9776 #line 3097 "conf_parser.c"
3097 michael 9140 break;
3098    
3099     case 77:
3100 michael 9776 #line 508 "conf_parser.y"
3101 michael 9751 {
3102 michael 9140 if (conf_parser_ctx.pass == 2)
3103     {
3104 michael 9146 xfree(ConfigServerInfo.tls_message_digest_algorithm);
3105     ConfigServerInfo.tls_message_digest_algorithm = xstrdup(yylval.string);
3106 michael 4114 }
3107     }
3108 michael 9776 #line 3109 "conf_parser.c"
3109 michael 4114 break;
3110    
3111 michael 9140 case 78:
3112 michael 9776 #line 517 "conf_parser.y"
3113 michael 9751 {
3114 michael 4499 if (conf_parser_ctx.pass == 2)
3115 michael 4070 {
3116 michael 9146 xfree(ConfigServerInfo.tls_supported_groups);
3117     ConfigServerInfo.tls_supported_groups = xstrdup(yylval.string);
3118 michael 6687 }
3119 michael 4070 }
3120 michael 9776 #line 3121 "conf_parser.c"
3121 michael 4070 break;
3122    
3123 michael 9140 case 79:
3124 michael 9776 #line 526 "conf_parser.y"
3125 michael 9751 {
3126 michael 6671 /* This isn't rehashable */
3127 michael 8866 if (conf_parser_ctx.pass == 2 && ConfigServerInfo.name == NULL)
3128 michael 913 {
3129 michael 8660 if (server_valid_name(yylval.string) == true)
3130 michael 4340 ConfigServerInfo.name = xstrdup(yylval.string);
3131 michael 1117 else
3132 michael 913 {
3133 michael 1752 conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3134 michael 6671 exit(EXIT_FAILURE);
3135 michael 913 }
3136     }
3137     }
3138 michael 9776 #line 3139 "conf_parser.c"
3139 michael 913 break;
3140    
3141 michael 9140 case 80:
3142 michael 9776 #line 541 "conf_parser.y"
3143 michael 9751 {
3144 michael 6671 /* This isn't rehashable */
3145 michael 8866 if (conf_parser_ctx.pass == 2 && ConfigServerInfo.sid == NULL)
3146 michael 913 {
3147     if (valid_sid(yylval.string))
3148 michael 4340 ConfigServerInfo.sid = xstrdup(yylval.string);
3149 michael 913 else
3150     {
3151 michael 1752 conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3152 michael 6671 exit(EXIT_FAILURE);
3153 michael 913 }
3154     }
3155     }
3156 michael 9776 #line 3157 "conf_parser.c"
3157 michael 913 break;
3158    
3159 michael 9140 case 81:
3160 michael 9776 #line 556 "conf_parser.y"
3161 michael 9751 {
3162 michael 967 if (conf_parser_ctx.pass == 2)
3163 michael 913 {
3164 michael 7032 xfree(ConfigServerInfo.description);
3165 michael 4340 ConfigServerInfo.description = xstrdup(yylval.string);
3166 michael 4513 strlcpy(me.info, ConfigServerInfo.description, sizeof(me.info));
3167 michael 913 }
3168     }
3169 michael 9776 #line 3170 "conf_parser.c"
3170 michael 913 break;
3171    
3172 michael 9140 case 82:
3173 michael 9776 #line 566 "conf_parser.y"
3174 michael 9751 {
3175 michael 967 if (conf_parser_ctx.pass == 2)
3176 michael 913 {
3177 michael 9225 char *p = strchr(yylval.string, ' ');
3178 michael 913
3179 michael 9225 if (p)
3180 michael 3892 *p = '\0';
3181 michael 913
3182 michael 7032 xfree(ConfigServerInfo.network_name);
3183 michael 4340 ConfigServerInfo.network_name = xstrdup(yylval.string);
3184 michael 913 }
3185     }
3186 michael 9776 #line 3187 "conf_parser.c"
3187 michael 913 break;
3188    
3189 michael 9140 case 83:
3190 michael 9776 #line 580 "conf_parser.y"
3191 michael 9751 {
3192 michael 2129 if (conf_parser_ctx.pass != 2)
3193     break;
3194    
3195 michael 9692 xfree(ConfigServerInfo.network_description);
3196     ConfigServerInfo.network_description = xstrdup(yylval.string);
3197 michael 913 }
3198 michael 9776 #line 3199 "conf_parser.c"
3199 michael 913 break;
3200    
3201 michael 9140 case 84:
3202 michael 9776 #line 589 "conf_parser.y"
3203 michael 9751 {
3204 michael 1736 if (conf_parser_ctx.pass != 2)
3205     break;
3206    
3207 michael 8793 if ((yyvsp[-1].number) < 1)
3208 michael 913 {
3209 michael 8793 conf_error_report("default_max_clients too low, setting to 1");
3210     ConfigServerInfo.default_max_clients = 1;
3211 michael 913 }
3212 michael 2473 else if ((yyvsp[-1].number) > MAXCLIENTS_MAX)
3213 michael 1736 {
3214 michael 9225 char buf[IRCD_BUFSIZE];
3215 michael 1736
3216 michael 8793 snprintf(buf, sizeof(buf), "default_max_clients too high, setting to %d", MAXCLIENTS_MAX);
3217 michael 1752 conf_error_report(buf);
3218 michael 8866
3219 michael 5490 ConfigServerInfo.default_max_clients = MAXCLIENTS_MAX;
3220 michael 1736 }
3221     else
3222 michael 5490 ConfigServerInfo.default_max_clients = (yyvsp[-1].number);
3223 michael 913 }
3224 michael 9776 #line 3225 "conf_parser.c"
3225 michael 913 break;
3226    
3227 michael 9140 case 85:
3228 michael 9776 #line 612 "conf_parser.y"
3229 michael 9751 {
3230 michael 1751 if (conf_parser_ctx.pass != 2)
3231     break;
3232    
3233 michael 2473 if ((yyvsp[-1].number) < 9)
3234 michael 1751 {
3235     conf_error_report("max_nick_length too low, setting to 9");
3236 michael 4340 ConfigServerInfo.max_nick_length = 9;
3237 michael 1751 }
3238 michael 2473 else if ((yyvsp[-1].number) > NICKLEN)
3239 michael 1751 {
3240 michael 9225 char buf[IRCD_BUFSIZE];
3241 michael 1751
3242     snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3243     conf_error_report(buf);
3244 michael 8866
3245 michael 4340 ConfigServerInfo.max_nick_length = NICKLEN;
3246 michael 1751 }
3247     else
3248 michael 4340 ConfigServerInfo.max_nick_length = (yyvsp[-1].number);
3249 michael 1751 }
3250 michael 9776 #line 3251 "conf_parser.c"
3251 michael 1751 break;
3252    
3253 michael 9140 case 86:
3254 michael 9776 #line 635 "conf_parser.y"
3255 michael 9751 {
3256 michael 1751 if (conf_parser_ctx.pass != 2)
3257     break;
3258    
3259 michael 2473 if ((yyvsp[-1].number) < 80)
3260 michael 1751 {
3261     conf_error_report("max_topic_length too low, setting to 80");
3262 michael 4340 ConfigServerInfo.max_topic_length = 80;
3263 michael 1751 }
3264 michael 2473 else if ((yyvsp[-1].number) > TOPICLEN)
3265 michael 1751 {
3266 michael 9225 char buf[IRCD_BUFSIZE];
3267 michael 1751
3268     snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3269     conf_error_report(buf);
3270 michael 8866
3271 michael 4340 ConfigServerInfo.max_topic_length = TOPICLEN;
3272 michael 1751 }
3273     else
3274 michael 4340 ConfigServerInfo.max_topic_length = (yyvsp[-1].number);
3275 michael 1751 }
3276 michael 9776 #line 3277 "conf_parser.c"
3277 michael 1751 break;
3278    
3279 michael 9140 case 87:
3280 michael 9776 #line 658 "conf_parser.y"
3281 michael 9751 {
3282 michael 967 if (conf_parser_ctx.pass == 2)
3283 michael 4340 ConfigServerInfo.hub = yylval.number;
3284 michael 913 }
3285 michael 9776 #line 3286 "conf_parser.c"
3286 michael 913 break;
3287    
3288 michael 9140 case 95:
3289 michael 9776 #line 676 "conf_parser.y"
3290 michael 9751 {
3291 michael 2129 if (conf_parser_ctx.pass != 2)
3292     break;
3293    
3294 michael 7032 xfree(ConfigAdminInfo.name);
3295 michael 4340 ConfigAdminInfo.name = xstrdup(yylval.string);
3296 michael 913 }
3297 michael 9776 #line 3298 "conf_parser.c"
3298 michael 913 break;
3299    
3300 michael 9140 case 96:
3301 michael 9776 #line 685 "conf_parser.y"
3302 michael 9751 {
3303 michael 2129 if (conf_parser_ctx.pass != 2)
3304     break;
3305    
3306 michael 7032 xfree(ConfigAdminInfo.email);
3307 michael 4340 ConfigAdminInfo.email = xstrdup(yylval.string);
3308 michael 913 }
3309 michael 9776 #line 3310 "conf_parser.c"
3310 michael 913 break;
3311    
3312 michael 9140 case 97:
3313 michael 9776 #line 694 "conf_parser.y"
3314 michael 9751 {
3315 michael 2129 if (conf_parser_ctx.pass != 2)
3316     break;
3317    
3318 michael 7032 xfree(ConfigAdminInfo.description);
3319 michael 4340 ConfigAdminInfo.description = xstrdup(yylval.string);
3320 michael 913 }
3321 michael 9776 #line 3322 "conf_parser.c"
3322 michael 913 break;
3323    
3324 michael 9140 case 98:
3325 michael 9776 #line 707 "conf_parser.y"
3326 michael 9751 {
3327 michael 1247 if (conf_parser_ctx.pass == 2)
3328 michael 2150 reset_block_state();
3329     }
3330 michael 9776 #line 3331 "conf_parser.c"
3331 michael 2150 break;
3332    
3333 michael 9140 case 99:
3334 michael 9776 #line 711 "conf_parser.y"
3335 michael 9751 {
3336 michael 9225 dlink_node *node;
3337 michael 2150
3338     if (conf_parser_ctx.pass != 2)
3339     break;
3340    
3341     if (!block_state.file.buf[0])
3342     break;
3343    
3344 michael 4915 DLINK_FOREACH(node, block_state.mask.list.head)
3345     motd_add(node->data, block_state.file.buf);
3346 michael 2150 }
3347 michael 9776 #line 3348 "conf_parser.c"
3348 michael 2150 break;
3349    
3350 michael 9140 case 105:
3351 michael 9776 #line 728 "conf_parser.y"
3352 michael 9751 {
3353 michael 2150 if (conf_parser_ctx.pass == 2)
3354     dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3355     }
3356 michael 9776 #line 3357 "conf_parser.c"
3357 michael 2150 break;
3358    
3359 michael 9140 case 106:
3360 michael 9776 #line 734 "conf_parser.y"
3361 michael 9751 {
3362 michael 2150 if (conf_parser_ctx.pass == 2)
3363     strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3364     }
3365 michael 9776 #line 3366 "conf_parser.c"
3366 michael 2150 break;
3367    
3368 michael 9140 case 107:
3369 michael 9776 #line 744 "conf_parser.y"
3370 michael 9751 {
3371 michael 2150 if (conf_parser_ctx.pass == 2)
3372 michael 4545 reset_block_state();
3373     }
3374 michael 9776 #line 3375 "conf_parser.c"
3375 michael 4545 break;
3376    
3377 michael 9140 case 108:
3378 michael 9776 #line 748 "conf_parser.y"
3379 michael 9751 {
3380 michael 4545 if (conf_parser_ctx.pass != 2)
3381     break;
3382    
3383     if (!block_state.command.buf[0] ||
3384     !block_state.name.buf[0] ||
3385     !block_state.nick.buf[0] ||
3386     !block_state.host.buf[0])
3387     break;
3388    
3389     pseudo_register(block_state.name.buf, block_state.nick.buf, block_state.host.buf,
3390     block_state.prepend.buf, block_state.command.buf);
3391     }
3392 michael 9776 #line 3393 "conf_parser.c"
3393 michael 4545 break;
3394    
3395 michael 9140 case 116:
3396 michael 9776 #line 766 "conf_parser.y"
3397 michael 9751 {
3398 michael 4545 if (conf_parser_ctx.pass == 2)
3399     strlcpy(block_state.command.buf, yylval.string, sizeof(block_state.command.buf));
3400     }
3401 michael 9776 #line 3402 "conf_parser.c"
3402 michael 4545 break;
3403    
3404 michael 9140 case 117:
3405 michael 9776 #line 772 "conf_parser.y"
3406 michael 9751 {
3407 michael 4545 if (conf_parser_ctx.pass == 2)
3408     strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3409     }
3410 michael 9776 #line 3411 "conf_parser.c"
3411 michael 4545 break;
3412    
3413 michael 9140 case 118:
3414 michael 9776 #line 778 "conf_parser.y"
3415 michael 9751 {
3416 michael 4545 if (conf_parser_ctx.pass == 2)
3417     strlcpy(block_state.prepend.buf, yylval.string, sizeof(block_state.prepend.buf));
3418     }
3419 michael 9776 #line 3420 "conf_parser.c"
3420 michael 4545 break;
3421    
3422 michael 9140 case 119:
3423 michael 9776 #line 784 "conf_parser.y"
3424 michael 9751 {
3425 michael 4545 if (conf_parser_ctx.pass == 2)
3426     {
3427     struct split_nuh_item nuh;
3428    
3429     nuh.nuhmask = yylval.string;
3430     nuh.nickptr = NULL;
3431 michael 5603 nuh.userptr = block_state.nick.buf;
3432 michael 4545 nuh.hostptr = block_state.host.buf;
3433     nuh.nicksize = 0;
3434     nuh.usersize = sizeof(block_state.nick.buf);
3435     nuh.hostsize = sizeof(block_state.host.buf);
3436 michael 5603
3437 michael 4545 split_nuh(&nuh);
3438     }
3439     }
3440 michael 9776 #line 3441 "conf_parser.c"
3441 michael 4545 break;
3442    
3443 michael 9140 case 126:
3444 michael 9776 #line 812 "conf_parser.y"
3445 michael 9751 {
3446 michael 4545 if (conf_parser_ctx.pass == 2)
3447 michael 4340 ConfigLog.use_logging = yylval.number;
3448 michael 1247 }
3449 michael 9776 #line 3450 "conf_parser.c"
3450 michael 913 break;
3451    
3452 michael 9140 case 127:
3453 michael 9776 #line 818 "conf_parser.y"
3454 michael 9751 {
3455 michael 1647 if (conf_parser_ctx.pass == 2)
3456     reset_block_state();
3457 michael 913 }
3458 michael 9776 #line 3459 "conf_parser.c"
3459 michael 913 break;
3460    
3461 michael 9140 case 128:
3462 michael 9776 #line 822 "conf_parser.y"
3463 michael 9751 {
3464 michael 1647 if (conf_parser_ctx.pass != 2)
3465     break;
3466    
3467     if (block_state.type.value && block_state.file.buf[0])
3468 michael 1831 log_set_file(block_state.type.value, block_state.size.value,
3469 michael 1647 block_state.file.buf);
3470 michael 913 }
3471 michael 9776 #line 3472 "conf_parser.c"
3472 michael 913 break;
3473    
3474 michael 9140 case 135:
3475 michael 9776 #line 838 "conf_parser.y"
3476 michael 9751 {
3477 michael 1647 if (conf_parser_ctx.pass != 2)
3478     break;
3479    
3480     strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3481 michael 913 }
3482 michael 9776 #line 3483 "conf_parser.c"
3483 michael 913 break;
3484    
3485 michael 9140 case 136:
3486 michael 9776 #line 846 "conf_parser.y"
3487 michael 9751 {
3488 michael 2473 block_state.size.value = (yyvsp[-1].number);
3489 michael 913 }
3490 michael 9776 #line 3491 "conf_parser.c"
3491 michael 913 break;
3492    
3493 michael 9140 case 137:
3494 michael 9776 #line 849 "conf_parser.y"
3495 michael 9751 {
3496 michael 1647 block_state.size.value = 0;
3497 michael 913 }
3498 michael 9776 #line 3499 "conf_parser.c"
3499 michael 913 break;
3500    
3501 michael 9140 case 138:
3502 michael 9776 #line 854 "conf_parser.y"
3503 michael 9751 {
3504 michael 967 if (conf_parser_ctx.pass == 2)
3505 michael 1647 block_state.type.value = 0;
3506 michael 913 }
3507 michael 9776 #line 3508 "conf_parser.c"
3508 michael 913 break;
3509    
3510 michael 9140 case 142:
3511 michael 9776 #line 861 "conf_parser.y"
3512 michael 9751 {
3513 michael 967 if (conf_parser_ctx.pass == 2)
3514 michael 1647 block_state.type.value = LOG_TYPE_USER;
3515 michael 913 }
3516 michael 9776 #line 3517 "conf_parser.c"
3517 michael 913 break;
3518    
3519 michael 9140 case 143:
3520 michael 9776 #line 865 "conf_parser.y"
3521 michael 9751 {
3522 michael 967 if (conf_parser_ctx.pass == 2)
3523 michael 1647 block_state.type.value = LOG_TYPE_OPER;
3524 michael 913 }
3525 michael 9776 #line 3526 "conf_parser.c"
3526 michael 913 break;
3527    
3528 michael 9140 case 144:
3529 michael 9776 #line 869 "conf_parser.y"
3530 michael 9751 {
3531 michael 967 if (conf_parser_ctx.pass == 2)
3532 michael 5806 block_state.type.value = LOG_TYPE_XLINE;
3533 michael 913 }
3534 michael 9776 #line 3535 "conf_parser.c"
3535 michael 913 break;
3536    
3537 michael 9140 case 145:
3538 michael 9776 #line 873 "conf_parser.y"
3539 michael 9751 {
3540 michael 967 if (conf_parser_ctx.pass == 2)
3541 michael 5806 block_state.type.value = LOG_TYPE_RESV;
3542 michael 913 }
3543 michael 9776 #line 3544 "conf_parser.c"
3544 michael 913 break;
3545    
3546 michael 9140 case 146:
3547 michael 9776 #line 877 "conf_parser.y"
3548 michael 9751 {
3549 michael 967 if (conf_parser_ctx.pass == 2)
3550 michael 5806 block_state.type.value = LOG_TYPE_DLINE;
3551 michael 913 }
3552 michael 9776 #line 3553 "conf_parser.c"
3553 michael 913 break;
3554    
3555 michael 9140 case 147:
3556 michael 9776 #line 881 "conf_parser.y"
3557 michael 9751 {
3558 michael 967 if (conf_parser_ctx.pass == 2)
3559 michael 5806 block_state.type.value = LOG_TYPE_KLINE;
3560 michael 913 }
3561 michael 9776 #line 3562 "conf_parser.c"
3562 michael 913 break;
3563    
3564 michael 9140 case 148:
3565 michael 9776 #line 885 "conf_parser.y"
3566 michael 9751 {
3567 michael 967 if (conf_parser_ctx.pass == 2)
3568 michael 5806 block_state.type.value = LOG_TYPE_KILL;
3569 michael 1250 }
3570 michael 9776 #line 3571 "conf_parser.c"
3571 michael 1250 break;
3572    
3573 michael 9140 case 149:
3574 michael 9776 #line 889 "conf_parser.y"
3575 michael 9751 {
3576 michael 2336 if (conf_parser_ctx.pass == 2)
3577 michael 5806 block_state.type.value = LOG_TYPE_DEBUG;
3578 michael 2336 }
3579 michael 9776 #line 3580 "conf_parser.c"
3580 michael 2336 break;
3581    
3582 michael 9140 case 150:
3583 michael 9776 #line 899 "conf_parser.y"
3584 michael 9751 {
3585 michael 1646 if (conf_parser_ctx.pass != 2)
3586     break;
3587    
3588     reset_block_state();
3589     block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3590 michael 913 }
3591 michael 9776 #line 3592 "conf_parser.c"
3592 michael 913 break;
3593    
3594 michael 9140 case 151:
3595 michael 9776 #line 906 "conf_parser.y"
3596 michael 9751 {
3597 michael 9225 dlink_node *node;
3598 michael 913
3599 michael 1646 if (conf_parser_ctx.pass != 2)
3600     break;
3601 michael 913
3602 michael 1646 if (!block_state.name.buf[0])
3603     break;
3604 michael 6671
3605 michael 1647 if (!block_state.rpass.buf[0])
3606 michael 1646 break;
3607 michael 913
3608 michael 4915 DLINK_FOREACH(node, block_state.mask.list.head)
3609 michael 1646 {
3610     struct split_nuh_item nuh;
3611 michael 7319 char *s = node->data;
3612 michael 913
3613 michael 7319 if (EmptyString(s))
3614     continue;
3615    
3616     nuh.nuhmask = s;
3617 michael 1646 nuh.nickptr = NULL;
3618 michael 1647 nuh.userptr = block_state.user.buf;
3619     nuh.hostptr = block_state.host.buf;
3620 michael 8866
3621 michael 1646 nuh.nicksize = 0;
3622 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
3623     nuh.hostsize = sizeof(block_state.host.buf);
3624 michael 8866
3625 michael 1646 split_nuh(&nuh);
3626 michael 913
3627 michael 8866 struct MaskItem *conf = conf_make(CONF_OPER);
3628 michael 8873 conf->addr = xcalloc(sizeof(*conf->addr));
3629 michael 8866 conf->name = xstrdup(block_state.name.buf);
3630     conf->user = xstrdup(block_state.user.buf);
3631     conf->host = xstrdup(block_state.host.buf);
3632 michael 1285
3633 michael 2228 if (block_state.cert.buf[0])
3634     conf->certfp = xstrdup(block_state.cert.buf);
3635    
3636 michael 1647 if (block_state.rpass.buf[0])
3637     conf->passwd = xstrdup(block_state.rpass.buf);
3638 michael 1285
3639 michael 5557 if (block_state.whois.buf[0])
3640     conf->whois = xstrdup(block_state.whois.buf);
3641    
3642 michael 1646 conf->flags = block_state.flags.value;
3643     conf->modes = block_state.modes.value;
3644     conf->port = block_state.port.value;
3645 michael 8873 conf->htype = parse_netmask(conf->host, conf->addr, &conf->bits);
3646 michael 913
3647 michael 1646 conf_add_class_to_conf(conf, block_state.class.buf);
3648 michael 913 }
3649     }
3650 michael 9776 #line 3651 "conf_parser.c"
3651 michael 913 break;
3652    
3653 michael 9140 case 165:
3654 michael 9776 #line 975 "conf_parser.y"
3655 michael 9751 {
3656 michael 967 if (conf_parser_ctx.pass == 2)
3657 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3658 michael 913 }
3659 michael 9776 #line 3660 "conf_parser.c"
3660 michael 913 break;
3661    
3662 michael 9140 case 166:
3663 michael 9776 #line 981 "conf_parser.y"
3664 michael 9751 {
3665 michael 967 if (conf_parser_ctx.pass == 2)
3666 michael 1646 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3667 michael 913 }
3668 michael 9776 #line 3669 "conf_parser.c"
3669 michael 913 break;
3670    
3671 michael 9140 case 167:
3672 michael 9776 #line 987 "conf_parser.y"
3673 michael 9751 {
3674 michael 967 if (conf_parser_ctx.pass == 2)
3675 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3676 michael 913 }
3677 michael 9776 #line 3678 "conf_parser.c"
3678 michael 913 break;
3679    
3680 michael 9140 case 168:
3681 michael 9776 #line 993 "conf_parser.y"
3682 michael 9751 {
3683 michael 5557 if (conf_parser_ctx.pass == 2)
3684     strlcpy(block_state.whois.buf, yylval.string, sizeof(block_state.whois.buf));
3685     }
3686 michael 9776 #line 3687 "conf_parser.c"
3687 michael 5557 break;
3688    
3689 michael 9140 case 169:
3690 michael 9776 #line 999 "conf_parser.y"
3691 michael 9751 {
3692 michael 2129 if (conf_parser_ctx.pass != 2)
3693     break;
3694    
3695     if (yylval.number)
3696     block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3697     else
3698     block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3699 michael 913 }
3700 michael 9776 #line 3701 "conf_parser.c"
3701 michael 913 break;
3702    
3703 michael 9140 case 170:
3704 michael 9776 #line 1010 "conf_parser.y"
3705 michael 9751 {
3706 michael 967 if (conf_parser_ctx.pass == 2)
3707 michael 2229 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
3708 michael 2228 }
3709 michael 9776 #line 3710 "conf_parser.c"
3710 michael 2228 break;
3711    
3712 michael 9140 case 171:
3713 michael 9776 #line 1016 "conf_parser.y"
3714 michael 9751 {
3715 michael 2248 if (conf_parser_ctx.pass != 2)
3716     break;
3717    
3718     if (yylval.number)
3719 michael 9157 block_state.flags.value |= CONF_FLAGS_TLS;
3720 michael 2248 else
3721 michael 9157 block_state.flags.value &= ~CONF_FLAGS_TLS;
3722 michael 2248 }
3723 michael 9776 #line 3724 "conf_parser.c"
3724 michael 2248 break;
3725    
3726 michael 9140 case 172:
3727 michael 9776 #line 1027 "conf_parser.y"
3728 michael 9751 {
3729 michael 2228 if (conf_parser_ctx.pass == 2)
3730 michael 1646 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3731 michael 913 }
3732 michael 9776 #line 3733 "conf_parser.c"
3733 michael 913 break;
3734    
3735 michael 9140 case 173:
3736 michael 9776 #line 1033 "conf_parser.y"
3737 michael 9751 {
3738 michael 967 if (conf_parser_ctx.pass == 2)
3739 michael 1646 block_state.modes.value = 0;
3740 michael 913 }
3741 michael 9776 #line 3742 "conf_parser.c"
3742 michael 913 break;
3743    
3744 michael 9140 case 177:
3745 michael 9776 #line 1040 "conf_parser.y"
3746 michael 9751 {
3747 michael 967 if (conf_parser_ctx.pass == 2)
3748 michael 9776 block_state.modes.value |= UMODE_BOT;
3749     }
3750     #line 3751 "conf_parser.c"
3751     break;
3752    
3753     case 178:
3754     #line 1044 "conf_parser.y"
3755     {
3756     if (conf_parser_ctx.pass == 2)
3757 michael 9638 block_state.modes.value |= UMODE_CCONN;
3758 michael 913 }
3759 michael 9756 #line 3760 "conf_parser.c"
3760 michael 913 break;
3761    
3762 michael 9776 case 179:
3763     #line 1048 "conf_parser.y"
3764 michael 9751 {
3765 michael 967 if (conf_parser_ctx.pass == 2)
3766 michael 9638 block_state.modes.value |= UMODE_DEAF;
3767 michael 913 }
3768 michael 9756 #line 3769 "conf_parser.c"
3769 michael 913 break;
3770    
3771 michael 9776 case 180:
3772     #line 1052 "conf_parser.y"
3773 michael 9751 {
3774 michael 967 if (conf_parser_ctx.pass == 2)
3775 michael 9638 block_state.modes.value |= UMODE_DEBUG;
3776 michael 913 }
3777 michael 9756 #line 3778 "conf_parser.c"
3778 michael 913 break;
3779    
3780 michael 9776 case 181:
3781     #line 1056 "conf_parser.y"
3782 michael 9751 {
3783 michael 967 if (conf_parser_ctx.pass == 2)
3784 michael 9638 block_state.modes.value |= UMODE_FLOOD;
3785 michael 913 }
3786 michael 9756 #line 3787 "conf_parser.c"
3787 michael 913 break;
3788    
3789 michael 9776 case 182:
3790     #line 1060 "conf_parser.y"
3791 michael 9751 {
3792 michael 967 if (conf_parser_ctx.pass == 2)
3793 michael 9638 block_state.modes.value |= UMODE_HIDDEN;
3794 michael 913 }
3795 michael 9756 #line 3796 "conf_parser.c"
3796 michael 913 break;
3797    
3798 michael 9776 case 183:
3799     #line 1064 "conf_parser.y"
3800 michael 9751 {
3801 michael 967 if (conf_parser_ctx.pass == 2)
3802 michael 9638 block_state.modes.value |= UMODE_HIDECHANS;
3803 michael 913 }
3804 michael 9756 #line 3805 "conf_parser.c"
3805 michael 913 break;
3806    
3807 michael 9776 case 184:
3808     #line 1068 "conf_parser.y"
3809 michael 9751 {
3810 michael 967 if (conf_parser_ctx.pass == 2)
3811 michael 9638 block_state.modes.value |= UMODE_HIDEIDLE;
3812 michael 913 }
3813 michael 9756 #line 3814 "conf_parser.c"
3814 michael 913 break;
3815    
3816 michael 9776 case 185:
3817     #line 1072 "conf_parser.y"
3818 michael 9751 {
3819 michael 967 if (conf_parser_ctx.pass == 2)
3820 michael 9638 block_state.modes.value |= UMODE_SKILL;
3821 michael 913 }
3822 michael 9756 #line 3823 "conf_parser.c"
3823 michael 913 break;
3824    
3825 michael 9776 case 186:
3826     #line 1076 "conf_parser.y"
3827 michael 9751 {
3828 michael 967 if (conf_parser_ctx.pass == 2)
3829 michael 9638 block_state.modes.value |= UMODE_NCHANGE;
3830 michael 913 }
3831 michael 9756 #line 3832 "conf_parser.c"
3832 michael 913 break;
3833    
3834 michael 9776 case 187:
3835     #line 1080 "conf_parser.y"
3836 michael 9751 {
3837 michael 967 if (conf_parser_ctx.pass == 2)
3838 michael 9638 block_state.modes.value |= UMODE_REJ;
3839 michael 913 }
3840 michael 9756 #line 3841 "conf_parser.c"
3841 michael 913 break;
3842    
3843 michael 9776 case 188:
3844     #line 1084 "conf_parser.y"
3845 michael 9751 {
3846 michael 967 if (conf_parser_ctx.pass == 2)
3847 michael 9638 block_state.modes.value |= UMODE_SPY;
3848 michael 913 }
3849 michael 9756 #line 3850 "conf_parser.c"
3850 michael 913 break;
3851    
3852 michael 9776 case 189:
3853     #line 1088 "conf_parser.y"
3854 michael 9751 {
3855 michael 967 if (conf_parser_ctx.pass == 2)
3856 michael 9638 block_state.modes.value |= UMODE_EXTERNAL;
3857 michael 913 }
3858 michael 9756 #line 3859 "conf_parser.c"
3859 michael 913 break;
3860    
3861 michael 9776 case 190:
3862     #line 1092 "conf_parser.y"
3863 michael 9751 {
3864 michael 967 if (conf_parser_ctx.pass == 2)
3865 michael 9638 block_state.modes.value |= UMODE_SERVNOTICE;
3866 michael 913 }
3867 michael 9756 #line 3868 "conf_parser.c"
3868 michael 913 break;
3869    
3870 michael 9776 case 191:
3871     #line 1096 "conf_parser.y"
3872 michael 9751 {
3873 michael 967 if (conf_parser_ctx.pass == 2)
3874 michael 9638 block_state.modes.value |= UMODE_INVISIBLE;
3875 michael 913 }
3876 michael 9756 #line 3877 "conf_parser.c"
3877 michael 913 break;
3878    
3879 michael 9776 case 192:
3880     #line 1100 "conf_parser.y"
3881 michael 9751 {
3882 michael 967 if (conf_parser_ctx.pass == 2)
3883 michael 9638 block_state.modes.value |= UMODE_WALLOP;
3884 michael 913 }
3885 michael 9756 #line 3886 "conf_parser.c"
3886 michael 913 break;
3887    
3888 michael 9776 case 193:
3889     #line 1104 "conf_parser.y"
3890 michael 9751 {
3891 michael 967 if (conf_parser_ctx.pass == 2)
3892 michael 9638 block_state.modes.value |= UMODE_SOFTCALLERID;
3893 michael 913 }
3894 michael 9756 #line 3895 "conf_parser.c"
3895 michael 913 break;
3896    
3897 michael 9776 case 194:
3898     #line 1108 "conf_parser.y"
3899 michael 9751 {
3900 michael 1228 if (conf_parser_ctx.pass == 2)
3901 michael 9638 block_state.modes.value |= UMODE_CALLERID;
3902 michael 913 }
3903 michael 9756 #line 3904 "conf_parser.c"
3904 michael 913 break;
3905    
3906 michael 9776 case 195:
3907     #line 1112 "conf_parser.y"
3908 michael 9751 {
3909 michael 1228 if (conf_parser_ctx.pass == 2)
3910 michael 9638 block_state.modes.value |= UMODE_LOCOPS;
3911 michael 1228 }
3912 michael 9756 #line 3913 "conf_parser.c"
3913 michael 913 break;
3914    
3915 michael 9776 case 196:
3916     #line 1116 "conf_parser.y"
3917 michael 9751 {
3918 michael 967 if (conf_parser_ctx.pass == 2)
3919 michael 9638 block_state.modes.value |= UMODE_REGONLY;
3920 michael 1855 }
3921 michael 9756 #line 3922 "conf_parser.c"
3922 michael 1855 break;
3923    
3924 michael 9776 case 197:
3925     #line 1120 "conf_parser.y"
3926 michael 9751 {
3927 michael 1855 if (conf_parser_ctx.pass == 2)
3928 michael 9638 block_state.modes.value |= UMODE_FARCONNECT;
3929 michael 913 }
3930 michael 9756 #line 3931 "conf_parser.c"
3931 michael 913 break;
3932    
3933 michael 9776 case 198:
3934     #line 1124 "conf_parser.y"
3935 michael 9751 {
3936 michael 967 if (conf_parser_ctx.pass == 2)
3937 michael 9638 block_state.modes.value |= UMODE_EXPIRATION;
3938 michael 913 }
3939 michael 9756 #line 3940 "conf_parser.c"
3940 michael 913 break;
3941    
3942 michael 9776 case 199:
3943     #line 1130 "conf_parser.y"
3944 michael 9751 {
3945 michael 967 if (conf_parser_ctx.pass == 2)
3946 michael 8964 block_state.port.value = 0;
3947 michael 913 }
3948 michael 9756 #line 3949 "conf_parser.c"
3949 michael 913 break;
3950    
3951 michael 9776 case 203:
3952     #line 1137 "conf_parser.y"
3953 michael 9751 {
3954 michael 967 if (conf_parser_ctx.pass == 2)
3955 michael 8964 block_state.port.value |= OPER_FLAG_KILL_REMOTE;
3956 michael 913 }
3957 michael 9756 #line 3958 "conf_parser.c"
3958 michael 913 break;
3959    
3960 michael 9776 case 204:
3961     #line 1141 "conf_parser.y"
3962 michael 9751 {
3963 michael 967 if (conf_parser_ctx.pass == 2)
3964 michael 8964 block_state.port.value |= OPER_FLAG_KILL;
3965 michael 913 }
3966 michael 9756 #line 3967 "conf_parser.c"
3967 michael 913 break;
3968    
3969 michael 9776 case 205:
3970     #line 1145 "conf_parser.y"
3971 michael 9751 {
3972 michael 967 if (conf_parser_ctx.pass == 2)
3973 michael 8964 block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
3974 michael 913 }
3975 michael 9756 #line 3976 "conf_parser.c"
3976 michael 913 break;
3977    
3978 michael 9776 case 206:
3979     #line 1149 "conf_parser.y"
3980 michael 9751 {
3981 michael 967 if (conf_parser_ctx.pass == 2)
3982 michael 8964 block_state.port.value |= OPER_FLAG_CONNECT;
3983 michael 913 }
3984 michael 9756 #line 3985 "conf_parser.c"
3985 michael 913 break;
3986    
3987 michael 9776 case 207:
3988     #line 1153 "conf_parser.y"
3989 michael 9751 {
3990 michael 967 if (conf_parser_ctx.pass == 2)
3991 michael 8964 block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
3992 michael 913 }
3993 michael 9756 #line 3994 "conf_parser.c"
3994 michael 913 break;
3995    
3996 michael 9776 case 208:
3997     #line 1157 "conf_parser.y"
3998 michael 9751 {
3999 michael 967 if (conf_parser_ctx.pass == 2)
4000 michael 8964 block_state.port.value |= OPER_FLAG_SQUIT;
4001 michael 913 }
4002 michael 9756 #line 4003 "conf_parser.c"
4003 michael 913 break;
4004    
4005 michael 9776 case 209:
4006     #line 1161 "conf_parser.y"
4007 michael 9751 {
4008 michael 967 if (conf_parser_ctx.pass == 2)
4009 michael 8964 block_state.port.value |= OPER_FLAG_KLINE;
4010 michael 913 }
4011 michael 9756 #line 4012 "conf_parser.c"
4012 michael 913 break;
4013    
4014 michael 9776 case 210:
4015     #line 1165 "conf_parser.y"
4016 michael 9751 {
4017 michael 967 if (conf_parser_ctx.pass == 2)
4018 michael 8964 block_state.port.value |= OPER_FLAG_UNKLINE;
4019 michael 913 }
4020 michael 9756 #line 4021 "conf_parser.c"
4021 michael 913 break;
4022    
4023 michael 9776 case 211:
4024     #line 1169 "conf_parser.y"
4025 michael 9751 {
4026 michael 967 if (conf_parser_ctx.pass == 2)
4027 michael 8964 block_state.port.value |= OPER_FLAG_DLINE;
4028 michael 1216 }
4029 michael 9756 #line 4030 "conf_parser.c"
4030 michael 1216 break;
4031    
4032 michael 9776 case 212:
4033     #line 1173 "conf_parser.y"
4034 michael 9751 {
4035 michael 1216 if (conf_parser_ctx.pass == 2)
4036 michael 8964 block_state.port.value |= OPER_FLAG_UNDLINE;
4037 michael 913 }
4038 michael 9756 #line 4039 "conf_parser.c"
4039 michael 913 break;
4040    
4041 michael 9776 case 213:
4042     #line 1177 "conf_parser.y"
4043 michael 9751 {
4044 michael 967 if (conf_parser_ctx.pass == 2)
4045 michael 8964 block_state.port.value |= OPER_FLAG_XLINE;
4046 michael 913 }
4047 michael 9756 #line 4048 "conf_parser.c"
4048 michael 913 break;
4049    
4050 michael 9776 case 214:
4051     #line 1181 "conf_parser.y"
4052 michael 9751 {
4053 michael 967 if (conf_parser_ctx.pass == 2)
4054 michael 8964 block_state.port.value |= OPER_FLAG_UNXLINE;
4055 michael 913 }
4056 michael 9756 #line 4057 "conf_parser.c"
4057 michael 913 break;
4058    
4059 michael 9776 case 215:
4060     #line 1185 "conf_parser.y"
4061 michael 9751 {
4062 michael 1301 if (conf_parser_ctx.pass == 2)
4063 michael 8964 block_state.port.value |= OPER_FLAG_DIE;
4064 michael 1301 }
4065 michael 9756 #line 4066 "conf_parser.c"
4066 michael 1301 break;
4067    
4068 michael 9776 case 216:
4069     #line 1189 "conf_parser.y"
4070 michael 9751 {
4071 michael 2012 if (conf_parser_ctx.pass == 2)
4072 michael 8964 block_state.port.value |= OPER_FLAG_RESTART;
4073 michael 2012 }
4074 michael 9756 #line 4075 "conf_parser.c"
4075 michael 2012 break;
4076    
4077 michael 9776 case 217:
4078     #line 1193 "conf_parser.y"
4079 michael 9751 {
4080 michael 2012 if (conf_parser_ctx.pass == 2)
4081 michael 8964 block_state.port.value |= OPER_FLAG_REHASH_REMOTE;
4082 michael 2012 }
4083 michael 9756 #line 4084 "conf_parser.c"
4084 michael 2012 break;
4085    
4086 michael 9776 case 218:
4087     #line 1197 "conf_parser.y"
4088 michael 9751 {
4089 michael 2012 if (conf_parser_ctx.pass == 2)
4090 michael 8964 block_state.port.value |= OPER_FLAG_REHASH;
4091 michael 2012 }
4092 michael 9756 #line 4093 "conf_parser.c"
4093 michael 2012 break;
4094    
4095 michael 9776 case 219:
4096     #line 1201 "conf_parser.y"
4097 michael 9751 {
4098 michael 2038 if (conf_parser_ctx.pass == 2)
4099 michael 8964 block_state.port.value |= OPER_FLAG_ADMIN;
4100 michael 2038 }
4101 michael 9756 #line 4102 "conf_parser.c"
4102 michael 2038 break;
4103    
4104 michael 9776 case 220:
4105     #line 1205 "conf_parser.y"
4106 michael 9751 {
4107 michael 2038 if (conf_parser_ctx.pass == 2)
4108 michael 8964 block_state.port.value |= OPER_FLAG_GLOBOPS;
4109 michael 2038 }
4110 michael 9756 #line 4111 "conf_parser.c"
4111 michael 2038 break;
4112    
4113 michael 9776 case 221:
4114     #line 1209 "conf_parser.y"
4115 michael 9751 {
4116 michael 2336 if (conf_parser_ctx.pass == 2)
4117 michael 8964 block_state.port.value |= OPER_FLAG_WALLOPS;
4118 michael 2336 }
4119 michael 9756 #line 4120 "conf_parser.c"
4120 michael 2336 break;
4121    
4122 michael 9776 case 222:
4123     #line 1213 "conf_parser.y"
4124 michael 9751 {
4125 michael 2336 if (conf_parser_ctx.pass == 2)
4126 michael 8964 block_state.port.value |= OPER_FLAG_LOCOPS;
4127 michael 2336 }
4128 michael 9756 #line 4129 "conf_parser.c"
4129 michael 2336 break;
4130    
4131 michael 9776 case 223:
4132     #line 1217 "conf_parser.y"
4133 michael 9751 {
4134 michael 2853 if (conf_parser_ctx.pass == 2)
4135 michael 8964 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4136 michael 2853 }
4137 michael 9756 #line 4138 "conf_parser.c"
4138 michael 2853 break;
4139    
4140 michael 9776 case 224:
4141     #line 1221 "conf_parser.y"
4142 michael 9751 {
4143 michael 5004 if (conf_parser_ctx.pass == 2)
4144 michael 8964 block_state.port.value |= OPER_FLAG_SET;
4145 michael 5004 }
4146 michael 9756 #line 4147 "conf_parser.c"
4147 michael 5004 break;
4148    
4149 michael 9776 case 225:
4150     #line 1225 "conf_parser.y"
4151 michael 9751 {
4152 michael 6450 if (conf_parser_ctx.pass == 2)
4153 michael 8964 block_state.port.value |= OPER_FLAG_MODULE;
4154 michael 6450 }
4155 michael 9756 #line 4156 "conf_parser.c"
4156 michael 6450 break;
4157    
4158 michael 9776 case 226:
4159     #line 1229 "conf_parser.y"
4160 michael 9751 {
4161 michael 6450 if (conf_parser_ctx.pass == 2)
4162 michael 8964 block_state.port.value |= OPER_FLAG_OPME;
4163 michael 6450 }
4164 michael 9756 #line 4165 "conf_parser.c"
4165 michael 6450 break;
4166    
4167 michael 9776 case 227:
4168     #line 1233 "conf_parser.y"
4169 michael 9751 {
4170 michael 6455 if (conf_parser_ctx.pass == 2)
4171 michael 8964 block_state.port.value |= OPER_FLAG_NICK_RESV;
4172 michael 6455 }
4173 michael 9756 #line 4174 "conf_parser.c"
4174 michael 6455 break;
4175    
4176 michael 9776 case 228:
4177     #line 1237 "conf_parser.y"
4178 michael 9751 {
4179 michael 6455 if (conf_parser_ctx.pass == 2)
4180 michael 8964 block_state.port.value |= OPER_FLAG_JOIN_RESV;
4181 michael 6455 }
4182 michael 9756 #line 4183 "conf_parser.c"
4183 michael 6455 break;
4184    
4185 michael 9776 case 229:
4186     #line 1241 "conf_parser.y"
4187 michael 9751 {
4188 michael 6490 if (conf_parser_ctx.pass == 2)
4189 michael 8964 block_state.port.value |= OPER_FLAG_RESV;
4190 michael 6490 }
4191 michael 9756 #line 4192 "conf_parser.c"
4192 michael 6490 break;
4193    
4194 michael 9776 case 230:
4195     #line 1245 "conf_parser.y"
4196 michael 9751 {
4197 michael 7061 if (conf_parser_ctx.pass == 2)
4198 michael 8964 block_state.port.value |= OPER_FLAG_UNRESV;
4199 michael 7061 }
4200 michael 9756 #line 4201 "conf_parser.c"
4201 michael 7061 break;
4202    
4203 michael 9776 case 231:
4204     #line 1249 "conf_parser.y"
4205 michael 9751 {
4206 michael 8964 if (conf_parser_ctx.pass == 2)
4207     block_state.port.value |= OPER_FLAG_CLOSE;
4208     }
4209 michael 9756 #line 4210 "conf_parser.c"
4210 michael 8964 break;
4211    
4212 michael 9776 case 232:
4213     #line 1259 "conf_parser.y"
4214 michael 9751 {
4215 michael 1651 if (conf_parser_ctx.pass != 1)
4216     break;
4217    
4218     reset_block_state();
4219    
4220     block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4221     block_state.con_freq.value = DEFAULT_CONNECTFREQUENCY;
4222     block_state.max_sendq.value = DEFAULT_SENDQ;
4223     block_state.max_recvq.value = DEFAULT_RECVQ;
4224 michael 913 }
4225 michael 9756 #line 4226 "conf_parser.c"
4226 michael 913 break;
4227    
4228 michael 9776 case 233:
4229     #line 1270 "conf_parser.y"
4230 michael 9751 {
4231 michael 1647 if (conf_parser_ctx.pass != 1)
4232     break;
4233 michael 913
4234 michael 1647 if (!block_state.class.buf[0])
4235     break;
4236 michael 913
4237 michael 8866 struct ClassItem *class = class_find(block_state.class.buf, false);
4238     if (class == NULL)
4239 michael 1647 class = class_make();
4240 michael 913
4241 michael 8866 class->active = true;
4242 michael 7032 xfree(class->name);
4243 michael 1647 class->name = xstrdup(block_state.class.buf);
4244     class->ping_freq = block_state.ping_freq.value;
4245 michael 8497 class->max_perip_local = block_state.max_perip_local.value;
4246     class->max_perip_global = block_state.max_perip_global.value;
4247 michael 1647 class->con_freq = block_state.con_freq.value;
4248     class->max_total = block_state.max_total.value;
4249     class->max_sendq = block_state.max_sendq.value;
4250     class->max_recvq = block_state.max_recvq.value;
4251 michael 3933 class->max_channels = block_state.max_channels.value;
4252 michael 913
4253 michael 1785 if (block_state.min_idle.value > block_state.max_idle.value)
4254     {
4255     block_state.min_idle.value = 0;
4256     block_state.max_idle.value = 0;
4257     block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4258     }
4259    
4260     class->flags = block_state.flags.value;
4261     class->min_idle = block_state.min_idle.value;
4262     class->max_idle = block_state.max_idle.value;
4263    
4264 michael 8866 bool diff = (class->cidr_bitlen_ipv4 != block_state.cidr_bitlen_ipv4.value ||
4265     class->cidr_bitlen_ipv6 != block_state.cidr_bitlen_ipv6.value);
4266 michael 1647 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4267     class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4268     class->number_per_cidr = block_state.number_per_cidr.value;
4269 michael 8607
4270 michael 8609 if (diff)
4271     class_ip_limit_rebuild(class);
4272 michael 913 }
4273 michael 9756 #line 4274 "conf_parser.c"
4274 michael 913 break;
4275    
4276 michael 9776 case 252:
4277     #line 1333 "conf_parser.y"
4278 michael 9751 {
4279 michael 967 if (conf_parser_ctx.pass == 1)
4280 michael 1647 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4281 michael 913 }
4282 michael 9756 #line 4283 "conf_parser.c"
4283 michael 913 break;
4284    
4285 michael 9776 case 253:
4286     #line 1339 "conf_parser.y"
4287 michael 9751 {
4288 michael 1294 if (conf_parser_ctx.pass == 1)
4289 michael 2473 block_state.ping_freq.value = (yyvsp[-1].number);
4290 michael 1294 }
4291 michael 9756 #line 4292 "conf_parser.c"
4292 michael 1294 break;
4293    
4294 michael 9776 case 254:
4295     #line 1345 "conf_parser.y"
4296 michael 9751 {
4297 michael 8497 if (conf_parser_ctx.pass == 1)
4298     block_state.max_perip_local.value = (yyvsp[-1].number);
4299     }
4300 michael 9756 #line 4301 "conf_parser.c"
4301 michael 8497 break;
4302    
4303 michael 9776 case 255:
4304     #line 1351 "conf_parser.y"
4305 michael 9751 {
4306 michael 967 if (conf_parser_ctx.pass == 1)
4307 michael 8497 block_state.max_perip_global.value = (yyvsp[-1].number);
4308 michael 913 }
4309 michael 9756 #line 4310 "conf_parser.c"
4310 michael 913 break;
4311    
4312 michael 9776 case 256:
4313     #line 1357 "conf_parser.y"
4314 michael 9751 {
4315 michael 967 if (conf_parser_ctx.pass == 1)
4316 michael 2473 block_state.con_freq.value = (yyvsp[-1].number);
4317 michael 913 }
4318 michael 9756 #line 4319 "conf_parser.c"
4319 michael 913 break;
4320    
4321 michael 9776 case 257:
4322     #line 1363 "conf_parser.y"
4323 michael 9751 {
4324 michael 967 if (conf_parser_ctx.pass == 1)
4325 michael 3933 block_state.max_channels.value = (yyvsp[-1].number);
4326     }
4327 michael 9756 #line 4328 "conf_parser.c"
4328 michael 3933 break;
4329    
4330 michael 9776 case 258:
4331     #line 1369 "conf_parser.y"
4332 michael 9751 {
4333 michael 3933 if (conf_parser_ctx.pass == 1)
4334 michael 2473 block_state.max_total.value = (yyvsp[-1].number);
4335 michael 913 }
4336 michael 9756 #line 4337 "conf_parser.c"
4337 michael 913 break;
4338    
4339 michael 9776 case 259:
4340     #line 1375 "conf_parser.y"
4341 michael 9751 {
4342 michael 967 if (conf_parser_ctx.pass == 1)
4343 michael 8497 block_state.max_sendq.value = (yyvsp[-1].number);
4344 michael 913 }
4345 michael 9756 #line 4346 "conf_parser.c"
4346 michael 913 break;
4347    
4348 michael 9776 case 260:
4349     #line 1381 "conf_parser.y"
4350 michael 9751 {
4351 michael 967 if (conf_parser_ctx.pass == 1)
4352 michael 2473 if ((yyvsp[-1].number) >= CLIENT_FLOOD_MIN && (yyvsp[-1].number) <= CLIENT_FLOOD_MAX)
4353     block_state.max_recvq.value = (yyvsp[-1].number);
4354 michael 1516 }
4355 michael 9756 #line 4356 "conf_parser.c"
4356 michael 1516 break;
4357    
4358 michael 9776 case 261:
4359     #line 1388 "conf_parser.y"
4360 michael 9751 {
4361 michael 1516 if (conf_parser_ctx.pass == 1)
4362 michael 2473 block_state.cidr_bitlen_ipv4.value = (yyvsp[-1].number) > 32 ? 32 : (yyvsp[-1].number);
4363 michael 913 }
4364 michael 9756 #line 4365 "conf_parser.c"
4365 michael 913 break;
4366    
4367 michael 9776 case 262:
4368     #line 1394 "conf_parser.y"
4369 michael 9751 {
4370 michael 967 if (conf_parser_ctx.pass == 1)
4371 michael 2473 block_state.cidr_bitlen_ipv6.value = (yyvsp[-1].number) > 128 ? 128 : (yyvsp[-1].number);
4372 michael 913 }
4373 michael 9756 #line 4374 "conf_parser.c"
4374 michael 913 break;
4375    
4376 michael 9776 case 263:
4377     #line 1400 "conf_parser.y"
4378 michael 9751 {
4379 michael 967 if (conf_parser_ctx.pass == 1)
4380 michael 2473 block_state.number_per_cidr.value = (yyvsp[-1].number);
4381 michael 913 }
4382 michael 9756 #line 4383 "conf_parser.c"
4383 michael 913 break;
4384    
4385 michael 9776 case 264:
4386     #line 1406 "conf_parser.y"
4387 michael 9751 {
4388 michael 1785 if (conf_parser_ctx.pass != 1)
4389     break;
4390    
4391 michael 2473 block_state.min_idle.value = (yyvsp[-1].number);
4392 michael 1785 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4393 michael 1783 }
4394 michael 9756 #line 4395 "conf_parser.c"
4395 michael 1783 break;
4396    
4397 michael 9776 case 265:
4398     #line 1415 "conf_parser.y"
4399 michael 9751 {
4400 michael 1785 if (conf_parser_ctx.pass != 1)
4401     break;
4402    
4403 michael 2473 block_state.max_idle.value = (yyvsp[-1].number);
4404 michael 1785 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4405 michael 1783 }
4406 michael 9756 #line 4407 "conf_parser.c"
4407 michael 1783 break;
4408    
4409 michael 9776 case 266:
4410     #line 1424 "conf_parser.y"
4411 michael 9751 {
4412 michael 1783 if (conf_parser_ctx.pass == 1)
4413 michael 1785 block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4414 michael 1783 }
4415 michael 9756 #line 4416 "conf_parser.c"
4416 michael 1783 break;
4417    
4418 michael 9776 case 270:
4419     #line 1431 "conf_parser.y"
4420 michael 9751 {
4421 michael 1783 if (conf_parser_ctx.pass == 1)
4422     block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4423     }
4424 michael 9756 #line 4425 "conf_parser.c"
4425 michael 1783 break;
4426    
4427 michael 9776 case 271:
4428     #line 1435 "conf_parser.y"
4429 michael 9751 {
4430 michael 1783 if (conf_parser_ctx.pass == 1)
4431     block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4432     }
4433 michael 9756 #line 4434 "conf_parser.c"
4434 michael 1783 break;
4435    
4436 michael 9776 case 272:
4437     #line 1445 "conf_parser.y"
4438 michael 9751 {
4439 michael 967 if (conf_parser_ctx.pass == 2)
4440 michael 1646 reset_block_state();
4441 michael 913 }
4442 michael 9756 #line 4443 "conf_parser.c"
4443 michael 913 break;
4444    
4445 michael 9776 case 274:
4446     #line 1451 "conf_parser.y"
4447 michael 9751 {
4448 michael 1646 block_state.flags.value = 0;
4449 michael 913 }
4450 michael 9756 #line 4451 "conf_parser.c"
4451 michael 913 break;
4452    
4453 michael 9776 case 278:
4454     #line 1457 "conf_parser.y"
4455 michael 9751 {
4456 michael 967 if (conf_parser_ctx.pass == 2)
4457 michael 9157 block_state.flags.value |= LISTENER_TLS;
4458 michael 913 }
4459 michael 9756 #line 4460 "conf_parser.c"
4460 michael 913 break;
4461    
4462 michael 9776 case 279:
4463     #line 1461 "conf_parser.y"
4464 michael 9751 {
4465 michael 967 if (conf_parser_ctx.pass == 2)
4466 michael 1647 block_state.flags.value |= LISTENER_HIDDEN;
4467 michael 913 }
4468 michael 9756 #line 4469 "conf_parser.c"
4469 michael 913 break;
4470    
4471 michael 9776 case 280:
4472     #line 1465 "conf_parser.y"
4473 michael 9751 {
4474 michael 967 if (conf_parser_ctx.pass == 2)
4475 michael 1647 block_state.flags.value |= LISTENER_SERVER;
4476 michael 913 }
4477 michael 9756 #line 4478 "conf_parser.c"
4478 michael 913 break;
4479    
4480 michael 9776 case 281:
4481     #line 1469 "conf_parser.y"
4482 michael 9751 {
4483 michael 9586 if (conf_parser_ctx.pass == 2)
4484     block_state.flags.value |= LISTENER_CLIENT;
4485     }
4486 michael 9756 #line 4487 "conf_parser.c"
4487 michael 9586 break;
4488    
4489 michael 9776 case 282:
4490     #line 1473 "conf_parser.y"
4491 michael 9751 {
4492 michael 9610 if (conf_parser_ctx.pass == 2)
4493     block_state.flags.value |= LISTENER_DEFER;
4494     }
4495 michael 9756 #line 4496 "conf_parser.c"
4496 michael 9610 break;
4497    
4498 michael 9776 case 290:
4499     #line 1481 "conf_parser.y"
4500 michael 9751 { block_state.flags.value = 0; }
4501 michael 9756 #line 4502 "conf_parser.c"
4502 michael 913 break;
4503    
4504 michael 9776 case 294:
4505     #line 1486 "conf_parser.y"
4506 michael 9751 {
4507 michael 967 if (conf_parser_ctx.pass == 2)
4508 michael 913 {
4509 michael 7109 #ifndef HAVE_TLS
4510 michael 9157 if (block_state.flags.value & LISTENER_TLS)
4511 michael 4499 {
4512 michael 7109 conf_error_report("TLS not available - port closed");
4513 michael 4499 break;
4514     }
4515 michael 913 #endif
4516 michael 6371 listener_add((yyvsp[0].number), block_state.addr.buf, block_state.flags.value);
4517 michael 913 }
4518     }
4519 michael 9756 #line 4520 "conf_parser.c"
4520 michael 913 break;
4521    
4522 michael 9776 case 295:
4523     #line 1499 "conf_parser.y"
4524 michael 9751 {
4525 michael 967 if (conf_parser_ctx.pass == 2)
4526 michael 913 {
4527 michael 7109 #ifndef HAVE_TLS
4528 michael 9157 if (block_state.flags.value & LISTENER_TLS)
4529 michael 4499 {
4530 michael 7109 conf_error_report("TLS not available - port closed");
4531 michael 4499 break;
4532     }
4533 michael 913 #endif
4534    
4535 michael 3473 for (int i = (yyvsp[-2].number); i <= (yyvsp[0].number); ++i)
4536 michael 6371 listener_add(i, block_state.addr.buf, block_state.flags.value);
4537 michael 913 }
4538     }
4539 michael 9756 #line 4540 "conf_parser.c"
4540 michael 913 break;
4541    
4542 michael 9776 case 296:
4543     #line 1516 "conf_parser.y"
4544 michael 9751 {
4545 michael 967 if (conf_parser_ctx.pass == 2)
4546 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4547 michael 913 }
4548 michael 9756 #line 4549 "conf_parser.c"
4549 michael 913 break;
4550    
4551 michael 9776 case 297:
4552     #line 1522 "conf_parser.y"
4553 michael 9751 {
4554 michael 967 if (conf_parser_ctx.pass == 2)
4555 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4556 michael 913 }
4557 michael 9756 #line 4558 "conf_parser.c"
4558 michael 913 break;
4559    
4560 michael 9776 case 298:
4561     #line 1532 "conf_parser.y"
4562 michael 9751 {
4563 michael 967 if (conf_parser_ctx.pass == 2)
4564 michael 1646 reset_block_state();
4565 michael 913 }
4566 michael 9756 #line 4567 "conf_parser.c"
4567 michael 913 break;
4568    
4569 michael 9776 case 299:
4570     #line 1536 "conf_parser.y"
4571 michael 9751 {
4572 michael 9225 dlink_node *node;
4573 michael 913
4574 michael 1646 if (conf_parser_ctx.pass != 2)
4575 michael 913 break;
4576    
4577 michael 4915 DLINK_FOREACH(node, block_state.mask.list.head)
4578 michael 913 {
4579     struct split_nuh_item nuh;
4580 michael 7319 char *s = node->data;
4581 michael 913
4582 michael 7319 if (EmptyString(s))
4583     continue;
4584    
4585     nuh.nuhmask = s;
4586 michael 913 nuh.nickptr = NULL;
4587 michael 1647 nuh.userptr = block_state.user.buf;
4588     nuh.hostptr = block_state.host.buf;
4589 michael 8866
4590 michael 913 nuh.nicksize = 0;
4591 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
4592     nuh.hostsize = sizeof(block_state.host.buf);
4593 michael 8866
4594 michael 913 split_nuh(&nuh);
4595    
4596 michael 8866 struct MaskItem *conf = conf_make(CONF_CLIENT);
4597     conf->user = xstrdup(block_state.user.buf);
4598     conf->host = xstrdup(block_state.host.buf);
4599 michael 913
4600 michael 1647 if (block_state.rpass.buf[0])
4601     conf->passwd = xstrdup(block_state.rpass.buf);
4602 michael 1646 if (block_state.name.buf[0])
4603 michael 1911 conf->name = xstrdup(block_state.name.buf);
4604 michael 913
4605 michael 1646 conf->flags = block_state.flags.value;
4606 michael 9225 conf->port = block_state.port.value;
4607 michael 1646
4608     conf_add_class_to_conf(conf, block_state.class.buf);
4609     add_conf_by_address(CONF_CLIENT, conf);
4610 michael 913 }
4611     }
4612 michael 9756 #line 4613 "conf_parser.c"
4613 michael 913 break;
4614    
4615 michael 9776 case 311:
4616     #line 1590 "conf_parser.y"
4617 michael 9751 {
4618 michael 1646 if (conf_parser_ctx.pass == 2)
4619     dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4620     }
4621 michael 9756 #line 4622 "conf_parser.c"
4622 michael 1646 break;
4623    
4624 michael 9776 case 312:
4625     #line 1596 "conf_parser.y"
4626 michael 9751 {
4627 michael 967 if (conf_parser_ctx.pass == 2)
4628 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4629 michael 913 }
4630 michael 9756 #line 4631 "conf_parser.c"
4631 michael 913 break;
4632    
4633 michael 9776 case 313:
4634     #line 1602 "conf_parser.y"
4635 michael 9751 {
4636 michael 967 if (conf_parser_ctx.pass == 2)
4637 michael 1646 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4638 michael 913 }
4639 michael 9756 #line 4640 "conf_parser.c"
4640 michael 913 break;
4641    
4642 michael 9776 case 314:
4643     #line 1608 "conf_parser.y"
4644 michael 9751 {
4645 michael 967 if (conf_parser_ctx.pass == 2)
4646 michael 913 {
4647     if (yylval.number)
4648 michael 1646 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4649 michael 913 else
4650 michael 1646 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4651 michael 913 }
4652     }
4653 michael 9756 #line 4654 "conf_parser.c"
4654 michael 913 break;
4655    
4656 michael 9776 case 315:
4657     #line 1619 "conf_parser.y"
4658 michael 9751 {
4659 michael 1646 if (conf_parser_ctx.pass == 2)
4660 michael 2093 block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4661 michael 913 }
4662 michael 9756 #line 4663 "conf_parser.c"
4663 michael 913 break;
4664    
4665 michael 9776 case 319:
4666     #line 1626 "conf_parser.y"
4667 michael 9751 {
4668 michael 967 if (conf_parser_ctx.pass == 2)
4669 michael 9333 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4670 michael 913 }
4671 michael 9756 #line 4672 "conf_parser.c"
4672 michael 913 break;
4673    
4674 michael 9776 case 320:
4675     #line 1630 "conf_parser.y"
4676 michael 9751 {
4677 michael 967 if (conf_parser_ctx.pass == 2)
4678 michael 9333 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4679 michael 913 }
4680 michael 9756 #line 4681 "conf_parser.c"
4681 michael 913 break;
4682    
4683 michael 9776 case 321:
4684     #line 1634 "conf_parser.y"
4685 michael 9751 {
4686 michael 967 if (conf_parser_ctx.pass == 2)
4687 michael 9333 block_state.flags.value |= CONF_FLAGS_EXEMPTXLINE;
4688 michael 913 }
4689 michael 9756 #line 4690 "conf_parser.c"
4690 michael 913 break;
4691    
4692 michael 9776 case 322:
4693     #line 1638 "conf_parser.y"
4694 michael 9751 {
4695 michael 967 if (conf_parser_ctx.pass == 2)
4696 michael 9333 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4697 michael 913 }
4698 michael 9756 #line 4699 "conf_parser.c"
4699 michael 913 break;
4700    
4701 michael 9776 case 323:
4702     #line 1642 "conf_parser.y"
4703 michael 9751 {
4704 michael 967 if (conf_parser_ctx.pass == 2)
4705 michael 9333 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4706 michael 913 }
4707 michael 9756 #line 4708 "conf_parser.c"
4708 michael 913 break;
4709    
4710 michael 9776 case 324:
4711     #line 1646 "conf_parser.y"
4712 michael 9751 {
4713 michael 967 if (conf_parser_ctx.pass == 2)
4714 michael 9333 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4715 michael 1250 }
4716 michael 9756 #line 4717 "conf_parser.c"
4717 michael 1250 break;
4718    
4719 michael 9776 case 325:
4720     #line 1650 "conf_parser.y"
4721 michael 9751 {
4722 michael 1715 if (conf_parser_ctx.pass == 2)
4723 michael 9333 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4724 michael 1715 }
4725 michael 9756 #line 4726 "conf_parser.c"
4726 michael 1715 break;
4727    
4728 michael 9776 case 326:
4729     #line 1654 "conf_parser.y"
4730 michael 9751 {
4731 michael 5987 if (conf_parser_ctx.pass == 2)
4732 michael 9333 block_state.flags.value |= CONF_FLAGS_WEBIRC;
4733 michael 5987 }
4734 michael 9756 #line 4735 "conf_parser.c"
4735 michael 5987 break;
4736    
4737 michael 9776 case 327:
4738     #line 1658 "conf_parser.y"
4739 michael 9751 {
4740 michael 7061 if (conf_parser_ctx.pass == 2)
4741 michael 9333 block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4742 michael 7061 }
4743 michael 9756 #line 4744 "conf_parser.c"
4744 michael 7061 break;
4745    
4746 michael 9776 case 328:
4747     #line 1664 "conf_parser.y"
4748 michael 9751 {
4749 michael 1646 if (conf_parser_ctx.pass != 2)
4750     break;
4751    
4752 michael 3473 if (valid_hostname(yylval.string))
4753 michael 913 {
4754 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4755     block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4756 michael 913 }
4757 michael 1646 else
4758     ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4759 michael 913 }
4760 michael 9756 #line 4761 "conf_parser.c"
4761 michael 913 break;
4762    
4763 michael 9776 case 329:
4764     #line 1678 "conf_parser.y"
4765 michael 9751 {
4766 michael 1646 if (conf_parser_ctx.pass != 2)
4767     break;
4768    
4769     strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4770     block_state.flags.value |= CONF_FLAGS_REDIR;
4771 michael 913 }
4772 michael 9756 #line 4773 "conf_parser.c"
4773 michael 913 break;
4774    
4775 michael 9776 case 330:
4776     #line 1687 "conf_parser.y"
4777 michael 9751 {
4778 michael 1646 if (conf_parser_ctx.pass != 2)
4779     break;
4780 michael 1647
4781 michael 1646 block_state.flags.value |= CONF_FLAGS_REDIR;
4782 michael 2473 block_state.port.value = (yyvsp[-1].number);
4783 michael 913 }
4784 michael 9756 #line 4785 "conf_parser.c"
4785 michael 913 break;
4786    
4787 michael 9776 case 331:
4788     #line 1700 "conf_parser.y"
4789 michael 9751 {
4790 michael 1647 if (conf_parser_ctx.pass != 2)
4791 michael 913 break;
4792    
4793 michael 1647 reset_block_state();
4794     strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4795 michael 913 }
4796 michael 9756 #line 4797 "conf_parser.c"
4797 michael 913 break;
4798    
4799 michael 9776 case 332:
4800     #line 1707 "conf_parser.y"
4801 michael 9751 {
4802 michael 1858 if (conf_parser_ctx.pass != 2)
4803     break;
4804    
4805 michael 7283 resv_make(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4806 michael 1823 }
4807 michael 9756 #line 4808 "conf_parser.c"
4808 michael 1823 break;
4809    
4810 michael 9776 case 339:
4811     #line 1718 "conf_parser.y"
4812 michael 9751 {
4813 michael 967 if (conf_parser_ctx.pass == 2)
4814 michael 1858 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4815 michael 913 }
4816 michael 9756 #line 4817 "conf_parser.c"
4817 michael 913 break;
4818    
4819 michael 9776 case 340:
4820     #line 1724 "conf_parser.y"
4821 michael 9751 {
4822 michael 1823 if (conf_parser_ctx.pass == 2)
4823 michael 1858 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4824 michael 913 }
4825 michael 9756 #line 4826 "conf_parser.c"
4826 michael 913 break;
4827    
4828 michael 9776 case 341:
4829     #line 1730 "conf_parser.y"
4830 michael 9751 {
4831 michael 967 if (conf_parser_ctx.pass == 2)
4832 michael 1858 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4833 michael 913 }
4834 michael 9756 #line 4835 "conf_parser.c"
4835 michael 913 break;
4836    
4837 michael 9776 case 347:
4838     #line 1745 "conf_parser.y"
4839 michael 9751 {
4840 michael 2129 if (conf_parser_ctx.pass != 2)
4841     break;
4842    
4843 michael 8660 if (server_valid_name(yylval.string) == true)
4844 michael 913 {
4845 michael 7252 struct ServiceItem *service = service_make();
4846     service->name = xstrdup(yylval.string);
4847 michael 1157 }
4848     }
4849 michael 9756 #line 4850 "conf_parser.c"
4850 michael 1157 break;
4851    
4852 michael 9776 case 348:
4853     #line 1761 "conf_parser.y"
4854 michael 9751 {
4855 michael 1647 if (conf_parser_ctx.pass != 2)
4856     break;
4857    
4858     reset_block_state();
4859    
4860     strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4861     strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4862     strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4863     block_state.flags.value = SHARED_ALL;
4864 michael 913 }
4865 michael 9756 #line 4866 "conf_parser.c"
4866 michael 913 break;
4867    
4868 michael 9776 case 349:
4869     #line 1772 "conf_parser.y"
4870 michael 9751 {
4871 michael 1647 if (conf_parser_ctx.pass != 2)
4872     break;
4873    
4874 michael 7213 struct SharedItem *shared = shared_make();
4875     shared->type = block_state.flags.value;
4876     shared->server = xstrdup(block_state.name.buf);
4877     shared->user = xstrdup(block_state.user.buf);
4878     shared->host = xstrdup(block_state.host.buf);
4879 michael 913 }
4880 michael 9756 #line 4881 "conf_parser.c"
4881 michael 913 break;
4882    
4883 michael 9776 case 356:
4884     #line 1787 "conf_parser.y"
4885 michael 9751 {
4886 michael 967 if (conf_parser_ctx.pass == 2)
4887 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4888 michael 913 }
4889 michael 9756 #line 4890 "conf_parser.c"
4890 michael 913 break;
4891    
4892 michael 9776 case 357:
4893     #line 1793 "conf_parser.y"
4894 michael 9751 {
4895 michael 967 if (conf_parser_ctx.pass == 2)
4896 michael 913 {
4897     struct split_nuh_item nuh;
4898    
4899     nuh.nuhmask = yylval.string;
4900     nuh.nickptr = NULL;
4901 michael 1647 nuh.userptr = block_state.user.buf;
4902     nuh.hostptr = block_state.host.buf;
4903 michael 913
4904     nuh.nicksize = 0;
4905 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
4906     nuh.hostsize = sizeof(block_state.host.buf);
4907 michael 913
4908     split_nuh(&nuh);
4909     }
4910     }
4911 michael 9756 #line 4912 "conf_parser.c"
4912 michael 913 break;
4913    
4914 michael 9776 case 358:
4915     #line 1812 "conf_parser.y"
4916 michael 9751 {
4917 michael 967 if (conf_parser_ctx.pass == 2)
4918 michael 1647 block_state.flags.value = 0;
4919 michael 913 }
4920 michael 9756 #line 4921 "conf_parser.c"
4921 michael 913 break;
4922    
4923 michael 9776 case 362:
4924     #line 1819 "conf_parser.y"
4925 michael 9751 {
4926 michael 967 if (conf_parser_ctx.pass == 2)
4927 michael 8964 block_state.flags.value |= SHARED_KLINE;
4928 michael 913 }
4929 michael 9756 #line 4930 "conf_parser.c"
4930 michael 913 break;
4931    
4932 michael 9776 case 363:
4933     #line 1823 "conf_parser.y"
4934 michael 9751 {
4935 michael 967 if (conf_parser_ctx.pass == 2)
4936 michael 8964 block_state.flags.value |= SHARED_UNKLINE;
4937 michael 913 }
4938 michael 9756 #line 4939 "conf_parser.c"
4939 michael 913 break;
4940    
4941 michael 9776 case 364:
4942     #line 1827 "conf_parser.y"
4943 michael 9751 {
4944 michael 967 if (conf_parser_ctx.pass == 2)
4945 michael 8964 block_state.flags.value |= SHARED_DLINE;
4946 michael 913 }
4947 michael 9756 #line 4948 "conf_parser.c"
4948 michael 913 break;
4949    
4950 michael 9776 case 365:
4951     #line 1831 "conf_parser.y"
4952 michael 9751 {
4953 michael 967 if (conf_parser_ctx.pass == 2)
4954 michael 8964 block_state.flags.value |= SHARED_UNDLINE;
4955 michael 913 }
4956 michael 9756 #line 4957 "conf_parser.c"
4957 michael 913 break;
4958    
4959 michael 9776 case 366:
4960     #line 1835 "conf_parser.y"
4961 michael 9751 {
4962 michael 967 if (conf_parser_ctx.pass == 2)
4963 michael 8964 block_state.flags.value |= SHARED_XLINE;
4964 michael 913 }
4965 michael 9756 #line 4966 "conf_parser.c"
4966 michael 913 break;
4967    
4968 michael 9776 case 367:
4969     #line 1839 "conf_parser.y"
4970 michael 9751 {
4971 michael 967 if (conf_parser_ctx.pass == 2)
4972 michael 8964 block_state.flags.value |= SHARED_UNXLINE;
4973 michael 913 }
4974 michael 9756 #line 4975 "conf_parser.c"
4975 michael 913 break;
4976    
4977 michael 9776 case 368:
4978     #line 1843 "conf_parser.y"
4979 michael 9751 {
4980 michael 967 if (conf_parser_ctx.pass == 2)
4981 michael 8964 block_state.flags.value |= SHARED_RESV;
4982 michael 913 }
4983 michael 9756 #line 4984 "conf_parser.c"
4984 michael 913 break;
4985    
4986 michael 9776 case 369:
4987     #line 1847 "conf_parser.y"
4988 michael 9751 {
4989 michael 967 if (conf_parser_ctx.pass == 2)
4990 michael 8964 block_state.flags.value |= SHARED_UNRESV;
4991 michael 913 }
4992 michael 9756 #line 4993 "conf_parser.c"
4993 michael 913 break;
4994    
4995 michael 9776 case 370:
4996     #line 1851 "conf_parser.y"
4997 michael 9751 {
4998 michael 7061 if (conf_parser_ctx.pass == 2)
4999 michael 8964 block_state.flags.value |= SHARED_LOCOPS;
5000 michael 7061 }
5001 michael 9756 #line 5002 "conf_parser.c"
5002 michael 7061 break;
5003    
5004 michael 9776 case 371:
5005     #line 1855 "conf_parser.y"
5006 michael 9751 {
5007 michael 8964 if (conf_parser_ctx.pass == 2)
5008     block_state.flags.value = SHARED_ALL;
5009     }
5010 michael 9756 #line 5011 "conf_parser.c"
5011 michael 8964 break;
5012    
5013 michael 9776 case 372:
5014     #line 1865 "conf_parser.y"
5015 michael 9751 {
5016 michael 1647 if (conf_parser_ctx.pass != 2)
5017     break;
5018    
5019     reset_block_state();
5020    
5021     strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5022 michael 7213 block_state.flags.value = CLUSTER_ALL;
5023 michael 913 }
5024 michael 9756 #line 5025 "conf_parser.c"
5025 michael 913 break;
5026    
5027 michael 9776 case 373:
5028     #line 1874 "conf_parser.y"
5029 michael 9751 {
5030 michael 1647 if (conf_parser_ctx.pass != 2)
5031     break;
5032    
5033 michael 7213 struct ClusterItem *cluster = cluster_make();
5034     cluster->type = block_state.flags.value;
5035     cluster->server = xstrdup(block_state.name.buf);
5036 michael 913 }
5037 michael 9756 #line 5038 "conf_parser.c"
5038 michael 913 break;
5039    
5040 michael 9776 case 379:
5041     #line 1887 "conf_parser.y"
5042 michael 9751 {
5043 michael 967 if (conf_parser_ctx.pass == 2)
5044 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5045 michael 913 }
5046 michael 9756 #line 5047 "conf_parser.c"
5047 michael 913 break;
5048    
5049 michael 9776 case 380:
5050     #line 1893 "conf_parser.y"
5051 michael 9751 {
5052 michael 967 if (conf_parser_ctx.pass == 2)
5053 michael 1647 block_state.flags.value = 0;
5054 michael 913 }
5055 michael 9756 #line 5056 "conf_parser.c"
5056 michael 913 break;
5057    
5058 michael 9776 case 384:
5059     #line 1900 "conf_parser.y"
5060 michael 9751 {
5061 michael 967 if (conf_parser_ctx.pass == 2)
5062 michael 8964 block_state.flags.value |= CLUSTER_KLINE;
5063 michael 913 }
5064 michael 9756 #line 5065 "conf_parser.c"
5065 michael 913 break;
5066    
5067 michael 9776 case 385:
5068     #line 1904 "conf_parser.y"
5069 michael 9751 {
5070 michael 967 if (conf_parser_ctx.pass == 2)
5071 michael 8964 block_state.flags.value |= CLUSTER_UNKLINE;
5072 michael 913 }
5073 michael 9756 #line 5074 "conf_parser.c"
5074 michael 913 break;
5075    
5076 michael 9776 case 386:
5077     #line 1908 "conf_parser.y"
5078 michael 9751 {
5079 michael 967 if (conf_parser_ctx.pass == 2)
5080 michael 8964 block_state.flags.value |= CLUSTER_DLINE;
5081 michael 913 }
5082 michael 9756 #line 5083 "conf_parser.c"
5083 michael 913 break;
5084    
5085 michael 9776 case 387:
5086     #line 1912 "conf_parser.y"
5087 michael 9751 {
5088 michael 967 if (conf_parser_ctx.pass == 2)
5089 michael 8964 block_state.flags.value |= CLUSTER_UNDLINE;
5090 michael 913 }
5091 michael 9756 #line 5092 "conf_parser.c"
5092 michael 913 break;
5093    
5094 michael 9776 case 388:
5095     #line 1916 "conf_parser.y"
5096 michael 9751 {
5097 michael 967 if (conf_parser_ctx.pass == 2)
5098 michael 8964 block_state.flags.value |= CLUSTER_XLINE;
5099 michael 913 }
5100 michael 9756 #line 5101 "conf_parser.c"
5101 michael 913 break;
5102    
5103 michael 9776 case 389:
5104     #line 1920 "conf_parser.y"
5105 michael 9751 {
5106 michael 967 if (conf_parser_ctx.pass == 2)
5107 michael 8964 block_state.flags.value |= CLUSTER_UNXLINE;
5108 michael 913 }
5109 michael 9756 #line 5110 "conf_parser.c"
5110 michael 913 break;
5111    
5112 michael 9776 case 390:
5113     #line 1924 "conf_parser.y"
5114 michael 9751 {
5115 michael 967 if (conf_parser_ctx.pass == 2)
5116 michael 8964 block_state.flags.value |= CLUSTER_RESV;
5117 michael 913 }
5118 michael 9756 #line 5119 "conf_parser.c"
5119 michael 913 break;
5120    
5121 michael 9776 case 391:
5122     #line 1928 "conf_parser.y"
5123 michael 9751 {
5124 michael 967 if (conf_parser_ctx.pass == 2)
5125 michael 8964 block_state.flags.value |= CLUSTER_UNRESV;
5126 michael 1250 }
5127 michael 9756 #line 5128 "conf_parser.c"
5128 michael 1250 break;
5129    
5130 michael 9776 case 392:
5131     #line 1932 "conf_parser.y"
5132 michael 9751 {
5133 michael 7061 if (conf_parser_ctx.pass == 2)
5134 michael 8964 block_state.flags.value |= CLUSTER_LOCOPS;
5135 michael 7061 }
5136 michael 9756 #line 5137 "conf_parser.c"
5137 michael 7061 break;
5138 michael 1285
5139 michael 9776 case 393:
5140     #line 1936 "conf_parser.y"
5141 michael 9751 {
5142 michael 8964 if (conf_parser_ctx.pass == 2)
5143     block_state.flags.value = CLUSTER_ALL;
5144     }
5145 michael 9756 #line 5146 "conf_parser.c"
5146 michael 8964 break;
5147 michael 7061
5148 michael 9776 case 394:
5149     #line 1946 "conf_parser.y"
5150 michael 9751 {
5151 michael 8964
5152 michael 1647 if (conf_parser_ctx.pass != 2)
5153     break;
5154    
5155     reset_block_state();
5156 michael 2397 block_state.aftype.value = AF_INET;
5157 michael 1647 block_state.port.value = PORTNUM;
5158 michael 9098 block_state.timeout.value = CONNECTTIMEOUT;
5159 michael 913 }
5160 michael 9756 #line 5161 "conf_parser.c"
5161 michael 913 break;
5162    
5163 michael 9776 case 395:
5164     #line 1956 "conf_parser.y"
5165 michael 9751 {
5166 michael 1647 struct addrinfo hints, *res;
5167    
5168     if (conf_parser_ctx.pass != 2)
5169     break;
5170    
5171 michael 1648 if (!block_state.name.buf[0] ||
5172     !block_state.host.buf[0])
5173 michael 1647 break;
5174    
5175 michael 2126 if (!block_state.rpass.buf[0] ||
5176     !block_state.spass.buf[0])
5177 michael 1647 break;
5178    
5179 michael 8866 if (server_valid_name(block_state.name.buf) == false)
5180     break;
5181    
5182 michael 1647 if (has_wildcards(block_state.name.buf) ||
5183     has_wildcards(block_state.host.buf))
5184     break;
5185    
5186 michael 8866 struct MaskItem *conf = conf_make(CONF_SERVER);
5187 michael 8873 conf->addr = xcalloc(sizeof(*conf->addr));
5188 michael 1647 conf->port = block_state.port.value;
5189 michael 9098 conf->timeout = block_state.timeout.value;
5190 michael 1647 conf->flags = block_state.flags.value;
5191     conf->aftype = block_state.aftype.value;
5192     conf->host = xstrdup(block_state.host.buf);
5193     conf->name = xstrdup(block_state.name.buf);
5194     conf->passwd = xstrdup(block_state.rpass.buf);
5195     conf->spasswd = xstrdup(block_state.spass.buf);
5196 michael 2228
5197     if (block_state.cert.buf[0])
5198     conf->certfp = xstrdup(block_state.cert.buf);
5199    
5200 michael 2252 if (block_state.ciph.buf[0])
5201     conf->cipher_list = xstrdup(block_state.ciph.buf);
5202 michael 1647
5203     dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5204     dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5205    
5206     if (block_state.bind.buf[0])
5207 michael 913 {
5208 michael 1647 memset(&hints, 0, sizeof(hints));
5209    
5210     hints.ai_family = AF_UNSPEC;
5211     hints.ai_socktype = SOCK_STREAM;
5212     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5213    
5214     if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5215 michael 8866 ilog(LOG_TYPE_IRCD, "Invalid netmask for server bind(%s)", block_state.bind.buf);
5216 michael 1302 else
5217     {
5218 michael 3473 assert(res);
5219 michael 913
5220 michael 8873 conf->bind = xcalloc(sizeof(*conf->bind));
5221    
5222     memcpy(conf->bind, res->ai_addr, res->ai_addrlen);
5223     conf->bind->ss_len = res->ai_addrlen;
5224 michael 1647 freeaddrinfo(res);
5225 michael 1302 }
5226 michael 1647 }
5227 michael 913
5228 michael 1647 conf_add_class_to_conf(conf, block_state.class.buf);
5229 michael 9114 conf_dns_lookup(conf);
5230 michael 913 }
5231 michael 9756 #line 5232 "conf_parser.c"
5232 michael 913 break;
5233    
5234 michael 9776 case 414:
5235     #line 2042 "conf_parser.y"
5236 michael 9751 {
5237 michael 967 if (conf_parser_ctx.pass == 2)
5238 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5239 michael 913 }
5240 michael 9756 #line 5241 "conf_parser.c"
5241 michael 913 break;
5242    
5243 michael 9776 case 415:
5244     #line 2048 "conf_parser.y"
5245 michael 9751 {
5246 michael 967 if (conf_parser_ctx.pass == 2)
5247 michael 1647 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5248 michael 913 }
5249 michael 9756 #line 5250 "conf_parser.c"
5250 michael 913 break;
5251    
5252 michael 9776 case 416:
5253     #line 2054 "conf_parser.y"
5254 michael 9751 {
5255 michael 967 if (conf_parser_ctx.pass == 2)
5256 michael 9098 block_state.timeout.value = (yyvsp[-1].number);
5257     }
5258 michael 9756 #line 5259 "conf_parser.c"
5259 michael 9098 break;
5260    
5261 michael 9776 case 417:
5262     #line 2060 "conf_parser.y"
5263 michael 9751 {
5264 michael 9098 if (conf_parser_ctx.pass == 2)
5265 michael 1647 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5266 michael 913 }
5267 michael 9756 #line 5268 "conf_parser.c"
5268 michael 913 break;
5269    
5270 michael 9776 case 418:
5271     #line 2066 "conf_parser.y"
5272 michael 9751 {
5273 michael 1647 if (conf_parser_ctx.pass != 2)
5274     break;
5275 michael 913
5276 michael 8866 if (*yylval.string == ':')
5277 michael 1752 conf_error_report("Server passwords cannot begin with a colon");
5278 michael 8866 else if (strchr(yylval.string, ' '))
5279 michael 1752 conf_error_report("Server passwords cannot contain spaces");
5280 michael 1647 else
5281     strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5282 michael 913 }
5283 michael 9756 #line 5284 "conf_parser.c"
5284 michael 913 break;
5285    
5286 michael 9776 case 419:
5287     #line 2079 "conf_parser.y"
5288 michael 9751 {
5289 michael 1647 if (conf_parser_ctx.pass != 2)
5290     break;
5291 michael 913
5292 michael 8866 if (*yylval.string == ':')
5293 michael 1752 conf_error_report("Server passwords cannot begin with a colon");
5294 michael 8866 else if (strchr(yylval.string, ' '))
5295 michael 1752 conf_error_report("Server passwords cannot contain spaces");
5296 michael 1647 else
5297     strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5298 michael 913 }
5299 michael 9756 #line 5300 "conf_parser.c"
5300 michael 913 break;
5301    
5302 michael 9776 case 420:
5303     #line 2092 "conf_parser.y"
5304 michael 9751 {
5305 michael 967 if (conf_parser_ctx.pass == 2)
5306 michael 2229 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5307 michael 2228 }
5308 michael 9756 #line 5309 "conf_parser.c"
5309 michael 2228 break;
5310    
5311 michael 9776 case 421:
5312     #line 2098 "conf_parser.y"
5313 michael 9751 {
5314 michael 2228 if (conf_parser_ctx.pass == 2)
5315 michael 2473 block_state.port.value = (yyvsp[-1].number);
5316 michael 913 }
5317 michael 9756 #line 5318 "conf_parser.c"
5318 michael 913 break;
5319    
5320 michael 9776 case 422:
5321     #line 2104 "conf_parser.y"
5322 michael 9751 {
5323 michael 967 if (conf_parser_ctx.pass == 2)
5324 michael 1647 block_state.aftype.value = AF_INET;
5325 michael 913 }
5326 michael 9756 #line 5327 "conf_parser.c"
5327 michael 913 break;
5328    
5329 michael 9776 case 423:
5330     #line 2108 "conf_parser.y"
5331 michael 9751 {
5332 michael 967 if (conf_parser_ctx.pass == 2)
5333 michael 1647 block_state.aftype.value = AF_INET6;
5334 michael 913 }
5335 michael 9756 #line 5336 "conf_parser.c"
5336 michael 913 break;
5337    
5338 michael 9776 case 424:
5339     #line 2114 "conf_parser.y"
5340 michael 9751 {
5341 michael 1648 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5342 michael 913 }
5343 michael 9756 #line 5344 "conf_parser.c"
5344 michael 913 break;
5345    
5346 michael 9776 case 428:
5347     #line 2120 "conf_parser.y"
5348 michael 9751 {
5349 michael 967 if (conf_parser_ctx.pass == 2)
5350 michael 1647 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5351 michael 913 }
5352 michael 9756 #line 5353 "conf_parser.c"
5353 michael 913 break;
5354    
5355 michael 9776 case 429:
5356     #line 2124 "conf_parser.y"
5357 michael 9751 {
5358 michael 967 if (conf_parser_ctx.pass == 2)
5359 michael 9157 block_state.flags.value |= CONF_FLAGS_TLS;
5360 michael 913 }
5361 michael 9756 #line 5362 "conf_parser.c"
5362 michael 913 break;
5363    
5364 michael 9776 case 430:
5365     #line 2130 "conf_parser.y"
5366 michael 9751 {
5367 michael 967 if (conf_parser_ctx.pass == 2)
5368 michael 913 {
5369     if (yylval.number)
5370 michael 1647 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5371 michael 913 else
5372 michael 1647 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5373 michael 913 }
5374     }
5375 michael 9756 #line 5376 "conf_parser.c"
5376 michael 913 break;
5377    
5378 michael 9776 case 431:
5379     #line 2141 "conf_parser.y"
5380 michael 9751 {
5381 michael 967 if (conf_parser_ctx.pass == 2)
5382 michael 1647 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5383 michael 913 }
5384 michael 9756 #line 5385 "conf_parser.c"
5385 michael 913 break;
5386    
5387 michael 9776 case 432:
5388     #line 2147 "conf_parser.y"
5389 michael 9751 {
5390 michael 967 if (conf_parser_ctx.pass == 2)
5391 michael 1647 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5392 michael 913 }
5393 michael 9756 #line 5394 "conf_parser.c"
5394 michael 913 break;
5395    
5396 michael 9776 case 433:
5397     #line 2153 "conf_parser.y"
5398 michael 9751 {
5399 michael 967 if (conf_parser_ctx.pass == 2)
5400 michael 1647 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5401 michael 913 }
5402 michael 9756 #line 5403 "conf_parser.c"
5403 michael 913 break;
5404    
5405 michael 9776 case 434:
5406     #line 2159 "conf_parser.y"
5407 michael 9751 {
5408 michael 7109 #ifdef HAVE_TLS
5409 michael 967 if (conf_parser_ctx.pass == 2)
5410 michael 1647 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5411 michael 1306 #else
5412     if (conf_parser_ctx.pass == 2)
5413 michael 9146 conf_error_report("Ignoring connect::tls_cipher_list -- no TLS support");
5414 michael 1306 #endif
5415     }
5416 michael 9756 #line 5417 "conf_parser.c"
5417 michael 1306 break;
5418    
5419 michael 9776 case 435:
5420     #line 2174 "conf_parser.y"
5421 michael 9751 {
5422 michael 1306 if (conf_parser_ctx.pass == 2)
5423 michael 1647 reset_block_state();
5424 michael 913 }
5425 michael 9756 #line 5426 "conf_parser.c"
5426 michael 913 break;
5427    
5428 michael 9776 case 436:
5429     #line 2178 "conf_parser.y"
5430 michael 9751 {
5431 michael 1647 if (conf_parser_ctx.pass != 2)
5432     break;
5433    
5434     if (!block_state.user.buf[0] ||
5435     !block_state.host.buf[0])
5436     break;
5437    
5438 michael 8866 struct MaskItem *conf = conf_make(CONF_KLINE);
5439 michael 1921 conf->user = xstrdup(block_state.user.buf);
5440     conf->host = xstrdup(block_state.host.buf);
5441 michael 1647
5442 michael 1921 if (block_state.rpass.buf[0])
5443     conf->reason = xstrdup(block_state.rpass.buf);
5444 michael 1647 else
5445 michael 1921 conf->reason = xstrdup(CONF_NOREASON);
5446     add_conf_by_address(CONF_KLINE, conf);
5447 michael 913 }
5448 michael 9756 #line 5449 "conf_parser.c"
5449 michael 913 break;
5450    
5451 michael 9776 case 442:
5452     #line 2201 "conf_parser.y"
5453 michael 9751 {
5454 michael 913
5455 michael 967 if (conf_parser_ctx.pass == 2)
5456 michael 913 {
5457     struct split_nuh_item nuh;
5458    
5459     nuh.nuhmask = yylval.string;
5460     nuh.nickptr = NULL;
5461 michael 1647 nuh.userptr = block_state.user.buf;
5462     nuh.hostptr = block_state.host.buf;
5463 michael 913
5464     nuh.nicksize = 0;
5465 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
5466     nuh.hostsize = sizeof(block_state.host.buf);
5467 michael 913
5468     split_nuh(&nuh);
5469     }
5470     }
5471 michael 9756 #line 5472 "conf_parser.c"
5472 michael 913 break;
5473    
5474 michael 9776 case 443:
5475     #line 2221 "conf_parser.y"
5476 michael 9751 {
5477 michael 967 if (conf_parser_ctx.pass == 2)
5478 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5479 michael 913 }
5480 michael 9756 #line 5481 "conf_parser.c"
5481 michael 913 break;
5482    
5483 michael 9776 case 444:
5484     #line 2231 "conf_parser.y"
5485 michael 9751 {
5486 michael 967 if (conf_parser_ctx.pass == 2)
5487 michael 1646 reset_block_state();
5488 michael 913 }
5489 michael 9756 #line 5490 "conf_parser.c"
5490 michael 913 break;
5491    
5492 michael 9776 case 445:
5493     #line 2235 "conf_parser.y"
5494 michael 9751 {
5495 michael 1646 if (conf_parser_ctx.pass != 2)
5496     break;
5497    
5498     if (!block_state.addr.buf[0])
5499     break;
5500    
5501     if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5502 michael 913 {
5503 michael 8866 struct MaskItem *conf = conf_make(CONF_DLINE);
5504 michael 1646 conf->host = xstrdup(block_state.addr.buf);
5505 michael 1005
5506 michael 1647 if (block_state.rpass.buf[0])
5507     conf->reason = xstrdup(block_state.rpass.buf);
5508 michael 1646 else
5509     conf->reason = xstrdup(CONF_NOREASON);
5510     add_conf_by_address(CONF_DLINE, conf);
5511 michael 913 }
5512     }
5513 michael 9756 #line 5514 "conf_parser.c"
5514 michael 913 break;
5515    
5516 michael 9776 case 451:
5517     #line 2259 "conf_parser.y"
5518 michael 9751 {
5519 michael 967 if (conf_parser_ctx.pass == 2)
5520 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5521 michael 913 }
5522 michael 9756 #line 5523 "conf_parser.c"
5523 michael 913 break;
5524    
5525 michael 9776 case 452:
5526     #line 2265 "conf_parser.y"
5527 michael 9751 {
5528 michael 967 if (conf_parser_ctx.pass == 2)
5529 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5530 michael 913 }
5531 michael 9756 #line 5532 "conf_parser.c"
5532 michael 913 break;
5533    
5534 michael 9776 case 458:
5535     #line 2280 "conf_parser.y"
5536 michael 9751 {
5537 michael 967 if (conf_parser_ctx.pass == 2)
5538 michael 913 {
5539 michael 6671 if (*yylval.string && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5540 michael 913 {
5541 michael 1646 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5542     conf->host = xstrdup(yylval.string);
5543 michael 913
5544 michael 1646 add_conf_by_address(CONF_EXEMPT, conf);
5545 michael 913 }
5546     }
5547     }
5548 michael 9756 #line 5549 "conf_parser.c"
5549 michael 913 break;
5550    
5551 michael 9776 case 459:
5552     #line 2297 "conf_parser.y"
5553 michael 9751 {
5554 michael 967 if (conf_parser_ctx.pass == 2)
5555 michael 1646 reset_block_state();
5556 michael 913 }
5557 michael 9756 #line 5558 "conf_parser.c"
5558 michael 913 break;
5559    
5560 michael 9776 case 460:
5561     #line 2301 "conf_parser.y"
5562 michael 9751 {
5563 michael 1646 if (conf_parser_ctx.pass != 2)
5564     break;
5565    
5566     if (!block_state.name.buf[0])
5567     break;
5568    
5569 michael 7308 struct GecosItem *gecos = gecos_make();
5570     gecos->mask = xstrdup(block_state.name.buf);
5571 michael 913
5572 michael 1647 if (block_state.rpass.buf[0])
5573 michael 7308 gecos->reason = xstrdup(block_state.rpass.buf);
5574 michael 1646 else
5575 michael 7308 gecos->reason = xstrdup(CONF_NOREASON);
5576 michael 913 }
5577 michael 9756 #line 5578 "conf_parser.c"
5578 michael 913 break;
5579    
5580 michael 9776 case 466:
5581     #line 2321 "conf_parser.y"
5582 michael 9751 {
5583 michael 1646 if (conf_parser_ctx.pass == 2)
5584     strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5585 michael 913 }
5586 michael 9756 #line 5587 "conf_parser.c"
5587 michael 913 break;
5588    
5589 michael 9776 case 467:
5590     #line 2327 "conf_parser.y"
5591 michael 9751 {
5592 michael 967 if (conf_parser_ctx.pass == 2)
5593 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5594 michael 913 }
5595 michael 9756 #line 5596 "conf_parser.c"
5596 michael 1118 break;
5597    
5598 michael 9776 case 517:
5599     #line 2388 "conf_parser.y"
5600 michael 9751 {
5601 michael 9638 ConfigGeneral.away_count = (yyvsp[-1].number);
5602     }
5603 michael 9756 #line 5604 "conf_parser.c"
5604 michael 9638 break;
5605    
5606 michael 9776 case 518:
5607     #line 2393 "conf_parser.y"
5608 michael 9751 {
5609 michael 9638 ConfigGeneral.away_time = (yyvsp[-1].number);
5610     }
5611 michael 9756 #line 5612 "conf_parser.c"
5612 michael 9638 break;
5613    
5614 michael 9776 case 519:
5615     #line 2398 "conf_parser.y"
5616 michael 9751 {
5617     ConfigGeneral.max_monitor = (yyvsp[-1].number);
5618 michael 8497 }
5619 michael 9756 #line 5620 "conf_parser.c"
5620 michael 8497 break;
5621    
5622 michael 9776 case 520:
5623     #line 2403 "conf_parser.y"
5624 michael 9751 {
5625 michael 9638 ConfigGeneral.whowas_history_length = (yyvsp[-1].number);
5626 michael 1459 }
5627 michael 9756 #line 5628 "conf_parser.c"
5628 michael 1459 break;
5629    
5630 michael 9776 case 521:
5631     #line 2408 "conf_parser.y"
5632 michael 9751 {
5633 michael 9638 ConfigGeneral.cycle_on_host_change = yylval.number;
5634 michael 1459 }
5635 michael 9756 #line 5636 "conf_parser.c"
5636 michael 1459 break;
5637    
5638 michael 9776 case 522:
5639     #line 2413 "conf_parser.y"
5640 michael 9751 {
5641 michael 9638 ConfigGeneral.dline_min_cidr = (yyvsp[-1].number);
5642 michael 1459 }
5643 michael 9756 #line 5644 "conf_parser.c"
5644 michael 2185 break;
5645    
5646 michael 9776 case 523:
5647     #line 2418 "conf_parser.y"
5648 michael 9751 {
5649 michael 9638 ConfigGeneral.dline_min_cidr6 = (yyvsp[-1].number);
5650 michael 7445 }
5651 michael 9756 #line 5652 "conf_parser.c"
5652 michael 7445 break;
5653    
5654 michael 9776 case 524:
5655     #line 2423 "conf_parser.y"
5656 michael 9751 {
5657 michael 9638 ConfigGeneral.kline_min_cidr = (yyvsp[-1].number);
5658 michael 913 }
5659 michael 9756 #line 5660 "conf_parser.c"
5660 michael 913 break;
5661    
5662 michael 9776 case 525:
5663     #line 2428 "conf_parser.y"
5664 michael 9751 {
5665 michael 9638 ConfigGeneral.kline_min_cidr6 = (yyvsp[-1].number);
5666 michael 913 }
5667 michael 9756 #line 5668 "conf_parser.c"
5668 michael 913 break;
5669    
5670 michael 9776 case 526:
5671     #line 2433 "conf_parser.y"
5672 michael 9751 {
5673 michael 9638 ConfigGeneral.kill_chase_time_limit = (yyvsp[-1].number);
5674 michael 913 }
5675 michael 9756 #line 5676 "conf_parser.c"
5676 michael 913 break;
5677    
5678 michael 9776 case 527:
5679     #line 2438 "conf_parser.y"
5680 michael 9751 {
5681 michael 9638 ConfigGeneral.failed_oper_notice = yylval.number;
5682 michael 913 }
5683 michael 9756 #line 5684 "conf_parser.c"
5684 michael 913 break;
5685    
5686 michael 9776 case 528:
5687     #line 2443 "conf_parser.y"
5688 michael 9751 {
5689 michael 9638 ConfigGeneral.anti_nick_flood = yylval.number;
5690 michael 913 }
5691 michael 9756 #line 5692 "conf_parser.c"
5692 michael 913 break;
5693    
5694 michael 9776 case 529:
5695     #line 2448 "conf_parser.y"
5696 michael 9751 {
5697 michael 9638 ConfigGeneral.max_nick_time = (yyvsp[-1].number);
5698 michael 913 }
5699 michael 9756 #line 5700 "conf_parser.c"
5700 michael 913 break;
5701    
5702 michael 9776 case 530:
5703     #line 2453 "conf_parser.y"
5704 michael 9751 {
5705 michael 9638 ConfigGeneral.max_nick_changes = (yyvsp[-1].number);
5706 michael 913 }
5707 michael 9756 #line 5708 "conf_parser.c"
5708 michael 913 break;
5709    
5710 michael 9776 case 531:
5711     #line 2458 "conf_parser.y"
5712 michael 9751 {
5713 michael 9638 ConfigGeneral.max_accept = (yyvsp[-1].number);
5714 michael 913 }
5715 michael 9756 #line 5716 "conf_parser.c"
5716 michael 913 break;
5717    
5718 michael 9776 case 532:
5719     #line 2463 "conf_parser.y"
5720 michael 9751 {
5721 michael 9638 ConfigGeneral.anti_spam_exit_message_time = (yyvsp[-1].number);
5722 michael 2853 }
5723 michael 9756 #line 5724 "conf_parser.c"
5724 michael 2853 break;
5725    
5726 michael 9776 case 533:
5727     #line 2468 "conf_parser.y"
5728 michael 9751 {
5729 michael 9638 ConfigGeneral.ts_warn_delta = (yyvsp[-1].number);
5730 michael 3506 }
5731 michael 9756 #line 5732 "conf_parser.c"
5732 michael 3506 break;
5733    
5734 michael 9776 case 534:
5735     #line 2473 "conf_parser.y"
5736 michael 9751 {
5737 michael 9638 ConfigGeneral.ts_max_delta = (yyvsp[-1].number);
5738 michael 3513 }
5739 michael 9756 #line 5740 "conf_parser.c"
5740 michael 3513 break;
5741    
5742 michael 9776 case 535:
5743     #line 2478 "conf_parser.y"
5744 michael 9751 {
5745 michael 9638 ConfigGeneral.invisible_on_connect = yylval.number;
5746 michael 5004 }
5747 michael 9756 #line 5748 "conf_parser.c"
5748 michael 5004 break;
5749    
5750 michael 9776 case 536:
5751     #line 2483 "conf_parser.y"
5752 michael 9751 {
5753 michael 9638 ConfigGeneral.warn_no_connect_block = yylval.number;
5754 michael 913 }
5755 michael 9756 #line 5756 "conf_parser.c"
5756 michael 913 break;
5757    
5758 michael 9776 case 537:
5759     #line 2488 "conf_parser.y"
5760 michael 9751 {
5761 michael 9638 ConfigGeneral.stats_e_disabled = yylval.number;
5762 michael 913 }
5763 michael 9756 #line 5764 "conf_parser.c"
5764 michael 913 break;
5765    
5766 michael 9776 case 538:
5767     #line 2493 "conf_parser.y"
5768 michael 9751 {
5769 michael 9638 ConfigGeneral.stats_m_oper_only = yylval.number;
5770 michael 2269 }
5771 michael 9756 #line 5772 "conf_parser.c"
5772 michael 2269 break;
5773    
5774 michael 9776 case 539:
5775     #line 2498 "conf_parser.y"
5776 michael 9751 {
5777 michael 9638 ConfigGeneral.stats_o_oper_only = yylval.number;
5778 michael 913 }
5779 michael 9756 #line 5780 "conf_parser.c"
5780 michael 913 break;
5781    
5782 michael 9776 case 540:
5783     #line 2503 "conf_parser.y"
5784 michael 9751 {
5785 michael 9638 ConfigGeneral.stats_P_oper_only = yylval.number;
5786 michael 5025 }
5787 michael 9756 #line 5788 "conf_parser.c"
5788 michael 5025 break;
5789    
5790 michael 9776 case 541:
5791     #line 2508 "conf_parser.y"
5792 michael 9751 {
5793 michael 9638 ConfigGeneral.stats_u_oper_only = yylval.number;
5794 michael 913 }
5795 michael 9756 #line 5796 "conf_parser.c"
5796 michael 913 break;
5797    
5798 michael 9776 case 542:
5799     #line 2513 "conf_parser.y"
5800 michael 9751 {
5801 michael 9638 ConfigGeneral.stats_k_oper_only = yylval.number;
5802 michael 913 }
5803 michael 9756 #line 5804 "conf_parser.c"
5804 michael 913 break;
5805    
5806 michael 9776 case 543:
5807     #line 2518 "conf_parser.y"
5808 michael 9751 {
5809 michael 9638 ConfigGeneral.stats_i_oper_only = yylval.number;
5810 michael 913 }
5811 michael 9756 #line 5812 "conf_parser.c"
5812 michael 913 break;
5813    
5814 michael 9776 case 544:
5815     #line 2523 "conf_parser.y"
5816 michael 9751 {
5817 michael 9638 ConfigGeneral.pace_wait = (yyvsp[-1].number);
5818 michael 913 }
5819 michael 9756 #line 5820 "conf_parser.c"
5820 michael 913 break;
5821    
5822 michael 9776 case 545:
5823     #line 2528 "conf_parser.y"
5824 michael 9751 {
5825 michael 9638 ConfigGeneral.caller_id_wait = (yyvsp[-1].number);
5826 michael 913 }
5827 michael 9756 #line 5828 "conf_parser.c"
5828 michael 913 break;
5829    
5830 michael 9776 case 546:
5831     #line 2533 "conf_parser.y"
5832 michael 9751 {
5833 michael 9638 ConfigGeneral.opers_bypass_callerid = yylval.number;
5834 michael 913 }
5835 michael 9756 #line 5836 "conf_parser.c"
5836 michael 913 break;
5837    
5838 michael 9776 case 547:
5839     #line 2538 "conf_parser.y"
5840 michael 9751 {
5841 michael 9638 ConfigGeneral.pace_wait_simple = (yyvsp[-1].number);
5842 michael 913 }
5843 michael 9756 #line 5844 "conf_parser.c"
5844 michael 913 break;
5845    
5846 michael 9776 case 548:
5847     #line 2543 "conf_parser.y"
5848 michael 9751 {
5849 michael 9638 ConfigGeneral.short_motd = yylval.number;
5850 michael 913 }
5851 michael 9756 #line 5852 "conf_parser.c"
5852 michael 913 break;
5853    
5854 michael 9776 case 549:
5855     #line 2548 "conf_parser.y"
5856 michael 9751 {
5857 michael 9638 ConfigGeneral.no_oper_flood = yylval.number;
5858 michael 913 }
5859 michael 9756 #line 5860 "conf_parser.c"
5860 michael 913 break;
5861    
5862 michael 9776 case 550:
5863     #line 2553 "conf_parser.y"
5864 michael 9751 {
5865 michael 9638 ConfigGeneral.dots_in_ident = (yyvsp[-1].number);
5866 michael 913 }
5867 michael 9756 #line 5868 "conf_parser.c"
5868 michael 913 break;
5869    
5870 michael 9776 case 551:
5871     #line 2558 "conf_parser.y"
5872 michael 9751 {
5873 michael 9638 ConfigGeneral.max_targets = (yyvsp[-1].number);
5874 michael 913 }
5875 michael 9756 #line 5876 "conf_parser.c"
5876 michael 913 break;
5877    
5878 michael 9776 case 552:
5879     #line 2563 "conf_parser.y"
5880 michael 9751 {
5881 michael 9638 ConfigGeneral.ping_cookie = yylval.number;
5882 michael 1715 }
5883 michael 9756 #line 5884 "conf_parser.c"
5884 michael 1715 break;
5885    
5886 michael 9776 case 553:
5887     #line 2568 "conf_parser.y"
5888 michael 9751 {
5889 michael 9638 ConfigGeneral.disable_auth = yylval.number;
5890 michael 913 }
5891 michael 9756 #line 5892 "conf_parser.c"
5892 michael 913 break;
5893    
5894 michael 9776 case 554:
5895     #line 2573 "conf_parser.y"
5896 michael 9751 {
5897 michael 9638 ConfigGeneral.throttle_count = (yyvsp[-1].number);
5898 michael 2853 }
5899 michael 9756 #line 5900 "conf_parser.c"
5900 michael 2853 break;
5901    
5902 michael 9776 case 555:
5903     #line 2578 "conf_parser.y"
5904 michael 9751 {
5905 michael 9638 ConfigGeneral.throttle_time = (yyvsp[-1].number);
5906 michael 4254 }
5907 michael 9756 #line 5908 "conf_parser.c"
5908 michael 4254 break;
5909    
5910 michael 9776 case 556:
5911     #line 2583 "conf_parser.y"
5912 michael 9751 {
5913 michael 9610 ConfigGeneral.oper_umodes = 0;
5914 michael 4967 }
5915 michael 9756 #line 5916 "conf_parser.c"
5916 michael 4967 break;
5917    
5918 michael 9776 case 560:
5919     #line 2589 "conf_parser.y"
5920 michael 9751 {
5921 michael 9776 ConfigGeneral.oper_umodes |= UMODE_BOT;
5922 michael 913 }
5923 michael 9756 #line 5924 "conf_parser.c"
5924 michael 913 break;
5925    
5926 michael 9776 case 561:
5927     #line 2592 "conf_parser.y"
5928 michael 9751 {
5929 michael 9776 ConfigGeneral.oper_umodes |= UMODE_CCONN;
5930 michael 3877 }
5931 michael 9756 #line 5932 "conf_parser.c"
5932 michael 3877 break;
5933    
5934 michael 9776 case 562:
5935     #line 2595 "conf_parser.y"
5936 michael 9751 {
5937 michael 9776 ConfigGeneral.oper_umodes |= UMODE_DEAF;
5938 michael 2196 }
5939 michael 9756 #line 5940 "conf_parser.c"
5940 michael 2196 break;
5941    
5942 michael 9776 case 563:
5943     #line 2598 "conf_parser.y"
5944 michael 9751 {
5945 michael 9776 ConfigGeneral.oper_umodes |= UMODE_DEBUG;
5946 michael 2196 }
5947 michael 9756 #line 5948 "conf_parser.c"
5948 michael 2196 break;
5949    
5950 michael 9776 case 564:
5951     #line 2601 "conf_parser.y"
5952 michael 9751 {
5953 michael 9776 ConfigGeneral.oper_umodes |= UMODE_FLOOD;
5954 michael 1547 }
5955 michael 9756 #line 5956 "conf_parser.c"
5956 michael 1547 break;
5957    
5958 michael 9776 case 565:
5959     #line 2604 "conf_parser.y"
5960 michael 9751 {
5961 michael 9776 ConfigGeneral.oper_umodes |= UMODE_HIDDEN;
5962 michael 1547 }
5963 michael 9756 #line 5964 "conf_parser.c"
5964 michael 1547 break;
5965    
5966 michael 9776 case 566:
5967     #line 2607 "conf_parser.y"
5968 michael 9751 {
5969 michael 9776 ConfigGeneral.oper_umodes |= UMODE_HIDECHANS;
5970 michael 913 }
5971 michael 9756 #line 5972 "conf_parser.c"
5972 michael 913 break;
5973    
5974 michael 9776 case 567:
5975     #line 2610 "conf_parser.y"
5976 michael 9751 {
5977 michael 9776 ConfigGeneral.oper_umodes |= UMODE_HIDEIDLE;
5978 michael 913 }
5979 michael 9756 #line 5980 "conf_parser.c"
5980 michael 913 break;
5981    
5982 michael 9776 case 568:
5983     #line 2613 "conf_parser.y"
5984 michael 9751 {
5985 michael 9776 ConfigGeneral.oper_umodes |= UMODE_SKILL;
5986 michael 913 }
5987 michael 9756 #line 5988 "conf_parser.c"
5988 michael 913 break;
5989    
5990 michael 9776 case 569:
5991     #line 2616 "conf_parser.y"
5992 michael 9751 {
5993 michael 9776 ConfigGeneral.oper_umodes |= UMODE_NCHANGE;
5994 michael 3506 }
5995 michael 9756 #line 5996 "conf_parser.c"
5996 michael 3506 break;
5997    
5998 michael 9776 case 570:
5999     #line 2619 "conf_parser.y"
6000 michael 9751 {
6001 michael 9776 ConfigGeneral.oper_umodes |= UMODE_REJ;
6002 michael 913 }
6003 michael 9756 #line 6004 "conf_parser.c"
6004 michael 913 break;
6005    
6006 michael 9776 case 571:
6007     #line 2622 "conf_parser.y"
6008 michael 9751 {
6009 michael 9776 ConfigGeneral.oper_umodes |= UMODE_SPY;
6010 michael 1294 }
6011 michael 9756 #line 6012 "conf_parser.c"
6012 michael 1294 break;
6013    
6014 michael 9776 case 572:
6015     #line 2625 "conf_parser.y"
6016 michael 9751 {
6017 michael 9776 ConfigGeneral.oper_umodes |= UMODE_EXTERNAL;
6018 michael 913 }
6019 michael 9756 #line 6020 "conf_parser.c"
6020 michael 913 break;
6021    
6022 michael 9776 case 573:
6023     #line 2628 "conf_parser.y"
6024 michael 9751 {
6025 michael 9776 ConfigGeneral.oper_umodes |= UMODE_SERVNOTICE;
6026 michael 913 }
6027 michael 9756 #line 6028 "conf_parser.c"
6028 michael 913 break;
6029    
6030 michael 9776 case 574:
6031     #line 2631 "conf_parser.y"
6032 michael 9751 {
6033 michael 9776 ConfigGeneral.oper_umodes |= UMODE_INVISIBLE;
6034 michael 913 }
6035 michael 9756 #line 6036 "conf_parser.c"
6036 michael 913 break;
6037    
6038 michael 9776 case 575:
6039     #line 2634 "conf_parser.y"
6040 michael 9751 {
6041 michael 9776 ConfigGeneral.oper_umodes |= UMODE_WALLOP;
6042 michael 913 }
6043 michael 9756 #line 6044 "conf_parser.c"
6044 michael 913 break;
6045    
6046 michael 9776 case 576:
6047     #line 2637 "conf_parser.y"
6048 michael 9751 {
6049 michael 9776 ConfigGeneral.oper_umodes |= UMODE_SOFTCALLERID;
6050 michael 913 }
6051 michael 9756 #line 6052 "conf_parser.c"
6052 michael 913 break;
6053    
6054 michael 9776 case 577:
6055     #line 2640 "conf_parser.y"
6056 michael 9751 {
6057 michael 9776 ConfigGeneral.oper_umodes |= UMODE_CALLERID;
6058 michael 913 }
6059 michael 9756 #line 6060 "conf_parser.c"
6060 michael 913 break;
6061    
6062 michael 9776 case 578:
6063     #line 2643 "conf_parser.y"
6064 michael 9751 {
6065 michael 9776 ConfigGeneral.oper_umodes |= UMODE_LOCOPS;
6066 michael 913 }
6067 michael 9756 #line 6068 "conf_parser.c"
6068 michael 913 break;
6069    
6070 michael 9776 case 579:
6071     #line 2646 "conf_parser.y"
6072 michael 9751 {
6073 michael 9776 ConfigGeneral.oper_umodes |= UMODE_REGONLY;
6074 michael 913 }
6075 michael 9756 #line 6076 "conf_parser.c"
6076 michael 913 break;
6077    
6078 michael 9776 case 580:
6079     #line 2649 "conf_parser.y"
6080 michael 9751 {
6081 michael 9776 ConfigGeneral.oper_umodes |= UMODE_FARCONNECT;
6082 michael 913 }
6083 michael 9756 #line 6084 "conf_parser.c"
6084 michael 913 break;
6085    
6086 michael 9776 case 581:
6087     #line 2652 "conf_parser.y"
6088 michael 9751 {
6089 michael 9776 ConfigGeneral.oper_umodes |= UMODE_EXPIRATION;
6090 michael 913 }
6091 michael 9756 #line 6092 "conf_parser.c"
6092 michael 913 break;
6093    
6094 michael 9776 case 582:
6095     #line 2657 "conf_parser.y"
6096 michael 9751 {
6097 michael 9776 ConfigGeneral.oper_only_umodes = 0;
6098 michael 913 }
6099 michael 9756 #line 6100 "conf_parser.c"
6100 michael 913 break;
6101    
6102 michael 9776 case 586:
6103     #line 2663 "conf_parser.y"
6104 michael 9751 {
6105 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_BOT;
6106 michael 1981 }
6107 michael 9756 #line 6108 "conf_parser.c"
6108 michael 1981 break;
6109    
6110 michael 9776 case 587:
6111     #line 2666 "conf_parser.y"
6112 michael 9751 {
6113 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_CCONN;
6114 michael 1981 }
6115 michael 9756 #line 6116 "conf_parser.c"
6116 michael 1981 break;
6117    
6118 michael 9776 case 588:
6119     #line 2669 "conf_parser.y"
6120 michael 9751 {
6121 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_DEAF;
6122 michael 913 }
6123 michael 9756 #line 6124 "conf_parser.c"
6124 michael 913 break;
6125    
6126 michael 9776 case 589:
6127     #line 2672 "conf_parser.y"
6128 michael 9751 {
6129 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_DEBUG;
6130 michael 913 }
6131 michael 9756 #line 6132 "conf_parser.c"
6132 michael 913 break;
6133    
6134 michael 9776 case 590:
6135     #line 2675 "conf_parser.y"
6136 michael 9751 {
6137 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_FLOOD;
6138 michael 913 }
6139 michael 9756 #line 6140 "conf_parser.c"
6140 michael 913 break;
6141    
6142 michael 9776 case 591:
6143     #line 2678 "conf_parser.y"
6144 michael 9751 {
6145 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_SKILL;
6146 michael 913 }
6147 michael 9756 #line 6148 "conf_parser.c"
6148 michael 913 break;
6149    
6150 michael 9776 case 592:
6151     #line 2681 "conf_parser.y"
6152 michael 9751 {
6153 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_HIDDEN;
6154 michael 913 }
6155 michael 9756 #line 6156 "conf_parser.c"
6156 michael 913 break;
6157    
6158 michael 9776 case 593:
6159     #line 2684 "conf_parser.y"
6160 michael 9751 {
6161 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_NCHANGE;
6162 michael 913 }
6163 michael 9756 #line 6164 "conf_parser.c"
6164 michael 913 break;
6165    
6166 michael 9776 case 594:
6167     #line 2687 "conf_parser.y"
6168 michael 9751 {
6169 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_REJ;
6170 michael 913 }
6171 michael 9756 #line 6172 "conf_parser.c"
6172 michael 913 break;
6173    
6174 michael 9776 case 595:
6175     #line 2690 "conf_parser.y"
6176 michael 9751 {
6177 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_SPY;
6178 michael 1294 }
6179 michael 9756 #line 6180 "conf_parser.c"
6180 michael 1294 break;
6181    
6182 michael 9776 case 596:
6183     #line 2693 "conf_parser.y"
6184 michael 9751 {
6185 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_EXTERNAL;
6186 michael 913 }
6187 michael 9756 #line 6188 "conf_parser.c"
6188 michael 913 break;
6189    
6190 michael 9776 case 597:
6191     #line 2696 "conf_parser.y"
6192 michael 9751 {
6193 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_SERVNOTICE;
6194 michael 913 }
6195 michael 9756 #line 6196 "conf_parser.c"
6196 michael 913 break;
6197    
6198 michael 9776 case 598:
6199     #line 2699 "conf_parser.y"
6200 michael 9751 {
6201 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_INVISIBLE;
6202 michael 913 }
6203 michael 9756 #line 6204 "conf_parser.c"
6204 michael 913 break;
6205    
6206 michael 9776 case 599:
6207     #line 2702 "conf_parser.y"
6208 michael 9751 {
6209 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_WALLOP;
6210 michael 913 }
6211 michael 9756 #line 6212 "conf_parser.c"
6212 michael 913 break;
6213    
6214 michael 9776 case 600:
6215     #line 2705 "conf_parser.y"
6216 michael 9751 {
6217 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_SOFTCALLERID;
6218 michael 913 }
6219 michael 9756 #line 6220 "conf_parser.c"
6220 michael 913 break;
6221    
6222 michael 9776 case 601:
6223     #line 2708 "conf_parser.y"
6224 michael 9751 {
6225 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_CALLERID;
6226 michael 913 }
6227 michael 9756 #line 6228 "conf_parser.c"
6228 michael 913 break;
6229    
6230 michael 9776 case 602:
6231     #line 2711 "conf_parser.y"
6232 michael 9751 {
6233 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_LOCOPS;
6234 michael 913 }
6235 michael 9756 #line 6236 "conf_parser.c"
6236 michael 913 break;
6237    
6238 michael 9776 case 603:
6239     #line 2714 "conf_parser.y"
6240 michael 9751 {
6241 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_REGONLY;
6242 michael 1855 }
6243 michael 9756 #line 6244 "conf_parser.c"
6244 michael 1855 break;
6245    
6246 michael 9776 case 604:
6247     #line 2717 "conf_parser.y"
6248 michael 9751 {
6249 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_FARCONNECT;
6250 michael 913 }
6251 michael 9756 #line 6252 "conf_parser.c"
6252 michael 913 break;
6253    
6254 michael 9776 case 605:
6255     #line 2720 "conf_parser.y"
6256 michael 9751 {
6257 michael 9776 ConfigGeneral.oper_only_umodes |= UMODE_EXPIRATION;
6258 michael 8964 }
6259 michael 9756 #line 6260 "conf_parser.c"
6260 michael 8964 break;
6261    
6262 michael 9776 case 606:
6263     #line 2725 "conf_parser.y"
6264 michael 9751 {
6265 michael 9776 ConfigGeneral.min_nonwildcard = (yyvsp[-1].number);
6266 michael 913 }
6267 michael 9756 #line 6268 "conf_parser.c"
6268 michael 913 break;
6269    
6270 michael 9776 case 607:
6271     #line 2730 "conf_parser.y"
6272 michael 9751 {
6273 michael 9776 ConfigGeneral.min_nonwildcard_simple = (yyvsp[-1].number);
6274 michael 9235 }
6275 michael 9756 #line 6276 "conf_parser.c"
6276 michael 9235 break;
6277    
6278 michael 9776 case 608:
6279     #line 2735 "conf_parser.y"
6280 michael 9751 {
6281 michael 9776 ConfigGeneral.default_floodcount = (yyvsp[-1].number);
6282 michael 1519 }
6283 michael 9756 #line 6284 "conf_parser.c"
6284 michael 1519 break;
6285    
6286 michael 9776 case 609:
6287     #line 2740 "conf_parser.y"
6288 michael 9751 {
6289 michael 9776 ConfigGeneral.default_floodtime = (yyvsp[-1].number);
6290 michael 7861 }
6291 michael 9756 #line 6292 "conf_parser.c"
6292 michael 7861 break;
6293    
6294 michael 9776 case 629:
6295     #line 2769 "conf_parser.y"
6296 michael 9751 {
6297 michael 9776 ConfigChannel.enable_extbans = yylval.number;
6298 michael 913 }
6299 michael 9756 #line 6300 "conf_parser.c"
6300 michael 913 break;
6301    
6302 michael 9776 case 630:
6303     #line 2774 "conf_parser.y"
6304 michael 9751 {
6305 michael 9776 ConfigChannel.disable_fake_channels = yylval.number;
6306 michael 3762 }
6307 michael 9756 #line 6308 "conf_parser.c"
6308 michael 3762 break;
6309    
6310 michael 9776 case 631:
6311     #line 2779 "conf_parser.y"
6312 michael 9751 {
6313 michael 9776 ConfigChannel.invite_client_count = (yyvsp[-1].number);
6314 michael 3762 }
6315 michael 9756 #line 6316 "conf_parser.c"
6316 michael 3762 break;
6317    
6318 michael 9776 case 632:
6319     #line 2784 "conf_parser.y"
6320 michael 9751 {
6321 michael 9776 ConfigChannel.invite_client_time = (yyvsp[-1].number);
6322 michael 6801 }
6323 michael 9756 #line 6324 "conf_parser.c"
6324 michael 6801 break;
6325    
6326 michael 9776 case 633:
6327     #line 2789 "conf_parser.y"
6328 michael 9751 {
6329 michael 9776 ConfigChannel.invite_delay_channel = (yyvsp[-1].number);
6330 michael 7795 }
6331 michael 9756 #line 6332 "conf_parser.c"
6332 michael 7795 break;
6333    
6334 michael 9776 case 634:
6335     #line 2794 "conf_parser.y"
6336 michael 9751 {
6337 michael 9776 ConfigChannel.invite_expire_time = (yyvsp[-1].number);
6338 michael 913 }
6339 michael 9756 #line 6340 "conf_parser.c"
6340 michael 913 break;
6341    
6342 michael 9776 case 635:
6343     #line 2799 "conf_parser.y"
6344 michael 9751 {
6345 michael 9776 ConfigChannel.knock_client_count = (yyvsp[-1].number);
6346 michael 913 }
6347 michael 9756 #line 6348 "conf_parser.c"
6348 michael 913 break;
6349    
6350 michael 9776 case 636:
6351     #line 2804 "conf_parser.y"
6352 michael 9751 {
6353 michael 9776 ConfigChannel.knock_client_time = (yyvsp[-1].number);
6354 michael 913 }
6355 michael 9756 #line 6356 "conf_parser.c"
6356 michael 913 break;
6357    
6358 michael 9776 case 637:
6359     #line 2809 "conf_parser.y"
6360 michael 9751 {
6361 michael 9776 ConfigChannel.knock_delay_channel = (yyvsp[-1].number);
6362 michael 913 }
6363 michael 9756 #line 6364 "conf_parser.c"
6364 michael 913 break;
6365    
6366 michael 9776 case 638:
6367     #line 2814 "conf_parser.y"
6368 michael 9751 {
6369 michael 9776 ConfigChannel.max_channels = (yyvsp[-1].number);
6370 michael 7772 }
6371 michael 9756 #line 6372 "conf_parser.c"
6372 michael 7772 break;
6373    
6374 michael 9776 case 639:
6375     #line 2819 "conf_parser.y"
6376 michael 9751 {
6377 michael 9776 ConfigChannel.max_invites = (yyvsp[-1].number);
6378 michael 9586 }
6379 michael 9756 #line 6380 "conf_parser.c"
6380 michael 9586 break;
6381    
6382 michael 9776 case 640:
6383     #line 2824 "conf_parser.y"
6384 michael 9751 {
6385 michael 9776 ConfigChannel.max_bans = (yyvsp[-1].number);
6386 michael 9610 }
6387 michael 9756 #line 6388 "conf_parser.c"
6388 michael 9610 break;
6389    
6390 michael 9776 case 641:
6391     #line 2829 "conf_parser.y"
6392 michael 9751 {
6393 michael 9776 ConfigChannel.max_bans_large = (yyvsp[-1].number);
6394 michael 3860 }
6395 michael 9756 #line 6396 "conf_parser.c"
6396 michael 3860 break;
6397    
6398 michael 9776 case 642:
6399     #line 2834 "conf_parser.y"
6400 michael 9751 {
6401 michael 9776 ConfigChannel.default_join_flood_count = yylval.number;
6402     }
6403     #line 6404 "conf_parser.c"
6404     break;
6405    
6406     case 643:
6407     #line 2839 "conf_parser.y"
6408     {
6409     ConfigChannel.default_join_flood_time = (yyvsp[-1].number);
6410     }
6411     #line 6412 "conf_parser.c"
6412     break;
6413    
6414     case 657:
6415     #line 2862 "conf_parser.y"
6416     {
6417 michael 2196 if (conf_parser_ctx.pass == 2)
6418     ConfigServerHide.flatten_links = yylval.number;
6419 michael 913 }
6420 michael 9776 #line 6421 "conf_parser.c"
6421 michael 913 break;
6422    
6423 michael 9776 case 658:
6424     #line 2868 "conf_parser.y"
6425 michael 9751 {
6426 michael 967 if (conf_parser_ctx.pass == 2)
6427 michael 6637 {
6428     if ((yyvsp[-1].number) > 0)
6429     {
6430     event_write_links_file.when = (yyvsp[-1].number);
6431     event_add(&event_write_links_file, NULL);
6432     }
6433     else
6434     event_delete(&event_write_links_file);
6435    
6436     ConfigServerHide.flatten_links_delay = (yyvsp[-1].number);
6437     }
6438 michael 913 }
6439 michael 9776 #line 6440 "conf_parser.c"
6440 michael 913 break;
6441    
6442 michael 9776 case 659:
6443     #line 2884 "conf_parser.y"
6444 michael 9751 {
6445 michael 967 if (conf_parser_ctx.pass == 2)
6446 michael 6637 {
6447 michael 7032 xfree(ConfigServerHide.flatten_links_file);
6448 michael 6637 ConfigServerHide.flatten_links_file = xstrdup(yylval.string);
6449     }
6450 michael 913 }
6451 michael 9776 #line 6452 "conf_parser.c"
6452 michael 913 break;
6453    
6454 michael 9776 case 660:
6455     #line 2893 "conf_parser.y"
6456 michael 9751 {
6457 michael 967 if (conf_parser_ctx.pass == 2)
6458 michael 6637 ConfigServerHide.disable_remote_commands = yylval.number;
6459 michael 1851 }
6460 michael 9776 #line 6461 "conf_parser.c"
6461 michael 1851 break;
6462    
6463 michael 9776 case 661:
6464     #line 2899 "conf_parser.y"
6465 michael 9751 {
6466 michael 1851 if (conf_parser_ctx.pass == 2)
6467 michael 6637 ConfigServerHide.hide_servers = yylval.number;
6468 michael 913 }
6469 michael 9776 #line 6470 "conf_parser.c"
6470 michael 913 break;
6471    
6472 michael 9776 case 662:
6473     #line 2905 "conf_parser.y"
6474 michael 9751 {
6475 michael 967 if (conf_parser_ctx.pass == 2)
6476 michael 6637 ConfigServerHide.hide_services = yylval.number;
6477 michael 913 }
6478 michael 9776 #line 6479 "conf_parser.c"
6479 michael 913 break;
6480    
6481 michael 9776 case 663:
6482     #line 2911 "conf_parser.y"
6483 michael 9751 {
6484 michael 967 if (conf_parser_ctx.pass == 2)
6485 michael 6603 {
6486 michael 7032 xfree(ConfigServerHide.hidden_name);
6487 michael 6637 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6488 michael 6603 }
6489     }
6490 michael 9776 #line 6491 "conf_parser.c"
6491 michael 6603 break;
6492    
6493 michael 9776 case 664:
6494     #line 2920 "conf_parser.y"
6495 michael 9751 {
6496 michael 6603 if (conf_parser_ctx.pass == 2)
6497 michael 913 ConfigServerHide.hidden = yylval.number;
6498     }
6499 michael 9776 #line 6500 "conf_parser.c"
6500 michael 913 break;
6501    
6502 michael 9776 case 665:
6503     #line 2926 "conf_parser.y"
6504 michael 9751 {
6505 michael 967 if (conf_parser_ctx.pass == 2)
6506 michael 913 ConfigServerHide.hide_server_ips = yylval.number;
6507     }
6508 michael 9776 #line 6509 "conf_parser.c"
6509 michael 913 break;
6510    
6511    
6512 michael 9776 #line 6513 "conf_parser.c"
6513 michael 9751
6514 michael 913 default: break;
6515     }
6516 michael 1133 /* User semantic actions sometimes alter yychar, and that requires
6517     that yytoken be updated with the new translation. We take the
6518     approach of translating immediately before every use of yytoken.
6519     One alternative is translating here after every semantic action,
6520     but that translation would be missed if the semantic action invokes
6521     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6522     if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6523     incorrect destructor might then be invoked immediately. In the
6524     case of YYERROR or YYBACKUP, subsequent parser actions might lead
6525     to an incorrect destructor call or verbose syntax error message
6526     before the lookahead is translated. */
6527 michael 913 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6528    
6529     YYPOPSTACK (yylen);
6530     yylen = 0;
6531     YY_STACK_PRINT (yyss, yyssp);
6532    
6533     *++yyvsp = yyval;
6534    
6535 michael 2473 /* Now 'shift' the result of the reduction. Determine what state
6536 michael 913 that goes to, based on the state we popped back to and the rule
6537     number reduced by. */
6538 michael 8760 {
6539     const int yylhs = yyr1[yyn] - YYNTOKENS;
6540     const int yyi = yypgoto[yylhs] + *yyssp;
6541     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
6542     ? yytable[yyi]
6543     : yydefgoto[yylhs]);
6544     }
6545 michael 913
6546     goto yynewstate;
6547    
6548    
6549 michael 2473 /*--------------------------------------.
6550     | yyerrlab -- here on detecting error. |
6551     `--------------------------------------*/
6552 michael 913 yyerrlab:
6553 michael 1133 /* Make sure we have latest lookahead translation. See comments at
6554     user semantic actions for why this is necessary. */
6555     yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6556    
6557 michael 913 /* If not already recovering from an error, report this error. */
6558     if (!yyerrstatus)
6559     {
6560     ++yynerrs;
6561     #if ! YYERROR_VERBOSE
6562     yyerror (YY_("syntax error"));
6563     #else
6564 michael 1133 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6565     yyssp, yytoken)
6566 michael 913 {
6567 michael 1133 char const *yymsgp = YY_("syntax error");
6568     int yysyntax_error_status;
6569     yysyntax_error_status = YYSYNTAX_ERROR;
6570     if (yysyntax_error_status == 0)
6571     yymsgp = yymsg;
6572     else if (yysyntax_error_status == 1)
6573     {
6574     if (yymsg != yymsgbuf)
6575     YYSTACK_FREE (yymsg);
6576 michael 9751 yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
6577 michael 1133 if (!yymsg)
6578     {
6579     yymsg = yymsgbuf;
6580     yymsg_alloc = sizeof yymsgbuf;
6581     yysyntax_error_status = 2;
6582     }
6583     else
6584     {
6585     yysyntax_error_status = YYSYNTAX_ERROR;
6586     yymsgp = yymsg;
6587     }
6588     }
6589     yyerror (yymsgp);
6590     if (yysyntax_error_status == 2)
6591     goto yyexhaustedlab;
6592 michael 913 }
6593 michael 1133 # undef YYSYNTAX_ERROR
6594 michael 913 #endif
6595     }
6596    
6597    
6598    
6599     if (yyerrstatus == 3)
6600     {
6601 michael 967 /* If just tried and failed to reuse lookahead token after an
6602 michael 2473 error, discard it. */
6603 michael 913
6604     if (yychar <= YYEOF)
6605 michael 2473 {
6606     /* Return failure if at end of input. */
6607     if (yychar == YYEOF)
6608     YYABORT;
6609     }
6610 michael 913 else
6611 michael 2473 {
6612     yydestruct ("Error: discarding",
6613     yytoken, &yylval);
6614     yychar = YYEMPTY;
6615     }
6616 michael 913 }
6617    
6618 michael 967 /* Else will try to reuse lookahead token after shifting the error
6619 michael 913 token. */
6620     goto yyerrlab1;
6621    
6622    
6623     /*---------------------------------------------------.
6624     | yyerrorlab -- error raised explicitly by YYERROR. |
6625     `---------------------------------------------------*/
6626     yyerrorlab:
6627 michael 8866 /* Pacify compilers when the user code never invokes YYERROR and the
6628     label yyerrorlab therefore never appears in user code. */
6629     if (0)
6630     YYERROR;
6631 michael 913
6632 michael 2473 /* Do not reclaim the symbols of the rule whose action triggered
6633 michael 913 this YYERROR. */
6634     YYPOPSTACK (yylen);
6635     yylen = 0;
6636     YY_STACK_PRINT (yyss, yyssp);
6637     yystate = *yyssp;
6638     goto yyerrlab1;
6639    
6640    
6641     /*-------------------------------------------------------------.
6642     | yyerrlab1 -- common code for both syntax error and YYERROR. |
6643     `-------------------------------------------------------------*/
6644     yyerrlab1:
6645 michael 2473 yyerrstatus = 3; /* Each real token shifted decrements this. */
6646 michael 913
6647     for (;;)
6648     {
6649     yyn = yypact[yystate];
6650 michael 1133 if (!yypact_value_is_default (yyn))
6651 michael 2473 {
6652     yyn += YYTERROR;
6653     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6654     {
6655     yyn = yytable[yyn];
6656     if (0 < yyn)
6657     break;
6658     }
6659     }
6660 michael 913
6661     /* Pop the current state because it cannot handle the error token. */
6662     if (yyssp == yyss)
6663 michael 2473 YYABORT;
6664 michael 913
6665    
6666     yydestruct ("Error: popping",
6667 michael 2473 yystos[yystate], yyvsp);
6668 michael 913 YYPOPSTACK (1);
6669     yystate = *yyssp;
6670     YY_STACK_PRINT (yyss, yyssp);
6671     }
6672    
6673 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6674 michael 913 *++yyvsp = yylval;
6675 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_END
6676 michael 913
6677    
6678     /* Shift the error token. */
6679     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6680    
6681     yystate = yyn;
6682     goto yynewstate;
6683    
6684    
6685     /*-------------------------------------.
6686     | yyacceptlab -- YYACCEPT comes here. |
6687     `-------------------------------------*/
6688     yyacceptlab:
6689     yyresult = 0;
6690     goto yyreturn;
6691    
6692 michael 8866
6693 michael 913 /*-----------------------------------.
6694     | yyabortlab -- YYABORT comes here. |
6695     `-----------------------------------*/
6696     yyabortlab:
6697     yyresult = 1;
6698     goto yyreturn;
6699    
6700 michael 8866
6701 michael 1425 #if !defined yyoverflow || YYERROR_VERBOSE
6702 michael 913 /*-------------------------------------------------.
6703     | yyexhaustedlab -- memory exhaustion comes here. |
6704     `-------------------------------------------------*/
6705     yyexhaustedlab:
6706     yyerror (YY_("memory exhausted"));
6707     yyresult = 2;
6708     /* Fall through. */
6709     #endif
6710    
6711 michael 8866
6712     /*-----------------------------------------------------.
6713     | yyreturn -- parsing is finished, return the result. |
6714     `-----------------------------------------------------*/
6715 michael 913 yyreturn:
6716 michael 967 if (yychar != YYEMPTY)
6717 michael 1133 {
6718     /* Make sure we have latest lookahead translation. See comments at
6719     user semantic actions for why this is necessary. */
6720     yytoken = YYTRANSLATE (yychar);
6721     yydestruct ("Cleanup: discarding lookahead",
6722     yytoken, &yylval);
6723     }
6724 michael 2473 /* Do not reclaim the symbols of the rule whose action triggered
6725 michael 913 this YYABORT or YYACCEPT. */
6726     YYPOPSTACK (yylen);
6727     YY_STACK_PRINT (yyss, yyssp);
6728     while (yyssp != yyss)
6729     {
6730     yydestruct ("Cleanup: popping",
6731 michael 9751 yystos[+*yyssp], yyvsp);
6732 michael 913 YYPOPSTACK (1);
6733     }
6734     #ifndef yyoverflow
6735     if (yyss != yyssa)
6736     YYSTACK_FREE (yyss);
6737     #endif
6738     #if YYERROR_VERBOSE
6739     if (yymsg != yymsgbuf)
6740     YYSTACK_FREE (yymsg);
6741     #endif
6742 michael 2473 return yyresult;
6743 michael 913 }

Properties

Name Value
svn:eol-style native