ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 5987
Committed: Tue May 26 18:59:52 2015 UTC (10 years, 3 months ago) by michael
Content type: text/x-csrc
File size: 224097 byte(s)
Log Message:
- Re-generate parser files

File Contents

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

Properties

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