ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 8459
Committed: Sat Mar 31 15:35:52 2018 UTC (7 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 220785 byte(s)
Log Message:
- Recreate conf_parser

File Contents

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

Properties

Name Value
svn:eol-style native