ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 6801
Committed: Wed Nov 18 11:03:46 2015 UTC (9 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 220268 byte(s)
Log Message:
- Rebuilt parser/lexer files

File Contents

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

Properties

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