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

Properties

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