ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 6637
Committed: Sat Oct 24 17:30:07 2015 UTC (9 years, 10 months ago) by michael
Content type: text/x-csrc
File size: 220075 byte(s)
Log Message:
- Rebuilt parser/lexer files

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

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision