ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1024
Committed: Sun Nov 1 23:14:25 2009 UTC (15 years, 9 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.2/src/ircd_parser.c
File size: 258621 byte(s)
Log Message:
- Fixed compile with --disable-openssl

File Contents

# User Rev Content
1 michael 913
2 michael 967 /* A Bison parser, made by GNU Bison 2.4.1. */
3    
4 michael 913 /* Skeleton implementation for Bison's Yacc-like parsers in C
5 michael 967
6     Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
7 michael 913 Free Software Foundation, Inc.
8 michael 967
9     This program is free software: you can redistribute it and/or modify
10 michael 913 it under the terms of the GNU General Public License as published by
11 michael 967 the Free Software Foundation, either version 3 of the License, or
12     (at your option) any later version.
13    
14 michael 913 This program is distributed in the hope that it will be useful,
15     but WITHOUT ANY WARRANTY; without even the implied warranty of
16     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17     GNU General Public License for more details.
18 michael 967
19 michael 913 You should have received a copy of the GNU General Public License
20 michael 967 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21 michael 913
22     /* As a special exception, you may create a larger work that contains
23     part or all of the Bison parser skeleton and distribute that work
24     under terms of your choice, so long as that work isn't itself a
25     parser generator using the skeleton or a modified version thereof
26     as a parser skeleton. Alternatively, if you modify or redistribute
27     the parser skeleton itself, you may (at your option) remove this
28     special exception, which will cause the skeleton and the resulting
29     Bison output files to be licensed under the GNU General Public
30     License without this special exception.
31 michael 967
32 michael 913 This special exception was added by the Free Software Foundation in
33     version 2.2 of Bison. */
34    
35     /* C LALR(1) parser skeleton written by Richard Stallman, by
36     simplifying the original so-called "semantic" parser. */
37    
38     /* All symbols defined below should begin with yy or YY, to avoid
39     infringing on user name space. This should be done even for local
40     variables, as they might otherwise be expanded by user macros.
41     There are some unavoidable exceptions within include files to
42     define necessary library symbols; they are noted "INFRINGES ON
43     USER NAME SPACE" below. */
44    
45     /* Identify Bison output. */
46     #define YYBISON 1
47    
48     /* Bison version. */
49 michael 967 #define YYBISON_VERSION "2.4.1"
50 michael 913
51     /* Skeleton name. */
52     #define YYSKELETON_NAME "yacc.c"
53    
54     /* Pure parsers. */
55     #define YYPURE 0
56    
57 michael 967 /* Push parsers. */
58     #define YYPUSH 0
59    
60     /* Pull parsers. */
61     #define YYPULL 1
62    
63 michael 913 /* Using locations. */
64     #define YYLSP_NEEDED 0
65    
66    
67    
68 michael 967 /* Copy the first part of user declarations. */
69    
70     /* Line 189 of yacc.c */
71     #line 25 "ircd_parser.y"
72    
73    
74     #define YY_NO_UNPUT
75     #include <sys/types.h>
76     #include <string.h>
77    
78 michael 1009 #include "config.h"
79 michael 967 #include "stdinc.h"
80     #include "ircd.h"
81     #include "list.h"
82     #include "s_conf.h"
83     #include "event.h"
84     #include "s_log.h"
85     #include "client.h" /* for UMODE_ALL only */
86     #include "irc_string.h"
87     #include "irc_getaddrinfo.h"
88     #include "sprintf_irc.h"
89     #include "memory.h"
90     #include "modules.h"
91     #include "s_serv.h"
92     #include "hostmask.h"
93     #include "send.h"
94     #include "listener.h"
95     #include "resv.h"
96     #include "numeric.h"
97     #include "s_user.h"
98    
99     #ifdef HAVE_LIBCRYPTO
100     #include <openssl/rsa.h>
101     #include <openssl/bio.h>
102     #include <openssl/pem.h>
103     #endif
104    
105     static char *class_name = NULL;
106     static struct ConfItem *yy_conf = NULL;
107     static struct AccessItem *yy_aconf = NULL;
108     static struct MatchItem *yy_match_item = NULL;
109     static struct ClassItem *yy_class = NULL;
110     static char *yy_class_name = NULL;
111    
112     static dlink_list col_conf_list = { NULL, NULL, 0 };
113     static dlink_list hub_conf_list = { NULL, NULL, 0 };
114     static dlink_list leaf_conf_list = { NULL, NULL, 0 };
115     static unsigned int listener_flags = 0;
116     static unsigned int regex_ban = 0;
117     static char userbuf[IRCD_BUFSIZE];
118     static char hostbuf[IRCD_BUFSIZE];
119     static char reasonbuf[REASONLEN + 1];
120     static char gecos_name[REALLEN * 4];
121    
122     static char *resv_reason = NULL;
123     static char *listener_address = NULL;
124     static int not_atom = 0;
125    
126     struct CollectItem
127     {
128     dlink_node node;
129     char *name;
130     char *user;
131     char *host;
132     char *passwd;
133     int port;
134     int flags;
135     #ifdef HAVE_LIBCRYPTO
136     char *rsa_public_key_file;
137     RSA *rsa_public_key;
138     #endif
139     };
140    
141     static void
142     free_collect_item(struct CollectItem *item)
143     {
144     MyFree(item->name);
145     MyFree(item->user);
146     MyFree(item->host);
147     MyFree(item->passwd);
148     #ifdef HAVE_LIBCRYPTO
149     MyFree(item->rsa_public_key_file);
150     #endif
151     MyFree(item);
152     }
153    
154     static void
155     unhook_hub_leaf_confs(void)
156     {
157     dlink_node *ptr;
158     dlink_node *next_ptr;
159     struct CollectItem *yy_hconf;
160     struct CollectItem *yy_lconf;
161    
162     DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
163     {
164     yy_hconf = ptr->data;
165     dlinkDelete(&yy_hconf->node, &hub_conf_list);
166     free_collect_item(yy_hconf);
167     }
168    
169     DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
170     {
171     yy_lconf = ptr->data;
172     dlinkDelete(&yy_lconf->node, &leaf_conf_list);
173     free_collect_item(yy_lconf);
174     }
175     }
176    
177    
178    
179     /* Line 189 of yacc.c */
180 michael 1011 #line 181 "ircd_parser.c"
181 michael 967
182     /* Enabling traces. */
183     #ifndef YYDEBUG
184     # define YYDEBUG 0
185     #endif
186    
187     /* Enabling verbose error messages. */
188     #ifdef YYERROR_VERBOSE
189     # undef YYERROR_VERBOSE
190     # define YYERROR_VERBOSE 1
191     #else
192     # define YYERROR_VERBOSE 0
193     #endif
194    
195     /* Enabling the token table. */
196     #ifndef YYTOKEN_TABLE
197     # define YYTOKEN_TABLE 0
198     #endif
199    
200    
201 michael 913 /* Tokens. */
202     #ifndef YYTOKENTYPE
203     # define YYTOKENTYPE
204     /* Put the tokens into the symbol table, so that GDB and other debuggers
205     know about them. */
206     enum yytokentype {
207     ACCEPT_PASSWORD = 258,
208     ACTION = 259,
209     ADMIN = 260,
210     AFTYPE = 261,
211     T_ALLOW = 262,
212     ANTI_NICK_FLOOD = 263,
213     ANTI_SPAM_EXIT_MESSAGE_TIME = 264,
214     AUTOCONN = 265,
215     T_BLOCK = 266,
216     BURST_AWAY = 267,
217     BURST_TOPICWHO = 268,
218     BYTES = 269,
219     KBYTES = 270,
220     MBYTES = 271,
221     GBYTES = 272,
222     TBYTES = 273,
223     CALLER_ID_WAIT = 274,
224     CAN_FLOOD = 275,
225     CAN_IDLE = 276,
226     CHANNEL = 277,
227     CIDR_BITLEN_IPV4 = 278,
228     CIDR_BITLEN_IPV6 = 279,
229     CIPHER_PREFERENCE = 280,
230     CLASS = 281,
231     COMPRESSED = 282,
232     COMPRESSION_LEVEL = 283,
233     CONNECT = 284,
234     CONNECTFREQ = 285,
235     CRYPTLINK = 286,
236     DEFAULT_CIPHER_PREFERENCE = 287,
237     DEFAULT_FLOODCOUNT = 288,
238     DEFAULT_SPLIT_SERVER_COUNT = 289,
239     DEFAULT_SPLIT_USER_COUNT = 290,
240     DENY = 291,
241     DESCRIPTION = 292,
242     DIE = 293,
243     DISABLE_AUTH = 294,
244     DISABLE_FAKE_CHANNELS = 295,
245     DISABLE_HIDDEN = 296,
246     DISABLE_LOCAL_CHANNELS = 297,
247     DISABLE_REMOTE_COMMANDS = 298,
248     DOT_IN_IP6_ADDR = 299,
249     DOTS_IN_IDENT = 300,
250     DURATION = 301,
251     EGDPOOL_PATH = 302,
252     EMAIL = 303,
253     ENABLE = 304,
254     ENCRYPTED = 305,
255     EXCEED_LIMIT = 306,
256     EXEMPT = 307,
257     FAILED_OPER_NOTICE = 308,
258     FAKENAME = 309,
259     IRCD_FLAGS = 310,
260     FLATTEN_LINKS = 311,
261     FFAILED_OPERLOG = 312,
262     FKILLLOG = 313,
263     FKLINELOG = 314,
264     FGLINELOG = 315,
265     FIOERRLOG = 316,
266     FOPERLOG = 317,
267     FOPERSPYLOG = 318,
268     FUSERLOG = 319,
269     GECOS = 320,
270     GENERAL = 321,
271     GLINE = 322,
272     GLINES = 323,
273     GLINE_EXEMPT = 324,
274     GLINE_LOG = 325,
275     GLINE_TIME = 326,
276     GLINE_MIN_CIDR = 327,
277     GLINE_MIN_CIDR6 = 328,
278     GLOBAL_KILL = 329,
279     IRCD_AUTH = 330,
280     NEED_IDENT = 331,
281     HAVENT_READ_CONF = 332,
282     HIDDEN = 333,
283     HIDDEN_ADMIN = 334,
284     HIDDEN_NAME = 335,
285     HIDDEN_OPER = 336,
286     HIDE_SERVER_IPS = 337,
287     HIDE_SERVERS = 338,
288     HIDE_SPOOF_IPS = 339,
289     HOST = 340,
290     HUB = 341,
291     HUB_MASK = 342,
292     IDLETIME = 343,
293     IGNORE_BOGUS_TS = 344,
294     INVISIBLE_ON_CONNECT = 345,
295     IP = 346,
296     KILL = 347,
297     KILL_CHASE_TIME_LIMIT = 348,
298     KLINE = 349,
299     KLINE_EXEMPT = 350,
300     KLINE_REASON = 351,
301     KLINE_WITH_REASON = 352,
302     KNOCK_DELAY = 353,
303     KNOCK_DELAY_CHANNEL = 354,
304     LEAF_MASK = 355,
305     LINKS_DELAY = 356,
306     LISTEN = 357,
307     T_LOG = 358,
308     LOGGING = 359,
309     LOG_LEVEL = 360,
310     MAX_ACCEPT = 361,
311     MAX_BANS = 362,
312     MAX_CHANS_PER_USER = 363,
313     MAX_GLOBAL = 364,
314     MAX_IDENT = 365,
315     MAX_LOCAL = 366,
316     MAX_NICK_CHANGES = 367,
317     MAX_NICK_TIME = 368,
318     MAX_NUMBER = 369,
319     MAX_TARGETS = 370,
320     MAX_WATCH = 371,
321     MESSAGE_LOCALE = 372,
322     MIN_NONWILDCARD = 373,
323     MIN_NONWILDCARD_SIMPLE = 374,
324     MODULE = 375,
325     MODULES = 376,
326     NAME = 377,
327     NEED_PASSWORD = 378,
328     NETWORK_DESC = 379,
329     NETWORK_NAME = 380,
330     NICK = 381,
331     NICK_CHANGES = 382,
332     NO_CREATE_ON_SPLIT = 383,
333     NO_JOIN_ON_SPLIT = 384,
334     NO_OPER_FLOOD = 385,
335     NO_TILDE = 386,
336     NOT = 387,
337     NUMBER = 388,
338     NUMBER_PER_IDENT = 389,
339     NUMBER_PER_CIDR = 390,
340     NUMBER_PER_IP = 391,
341     NUMBER_PER_IP_GLOBAL = 392,
342     OPERATOR = 393,
343     OPERS_BYPASS_CALLERID = 394,
344     OPER_LOG = 395,
345     OPER_ONLY_UMODES = 396,
346     OPER_PASS_RESV = 397,
347     OPER_SPY_T = 398,
348     OPER_UMODES = 399,
349     JOIN_FLOOD_COUNT = 400,
350     JOIN_FLOOD_TIME = 401,
351     PACE_WAIT = 402,
352     PACE_WAIT_SIMPLE = 403,
353     PASSWORD = 404,
354     PATH = 405,
355     PING_COOKIE = 406,
356     PING_TIME = 407,
357     PING_WARNING = 408,
358     PORT = 409,
359     QSTRING = 410,
360     QUIET_ON_BAN = 411,
361     REASON = 412,
362     REDIRPORT = 413,
363     REDIRSERV = 414,
364     REGEX_T = 415,
365     REHASH = 416,
366     TREJECT_HOLD_TIME = 417,
367     REMOTE = 418,
368     REMOTEBAN = 419,
369     RESTRICT_CHANNELS = 420,
370     RESTRICTED = 421,
371     RSA_PRIVATE_KEY_FILE = 422,
372     RSA_PUBLIC_KEY_FILE = 423,
373     SSL_CERTIFICATE_FILE = 424,
374 michael 967 T_SSL_CONNECTION_METHOD = 425,
375     T_SSLV3 = 426,
376     T_TLSV1 = 427,
377     RESV = 428,
378     RESV_EXEMPT = 429,
379     SECONDS = 430,
380     MINUTES = 431,
381     HOURS = 432,
382     DAYS = 433,
383     WEEKS = 434,
384     SENDQ = 435,
385     SEND_PASSWORD = 436,
386     SERVERHIDE = 437,
387     SERVERINFO = 438,
388     SERVLINK_PATH = 439,
389     IRCD_SID = 440,
390     TKLINE_EXPIRE_NOTICES = 441,
391     T_SHARED = 442,
392     T_CLUSTER = 443,
393     TYPE = 444,
394     SHORT_MOTD = 445,
395     SILENT = 446,
396     SPOOF = 447,
397     SPOOF_NOTICE = 448,
398     STATS_E_DISABLED = 449,
399     STATS_I_OPER_ONLY = 450,
400     STATS_K_OPER_ONLY = 451,
401     STATS_O_OPER_ONLY = 452,
402     STATS_P_OPER_ONLY = 453,
403     TBOOL = 454,
404     TMASKED = 455,
405     T_REJECT = 456,
406     TS_MAX_DELTA = 457,
407     TS_WARN_DELTA = 458,
408     TWODOTS = 459,
409     T_ALL = 460,
410     T_BOTS = 461,
411     T_SOFTCALLERID = 462,
412     T_CALLERID = 463,
413     T_CCONN = 464,
414     T_CCONN_FULL = 465,
415     T_CLIENT_FLOOD = 466,
416     T_DEAF = 467,
417     T_DEBUG = 468,
418     T_DRONE = 469,
419     T_EXTERNAL = 470,
420     T_FULL = 471,
421     T_INVISIBLE = 472,
422     T_IPV4 = 473,
423     T_IPV6 = 474,
424     T_LOCOPS = 475,
425     T_LOGPATH = 476,
426     T_L_CRIT = 477,
427     T_L_DEBUG = 478,
428     T_L_ERROR = 479,
429     T_L_INFO = 480,
430     T_L_NOTICE = 481,
431     T_L_TRACE = 482,
432     T_L_WARN = 483,
433     T_MAX_CLIENTS = 484,
434     T_NCHANGE = 485,
435     T_OPERWALL = 486,
436     T_REJ = 487,
437     T_SERVER = 488,
438     T_SERVNOTICE = 489,
439     T_SKILL = 490,
440     T_SPY = 491,
441     T_SSL = 492,
442     T_UMODES = 493,
443     T_UNAUTH = 494,
444     T_UNRESV = 495,
445     T_UNXLINE = 496,
446     T_WALLOP = 497,
447     THROTTLE_TIME = 498,
448     TOPICBURST = 499,
449     TRUE_NO_OPER_FLOOD = 500,
450     TKLINE = 501,
451     TXLINE = 502,
452     TRESV = 503,
453     UNKLINE = 504,
454     USER = 505,
455     USE_EGD = 506,
456     USE_EXCEPT = 507,
457     USE_INVEX = 508,
458     USE_KNOCK = 509,
459     USE_LOGGING = 510,
460     USE_WHOIS_ACTUALLY = 511,
461     VHOST = 512,
462     VHOST6 = 513,
463     XLINE = 514,
464     WARN = 515,
465     WARN_NO_NLINE = 516
466 michael 913 };
467     #endif
468     /* Tokens. */
469     #define ACCEPT_PASSWORD 258
470     #define ACTION 259
471     #define ADMIN 260
472     #define AFTYPE 261
473     #define T_ALLOW 262
474     #define ANTI_NICK_FLOOD 263
475     #define ANTI_SPAM_EXIT_MESSAGE_TIME 264
476     #define AUTOCONN 265
477     #define T_BLOCK 266
478     #define BURST_AWAY 267
479     #define BURST_TOPICWHO 268
480     #define BYTES 269
481     #define KBYTES 270
482     #define MBYTES 271
483     #define GBYTES 272
484     #define TBYTES 273
485     #define CALLER_ID_WAIT 274
486     #define CAN_FLOOD 275
487     #define CAN_IDLE 276
488     #define CHANNEL 277
489     #define CIDR_BITLEN_IPV4 278
490     #define CIDR_BITLEN_IPV6 279
491     #define CIPHER_PREFERENCE 280
492     #define CLASS 281
493     #define COMPRESSED 282
494     #define COMPRESSION_LEVEL 283
495     #define CONNECT 284
496     #define CONNECTFREQ 285
497     #define CRYPTLINK 286
498     #define DEFAULT_CIPHER_PREFERENCE 287
499     #define DEFAULT_FLOODCOUNT 288
500     #define DEFAULT_SPLIT_SERVER_COUNT 289
501     #define DEFAULT_SPLIT_USER_COUNT 290
502     #define DENY 291
503     #define DESCRIPTION 292
504     #define DIE 293
505     #define DISABLE_AUTH 294
506     #define DISABLE_FAKE_CHANNELS 295
507     #define DISABLE_HIDDEN 296
508     #define DISABLE_LOCAL_CHANNELS 297
509     #define DISABLE_REMOTE_COMMANDS 298
510     #define DOT_IN_IP6_ADDR 299
511     #define DOTS_IN_IDENT 300
512     #define DURATION 301
513     #define EGDPOOL_PATH 302
514     #define EMAIL 303
515     #define ENABLE 304
516     #define ENCRYPTED 305
517     #define EXCEED_LIMIT 306
518     #define EXEMPT 307
519     #define FAILED_OPER_NOTICE 308
520     #define FAKENAME 309
521     #define IRCD_FLAGS 310
522     #define FLATTEN_LINKS 311
523     #define FFAILED_OPERLOG 312
524     #define FKILLLOG 313
525     #define FKLINELOG 314
526     #define FGLINELOG 315
527     #define FIOERRLOG 316
528     #define FOPERLOG 317
529     #define FOPERSPYLOG 318
530     #define FUSERLOG 319
531     #define GECOS 320
532     #define GENERAL 321
533     #define GLINE 322
534     #define GLINES 323
535     #define GLINE_EXEMPT 324
536     #define GLINE_LOG 325
537     #define GLINE_TIME 326
538     #define GLINE_MIN_CIDR 327
539     #define GLINE_MIN_CIDR6 328
540     #define GLOBAL_KILL 329
541     #define IRCD_AUTH 330
542     #define NEED_IDENT 331
543     #define HAVENT_READ_CONF 332
544     #define HIDDEN 333
545     #define HIDDEN_ADMIN 334
546     #define HIDDEN_NAME 335
547     #define HIDDEN_OPER 336
548     #define HIDE_SERVER_IPS 337
549     #define HIDE_SERVERS 338
550     #define HIDE_SPOOF_IPS 339
551     #define HOST 340
552     #define HUB 341
553     #define HUB_MASK 342
554     #define IDLETIME 343
555     #define IGNORE_BOGUS_TS 344
556     #define INVISIBLE_ON_CONNECT 345
557     #define IP 346
558     #define KILL 347
559     #define KILL_CHASE_TIME_LIMIT 348
560     #define KLINE 349
561     #define KLINE_EXEMPT 350
562     #define KLINE_REASON 351
563     #define KLINE_WITH_REASON 352
564     #define KNOCK_DELAY 353
565     #define KNOCK_DELAY_CHANNEL 354
566     #define LEAF_MASK 355
567     #define LINKS_DELAY 356
568     #define LISTEN 357
569     #define T_LOG 358
570     #define LOGGING 359
571     #define LOG_LEVEL 360
572     #define MAX_ACCEPT 361
573     #define MAX_BANS 362
574     #define MAX_CHANS_PER_USER 363
575     #define MAX_GLOBAL 364
576     #define MAX_IDENT 365
577     #define MAX_LOCAL 366
578     #define MAX_NICK_CHANGES 367
579     #define MAX_NICK_TIME 368
580     #define MAX_NUMBER 369
581     #define MAX_TARGETS 370
582     #define MAX_WATCH 371
583     #define MESSAGE_LOCALE 372
584     #define MIN_NONWILDCARD 373
585     #define MIN_NONWILDCARD_SIMPLE 374
586     #define MODULE 375
587     #define MODULES 376
588     #define NAME 377
589     #define NEED_PASSWORD 378
590     #define NETWORK_DESC 379
591     #define NETWORK_NAME 380
592     #define NICK 381
593     #define NICK_CHANGES 382
594     #define NO_CREATE_ON_SPLIT 383
595     #define NO_JOIN_ON_SPLIT 384
596     #define NO_OPER_FLOOD 385
597     #define NO_TILDE 386
598     #define NOT 387
599     #define NUMBER 388
600     #define NUMBER_PER_IDENT 389
601     #define NUMBER_PER_CIDR 390
602     #define NUMBER_PER_IP 391
603     #define NUMBER_PER_IP_GLOBAL 392
604     #define OPERATOR 393
605     #define OPERS_BYPASS_CALLERID 394
606     #define OPER_LOG 395
607     #define OPER_ONLY_UMODES 396
608     #define OPER_PASS_RESV 397
609     #define OPER_SPY_T 398
610     #define OPER_UMODES 399
611     #define JOIN_FLOOD_COUNT 400
612     #define JOIN_FLOOD_TIME 401
613     #define PACE_WAIT 402
614     #define PACE_WAIT_SIMPLE 403
615     #define PASSWORD 404
616     #define PATH 405
617     #define PING_COOKIE 406
618     #define PING_TIME 407
619     #define PING_WARNING 408
620     #define PORT 409
621     #define QSTRING 410
622     #define QUIET_ON_BAN 411
623     #define REASON 412
624     #define REDIRPORT 413
625     #define REDIRSERV 414
626     #define REGEX_T 415
627     #define REHASH 416
628     #define TREJECT_HOLD_TIME 417
629     #define REMOTE 418
630     #define REMOTEBAN 419
631     #define RESTRICT_CHANNELS 420
632     #define RESTRICTED 421
633     #define RSA_PRIVATE_KEY_FILE 422
634     #define RSA_PUBLIC_KEY_FILE 423
635     #define SSL_CERTIFICATE_FILE 424
636 michael 967 #define T_SSL_CONNECTION_METHOD 425
637     #define T_SSLV3 426
638     #define T_TLSV1 427
639     #define RESV 428
640     #define RESV_EXEMPT 429
641     #define SECONDS 430
642     #define MINUTES 431
643     #define HOURS 432
644     #define DAYS 433
645     #define WEEKS 434
646     #define SENDQ 435
647     #define SEND_PASSWORD 436
648     #define SERVERHIDE 437
649     #define SERVERINFO 438
650     #define SERVLINK_PATH 439
651     #define IRCD_SID 440
652     #define TKLINE_EXPIRE_NOTICES 441
653     #define T_SHARED 442
654     #define T_CLUSTER 443
655     #define TYPE 444
656     #define SHORT_MOTD 445
657     #define SILENT 446
658     #define SPOOF 447
659     #define SPOOF_NOTICE 448
660     #define STATS_E_DISABLED 449
661     #define STATS_I_OPER_ONLY 450
662     #define STATS_K_OPER_ONLY 451
663     #define STATS_O_OPER_ONLY 452
664     #define STATS_P_OPER_ONLY 453
665     #define TBOOL 454
666     #define TMASKED 455
667     #define T_REJECT 456
668     #define TS_MAX_DELTA 457
669     #define TS_WARN_DELTA 458
670     #define TWODOTS 459
671     #define T_ALL 460
672     #define T_BOTS 461
673     #define T_SOFTCALLERID 462
674     #define T_CALLERID 463
675     #define T_CCONN 464
676     #define T_CCONN_FULL 465
677     #define T_CLIENT_FLOOD 466
678     #define T_DEAF 467
679     #define T_DEBUG 468
680     #define T_DRONE 469
681     #define T_EXTERNAL 470
682     #define T_FULL 471
683     #define T_INVISIBLE 472
684     #define T_IPV4 473
685     #define T_IPV6 474
686     #define T_LOCOPS 475
687     #define T_LOGPATH 476
688     #define T_L_CRIT 477
689     #define T_L_DEBUG 478
690     #define T_L_ERROR 479
691     #define T_L_INFO 480
692     #define T_L_NOTICE 481
693     #define T_L_TRACE 482
694     #define T_L_WARN 483
695     #define T_MAX_CLIENTS 484
696     #define T_NCHANGE 485
697     #define T_OPERWALL 486
698     #define T_REJ 487
699     #define T_SERVER 488
700     #define T_SERVNOTICE 489
701     #define T_SKILL 490
702     #define T_SPY 491
703     #define T_SSL 492
704     #define T_UMODES 493
705     #define T_UNAUTH 494
706     #define T_UNRESV 495
707     #define T_UNXLINE 496
708     #define T_WALLOP 497
709     #define THROTTLE_TIME 498
710     #define TOPICBURST 499
711     #define TRUE_NO_OPER_FLOOD 500
712     #define TKLINE 501
713     #define TXLINE 502
714     #define TRESV 503
715     #define UNKLINE 504
716     #define USER 505
717     #define USE_EGD 506
718     #define USE_EXCEPT 507
719     #define USE_INVEX 508
720     #define USE_KNOCK 509
721     #define USE_LOGGING 510
722     #define USE_WHOIS_ACTUALLY 511
723     #define VHOST 512
724     #define VHOST6 513
725     #define XLINE 514
726     #define WARN 515
727     #define WARN_NO_NLINE 516
728 michael 913
729    
730    
731    
732 michael 967 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
733     typedef union YYSTYPE
734 michael 913 {
735    
736 michael 967 /* Line 214 of yacc.c */
737 michael 1011 #line 132 "ircd_parser.y"
738 michael 913
739 michael 967 int number;
740     char *string;
741 michael 913
742    
743    
744 michael 967 /* Line 214 of yacc.c */
745 michael 1011 #line 746 "ircd_parser.c"
746 michael 967 } YYSTYPE;
747     # define YYSTYPE_IS_TRIVIAL 1
748 michael 913 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
749     # define YYSTYPE_IS_DECLARED 1
750     #endif
751    
752    
753     /* Copy the second part of user declarations. */
754    
755    
756 michael 967 /* Line 264 of yacc.c */
757 michael 1011 #line 758 "ircd_parser.c"
758 michael 913
759     #ifdef short
760     # undef short
761     #endif
762    
763     #ifdef YYTYPE_UINT8
764     typedef YYTYPE_UINT8 yytype_uint8;
765     #else
766     typedef unsigned char yytype_uint8;
767     #endif
768    
769     #ifdef YYTYPE_INT8
770     typedef YYTYPE_INT8 yytype_int8;
771     #elif (defined __STDC__ || defined __C99__FUNC__ \
772     || defined __cplusplus || defined _MSC_VER)
773     typedef signed char yytype_int8;
774     #else
775     typedef short int yytype_int8;
776     #endif
777    
778     #ifdef YYTYPE_UINT16
779     typedef YYTYPE_UINT16 yytype_uint16;
780     #else
781     typedef unsigned short int yytype_uint16;
782     #endif
783    
784     #ifdef YYTYPE_INT16
785     typedef YYTYPE_INT16 yytype_int16;
786     #else
787     typedef short int yytype_int16;
788     #endif
789    
790     #ifndef YYSIZE_T
791     # ifdef __SIZE_TYPE__
792     # define YYSIZE_T __SIZE_TYPE__
793     # elif defined size_t
794     # define YYSIZE_T size_t
795     # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
796     || defined __cplusplus || defined _MSC_VER)
797     # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
798     # define YYSIZE_T size_t
799     # else
800     # define YYSIZE_T unsigned int
801     # endif
802     #endif
803    
804     #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
805    
806     #ifndef YY_
807     # if YYENABLE_NLS
808     # if ENABLE_NLS
809     # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
810     # define YY_(msgid) dgettext ("bison-runtime", msgid)
811     # endif
812     # endif
813     # ifndef YY_
814     # define YY_(msgid) msgid
815     # endif
816     #endif
817    
818     /* Suppress unused-variable warnings by "using" E. */
819     #if ! defined lint || defined __GNUC__
820     # define YYUSE(e) ((void) (e))
821     #else
822     # define YYUSE(e) /* empty */
823     #endif
824    
825     /* Identity function, used to suppress warnings about constant conditions. */
826     #ifndef lint
827     # define YYID(n) (n)
828     #else
829     #if (defined __STDC__ || defined __C99__FUNC__ \
830     || defined __cplusplus || defined _MSC_VER)
831     static int
832 michael 967 YYID (int yyi)
833 michael 913 #else
834     static int
835 michael 967 YYID (yyi)
836     int yyi;
837 michael 913 #endif
838     {
839 michael 967 return yyi;
840 michael 913 }
841     #endif
842    
843     #if ! defined yyoverflow || YYERROR_VERBOSE
844    
845     /* The parser invokes alloca or malloc; define the necessary symbols. */
846    
847     # ifdef YYSTACK_USE_ALLOCA
848     # if YYSTACK_USE_ALLOCA
849     # ifdef __GNUC__
850     # define YYSTACK_ALLOC __builtin_alloca
851     # elif defined __BUILTIN_VA_ARG_INCR
852     # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
853     # elif defined _AIX
854     # define YYSTACK_ALLOC __alloca
855     # elif defined _MSC_VER
856     # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
857     # define alloca _alloca
858     # else
859     # define YYSTACK_ALLOC alloca
860     # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
861     || defined __cplusplus || defined _MSC_VER)
862     # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
863     # ifndef _STDLIB_H
864     # define _STDLIB_H 1
865     # endif
866     # endif
867     # endif
868     # endif
869     # endif
870    
871     # ifdef YYSTACK_ALLOC
872     /* Pacify GCC's `empty if-body' warning. */
873     # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
874     # ifndef YYSTACK_ALLOC_MAXIMUM
875     /* The OS might guarantee only one guard page at the bottom of the stack,
876     and a page size can be as small as 4096 bytes. So we cannot safely
877     invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
878     to allow for a few compiler-allocated temporary stack slots. */
879     # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
880     # endif
881     # else
882     # define YYSTACK_ALLOC YYMALLOC
883     # define YYSTACK_FREE YYFREE
884     # ifndef YYSTACK_ALLOC_MAXIMUM
885     # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
886     # endif
887     # if (defined __cplusplus && ! defined _STDLIB_H \
888     && ! ((defined YYMALLOC || defined malloc) \
889     && (defined YYFREE || defined free)))
890     # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
891     # ifndef _STDLIB_H
892     # define _STDLIB_H 1
893     # endif
894     # endif
895     # ifndef YYMALLOC
896     # define YYMALLOC malloc
897     # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
898     || defined __cplusplus || defined _MSC_VER)
899     void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
900     # endif
901     # endif
902     # ifndef YYFREE
903     # define YYFREE free
904     # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
905     || defined __cplusplus || defined _MSC_VER)
906     void free (void *); /* INFRINGES ON USER NAME SPACE */
907     # endif
908     # endif
909     # endif
910     #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
911    
912    
913     #if (! defined yyoverflow \
914     && (! defined __cplusplus \
915     || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
916    
917     /* A type that is properly aligned for any stack member. */
918     union yyalloc
919     {
920 michael 967 yytype_int16 yyss_alloc;
921     YYSTYPE yyvs_alloc;
922     };
923 michael 913
924     /* The size of the maximum gap between one aligned stack and the next. */
925     # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
926    
927     /* The size of an array large to enough to hold all stacks, each with
928     N elements. */
929     # define YYSTACK_BYTES(N) \
930     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
931     + YYSTACK_GAP_MAXIMUM)
932    
933     /* Copy COUNT objects from FROM to TO. The source and destination do
934     not overlap. */
935     # ifndef YYCOPY
936     # if defined __GNUC__ && 1 < __GNUC__
937     # define YYCOPY(To, From, Count) \
938     __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
939     # else
940     # define YYCOPY(To, From, Count) \
941     do \
942     { \
943     YYSIZE_T yyi; \
944     for (yyi = 0; yyi < (Count); yyi++) \
945     (To)[yyi] = (From)[yyi]; \
946     } \
947     while (YYID (0))
948     # endif
949     # endif
950    
951     /* Relocate STACK from its old location to the new one. The
952     local variables YYSIZE and YYSTACKSIZE give the old and new number of
953     elements in the stack, and YYPTR gives the new location of the
954     stack. Advance YYPTR to a properly aligned location for the next
955     stack. */
956 michael 967 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
957 michael 913 do \
958     { \
959     YYSIZE_T yynewbytes; \
960 michael 967 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
961     Stack = &yyptr->Stack_alloc; \
962 michael 913 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
963     yyptr += yynewbytes / sizeof (*yyptr); \
964     } \
965     while (YYID (0))
966    
967     #endif
968    
969     /* YYFINAL -- State number of the termination state. */
970     #define YYFINAL 2
971     /* YYLAST -- Last index in YYTABLE. */
972 michael 967 #define YYLAST 1413
973 michael 913
974     /* YYNTOKENS -- Number of terminals. */
975 michael 967 #define YYNTOKENS 267
976 michael 913 /* YYNNTS -- Number of nonterminals. */
977 michael 967 #define YYNNTS 346
978 michael 913 /* YYNRULES -- Number of rules. */
979 michael 967 #define YYNRULES 743
980 michael 913 /* YYNRULES -- Number of states. */
981 michael 967 #define YYNSTATES 1494
982 michael 913
983     /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
984     #define YYUNDEFTOK 2
985 michael 967 #define YYMAXUTOK 516
986 michael 913
987     #define YYTRANSLATE(YYX) \
988     ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
989    
990     /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
991     static const yytype_uint16 yytranslate[] =
992     {
993     0, 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 michael 967 2, 2, 2, 2, 266, 2, 2, 2, 2, 2,
998     2, 2, 2, 2, 2, 2, 2, 2, 2, 262,
999     2, 265, 2, 2, 2, 2, 2, 2, 2, 2,
1000 michael 913 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1001     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1002     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1003     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1004     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1005 michael 967 2, 2, 2, 264, 2, 263, 2, 2, 2, 2,
1006 michael 913 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1007     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1008     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1009     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1010     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1011     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1012     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1013     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1014     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1015     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1016     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1017     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1018     2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1019     5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1020     15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1021     25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1022     35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1023     45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1024     55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1025     65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1026     75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1027     85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1028     95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1029     105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1030     115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1031     125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1032     135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1033     145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1034     155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1035     165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1036     175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1037     185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1038     195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1039     205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1040     215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1041     225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
1042     235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
1043     245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1044 michael 967 255, 256, 257, 258, 259, 260, 261
1045 michael 913 };
1046    
1047     #if YYDEBUG
1048     /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
1049     YYRHS. */
1050     static const yytype_uint16 yyprhs[] =
1051     {
1052     0, 0, 3, 4, 7, 9, 11, 13, 15, 17,
1053     19, 21, 23, 25, 27, 29, 31, 33, 35, 37,
1054     39, 41, 43, 45, 47, 50, 53, 54, 56, 59,
1055     63, 67, 71, 75, 79, 80, 82, 85, 89, 93,
1056     97, 103, 106, 108, 110, 112, 115, 120, 125, 131,
1057     134, 136, 138, 140, 142, 144, 146, 148, 150, 152,
1058 michael 967 154, 156, 158, 160, 163, 164, 170, 174, 176, 178,
1059     180, 185, 190, 195, 200, 205, 210, 215, 220, 225,
1060     230, 235, 241, 244, 246, 248, 250, 252, 255, 260,
1061     265, 270, 276, 279, 281, 283, 285, 287, 289, 291,
1062     293, 295, 297, 299, 301, 303, 305, 308, 313, 318,
1063     323, 328, 333, 338, 343, 348, 353, 358, 363, 368,
1064     373, 378, 383, 388, 393, 398, 399, 407, 408, 410,
1065     413, 415, 417, 419, 421, 423, 425, 427, 429, 431,
1066     433, 435, 437, 439, 441, 443, 445, 447, 449, 451,
1067     453, 455, 457, 459, 462, 467, 469, 474, 479, 484,
1068     489, 494, 495, 501, 505, 507, 509, 511, 513, 515,
1069     517, 519, 521, 523, 525, 527, 529, 531, 533, 535,
1070     537, 539, 541, 543, 545, 550, 555, 560, 565, 570,
1071     575, 580, 585, 590, 595, 600, 605, 610, 615, 616,
1072     622, 626, 628, 629, 633, 634, 637, 639, 641, 643,
1073     645, 647, 649, 651, 653, 655, 657, 659, 661, 663,
1074     665, 667, 669, 670, 678, 679, 681, 684, 686, 688,
1075     690, 692, 694, 696, 698, 700, 702, 704, 706, 708,
1076     710, 712, 715, 720, 722, 727, 732, 737, 742, 747,
1077     752, 757, 762, 767, 772, 777, 782, 783, 790, 791,
1078     797, 801, 803, 805, 807, 809, 812, 814, 816, 818,
1079     820, 822, 825, 826, 832, 836, 838, 840, 844, 849,
1080     854, 855, 862, 865, 867, 869, 871, 873, 875, 877,
1081     879, 881, 883, 885, 887, 889, 891, 893, 895, 897,
1082     899, 902, 907, 912, 917, 922, 927, 928, 934, 938,
1083     940, 941, 945, 946, 949, 951, 953, 955, 957, 959,
1084     961, 963, 965, 967, 969, 974, 979, 984, 989, 994,
1085     999, 1004, 1009, 1014, 1019, 1020, 1027, 1030, 1032, 1034,
1086     1036, 1038, 1041, 1046, 1051, 1056, 1057, 1064, 1067, 1069,
1087     1071, 1073, 1075, 1078, 1083, 1088, 1089, 1095, 1099, 1101,
1088     1103, 1105, 1107, 1109, 1111, 1113, 1115, 1117, 1119, 1121,
1089     1123, 1124, 1131, 1134, 1136, 1138, 1140, 1143, 1148, 1149,
1090     1155, 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175,
1091     1177, 1179, 1181, 1183, 1184, 1192, 1193, 1195, 1198, 1200,
1092     1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216, 1218, 1220,
1093     1222, 1224, 1226, 1228, 1230, 1232, 1234, 1236, 1238, 1241,
1094     1246, 1248, 1253, 1258, 1263, 1268, 1273, 1278, 1283, 1288,
1095     1289, 1295, 1299, 1301, 1302, 1306, 1307, 1310, 1312, 1314,
1096     1316, 1318, 1320, 1325, 1330, 1335, 1340, 1345, 1350, 1355,
1097     1360, 1365, 1370, 1371, 1378, 1379, 1385, 1389, 1391, 1393,
1098     1396, 1398, 1400, 1402, 1404, 1406, 1411, 1416, 1417, 1424,
1099     1427, 1429, 1431, 1433, 1435, 1440, 1445, 1451, 1454, 1456,
1100     1458, 1460, 1465, 1466, 1473, 1474, 1480, 1484, 1486, 1488,
1101     1491, 1493, 1495, 1497, 1499, 1501, 1506, 1511, 1517, 1520,
1102     1522, 1524, 1526, 1528, 1530, 1532, 1534, 1536, 1538, 1540,
1103     1542, 1544, 1546, 1548, 1550, 1552, 1554, 1556, 1558, 1560,
1104     1562, 1564, 1566, 1568, 1570, 1572, 1574, 1576, 1578, 1580,
1105     1582, 1584, 1586, 1588, 1590, 1592, 1594, 1596, 1598, 1600,
1106     1602, 1604, 1606, 1608, 1610, 1612, 1614, 1616, 1618, 1620,
1107     1622, 1624, 1626, 1628, 1630, 1632, 1634, 1636, 1641, 1646,
1108     1651, 1656, 1661, 1666, 1671, 1676, 1681, 1686, 1691, 1696,
1109     1701, 1706, 1711, 1716, 1721, 1726, 1731, 1736, 1741, 1746,
1110     1751, 1756, 1761, 1766, 1771, 1776, 1781, 1786, 1791, 1796,
1111     1801, 1806, 1811, 1816, 1821, 1826, 1831, 1836, 1841, 1846,
1112     1851, 1856, 1861, 1866, 1871, 1876, 1881, 1886, 1891, 1892,
1113     1898, 1902, 1904, 1906, 1908, 1910, 1912, 1914, 1916, 1918,
1114     1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938,
1115     1940, 1942, 1943, 1949, 1953, 1955, 1957, 1959, 1961, 1963,
1116     1965, 1967, 1969, 1971, 1973, 1975, 1977, 1979, 1981, 1983,
1117     1985, 1987, 1989, 1991, 1993, 1998, 2003, 2008, 2013, 2018,
1118     2019, 2026, 2029, 2031, 2033, 2035, 2037, 2039, 2041, 2043,
1119     2045, 2050, 2055, 2056, 2062, 2066, 2068, 2070, 2072, 2077,
1120     2082, 2083, 2089, 2093, 2095, 2097, 2099, 2105, 2108, 2110,
1121     2112, 2114, 2116, 2118, 2120, 2122, 2124, 2126, 2128, 2130,
1122     2132, 2134, 2136, 2138, 2140, 2142, 2144, 2146, 2148, 2153,
1123     2158, 2163, 2168, 2173, 2178, 2183, 2188, 2193, 2198, 2203,
1124     2208, 2213, 2218, 2223, 2228, 2233, 2238, 2244, 2247, 2249,
1125     2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2270, 2275,
1126     2280, 2285, 2290, 2295
1127 michael 913 };
1128    
1129     /* YYRHS -- A `-1'-separated list of the rules' RHS. */
1130     static const yytype_int16 yyrhs[] =
1131     {
1132 michael 967 268, 0, -1, -1, 268, 269, -1, 297, -1, 303,
1133     -1, 318, -1, 582, -1, 355, -1, 374, -1, 388,
1134     -1, 279, -1, 603, -1, 414, -1, 421, -1, 431,
1135     -1, 440, -1, 471, -1, 481, -1, 487, -1, 501,
1136     -1, 566, -1, 491, -1, 274, -1, 1, 262, -1,
1137     1, 263, -1, -1, 271, -1, 133, 270, -1, 133,
1138     175, 270, -1, 133, 176, 270, -1, 133, 177, 270,
1139     -1, 133, 178, 270, -1, 133, 179, 270, -1, -1,
1140     273, -1, 133, 272, -1, 133, 14, 272, -1, 133,
1141     15, 272, -1, 133, 16, 272, -1, 121, 264, 275,
1142     263, 262, -1, 275, 276, -1, 276, -1, 277, -1,
1143     278, -1, 1, 262, -1, 120, 265, 155, 262, -1,
1144     150, 265, 155, 262, -1, 183, 264, 280, 263, 262,
1145     -1, 280, 281, -1, 281, -1, 288, -1, 293, -1,
1146     296, -1, 290, -1, 291, -1, 292, -1, 295, -1,
1147     287, -1, 294, -1, 289, -1, 286, -1, 282, -1,
1148     1, 262, -1, -1, 170, 283, 265, 284, 262, -1,
1149     284, 266, 285, -1, 285, -1, 171, -1, 172, -1,
1150     169, 265, 155, 262, -1, 167, 265, 155, 262, -1,
1151     122, 265, 155, 262, -1, 185, 265, 155, 262, -1,
1152     37, 265, 155, 262, -1, 125, 265, 155, 262, -1,
1153     124, 265, 155, 262, -1, 257, 265, 155, 262, -1,
1154     258, 265, 155, 262, -1, 229, 265, 133, 262, -1,
1155     86, 265, 199, 262, -1, 5, 264, 298, 263, 262,
1156     -1, 298, 299, -1, 299, -1, 300, -1, 302, -1,
1157     301, -1, 1, 262, -1, 122, 265, 155, 262, -1,
1158     48, 265, 155, 262, -1, 37, 265, 155, 262, -1,
1159     104, 264, 304, 263, 262, -1, 304, 305, -1, 305,
1160     -1, 306, -1, 307, -1, 316, -1, 317, -1, 308,
1161     -1, 310, -1, 312, -1, 313, -1, 315, -1, 311,
1162     -1, 314, -1, 309, -1, 1, 262, -1, 221, 265,
1163     155, 262, -1, 140, 265, 155, 262, -1, 64, 265,
1164     155, 262, -1, 57, 265, 155, 262, -1, 62, 265,
1165     155, 262, -1, 63, 265, 155, 262, -1, 60, 265,
1166     155, 262, -1, 59, 265, 155, 262, -1, 61, 265,
1167     155, 262, -1, 58, 265, 155, 262, -1, 105, 265,
1168     222, 262, -1, 105, 265, 224, 262, -1, 105, 265,
1169     228, 262, -1, 105, 265, 226, 262, -1, 105, 265,
1170     227, 262, -1, 105, 265, 225, 262, -1, 105, 265,
1171     223, 262, -1, 255, 265, 199, 262, -1, -1, 138,
1172     319, 320, 264, 321, 263, 262, -1, -1, 324, -1,
1173     321, 322, -1, 322, -1, 323, -1, 325, -1, 326,
1174     -1, 345, -1, 346, -1, 330, -1, 329, -1, 334,
1175     -1, 335, -1, 337, -1, 338, -1, 339, -1, 340,
1176     -1, 341, -1, 336, -1, 342, -1, 343, -1, 344,
1177     -1, 347, -1, 327, -1, 328, -1, 348, -1, 1,
1178     262, -1, 122, 265, 155, 262, -1, 155, -1, 250,
1179     265, 155, 262, -1, 149, 265, 155, 262, -1, 50,
1180     265, 199, 262, -1, 168, 265, 155, 262, -1, 26,
1181     265, 155, 262, -1, -1, 238, 331, 265, 332, 262,
1182     -1, 332, 266, 333, -1, 333, -1, 206, -1, 209,
1183     -1, 210, -1, 212, -1, 213, -1, 216, -1, 235,
1184     -1, 230, -1, 232, -1, 239, -1, 236, -1, 215,
1185     -1, 231, -1, 234, -1, 217, -1, 242, -1, 207,
1186     -1, 208, -1, 220, -1, 74, 265, 199, 262, -1,
1187     163, 265, 199, 262, -1, 164, 265, 199, 262, -1,
1188     94, 265, 199, 262, -1, 259, 265, 199, 262, -1,
1189     249, 265, 199, 262, -1, 67, 265, 199, 262, -1,
1190     127, 265, 199, 262, -1, 38, 265, 199, 262, -1,
1191     161, 265, 199, 262, -1, 5, 265, 199, 262, -1,
1192     79, 265, 199, 262, -1, 81, 265, 199, 262, -1,
1193     231, 265, 199, 262, -1, -1, 55, 349, 265, 350,
1194     262, -1, 350, 266, 351, -1, 351, -1, -1, 132,
1195     352, 354, -1, -1, 353, 354, -1, 74, -1, 163,
1196     -1, 94, -1, 249, -1, 259, -1, 67, -1, 38,
1197     -1, 161, -1, 5, -1, 79, -1, 127, -1, 231,
1198     -1, 143, -1, 81, -1, 164, -1, 50, -1, -1,
1199     26, 356, 357, 264, 358, 263, 262, -1, -1, 361,
1200     -1, 358, 359, -1, 359, -1, 360, -1, 371, -1,
1201     372, -1, 362, -1, 363, -1, 373, -1, 364, -1,
1202     365, -1, 366, -1, 367, -1, 368, -1, 369, -1,
1203     370, -1, 1, 262, -1, 122, 265, 155, 262, -1,
1204     155, -1, 152, 265, 271, 262, -1, 153, 265, 271,
1205     262, -1, 136, 265, 133, 262, -1, 30, 265, 271,
1206     262, -1, 114, 265, 133, 262, -1, 109, 265, 133,
1207     262, -1, 111, 265, 133, 262, -1, 110, 265, 133,
1208     262, -1, 180, 265, 273, 262, -1, 23, 265, 133,
1209     262, -1, 24, 265, 133, 262, -1, 135, 265, 133,
1210     262, -1, -1, 102, 375, 264, 380, 263, 262, -1,
1211     -1, 55, 377, 265, 378, 262, -1, 378, 266, 379,
1212     -1, 379, -1, 237, -1, 78, -1, 233, -1, 380,
1213     381, -1, 381, -1, 382, -1, 376, -1, 386, -1,
1214     387, -1, 1, 262, -1, -1, 154, 265, 384, 383,
1215     262, -1, 384, 266, 385, -1, 385, -1, 133, -1,
1216     133, 204, 133, -1, 91, 265, 155, 262, -1, 85,
1217     265, 155, 262, -1, -1, 75, 389, 264, 390, 263,
1218     262, -1, 390, 391, -1, 391, -1, 392, -1, 393,
1219     -1, 395, -1, 397, -1, 404, -1, 405, -1, 406,
1220     -1, 408, -1, 409, -1, 410, -1, 394, -1, 411,
1221     -1, 412, -1, 407, -1, 413, -1, 396, -1, 1,
1222     262, -1, 250, 265, 155, 262, -1, 149, 265, 155,
1223     262, -1, 193, 265, 199, 262, -1, 26, 265, 155,
1224     262, -1, 50, 265, 199, 262, -1, -1, 55, 398,
1225     265, 399, 262, -1, 399, 266, 400, -1, 400, -1,
1226     -1, 132, 401, 403, -1, -1, 402, 403, -1, 193,
1227     -1, 51, -1, 95, -1, 76, -1, 20, -1, 21,
1228     -1, 131, -1, 69, -1, 174, -1, 123, -1, 95,
1229     265, 199, 262, -1, 76, 265, 199, 262, -1, 51,
1230     265, 199, 262, -1, 20, 265, 199, 262, -1, 131,
1231     265, 199, 262, -1, 69, 265, 199, 262, -1, 192,
1232     265, 155, 262, -1, 159, 265, 155, 262, -1, 158,
1233     265, 133, 262, -1, 123, 265, 199, 262, -1, -1,
1234     173, 415, 264, 416, 263, 262, -1, 416, 417, -1,
1235     417, -1, 418, -1, 419, -1, 420, -1, 1, 262,
1236     -1, 157, 265, 155, 262, -1, 22, 265, 155, 262,
1237     -1, 126, 265, 155, 262, -1, -1, 187, 422, 264,
1238     423, 263, 262, -1, 423, 424, -1, 424, -1, 425,
1239     -1, 426, -1, 427, -1, 1, 262, -1, 122, 265,
1240     155, 262, -1, 250, 265, 155, 262, -1, -1, 189,
1241     428, 265, 429, 262, -1, 429, 266, 430, -1, 430,
1242     -1, 94, -1, 246, -1, 249, -1, 259, -1, 247,
1243     -1, 241, -1, 173, -1, 248, -1, 240, -1, 220,
1244     -1, 205, -1, -1, 188, 432, 264, 433, 263, 262,
1245     -1, 433, 434, -1, 434, -1, 435, -1, 436, -1,
1246     1, 262, -1, 122, 265, 155, 262, -1, -1, 189,
1247     437, 265, 438, 262, -1, 438, 266, 439, -1, 439,
1248     -1, 94, -1, 246, -1, 249, -1, 259, -1, 247,
1249     -1, 241, -1, 173, -1, 248, -1, 240, -1, 220,
1250     -1, 205, -1, -1, 29, 441, 442, 264, 443, 263,
1251     262, -1, -1, 446, -1, 443, 444, -1, 444, -1,
1252     445, -1, 447, -1, 448, -1, 449, -1, 450, -1,
1253     452, -1, 451, -1, 453, -1, 454, -1, 467, -1,
1254     468, -1, 469, -1, 465, -1, 462, -1, 464, -1,
1255     463, -1, 461, -1, 470, -1, 466, -1, 1, 262,
1256     -1, 122, 265, 155, 262, -1, 155, -1, 85, 265,
1257     155, 262, -1, 257, 265, 155, 262, -1, 181, 265,
1258     155, 262, -1, 3, 265, 155, 262, -1, 154, 265,
1259     133, 262, -1, 6, 265, 218, 262, -1, 6, 265,
1260     219, 262, -1, 54, 265, 155, 262, -1, -1, 55,
1261     455, 265, 456, 262, -1, 456, 266, 457, -1, 457,
1262     -1, -1, 132, 458, 460, -1, -1, 459, 460, -1,
1263     27, -1, 31, -1, 10, -1, 12, -1, 244, -1,
1264     168, 265, 155, 262, -1, 50, 265, 199, 262, -1,
1265     31, 265, 199, 262, -1, 27, 265, 199, 262, -1,
1266     10, 265, 199, 262, -1, 244, 265, 199, 262, -1,
1267     87, 265, 155, 262, -1, 100, 265, 155, 262, -1,
1268     26, 265, 155, 262, -1, 25, 265, 155, 262, -1,
1269     -1, 92, 472, 264, 477, 263, 262, -1, -1, 189,
1270     474, 265, 475, 262, -1, 475, 266, 476, -1, 476,
1271     -1, 160, -1, 477, 478, -1, 478, -1, 479, -1,
1272     480, -1, 473, -1, 1, -1, 250, 265, 155, 262,
1273     -1, 157, 265, 155, 262, -1, -1, 36, 482, 264,
1274     483, 263, 262, -1, 483, 484, -1, 484, -1, 485,
1275     -1, 486, -1, 1, -1, 91, 265, 155, 262, -1,
1276     157, 265, 155, 262, -1, 52, 264, 488, 263, 262,
1277     -1, 488, 489, -1, 489, -1, 490, -1, 1, -1,
1278     91, 265, 155, 262, -1, -1, 65, 492, 264, 497,
1279     263, 262, -1, -1, 189, 494, 265, 495, 262, -1,
1280     495, 266, 496, -1, 496, -1, 160, -1, 497, 498,
1281     -1, 498, -1, 499, -1, 500, -1, 493, -1, 1,
1282     -1, 122, 265, 155, 262, -1, 157, 265, 155, 262,
1283     -1, 66, 264, 502, 263, 262, -1, 502, 503, -1,
1284     503, -1, 512, -1, 513, -1, 515, -1, 516, -1,
1285     517, -1, 518, -1, 519, -1, 520, -1, 521, -1,
1286     522, -1, 511, -1, 524, -1, 525, -1, 526, -1,
1287     527, -1, 543, -1, 529, -1, 531, -1, 533, -1,
1288     532, -1, 536, -1, 530, -1, 537, -1, 538, -1,
1289     539, -1, 540, -1, 542, -1, 541, -1, 557, -1,
1290     544, -1, 548, -1, 549, -1, 553, -1, 534, -1,
1291     535, -1, 563, -1, 561, -1, 562, -1, 545, -1,
1292     514, -1, 546, -1, 547, -1, 564, -1, 552, -1,
1293     523, -1, 565, -1, 550, -1, 551, -1, 507, -1,
1294     510, -1, 505, -1, 506, -1, 508, -1, 509, -1,
1295     528, -1, 504, -1, 1, -1, 116, 265, 133, 262,
1296     -1, 72, 265, 133, 262, -1, 73, 265, 133, 262,
1297     -1, 12, 265, 199, 262, -1, 256, 265, 199, 262,
1298     -1, 162, 265, 271, 262, -1, 186, 265, 199, 262,
1299     -1, 93, 265, 133, 262, -1, 84, 265, 199, 262,
1300     -1, 89, 265, 199, 262, -1, 43, 265, 199, 262,
1301     -1, 53, 265, 199, 262, -1, 8, 265, 199, 262,
1302     -1, 113, 265, 271, 262, -1, 112, 265, 133, 262,
1303     -1, 106, 265, 133, 262, -1, 9, 265, 271, 262,
1304     -1, 203, 265, 271, 262, -1, 202, 265, 271, 262,
1305     -1, 77, 265, 133, 262, -1, 97, 265, 199, 262,
1306     -1, 96, 265, 155, 262, -1, 90, 265, 199, 262,
1307     -1, 261, 265, 199, 262, -1, 194, 265, 199, 262,
1308     -1, 197, 265, 199, 262, -1, 198, 265, 199, 262,
1309     -1, 196, 265, 199, 262, -1, 196, 265, 200, 262,
1310     -1, 195, 265, 199, 262, -1, 195, 265, 200, 262,
1311     -1, 147, 265, 271, 262, -1, 19, 265, 271, 262,
1312     -1, 139, 265, 199, 262, -1, 148, 265, 271, 262,
1313     -1, 190, 265, 199, 262, -1, 130, 265, 199, 262,
1314     -1, 245, 265, 199, 262, -1, 142, 265, 199, 262,
1315     -1, 117, 265, 155, 262, -1, 88, 265, 271, 262,
1316     -1, 45, 265, 133, 262, -1, 115, 265, 133, 262,
1317     -1, 184, 265, 155, 262, -1, 32, 265, 155, 262,
1318     -1, 28, 265, 133, 262, -1, 251, 265, 199, 262,
1319     -1, 47, 265, 155, 262, -1, 151, 265, 199, 262,
1320     -1, 39, 265, 199, 262, -1, 243, 265, 271, 262,
1321     -1, -1, 144, 554, 265, 555, 262, -1, 555, 266,
1322     556, -1, 556, -1, 206, -1, 209, -1, 210, -1,
1323     212, -1, 213, -1, 216, -1, 235, -1, 230, -1,
1324     232, -1, 239, -1, 236, -1, 215, -1, 231, -1,
1325     234, -1, 217, -1, 242, -1, 207, -1, 208, -1,
1326     220, -1, -1, 141, 558, 265, 559, 262, -1, 559,
1327     266, 560, -1, 560, -1, 206, -1, 209, -1, 210,
1328     -1, 212, -1, 213, -1, 216, -1, 235, -1, 230,
1329     -1, 232, -1, 239, -1, 236, -1, 215, -1, 231,
1330     -1, 234, -1, 217, -1, 242, -1, 207, -1, 208,
1331     -1, 220, -1, 118, 265, 133, 262, -1, 119, 265,
1332     133, 262, -1, 33, 265, 133, 262, -1, 211, 265,
1333     273, 262, -1, 44, 265, 199, 262, -1, -1, 68,
1334     567, 264, 568, 263, 262, -1, 568, 569, -1, 569,
1335     -1, 570, -1, 571, -1, 572, -1, 576, -1, 577,
1336     -1, 578, -1, 1, -1, 49, 265, 199, 262, -1,
1337     46, 265, 271, 262, -1, -1, 104, 573, 265, 574,
1338     262, -1, 574, 266, 575, -1, 575, -1, 201, -1,
1339     11, -1, 250, 265, 155, 262, -1, 122, 265, 155,
1340     262, -1, -1, 4, 579, 265, 580, 262, -1, 580,
1341     266, 581, -1, 581, -1, 201, -1, 11, -1, 22,
1342     264, 583, 263, 262, -1, 583, 584, -1, 584, -1,
1343     587, -1, 588, -1, 589, -1, 590, -1, 595, -1,
1344     591, -1, 592, -1, 593, -1, 594, -1, 596, -1,
1345     597, -1, 598, -1, 586, -1, 599, -1, 600, -1,
1346     601, -1, 602, -1, 585, -1, 1, -1, 40, 265,
1347     199, 262, -1, 165, 265, 199, 262, -1, 42, 265,
1348     199, 262, -1, 252, 265, 199, 262, -1, 253, 265,
1349     199, 262, -1, 254, 265, 199, 262, -1, 98, 265,
1350     271, 262, -1, 99, 265, 271, 262, -1, 108, 265,
1351     133, 262, -1, 156, 265, 199, 262, -1, 107, 265,
1352     133, 262, -1, 35, 265, 133, 262, -1, 34, 265,
1353     133, 262, -1, 128, 265, 199, 262, -1, 129, 265,
1354     199, 262, -1, 13, 265, 199, 262, -1, 145, 265,
1355     133, 262, -1, 146, 265, 271, 262, -1, 182, 264,
1356     604, 263, 262, -1, 604, 605, -1, 605, -1, 606,
1357     -1, 607, -1, 609, -1, 611, -1, 610, -1, 608,
1358     -1, 612, -1, 1, -1, 56, 265, 199, 262, -1,
1359     83, 265, 199, 262, -1, 80, 265, 155, 262, -1,
1360     101, 265, 271, 262, -1, 78, 265, 199, 262, -1,
1361     41, 265, 199, 262, -1, 82, 265, 199, 262, -1
1362 michael 913 };
1363    
1364     /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
1365     static const yytype_uint16 yyrline[] =
1366     {
1367 michael 1011 0, 397, 397, 398, 401, 402, 403, 404, 405, 406,
1368     407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
1369     417, 418, 419, 420, 421, 422, 426, 426, 427, 431,
1370     435, 439, 443, 447, 453, 453, 454, 455, 456, 457,
1371     464, 467, 467, 468, 468, 468, 470, 478, 487, 489,
1372     489, 490, 490, 491, 491, 492, 492, 493, 494, 494,
1373 michael 1024 495, 495, 496, 497, 501, 500, 519, 519, 520, 526,
1374     534, 568, 628, 642, 657, 666, 680, 689, 717, 747,
1375     770, 792, 794, 794, 795, 795, 796, 796, 798, 807,
1376     816, 829, 831, 832, 834, 834, 835, 836, 836, 837,
1377     837, 838, 838, 839, 839, 840, 841, 843, 847, 851,
1378     858, 865, 872, 879, 886, 893, 900, 907, 911, 915,
1379     919, 923, 927, 931, 937, 947, 946, 1040, 1040, 1041,
1380     1041, 1042, 1042, 1042, 1042, 1043, 1043, 1044, 1044, 1044,
1381     1045, 1045, 1045, 1046, 1046, 1046, 1047, 1047, 1047, 1047,
1382     1048, 1048, 1049, 1049, 1051, 1063, 1075, 1109, 1121, 1132,
1383     1174, 1184, 1183, 1189, 1189, 1190, 1194, 1198, 1202, 1206,
1384     1210, 1214, 1218, 1222, 1226, 1230, 1234, 1238, 1242, 1246,
1385     1250, 1254, 1258, 1262, 1268, 1279, 1290, 1301, 1312, 1323,
1386     1334, 1345, 1356, 1367, 1378, 1389, 1400, 1411, 1423, 1422,
1387     1426, 1426, 1427, 1427, 1428, 1428, 1430, 1437, 1444, 1451,
1388     1458, 1465, 1472, 1479, 1486, 1493, 1500, 1507, 1514, 1521,
1389     1528, 1535, 1549, 1548, 1598, 1598, 1600, 1600, 1601, 1602,
1390     1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611,
1391     1612, 1613, 1615, 1624, 1633, 1639, 1645, 1651, 1657, 1663,
1392     1669, 1675, 1681, 1687, 1693, 1699, 1709, 1708, 1725, 1724,
1393     1729, 1729, 1730, 1734, 1738, 1746, 1746, 1747, 1747, 1747,
1394     1747, 1747, 1749, 1749, 1751, 1751, 1753, 1767, 1787, 1796,
1395     1809, 1808, 1877, 1877, 1878, 1878, 1878, 1878, 1879, 1879,
1396     1880, 1880, 1880, 1881, 1881, 1882, 1882, 1882, 1883, 1883,
1397     1883, 1885, 1922, 1935, 1946, 1955, 1967, 1966, 1970, 1970,
1398     1971, 1971, 1972, 1972, 1974, 1982, 1989, 1996, 2003, 2010,
1399     2017, 2024, 2031, 2038, 2047, 2058, 2069, 2080, 2091, 2102,
1400     2114, 2133, 2143, 2152, 2168, 2167, 2183, 2183, 2184, 2184,
1401     2184, 2184, 2186, 2195, 2210, 2224, 2223, 2239, 2239, 2240,
1402     2240, 2240, 2240, 2242, 2251, 2274, 2273, 2279, 2279, 2280,
1403     2284, 2288, 2292, 2296, 2300, 2304, 2308, 2312, 2316, 2320,
1404     2330, 2329, 2346, 2346, 2347, 2347, 2347, 2349, 2356, 2355,
1405     2361, 2361, 2362, 2366, 2370, 2374, 2378, 2382, 2386, 2390,
1406     2394, 2398, 2402, 2412, 2411, 2557, 2557, 2558, 2558, 2559,
1407     2559, 2559, 2560, 2560, 2561, 2561, 2562, 2562, 2562, 2563,
1408     2563, 2563, 2564, 2564, 2564, 2565, 2565, 2566, 2566, 2568,
1409     2580, 2592, 2601, 2627, 2645, 2663, 2669, 2673, 2681, 2691,
1410     2690, 2694, 2694, 2695, 2695, 2696, 2696, 2698, 2709, 2716,
1411     2723, 2730, 2740, 2781, 2792, 2803, 2818, 2829, 2840, 2853,
1412     2866, 2875, 2911, 2910, 2974, 2973, 2977, 2977, 2978, 2984,
1413     2984, 2985, 2985, 2985, 2985, 2987, 3006, 3016, 3015, 3038,
1414     3038, 3039, 3039, 3039, 3041, 3047, 3056, 3058, 3058, 3059,
1415     3059, 3061, 3080, 3079, 3127, 3126, 3130, 3130, 3131, 3137,
1416     3137, 3138, 3138, 3138, 3138, 3140, 3146, 3155, 3158, 3158,
1417     3159, 3159, 3160, 3160, 3161, 3161, 3162, 3162, 3163, 3163,
1418     3164, 3164, 3165, 3165, 3166, 3166, 3167, 3167, 3168, 3168,
1419     3169, 3169, 3170, 3170, 3171, 3171, 3172, 3172, 3173, 3173,
1420     3174, 3174, 3175, 3175, 3176, 3176, 3177, 3177, 3178, 3178,
1421     3179, 3180, 3180, 3181, 3181, 3182, 3182, 3183, 3183, 3184,
1422     3184, 3185, 3185, 3186, 3186, 3187, 3188, 3191, 3196, 3201,
1423     3206, 3211, 3216, 3221, 3226, 3231, 3236, 3241, 3246, 3251,
1424     3256, 3261, 3266, 3271, 3276, 3281, 3287, 3298, 3303, 3312,
1425     3317, 3322, 3327, 3332, 3337, 3340, 3345, 3348, 3353, 3358,
1426     3363, 3368, 3373, 3378, 3383, 3388, 3393, 3404, 3409, 3414,
1427     3419, 3428, 3460, 3478, 3483, 3492, 3497, 3502, 3508, 3507,
1428     3512, 3512, 3513, 3516, 3519, 3522, 3525, 3528, 3531, 3534,
1429     3537, 3540, 3543, 3546, 3549, 3552, 3555, 3558, 3561, 3564,
1430     3567, 3573, 3572, 3577, 3577, 3578, 3581, 3584, 3587, 3590,
1431     3593, 3596, 3599, 3602, 3605, 3608, 3611, 3614, 3617, 3620,
1432     3623, 3626, 3629, 3632, 3637, 3642, 3647, 3652, 3657, 3666,
1433     3665, 3689, 3689, 3690, 3691, 3692, 3693, 3694, 3695, 3696,
1434     3698, 3704, 3711, 3710, 3715, 3715, 3716, 3720, 3726, 3760,
1435     3770, 3769, 3819, 3819, 3820, 3824, 3833, 3836, 3836, 3837,
1436     3837, 3838, 3838, 3839, 3839, 3840, 3840, 3841, 3841, 3842,
1437     3843, 3843, 3844, 3844, 3845, 3845, 3846, 3846, 3848, 3853,
1438     3858, 3863, 3868, 3873, 3878, 3883, 3888, 3893, 3898, 3903,
1439     3908, 3913, 3918, 3923, 3928, 3933, 3941, 3944, 3944, 3945,
1440     3945, 3946, 3947, 3948, 3948, 3949, 3950, 3952, 3958, 3964,
1441     3973, 3987, 3993, 3999
1442 michael 913 };
1443     #endif
1444    
1445     #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1446     /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1447     First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1448     static const char *const yytname[] =
1449     {
1450     "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ACTION", "ADMIN",
1451     "AFTYPE", "T_ALLOW", "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME",
1452     "AUTOCONN", "T_BLOCK", "BURST_AWAY", "BURST_TOPICWHO", "BYTES", "KBYTES",
1453     "MBYTES", "GBYTES", "TBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CAN_IDLE",
1454     "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CIPHER_PREFERENCE",
1455     "CLASS", "COMPRESSED", "COMPRESSION_LEVEL", "CONNECT", "CONNECTFREQ",
1456     "CRYPTLINK", "DEFAULT_CIPHER_PREFERENCE", "DEFAULT_FLOODCOUNT",
1457     "DEFAULT_SPLIT_SERVER_COUNT", "DEFAULT_SPLIT_USER_COUNT", "DENY",
1458     "DESCRIPTION", "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1459     "DISABLE_HIDDEN", "DISABLE_LOCAL_CHANNELS", "DISABLE_REMOTE_COMMANDS",
1460     "DOT_IN_IP6_ADDR", "DOTS_IN_IDENT", "DURATION", "EGDPOOL_PATH", "EMAIL",
1461     "ENABLE", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "FAILED_OPER_NOTICE",
1462     "FAKENAME", "IRCD_FLAGS", "FLATTEN_LINKS", "FFAILED_OPERLOG", "FKILLLOG",
1463     "FKLINELOG", "FGLINELOG", "FIOERRLOG", "FOPERLOG", "FOPERSPYLOG",
1464     "FUSERLOG", "GECOS", "GENERAL", "GLINE", "GLINES", "GLINE_EXEMPT",
1465     "GLINE_LOG", "GLINE_TIME", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1466     "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
1467     "HIDDEN_ADMIN", "HIDDEN_NAME", "HIDDEN_OPER", "HIDE_SERVER_IPS",
1468     "HIDE_SERVERS", "HIDE_SPOOF_IPS", "HOST", "HUB", "HUB_MASK", "IDLETIME",
1469     "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "IP", "KILL",
1470     "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT", "KLINE_REASON",
1471     "KLINE_WITH_REASON", "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK",
1472     "LINKS_DELAY", "LISTEN", "T_LOG", "LOGGING", "LOG_LEVEL", "MAX_ACCEPT",
1473     "MAX_BANS", "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL",
1474     "MAX_NICK_CHANGES", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1475     "MAX_WATCH", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
1476     "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
1477     "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
1478     "NO_CREATE_ON_SPLIT", "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE",
1479     "NOT", "NUMBER", "NUMBER_PER_IDENT", "NUMBER_PER_CIDR", "NUMBER_PER_IP",
1480     "NUMBER_PER_IP_GLOBAL", "OPERATOR", "OPERS_BYPASS_CALLERID", "OPER_LOG",
1481     "OPER_ONLY_UMODES", "OPER_PASS_RESV", "OPER_SPY_T", "OPER_UMODES",
1482     "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME", "PACE_WAIT", "PACE_WAIT_SIMPLE",
1483     "PASSWORD", "PATH", "PING_COOKIE", "PING_TIME", "PING_WARNING", "PORT",
1484     "QSTRING", "QUIET_ON_BAN", "REASON", "REDIRPORT", "REDIRSERV", "REGEX_T",
1485     "REHASH", "TREJECT_HOLD_TIME", "REMOTE", "REMOTEBAN",
1486     "RESTRICT_CHANNELS", "RESTRICTED", "RSA_PRIVATE_KEY_FILE",
1487 michael 967 "RSA_PUBLIC_KEY_FILE", "SSL_CERTIFICATE_FILE", "T_SSL_CONNECTION_METHOD",
1488     "T_SSLV3", "T_TLSV1", "RESV", "RESV_EXEMPT", "SECONDS", "MINUTES",
1489     "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD", "SERVERHIDE",
1490     "SERVERINFO", "SERVLINK_PATH", "IRCD_SID", "TKLINE_EXPIRE_NOTICES",
1491     "T_SHARED", "T_CLUSTER", "TYPE", "SHORT_MOTD", "SILENT", "SPOOF",
1492     "SPOOF_NOTICE", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1493     "STATS_K_OPER_ONLY", "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "TBOOL",
1494     "TMASKED", "T_REJECT", "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS",
1495     "T_ALL", "T_BOTS", "T_SOFTCALLERID", "T_CALLERID", "T_CCONN",
1496     "T_CCONN_FULL", "T_CLIENT_FLOOD", "T_DEAF", "T_DEBUG", "T_DRONE",
1497     "T_EXTERNAL", "T_FULL", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS",
1498     "T_LOGPATH", "T_L_CRIT", "T_L_DEBUG", "T_L_ERROR", "T_L_INFO",
1499     "T_L_NOTICE", "T_L_TRACE", "T_L_WARN", "T_MAX_CLIENTS", "T_NCHANGE",
1500     "T_OPERWALL", "T_REJ", "T_SERVER", "T_SERVNOTICE", "T_SKILL", "T_SPY",
1501     "T_SSL", "T_UMODES", "T_UNAUTH", "T_UNRESV", "T_UNXLINE", "T_WALLOP",
1502     "THROTTLE_TIME", "TOPICBURST", "TRUE_NO_OPER_FLOOD", "TKLINE", "TXLINE",
1503     "TRESV", "UNKLINE", "USER", "USE_EGD", "USE_EXCEPT", "USE_INVEX",
1504     "USE_KNOCK", "USE_LOGGING", "USE_WHOIS_ACTUALLY", "VHOST", "VHOST6",
1505     "XLINE", "WARN", "WARN_NO_NLINE", "';'", "'}'", "'{'", "'='", "','",
1506     "$accept", "conf", "conf_item", "timespec_", "timespec", "sizespec_",
1507     "sizespec", "modules_entry", "modules_items", "modules_item",
1508     "modules_module", "modules_path", "serverinfo_entry", "serverinfo_items",
1509     "serverinfo_item", "serverinfo_ssl_connection_method", "$@1",
1510     "method_types", "method_type_item", "serverinfo_ssl_certificate_file",
1511 michael 913 "serverinfo_rsa_private_key_file", "serverinfo_name", "serverinfo_sid",
1512     "serverinfo_description", "serverinfo_network_name",
1513     "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1514     "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
1515     "admin_item", "admin_name", "admin_email", "admin_description",
1516     "logging_entry", "logging_items", "logging_item", "logging_path",
1517     "logging_oper_log", "logging_fuserlog", "logging_ffailed_operlog",
1518     "logging_foperlog", "logging_foperspylog", "logging_fglinelog",
1519     "logging_fklinelog", "logging_ioerrlog", "logging_killlog",
1520 michael 967 "logging_log_level", "logging_use_logging", "oper_entry", "$@2",
1521 michael 913 "oper_name_b", "oper_items", "oper_item", "oper_name", "oper_name_t",
1522     "oper_user", "oper_password", "oper_encrypted",
1523 michael 967 "oper_rsa_public_key_file", "oper_class", "oper_umodes", "$@3",
1524 michael 913 "oper_umodes_items", "oper_umodes_item", "oper_global_kill",
1525     "oper_remote", "oper_remoteban", "oper_kline", "oper_xline",
1526     "oper_unkline", "oper_gline", "oper_nick_changes", "oper_die",
1527     "oper_rehash", "oper_admin", "oper_hidden_admin", "oper_hidden_oper",
1528 michael 967 "oper_operwall", "oper_flags", "$@4", "oper_flags_items",
1529     "oper_flags_item", "$@5", "$@6", "oper_flags_item_atom", "class_entry",
1530     "$@7", "class_name_b", "class_items", "class_item", "class_name",
1531 michael 913 "class_name_t", "class_ping_time", "class_ping_warning",
1532     "class_number_per_ip", "class_connectfreq", "class_max_number",
1533     "class_max_global", "class_max_local", "class_max_ident", "class_sendq",
1534     "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1535 michael 967 "class_number_per_cidr", "listen_entry", "$@8", "listen_flags", "$@9",
1536 michael 913 "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1537 michael 967 "listen_port", "$@10", "port_items", "port_item", "listen_address",
1538     "listen_host", "auth_entry", "$@11", "auth_items", "auth_item",
1539 michael 913 "auth_user", "auth_passwd", "auth_spoof_notice", "auth_class",
1540 michael 967 "auth_encrypted", "auth_flags", "$@12", "auth_flags_items",
1541     "auth_flags_item", "$@13", "$@14", "auth_flags_item_atom",
1542 michael 913 "auth_kline_exempt", "auth_need_ident", "auth_exceed_limit",
1543     "auth_can_flood", "auth_no_tilde", "auth_gline_exempt", "auth_spoof",
1544     "auth_redir_serv", "auth_redir_port", "auth_need_password", "resv_entry",
1545 michael 967 "$@15", "resv_items", "resv_item", "resv_creason", "resv_channel",
1546     "resv_nick", "shared_entry", "$@16", "shared_items", "shared_item",
1547     "shared_name", "shared_user", "shared_type", "$@17", "shared_types",
1548     "shared_type_item", "cluster_entry", "$@18", "cluster_items",
1549     "cluster_item", "cluster_name", "cluster_type", "$@19", "cluster_types",
1550     "cluster_type_item", "connect_entry", "$@20", "connect_name_b",
1551 michael 913 "connect_items", "connect_item", "connect_name", "connect_name_t",
1552     "connect_host", "connect_vhost", "connect_send_password",
1553     "connect_accept_password", "connect_port", "connect_aftype",
1554 michael 967 "connect_fakename", "connect_flags", "$@21", "connect_flags_items",
1555     "connect_flags_item", "$@22", "$@23", "connect_flags_item_atom",
1556 michael 913 "connect_rsa_public_key_file", "connect_encrypted", "connect_cryptlink",
1557     "connect_compressed", "connect_auto", "connect_topicburst",
1558     "connect_hub_mask", "connect_leaf_mask", "connect_class",
1559 michael 967 "connect_cipher_preference", "kill_entry", "$@24", "kill_type", "$@25",
1560 michael 913 "kill_type_items", "kill_type_item", "kill_items", "kill_item",
1561 michael 967 "kill_user", "kill_reason", "deny_entry", "$@26", "deny_items",
1562 michael 913 "deny_item", "deny_ip", "deny_reason", "exempt_entry", "exempt_items",
1563 michael 967 "exempt_item", "exempt_ip", "gecos_entry", "$@27", "gecos_flags", "$@28",
1564 michael 913 "gecos_flags_items", "gecos_flags_item", "gecos_items", "gecos_item",
1565     "gecos_name", "gecos_reason", "general_entry", "general_items",
1566     "general_item", "general_max_watch", "general_gline_min_cidr",
1567     "general_gline_min_cidr6", "general_burst_away",
1568     "general_use_whois_actually", "general_reject_hold_time",
1569     "general_tkline_expire_notices", "general_kill_chase_time_limit",
1570     "general_hide_spoof_ips", "general_ignore_bogus_ts",
1571     "general_disable_remote_commands", "general_failed_oper_notice",
1572     "general_anti_nick_flood", "general_max_nick_time",
1573     "general_max_nick_changes", "general_max_accept",
1574     "general_anti_spam_exit_message_time", "general_ts_warn_delta",
1575     "general_ts_max_delta", "general_havent_read_conf",
1576     "general_kline_with_reason", "general_kline_reason",
1577     "general_invisible_on_connect", "general_warn_no_nline",
1578     "general_stats_e_disabled", "general_stats_o_oper_only",
1579     "general_stats_P_oper_only", "general_stats_k_oper_only",
1580     "general_stats_i_oper_only", "general_pace_wait",
1581     "general_caller_id_wait", "general_opers_bypass_callerid",
1582     "general_pace_wait_simple", "general_short_motd",
1583     "general_no_oper_flood", "general_true_no_oper_flood",
1584     "general_oper_pass_resv", "general_message_locale", "general_idletime",
1585     "general_dots_in_ident", "general_max_targets", "general_servlink_path",
1586     "general_default_cipher_preference", "general_compression_level",
1587     "general_use_egd", "general_egdpool_path", "general_ping_cookie",
1588     "general_disable_auth", "general_throttle_time", "general_oper_umodes",
1589 michael 967 "$@29", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1590     "$@30", "umode_items", "umode_item", "general_min_nonwildcard",
1591 michael 913 "general_min_nonwildcard_simple", "general_default_floodcount",
1592 michael 967 "general_client_flood", "general_dot_in_ip6_addr", "gline_entry", "$@31",
1593 michael 913 "gline_items", "gline_item", "gline_enable", "gline_duration",
1594 michael 967 "gline_logging", "$@32", "gline_logging_types",
1595     "gline_logging_type_item", "gline_user", "gline_server", "gline_action",
1596     "$@33", "gdeny_types", "gdeny_type_item", "channel_entry",
1597     "channel_items", "channel_item", "channel_disable_fake_channels",
1598     "channel_restrict_channels", "channel_disable_local_channels",
1599     "channel_use_except", "channel_use_invex", "channel_use_knock",
1600     "channel_knock_delay", "channel_knock_delay_channel",
1601     "channel_max_chans_per_user", "channel_quiet_on_ban", "channel_max_bans",
1602 michael 913 "channel_default_split_user_count", "channel_default_split_server_count",
1603     "channel_no_create_on_split", "channel_no_join_on_split",
1604     "channel_burst_topicwho", "channel_jflood_count", "channel_jflood_time",
1605     "serverhide_entry", "serverhide_items", "serverhide_item",
1606     "serverhide_flatten_links", "serverhide_hide_servers",
1607     "serverhide_hidden_name", "serverhide_links_delay", "serverhide_hidden",
1608     "serverhide_disable_hidden", "serverhide_hide_server_ips", 0
1609     };
1610     #endif
1611    
1612     # ifdef YYPRINT
1613     /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1614     token YYLEX-NUM. */
1615     static const yytype_uint16 yytoknum[] =
1616     {
1617     0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1618     265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1619     275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1620     285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1621     295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1622     305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1623     315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1624     325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1625     335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1626     345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1627     355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1628     365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1629     375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1630     385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1631     395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1632     405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1633     415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1634     425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1635     435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1636     445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1637     455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1638     465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1639     475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
1640     485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
1641     495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
1642 michael 967 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
1643     515, 516, 59, 125, 123, 61, 44
1644 michael 913 };
1645     # endif
1646    
1647     /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1648     static const yytype_uint16 yyr1[] =
1649     {
1650 michael 967 0, 267, 268, 268, 269, 269, 269, 269, 269, 269,
1651     269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
1652     269, 269, 269, 269, 269, 269, 270, 270, 271, 271,
1653     271, 271, 271, 271, 272, 272, 273, 273, 273, 273,
1654     274, 275, 275, 276, 276, 276, 277, 278, 279, 280,
1655     280, 281, 281, 281, 281, 281, 281, 281, 281, 281,
1656     281, 281, 281, 281, 283, 282, 284, 284, 285, 285,
1657     286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
1658     296, 297, 298, 298, 299, 299, 299, 299, 300, 301,
1659     302, 303, 304, 304, 305, 305, 305, 305, 305, 305,
1660     305, 305, 305, 305, 305, 305, 305, 306, 307, 308,
1661     309, 310, 311, 312, 313, 314, 315, 316, 316, 316,
1662     316, 316, 316, 316, 317, 319, 318, 320, 320, 321,
1663     321, 322, 322, 322, 322, 322, 322, 322, 322, 322,
1664     322, 322, 322, 322, 322, 322, 322, 322, 322, 322,
1665     322, 322, 322, 322, 323, 324, 325, 326, 327, 328,
1666     329, 331, 330, 332, 332, 333, 333, 333, 333, 333,
1667     333, 333, 333, 333, 333, 333, 333, 333, 333, 333,
1668     333, 333, 333, 333, 334, 335, 336, 337, 338, 339,
1669     340, 341, 342, 343, 344, 345, 346, 347, 349, 348,
1670     350, 350, 352, 351, 353, 351, 354, 354, 354, 354,
1671     354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
1672     354, 354, 356, 355, 357, 357, 358, 358, 359, 359,
1673     359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
1674     359, 359, 360, 361, 362, 363, 364, 365, 366, 367,
1675     368, 369, 370, 371, 372, 373, 375, 374, 377, 376,
1676     378, 378, 379, 379, 379, 380, 380, 381, 381, 381,
1677     381, 381, 383, 382, 384, 384, 385, 385, 386, 387,
1678     389, 388, 390, 390, 391, 391, 391, 391, 391, 391,
1679     391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
1680     391, 392, 393, 394, 395, 396, 398, 397, 399, 399,
1681     401, 400, 402, 400, 403, 403, 403, 403, 403, 403,
1682     403, 403, 403, 403, 404, 405, 406, 407, 408, 409,
1683     410, 411, 412, 413, 415, 414, 416, 416, 417, 417,
1684     417, 417, 418, 419, 420, 422, 421, 423, 423, 424,
1685     424, 424, 424, 425, 426, 428, 427, 429, 429, 430,
1686     430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
1687     432, 431, 433, 433, 434, 434, 434, 435, 437, 436,
1688     438, 438, 439, 439, 439, 439, 439, 439, 439, 439,
1689     439, 439, 439, 441, 440, 442, 442, 443, 443, 444,
1690     444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
1691     444, 444, 444, 444, 444, 444, 444, 444, 444, 445,
1692     446, 447, 448, 449, 450, 451, 452, 452, 453, 455,
1693     454, 456, 456, 458, 457, 459, 457, 460, 460, 460,
1694     460, 460, 461, 462, 463, 464, 465, 466, 467, 468,
1695     469, 470, 472, 471, 474, 473, 475, 475, 476, 477,
1696     477, 478, 478, 478, 478, 479, 480, 482, 481, 483,
1697     483, 484, 484, 484, 485, 486, 487, 488, 488, 489,
1698     489, 490, 492, 491, 494, 493, 495, 495, 496, 497,
1699     497, 498, 498, 498, 498, 499, 500, 501, 502, 502,
1700     503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
1701     503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
1702     503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
1703     503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
1704     503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
1705     503, 503, 503, 503, 503, 503, 503, 504, 505, 506,
1706 michael 913 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
1707 michael 967 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
1708     527, 528, 529, 530, 531, 531, 532, 532, 533, 534,
1709 michael 913 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
1710 michael 967 545, 546, 547, 548, 549, 550, 551, 552, 554, 553,
1711     555, 555, 556, 556, 556, 556, 556, 556, 556, 556,
1712     556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
1713     556, 558, 557, 559, 559, 560, 560, 560, 560, 560,
1714     560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1715     560, 560, 560, 560, 561, 562, 563, 564, 565, 567,
1716     566, 568, 568, 569, 569, 569, 569, 569, 569, 569,
1717     570, 571, 573, 572, 574, 574, 575, 575, 576, 577,
1718     579, 578, 580, 580, 581, 581, 582, 583, 583, 584,
1719     584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
1720     584, 584, 584, 584, 584, 584, 584, 584, 585, 586,
1721 michael 913 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
1722 michael 967 597, 598, 599, 600, 601, 602, 603, 604, 604, 605,
1723     605, 605, 605, 605, 605, 605, 605, 606, 607, 608,
1724     609, 610, 611, 612
1725 michael 913 };
1726    
1727     /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
1728     static const yytype_uint8 yyr2[] =
1729     {
1730     0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
1731     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1732     1, 1, 1, 1, 2, 2, 0, 1, 2, 3,
1733     3, 3, 3, 3, 0, 1, 2, 3, 3, 3,
1734     5, 2, 1, 1, 1, 2, 4, 4, 5, 2,
1735     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1736 michael 967 1, 1, 1, 2, 0, 5, 3, 1, 1, 1,
1737 michael 913 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1738 michael 967 4, 5, 2, 1, 1, 1, 1, 2, 4, 4,
1739     4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
1740     1, 1, 1, 1, 1, 1, 2, 4, 4, 4,
1741     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1742     4, 4, 4, 4, 4, 0, 7, 0, 1, 2,
1743 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1744     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1745 michael 967 1, 1, 1, 2, 4, 1, 4, 4, 4, 4,
1746     4, 0, 5, 3, 1, 1, 1, 1, 1, 1,
1747 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1748 michael 967 1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
1749     4, 4, 4, 4, 4, 4, 4, 4, 0, 5,
1750     3, 1, 0, 3, 0, 2, 1, 1, 1, 1,
1751 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1752 michael 967 1, 1, 0, 7, 0, 1, 2, 1, 1, 1,
1753 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1754 michael 967 1, 2, 4, 1, 4, 4, 4, 4, 4, 4,
1755     4, 4, 4, 4, 4, 4, 0, 6, 0, 5,
1756     3, 1, 1, 1, 1, 2, 1, 1, 1, 1,
1757     1, 2, 0, 5, 3, 1, 1, 3, 4, 4,
1758     0, 6, 2, 1, 1, 1, 1, 1, 1, 1,
1759     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1760     2, 4, 4, 4, 4, 4, 0, 5, 3, 1,
1761     0, 3, 0, 2, 1, 1, 1, 1, 1, 1,
1762     1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
1763     4, 4, 4, 4, 0, 6, 2, 1, 1, 1,
1764     1, 2, 4, 4, 4, 0, 6, 2, 1, 1,
1765     1, 1, 2, 4, 4, 0, 5, 3, 1, 1,
1766     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1767     0, 6, 2, 1, 1, 1, 2, 4, 0, 5,
1768 michael 913 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1769 michael 967 1, 1, 1, 0, 7, 0, 1, 2, 1, 1,
1770 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1771 michael 967 1, 1, 1, 1, 1, 1, 1, 1, 2, 4,
1772     1, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1773     5, 3, 1, 0, 3, 0, 2, 1, 1, 1,
1774     1, 1, 4, 4, 4, 4, 4, 4, 4, 4,
1775     4, 4, 0, 6, 0, 5, 3, 1, 1, 2,
1776     1, 1, 1, 1, 1, 4, 4, 0, 6, 2,
1777     1, 1, 1, 1, 4, 4, 5, 2, 1, 1,
1778     1, 4, 0, 6, 0, 5, 3, 1, 1, 2,
1779     1, 1, 1, 1, 1, 4, 4, 5, 2, 1,
1780 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1781     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1782     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1783     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1784     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1785 michael 967 1, 1, 1, 1, 1, 1, 1, 4, 4, 4,
1786 michael 913 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1787     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1788     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1789     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1790 michael 967 4, 4, 4, 4, 4, 4, 4, 4, 0, 5,
1791     3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1792 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1793 michael 967 1, 0, 5, 3, 1, 1, 1, 1, 1, 1,
1794 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1795 michael 967 1, 1, 1, 1, 4, 4, 4, 4, 4, 0,
1796     6, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1797     4, 4, 0, 5, 3, 1, 1, 1, 4, 4,
1798     0, 5, 3, 1, 1, 1, 5, 2, 1, 1,
1799     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1800     1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
1801     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1802     4, 4, 4, 4, 4, 4, 5, 2, 1, 1,
1803 michael 913 1, 1, 1, 1, 1, 1, 1, 4, 4, 4,
1804 michael 967 4, 4, 4, 4
1805 michael 913 };
1806    
1807     /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1808     STATE-NUM when YYTABLE doesn't specify something else to do. Zero
1809     means the default is an error. */
1810     static const yytype_uint16 yydefact[] =
1811     {
1812 michael 967 2, 0, 1, 0, 0, 0, 222, 393, 467, 0,
1813     482, 0, 659, 280, 452, 256, 0, 0, 125, 334,
1814     0, 0, 345, 370, 3, 23, 11, 4, 5, 6,
1815 michael 913 8, 9, 10, 13, 14, 15, 16, 17, 18, 19,
1816 michael 967 22, 20, 21, 7, 12, 24, 25, 0, 0, 224,
1817     395, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1818     0, 127, 0, 0, 0, 0, 0, 0, 0, 0,
1819     0, 0, 83, 84, 86, 85, 707, 0, 0, 0,
1820 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1821 michael 967 0, 0, 0, 0, 0, 0, 688, 706, 701, 689,
1822     690, 691, 692, 694, 695, 696, 697, 693, 698, 699,
1823     700, 702, 703, 704, 705, 243, 0, 225, 420, 0,
1824     396, 0, 480, 0, 0, 478, 479, 0, 556, 0,
1825 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1826     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1827     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1828 michael 967 0, 0, 631, 0, 608, 0, 0, 0, 0, 0,
1829 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1830 michael 967 0, 0, 0, 0, 0, 0, 499, 555, 550, 551,
1831     548, 552, 553, 549, 510, 500, 501, 539, 502, 503,
1832     504, 505, 506, 507, 508, 509, 544, 511, 512, 513,
1833     514, 554, 516, 521, 517, 519, 518, 533, 534, 520,
1834     522, 523, 524, 525, 527, 526, 515, 529, 538, 540,
1835     541, 530, 531, 546, 547, 543, 532, 528, 536, 537,
1836     535, 542, 545, 0, 0, 0, 0, 0, 0, 0,
1837 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1838 michael 967 0, 93, 94, 95, 98, 105, 99, 103, 100, 101,
1839     104, 102, 96, 97, 0, 0, 0, 0, 42, 43,
1840     44, 155, 0, 128, 0, 736, 0, 0, 0, 0,
1841     0, 0, 0, 0, 728, 729, 730, 734, 731, 733,
1842     732, 735, 0, 0, 0, 0, 0, 0, 0, 0,
1843     64, 0, 0, 0, 0, 0, 50, 62, 61, 58,
1844     51, 60, 54, 55, 56, 52, 59, 57, 53, 0,
1845     0, 87, 0, 0, 0, 0, 82, 0, 0, 0,
1846 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1847 michael 967 0, 0, 0, 0, 0, 0, 687, 0, 0, 473,
1848     0, 0, 0, 470, 471, 472, 0, 0, 477, 494,
1849     0, 0, 484, 493, 0, 490, 491, 492, 0, 0,
1850 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1851     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1852     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1853     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1854     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1855 michael 967 0, 0, 0, 0, 0, 498, 669, 680, 0, 0,
1856     672, 0, 0, 0, 662, 663, 664, 665, 666, 667,
1857     668, 0, 0, 0, 0, 0, 306, 0, 0, 0,
1858     0, 0, 0, 0, 0, 0, 0, 0, 0, 283,
1859     284, 285, 294, 286, 299, 287, 288, 289, 290, 297,
1860     291, 292, 293, 295, 296, 298, 464, 0, 454, 0,
1861     463, 0, 460, 461, 462, 0, 258, 0, 0, 0,
1862     268, 0, 266, 267, 269, 270, 106, 0, 0, 0,
1863 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1864 michael 967 92, 45, 0, 0, 0, 41, 0, 0, 0, 0,
1865     0, 0, 337, 338, 339, 340, 0, 0, 0, 0,
1866     0, 0, 0, 0, 727, 63, 0, 0, 0, 0,
1867     0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
1868     0, 0, 355, 0, 0, 348, 349, 350, 351, 0,
1869     0, 378, 0, 373, 374, 375, 0, 0, 0, 81,
1870     0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
1871     0, 0, 0, 0, 0, 0, 0, 0, 0, 686,
1872 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1873 michael 967 0, 0, 0, 0, 0, 227, 228, 231, 232, 234,
1874     235, 236, 237, 238, 239, 240, 229, 230, 233, 0,
1875     0, 0, 0, 0, 0, 0, 0, 0, 0, 429,
1876 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1877 michael 967 398, 399, 400, 401, 402, 403, 405, 404, 406, 407,
1878     415, 412, 414, 413, 411, 417, 408, 409, 410, 416,
1879     0, 0, 0, 469, 0, 476, 0, 0, 0, 0,
1880     489, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1881 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1882     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1883     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1884     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1885 michael 967 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
1886     497, 0, 0, 0, 0, 0, 0, 0, 661, 300,
1887 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1888 michael 967 0, 0, 0, 0, 0, 0, 0, 282, 0, 0,
1889     0, 0, 459, 271, 0, 0, 0, 0, 0, 265,
1890 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891 michael 967 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
1892     0, 40, 0, 0, 0, 0, 0, 198, 0, 0,
1893 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1894 michael 967 0, 161, 0, 0, 0, 0, 130, 131, 132, 133,
1895     150, 151, 137, 136, 138, 139, 145, 140, 141, 142,
1896     143, 144, 146, 147, 148, 134, 135, 149, 152, 341,
1897     0, 0, 0, 0, 336, 0, 0, 0, 0, 0,
1898     0, 0, 726, 0, 0, 0, 0, 0, 0, 0,
1899     0, 0, 0, 0, 0, 48, 352, 0, 0, 0,
1900     0, 347, 376, 0, 0, 0, 372, 90, 89, 88,
1901     723, 720, 719, 708, 710, 26, 26, 26, 26, 26,
1902     28, 27, 714, 715, 718, 716, 721, 722, 724, 725,
1903     717, 709, 711, 712, 713, 241, 0, 0, 0, 0,
1904 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905 michael 967 226, 418, 0, 0, 0, 0, 0, 0, 0, 0,
1906 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1907 michael 967 0, 0, 397, 0, 0, 468, 481, 0, 0, 0,
1908     483, 569, 573, 560, 589, 602, 601, 656, 606, 567,
1909     658, 598, 604, 568, 558, 559, 576, 565, 597, 566,
1910     579, 564, 578, 577, 572, 571, 570, 599, 557, 596,
1911     654, 655, 593, 590, 635, 651, 652, 636, 637, 638,
1912     639, 646, 640, 649, 653, 642, 647, 643, 648, 641,
1913     645, 644, 650, 0, 634, 595, 612, 628, 629, 613,
1914     614, 615, 616, 623, 617, 626, 630, 619, 624, 620,
1915     625, 618, 622, 621, 627, 0, 611, 588, 591, 605,
1916     562, 600, 563, 592, 581, 586, 587, 584, 585, 582,
1917     583, 575, 574, 34, 34, 34, 36, 35, 657, 607,
1918     594, 603, 561, 580, 0, 0, 0, 0, 0, 0,
1919     660, 0, 0, 0, 0, 312, 0, 0, 0, 0,
1920     0, 0, 0, 0, 0, 0, 0, 281, 0, 0,
1921     0, 453, 0, 0, 0, 276, 272, 275, 257, 110,
1922     116, 114, 113, 115, 111, 112, 109, 117, 123, 118,
1923     122, 120, 121, 119, 108, 107, 124, 46, 47, 153,
1924     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1925     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1926     0, 0, 0, 129, 0, 0, 0, 335, 742, 737,
1927     741, 739, 743, 738, 740, 74, 80, 72, 76, 75,
1928     71, 70, 68, 69, 0, 67, 73, 79, 77, 78,
1929     0, 0, 0, 346, 0, 0, 371, 29, 30, 31,
1930     32, 33, 0, 0, 0, 0, 0, 0, 0, 0,
1931     0, 0, 0, 0, 0, 223, 0, 0, 0, 0,
1932     0, 0, 0, 0, 0, 0, 435, 0, 0, 0,
1933     0, 0, 0, 0, 0, 0, 394, 474, 475, 495,
1934     496, 488, 0, 487, 632, 0, 609, 0, 37, 38,
1935     39, 685, 684, 0, 683, 671, 670, 677, 676, 0,
1936     675, 679, 678, 327, 304, 305, 326, 310, 0, 309,
1937     0, 329, 325, 324, 333, 328, 302, 332, 331, 330,
1938     303, 301, 466, 458, 0, 457, 465, 263, 264, 262,
1939     0, 261, 279, 278, 0, 0, 0, 0, 0, 0,
1940     0, 204, 0, 0, 0, 0, 0, 0, 0, 0,
1941     0, 0, 0, 0, 0, 0, 0, 0, 0, 126,
1942     343, 344, 342, 65, 0, 353, 359, 365, 369, 368,
1943     367, 364, 360, 363, 366, 361, 362, 0, 358, 354,
1944     377, 382, 388, 392, 391, 390, 387, 383, 386, 389,
1945     384, 385, 0, 381, 253, 254, 247, 249, 251, 250,
1946     248, 242, 255, 246, 244, 245, 252, 424, 426, 427,
1947     446, 451, 450, 445, 444, 443, 428, 433, 0, 432,
1948     0, 421, 448, 449, 419, 425, 442, 423, 447, 422,
1949     485, 0, 633, 610, 681, 0, 673, 0, 0, 307,
1950     312, 318, 319, 315, 321, 317, 316, 323, 320, 322,
1951     314, 313, 455, 0, 259, 0, 277, 274, 273, 194,
1952     160, 192, 158, 202, 0, 201, 0, 190, 184, 195,
1953     196, 187, 154, 191, 157, 193, 185, 186, 159, 197,
1954     165, 181, 182, 166, 167, 168, 169, 176, 170, 179,
1955     183, 172, 177, 173, 178, 171, 175, 174, 180, 0,
1956     164, 189, 156, 188, 66, 356, 0, 379, 0, 0,
1957     430, 435, 439, 440, 437, 438, 441, 436, 486, 682,
1958     674, 311, 308, 456, 260, 0, 199, 204, 214, 212,
1959     221, 211, 206, 215, 219, 208, 216, 218, 213, 207,
1960     220, 217, 209, 210, 205, 162, 0, 357, 380, 434,
1961     431, 203, 200, 163
1962 michael 913 };
1963    
1964     /* YYDEFGOTO[NTERM-NUM]. */
1965     static const yytype_int16 yydefgoto[] =
1966     {
1967 michael 967 -1, 1, 24, 900, 901, 1056, 1057, 25, 277, 278,
1968     279, 280, 26, 315, 316, 317, 553, 1164, 1165, 318,
1969     319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
1970     27, 71, 72, 73, 74, 75, 28, 260, 261, 262,
1971     263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
1972     273, 29, 61, 282, 825, 826, 827, 283, 828, 829,
1973     830, 831, 832, 833, 1138, 1439, 1440, 834, 835, 836,
1974     837, 838, 839, 840, 841, 842, 843, 844, 845, 846,
1975     847, 848, 1124, 1404, 1405, 1465, 1406, 1484, 30, 49,
1976     116, 614, 615, 616, 117, 617, 618, 619, 620, 621,
1977     622, 623, 624, 625, 626, 627, 628, 31, 58, 500,
1978     774, 1270, 1271, 501, 502, 503, 1276, 1096, 1097, 504,
1979     505, 32, 56, 468, 469, 470, 471, 472, 473, 474,
1980     475, 754, 1248, 1249, 1378, 1250, 1391, 476, 477, 478,
1981     479, 480, 481, 482, 483, 484, 485, 33, 62, 531,
1982     532, 533, 534, 535, 34, 65, 564, 565, 566, 567,
1983     568, 878, 1317, 1318, 35, 66, 572, 573, 574, 575,
1984     884, 1332, 1333, 36, 50, 119, 649, 650, 651, 120,
1985     652, 653, 654, 655, 656, 657, 658, 659, 941, 1358,
1986     1359, 1449, 1360, 1457, 660, 661, 662, 663, 664, 665,
1987     666, 667, 668, 669, 37, 57, 490, 769, 1264, 1265,
1988     491, 492, 493, 494, 38, 51, 362, 363, 364, 365,
1989     39, 124, 125, 126, 40, 53, 373, 678, 1222, 1223,
1990     374, 375, 376, 377, 41, 185, 186, 187, 188, 189,
1991     190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
1992     200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1993     210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
1994     220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
1995     230, 231, 232, 233, 234, 235, 236, 413, 1035, 1036,
1996     237, 411, 1013, 1014, 238, 239, 240, 241, 242, 42,
1997     55, 443, 444, 445, 446, 447, 744, 1239, 1240, 448,
1998     449, 450, 741, 1233, 1234, 43, 95, 96, 97, 98,
1999     99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
2000     109, 110, 111, 112, 113, 114, 44, 293, 294, 295,
2001     296, 297, 298, 299, 300, 301
2002 michael 913 };
2003    
2004     /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2005     STATE-NUM. */
2006 michael 967 #define YYPACT_NINF -952
2007 michael 913 static const yytype_int16 yypact[] =
2008     {
2009 michael 967 -952, 888, -952, -233, -260, -258, -952, -952, -952, -255,
2010     -952, -253, -952, -952, -952, -952, -250, -237, -952, -952,
2011     -228, -226, -952, -952, -952, -952, -952, -952, -952, -952,
2012     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2013     -952, -952, -952, -952, -952, -952, -952, 302, 766, -136,
2014     -112, -199, 17, -193, 475, -190, -187, -173, -167, 702,
2015     2, -46, -149, 361, 520, -140, -134, -130, -121, -102,
2016     -84, 4, -952, -952, -952, -952, -952, -82, -77, -62,
2017     -57, -51, -33, -30, -25, -16, -5, -4, 20, 24,
2018     37, 40, 46, 49, 59, 286, -952, -952, -952, -952,
2019     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2020     -952, -952, -952, -952, -952, -952, 36, -952, -952, 63,
2021     -952, 19, -952, 70, 7, -952, -952, 159, -952, 71,
2022     76, 79, 84, 91, 98, 104, 105, 107, 108, 109,
2023     112, 113, 114, 116, 117, 118, 121, 125, 126, 130,
2024     132, 136, 140, 142, 144, 146, 148, 153, 155, 157,
2025     161, 164, -952, 165, -952, 169, 170, 171, 172, 173,
2026     181, 184, 185, 194, 196, 198, 199, 200, 201, 204,
2027     206, 209, 210, 212, 213, 23, -952, -952, -952, -952,
2028     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2029     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2030     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2031     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2032     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2033     -952, -952, -952, 552, 784, 93, 88, 217, 215, 216,
2034     220, 224, 225, 226, 227, 231, 232, 234, 235, 239,
2035     133, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2036     -952, -952, -952, -952, 243, 241, 245, 27, -952, -952,
2037     -952, -952, 247, -952, 25, -952, 248, 250, 252, 259,
2038     260, 261, 266, 45, -952, -952, -952, -952, -952, -952,
2039     -952, -952, 271, 269, 270, 272, 276, 278, 279, 280,
2040     -952, 281, 285, 289, 290, 303, -952, -952, -952, -952,
2041     -952, -952, -952, -952, -952, -952, -952, -952, -952, 56,
2042     62, -952, 357, 381, 396, 296, -952, 363, 434, 436,
2043     374, 375, 444, 444, 449, 450, 387, 390, 462, 444,
2044     397, 400, 403, 404, 405, 318, -952, 634, 703, -952,
2045     342, 343, 15, -952, -952, -952, 454, 348, -952, -952,
2046     346, 353, -952, -952, 158, -952, -952, -952, 414, 444,
2047     421, 444, 494, 476, 497, 433, 435, 437, 500, 483,
2048     440, 510, 513, 514, 451, 444, 452, 453, 516, 499,
2049     461, 529, 530, 444, 533, 542, 512, 543, 546, 481,
2050     482, 417, 484, 419, 444, 444, 486, 444, 536, 489,
2051     493, 495, -150, -141, 496, 498, 444, 444, 560, 444,
2052     501, 503, 509, 511, 455, -952, -952, -952, 446, 456,
2053     -952, 457, 459, 44, -952, -952, -952, -952, -952, -952,
2054     -952, 463, 467, 468, 485, 487, -952, 490, 506, 507,
2055     508, 519, 524, 526, 527, 531, 532, 544, 160, -952,
2056     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2057     -952, -952, -952, -952, -952, -952, -952, 548, -952, 550,
2058     -952, 12, -952, -952, -952, 465, -952, 551, 553, 554,
2059     -952, 14, -952, -952, -952, -952, -952, 557, 559, 561,
2060     564, 585, 586, 591, 592, 230, 596, 613, 577, 537,
2061     -952, -952, 640, 643, 549, -952, 574, 555, 556, 562,
2062     563, 32, -952, -952, -952, -952, 623, 630, 631, 665,
2063     632, 633, 444, 575, -952, -952, 681, 639, 685, 688,
2064     689, 690, 691, 582, 693, 565, 694, 695, 589, -952,
2065     590, 593, -952, 594, 9, -952, -952, -952, -952, 601,
2066     607, -952, 33, -952, -952, -952, 604, 614, 615, -952,
2067     616, 619, 620, 624, 625, 189, 628, 629, 635, 636,
2068     637, 638, 641, 642, 644, 646, 647, 651, 654, -952,
2069     656, 610, 618, 627, 655, 660, 661, 662, 663, 664,
2070     667, 669, 670, 671, 223, -952, -952, -952, -952, -952,
2071     -952, -952, -952, -952, -952, -952, -952, -952, -952, 657,
2072     672, 673, 674, 676, 679, 680, 683, 684, 686, -952,
2073     687, 696, 697, 699, 700, 701, 704, 705, 706, 238,
2074     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2075     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2076     730, 741, 659, -952, 668, -952, 746, 747, 707, 711,
2077     -952, 712, 713, 716, 717, 719, 720, 721, 722, 723,
2078     724, 725, 726, 727, 729, 731, 732, 733, 734, 735,
2079     736, 737, 738, 739, 740, 742, 743, 744, 745, 748,
2080     749, 750, 751, 752, 815, 753, 871, 754, 755, 767,
2081     771, 774, 775, 776, 777, 778, 779, 780, 781, 782,
2082     786, 790, 791, 315, 793, 794, 796, 797, 798, 800,
2083     -952, 799, 444, 756, 801, 795, 803, 805, -952, -952,
2084     760, 812, 769, 804, 807, 809, 864, 866, 869, 870,
2085     918, 566, 919, 927, 886, 934, 828, -952, 937, 829,
2086     938, 833, -952, -952, 831, 942, 943, 772, 837, -952,
2087     838, 842, 846, 847, 849, 850, 857, 860, 865, 867,
2088     868, 872, 873, 874, 875, 879, 883, 884, -952, 887,
2089     889, -952, 890, 861, 891, 892, 893, -952, 894, 895,
2090     896, 897, 898, 899, 900, 901, 902, 903, 904, 905,
2091     906, -952, 907, 909, 910, 149, -952, -952, -952, -952,
2092     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2093     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2094     976, 977, 978, 911, -952, 914, 915, 916, 917, 920,
2095     921, 922, -952, 923, 924, 925, 926, 928, 929, 930,
2096     -15, 931, 932, 933, 935, -952, -952, 993, 936, 998,
2097     940, -952, -952, 999, 939, 941, -952, -952, -952, -952,
2098     -952, -952, -952, -952, -952, 444, 444, 444, 444, 444,
2099     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2100     -952, -952, -952, -952, -952, -952, 813, 1022, 444, 1047,
2101     1048, 1056, 1063, 1043, 1066, 1067, 444, 444, 560, 944,
2102     -952, -952, 1050, -13, 1008, 1053, 1054, 1011, 1012, 1013,
2103     1058, 949, 1060, 1061, 1062, 1064, 1085, 1065, 1068, 1023,
2104     1069, 959, -952, 963, 964, -952, -952, 965, 966, 1070,
2105     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2106     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2107     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2108     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2109     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2110     -952, -952, -952, -245, -952, -952, -952, -952, -952, -952,
2111     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2112     -952, -952, -952, -952, -952, -202, -952, -952, -952, -952,
2113     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2114     -952, -952, -952, 560, 560, 560, -952, -952, -952, -952,
2115     -952, -952, -952, -952, 1, 967, 969, 11, 970, 971,
2116     -952, 972, 973, 974, 975, 1106, 979, 980, 981, 982,
2117     983, 984, 985, 986, 987, 988, 989, -952, 990, 1079,
2118     991, -952, 0, 992, 994, 650, 995, -952, -952, -952,
2119     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2120     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2121     1041, 1100, 1059, 1071, 997, 1072, 1073, 1074, 1075, 1076,
2122     1102, 1077, 1104, 1078, 1080, 1081, 1105, 1082, 1000, 1083,
2123     1108, 1084, 1002, -952, 1004, 1005, 1006, -952, -952, -952,
2124     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2125     -952, -952, -952, -952, -174, -952, -952, -952, -952, -952,
2126     1007, 534, 1016, -952, 1024, 621, -952, -952, -952, -952,
2127     -952, -952, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
2128     1033, 1034, 1035, 1036, 1037, -952, 1038, 1039, 1040, 1042,
2129     1044, 1045, 1046, 1049, 1051, 1052, 1152, 1055, 1057, 1086,
2130     1087, 1088, 1089, 1090, 1091, 1092, -952, -952, -952, -952,
2131     -952, -952, -148, -952, -952, 815, -952, 871, -952, -952,
2132     -952, -952, -952, -145, -952, -952, -952, -952, -952, -129,
2133     -952, -952, -952, -952, -952, -952, -952, -952, -117, -952,
2134     447, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2135     -952, -952, -952, -952, -35, -952, -952, -952, -952, -952,
2136     -10, -952, -952, -952, 1170, 772, 1093, 1094, 1095, 1096,
2137     1097, 1153, 1098, 1099, 1101, 1103, 1107, 1109, 1110, 1111,
2138     1112, 1113, 1114, 1115, 1116, 908, 1117, 1118, 1119, -952,
2139     -952, -952, -952, -952, -15, -952, -952, -952, -952, -952,
2140     -952, -952, -952, -952, -952, -952, -952, -8, -952, -952,
2141     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2142     -952, -952, 35, -952, -952, -952, -952, -952, -952, -952,
2143     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2144     -952, -952, -952, -952, -952, -952, -952, -952, 80, -952,
2145     13, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2146     -952, 1070, -952, -952, -952, 1, -952, 11, 447, -952,
2147     1106, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2148     -952, -952, -952, 1079, -952, 0, -952, -952, -952, -952,
2149     -952, -952, -952, -952, 89, -952, 366, -952, -952, -952,
2150     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2151     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2152     -952, -952, -952, -952, -952, -952, -952, -952, -952, 95,
2153     -952, -952, -952, -952, -952, -952, 534, -952, 621, 13,
2154     -952, 1152, -952, -952, -952, -952, -952, -952, -952, -952,
2155     -952, -952, -952, -952, -952, 366, -952, 1153, -952, -952,
2156     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2157     -952, -952, -952, -952, -952, -952, 908, -952, -952, -952,
2158     -952, -952, -952, -952
2159 michael 913 };
2160    
2161     /* YYPGOTO[NTERM-NUM]. */
2162     static const yytype_int16 yypgoto[] =
2163     {
2164 michael 967 -952, -952, -952, -816, -342, -951, -426, -952, -952, 578,
2165     -952, -952, -952, -952, 541, -952, -952, -952, 5, -952,
2166     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2167     -952, -952, 1234, -952, -952, -952, -952, -952, 1122, -952,
2168     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2169     -952, -952, -952, -952, -952, 491, -952, -952, -952, -952,
2170     -952, -952, -952, -952, -952, -952, -176, -952, -952, -952,
2171     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2172     -952, -952, -952, -952, -155, -952, -952, -147, -952, -952,
2173     -952, -952, 708, -952, -952, -952, -952, -952, -952, -952,
2174     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2175     -952, -952, -80, -952, 819, -952, -952, -952, 48, -952,
2176     -952, -952, -952, -952, 853, -952, -952, -952, -952, -952,
2177     -952, -952, -952, -56, -952, -952, -53, -952, -952, -952,
2178     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2179     802, -952, -952, -952, -952, -952, -952, 762, -952, -952,
2180     -952, -952, -952, -119, -952, -952, -952, 757, -952, -952,
2181     -952, -952, -120, -952, -952, -952, -952, 682, -952, -952,
2182     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2183     -116, -952, -952, -115, -952, -952, -952, -952, -952, -952,
2184     -952, -952, -952, -952, -952, -952, -952, -952, -952, -63,
2185     -952, 841, -952, -952, -952, -952, -952, 1021, -952, -952,
2186     -952, -952, 1212, -952, -952, -952, -952, -952, -952, -34,
2187     -952, 968, -952, -952, -952, -952, 1154, -952, -952, -952,
2188     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2189     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2190     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2191     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2192     -952, -952, -952, -952, -952, -952, -952, -952, -952, 111,
2193     -952, -952, -952, 115, -952, -952, -952, -952, -952, -952,
2194     -952, -952, 945, -952, -952, -952, -952, -952, -36, -952,
2195     -952, -952, -952, -952, -32, -952, -952, 1249, -952, -952,
2196     -952, -952, -952, -952, -952, -952, -952, -952, -952, -952,
2197     -952, -952, -952, -952, -952, -952, -952, -952, 1120, -952,
2198     -952, -952, -952, -952, -952, -952
2199 michael 913 };
2200    
2201     /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
2202     positive, shift that token. If negative, reduce the rule which
2203     number is the opposite. If zero, do what YYDEFACT says.
2204     If YYTABLE_NINF, syntax error. */
2205     #define YYTABLE_NINF -1
2206     static const yytype_uint16 yytable[] =
2207     {
2208 michael 967 586, 587, 734, 274, 47, 67, 48, 593, 122, 52,
2209     560, 54, 1231, 486, 59, 495, 359, 1224, 122, 115,
2210     359, 1225, 1237, 1452, 128, 1453, 527, 60, 274, 45,
2211     46, 129, 130, 527, 569, 131, 63, 682, 64, 684,
2212     1454, 68, 132, 118, 1455, 436, 285, 528, 437, 725,
2213     726, 133, 69, 698, 528, 134, 135, 560, 727, 728,
2214     1226, 706, 136, 569, 1227, 121, 137, 138, 139, 496,
2215     140, 127, 717, 718, 243, 720, 141, 244, 1267, 1177,
2216     1178, 1179, 1180, 1181, 731, 732, 286, 735, 1303, 495,
2217     438, 245, 1304, 439, 486, 142, 143, 246, 123, 497,
2218     144, 287, 1228, 1229, 1230, 498, 360, 145, 123, 281,
2219     360, 146, 147, 148, 1370, 284, 149, 1374, 1371, 150,
2220     151, 1375, 275, 288, 329, 289, 70, 290, 291, 152,
2221     330, 561, 331, 1376, 247, 153, 154, 1377, 155, 156,
2222     157, 158, 159, 496, 332, 1379, 292, 275, 440, 1380,
2223     802, 529, 276, 160, 803, 570, 1162, 1163, 529, 369,
2224     369, 451, 161, 333, 162, 163, 441, 164, 499, 487,
2225     165, 166, 361, 497, 167, 804, 361, 276, 561, 498,
2226     452, 334, 530, 337, 570, 168, 453, 805, 338, 530,
2227     248, 249, 250, 251, 252, 253, 254, 255, 562, 806,
2228     861, 488, 1232, 339, 807, 1197, 1198, 169, 340, 170,
2229     454, 455, 1238, 171, 341, 456, 808, 172, 173, 174,
2230     175, 176, 571, 809, 600, 177, 178, 1392, 810, 457,
2231     811, 1393, 342, 1268, 179, 343, 458, 1269, 256, 629,
2232     344, 630, 499, 812, 631, 562, 601, 602, 632, 345,
2233     487, 571, 1394, 603, 1445, 459, 1395, 1456, 1446, 563,
2234     346, 347, 489, 633, 634, 635, 180, 335, 181, 636,
2235     367, 813, 880, 257, 182, 771, 814, 778, 672, 183,
2236     370, 370, 488, 460, 184, 348, 434, 76, 637, 349,
2237     524, 461, 638, 639, 442, 853, 885, 1447, 815, 77,
2238     357, 1448, 350, 67, 302, 351, 563, 747, 543, 462,
2239     816, 352, 817, 818, 353, 371, 371, 819, 463, 464,
2240     78, 79, 585, 640, 354, 641, 80, 358, 81, 1053,
2241     1054, 1055, 604, 605, 606, 366, 378, 607, 642, 68,
2242     303, 379, 1450, 489, 380, 608, 1451, 372, 372, 381,
2243     69, 1466, 465, 466, 258, 1467, 382, 1485, 609, 610,
2244     643, 1486, 285, 383, 895, 896, 897, 898, 899, 384,
2245     385, 1468, 386, 387, 388, 611, 612, 389, 390, 391,
2246     820, 392, 393, 394, 82, 83, 395, 821, 259, 304,
2247     396, 397, 644, 84, 85, 398, 519, 399, 822, 823,
2248     1065, 400, 286, 613, 1469, 401, 645, 402, 824, 403,
2249     467, 404, 1142, 405, 86, 87, 1470, 287, 406, 646,
2250     407, 679, 408, 766, 70, 305, 409, 306, 307, 410,
2251     412, 88, 89, 1471, 414, 415, 416, 417, 418, 288,
2252     1472, 289, 90, 290, 291, 1473, 419, 1474, 733, 420,
2253     421, 91, 788, 789, 790, 791, 792, 793, 794, 422,
2254     1475, 423, 292, 424, 425, 426, 427, 1381, 1382, 428,
2255     308, 429, 309, 310, 430, 431, 128, 432, 433, 506,
2256     507, 508, 647, 129, 130, 509, 929, 131, 311, 510,
2257     511, 512, 513, 1476, 132, 648, 514, 515, 1383, 516,
2258     517, 951, 1194, 133, 518, 521, 522, 134, 135, 1477,
2259     523, 526, 576, 536, 136, 537, 1384, 538, 137, 138,
2260     139, 302, 140, 1385, 539, 540, 541, 1478, 141, 1479,
2261     1480, 542, 312, 545, 546, 547, 577, 548, 92, 93,
2262     94, 549, 1386, 550, 551, 552, 554, 142, 143, 355,
2263     555, 578, 144, 436, 556, 557, 437, 303, 579, 145,
2264     313, 314, 580, 146, 147, 148, 558, 581, 149, 582,
2265     1387, 150, 151, 583, 584, 802, 1184, 585, 1388, 803,
2266     599, 152, 588, 589, 1192, 1193, 590, 153, 154, 591,
2267     155, 156, 157, 158, 159, 592, 594, 1481, 438, 595,
2268     804, 439, 596, 597, 598, 160, 304, 670, 671, 674,
2269     675, 676, 805, 681, 161, 1482, 162, 163, 677, 164,
2270     683, 1389, 165, 166, 806, 1483, 167, 685, 1306, 807,
2271     687, 686, 688, 691, 689, 600, 690, 168, 692, 693,
2272     1390, 808, 305, 694, 306, 307, 695, 696, 809, 701,
2273     697, 699, 700, 810, 702, 811, 440, 601, 602, 169,
2274     703, 170, 704, 705, 603, 171, 707, 709, 812, 172,
2275     173, 174, 175, 176, 441, 708, 710, 177, 178, 711,
2276     712, 713, 714, 715, 716, 719, 179, 308, 722, 309,
2277     310, 721, 723, 733, 724, 729, 813, 730, 872, 1082,
2278     736, 814, 737, 247, 629, 311, 630, 1307, 738, 631,
2279     739, 742, 780, 632, 781, 1321, 782, 740, 180, 783,
2280     181, 743, 745, 815, 746, 749, 182, 773, 633, 634,
2281     635, 183, 750, 751, 636, 816, 184, 817, 818, 1308,
2282     784, 785, 819, 604, 605, 606, 786, 787, 607, 312,
2283     752, 795, 753, 637, 1309, 755, 608, 638, 639, 248,
2284     249, 250, 251, 252, 253, 254, 255, 76, 796, 609,
2285     610, 756, 757, 758, 1310, 1311, 797, 313, 314, 77,
2286     1312, 1313, 1314, 1315, 759, 451, 611, 612, 640, 760,
2287     641, 761, 762, 1316, 1322, 799, 763, 764, 800, 798,
2288     78, 79, 442, 642, 452, 820, 80, 256, 81, 765,
2289     453, 801, 821, 768, 613, 770, 775, 849, 776, 777,
2290     858, 850, 855, 822, 823, 643, 1323, 851, 852, 856,
2291     857, 859, 860, 824, 454, 455, 863, 862, 864, 456,
2292     865, 1324, 257, 866, 867, 868, 869, 870, 871, 873,
2293     874, 875, 876, 457, 1274, 525, 559, 644, 877, 879,
2294     458, 1325, 1326, 882, 82, 83, 887, 1327, 1328, 1329,
2295     1330, 645, 883, 84, 85, 916, 888, 889, 890, 459,
2296     1331, 891, 892, 917, 646, 953, 893, 894, 2, 3,
2297     902, 903, 918, 4, 86, 87, 954, 904, 905, 906,
2298     907, 957, 958, 908, 909, 1095, 910, 460, 911, 912,
2299     5, 88, 89, 913, 6, 461, 914, 7, 915, 931,
2300     919, 955, 90, 258, 8, 920, 921, 922, 923, 924,
2301     956, 91, 925, 462, 926, 927, 928, 932, 933, 934,
2302     9, 935, 463, 464, 936, 937, 1182, 647, 938, 939,
2303     1068, 940, 942, 10, 11, 1066, 12, 259, 1069, 1071,
2304     648, 943, 944, 13, 945, 946, 947, 1072, 1073, 948,
2305     949, 950, 959, 960, 961, 962, 465, 466, 963, 964,
2306     14, 965, 966, 967, 968, 969, 970, 971, 972, 973,
2307     15, 974, 16, 975, 976, 977, 978, 979, 980, 981,
2308     982, 983, 984, 1074, 985, 986, 987, 988, 1076, 17,
2309     989, 990, 991, 992, 993, 1015, 1037, 1038, 92, 93,
2310     94, 994, 995, 996, 997, 998, 18, 999, 1000, 1039,
2311     1001, 1002, 1003, 1040, 467, 1004, 1041, 1042, 1043, 1044,
2312     1045, 1046, 1047, 1048, 1049, 1005, 1006, 1007, 1050, 1008,
2313     1009, 1010, 1051, 1052, 1011, 1058, 1059, 1012, 1060, 1061,
2314     1062, 19, 1063, 1077, 1064, 1078, 1067, 1070, 1079, 1080,
2315     20, 21, 1075, 1081, 1083, 22, 23, 1016, 1017, 1018,
2316     1019, 1020, 1084, 1021, 1022, 1085, 1023, 1024, 1025, 1086,
2317     1087, 1026, 1088, 1090, 1089, 1091, 1092, 1093, 1094, 1098,
2318     1099, 1027, 1028, 1029, 1100, 1030, 1031, 1032, 1101, 1102,
2319     1033, 1103, 1104, 1034, 1420, 1421, 1422, 1423, 1424, 1105,
2320     1425, 1426, 1106, 1427, 1428, 1429, 1120, 1107, 1430, 1108,
2321     1109, 1144, 1145, 1146, 1110, 1111, 1112, 1113, 1431, 1432,
2322     1433, 1114, 1434, 1435, 1436, 1115, 1116, 1437, 1170, 1117,
2323     1438, 1118, 1119, 1172, 1174, 1183, 1121, 1122, 1123, 1125,
2324     1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
2325     1136, 1137, 1139, 1147, 1140, 1141, 1148, 1149, 1150, 1151,
2326     1185, 1186, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1187,
2327     1159, 1160, 1161, 1166, 1167, 1168, 1188, 1169, 1189, 1190,
2328     1191, 1171, 1173, 1176, 1175, 1196, 1195, 1199, 1200, 1201,
2329     1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1211, 1210,
2330     1212, 1216, 1214, 1213, 1215, 1217, 1218, 1219, 1220, 1235,
2331     1221, 1236, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1263,
2332     1277, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259,
2333     1260, 1261, 1262, 1266, 1272, 1278, 1273, 1287, 1279, 1289,
2334     1293, 1275, 1281, 1297, 1299, 1295, 1300, 1301, 1302, 1305,
2335     1280, 1282, 1283, 1284, 1285, 1286, 1288, 1290, 1319, 1291,
2336     1292, 1294, 1296, 1298, 1357, 1403, 1320, 1334, 1335, 1336,
2337     1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346,
2338     1347, 1348, 1349, 1396, 1350, 336, 1351, 1352, 1353, 1444,
2339     1493, 1354, 1492, 1355, 1356, 1464, 1143, 1361, 1491, 1362,
2340     779, 767, 930, 1397, 1462, 1461, 881, 1487, 1488, 886,
2341     1463, 952, 772, 854, 1489, 1490, 368, 1458, 1373, 435,
2342     1372, 1460, 680, 1459, 356, 0, 0, 0, 1363, 1364,
2343     1365, 1366, 1367, 1368, 1369, 1398, 1399, 1400, 1401, 1402,
2344     1407, 1408, 0, 1409, 0, 1410, 0, 0, 0, 1411,
2345     0, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1441,
2346     1442, 1443, 520, 673, 0, 0, 0, 0, 748, 0,
2347 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2348     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2349 michael 967 0, 0, 0, 544
2350 michael 913 };
2351    
2352     static const yytype_int16 yycheck[] =
2353     {
2354 michael 967 342, 343, 428, 1, 264, 1, 264, 349, 1, 264,
2355     1, 264, 11, 1, 264, 1, 1, 262, 1, 155,
2356     1, 266, 11, 10, 1, 12, 1, 264, 1, 262,
2357     263, 8, 9, 1, 1, 12, 264, 379, 264, 381,
2358     27, 37, 19, 155, 31, 1, 1, 22, 4, 199,
2359     200, 28, 48, 395, 22, 32, 33, 1, 199, 200,
2360     262, 403, 39, 1, 266, 264, 43, 44, 45, 55,
2361     47, 264, 414, 415, 264, 417, 53, 264, 78, 895,
2362     896, 897, 898, 899, 426, 427, 41, 429, 262, 1,
2363     46, 264, 266, 49, 1, 72, 73, 264, 91, 85,
2364     77, 56, 1053, 1054, 1055, 91, 91, 84, 91, 155,
2365     91, 88, 89, 90, 262, 264, 93, 262, 266, 96,
2366     97, 266, 120, 78, 264, 80, 122, 82, 83, 106,
2367     264, 122, 262, 262, 1, 112, 113, 266, 115, 116,
2368     117, 118, 119, 55, 265, 262, 101, 120, 104, 266,
2369     1, 126, 150, 130, 5, 122, 171, 172, 126, 1,
2370     1, 1, 139, 265, 141, 142, 122, 144, 154, 157,
2371     147, 148, 157, 85, 151, 26, 157, 150, 122, 91,
2372     20, 265, 157, 265, 122, 162, 26, 38, 265, 157,
2373     57, 58, 59, 60, 61, 62, 63, 64, 189, 50,
2374     542, 189, 201, 265, 55, 218, 219, 184, 265, 186,
2375     50, 51, 201, 190, 265, 55, 67, 194, 195, 196,
2376     197, 198, 189, 74, 1, 202, 203, 262, 79, 69,
2377     81, 266, 265, 233, 211, 265, 76, 237, 105, 1,
2378     265, 3, 154, 94, 6, 189, 23, 24, 10, 265,
2379     157, 189, 262, 30, 262, 95, 266, 244, 266, 250,
2380     265, 265, 250, 25, 26, 27, 243, 263, 245, 31,
2381     263, 122, 263, 140, 251, 263, 127, 263, 263, 256,
2382     122, 122, 189, 123, 261, 265, 263, 1, 50, 265,
2383     263, 131, 54, 55, 250, 263, 263, 262, 149, 13,
2384     264, 266, 265, 1, 1, 265, 250, 263, 263, 149,
2385     161, 265, 163, 164, 265, 157, 157, 168, 158, 159,
2386     34, 35, 133, 85, 265, 87, 40, 264, 42, 14,
2387     15, 16, 109, 110, 111, 265, 265, 114, 100, 37,
2388     37, 265, 262, 250, 265, 122, 266, 189, 189, 265,
2389     48, 262, 192, 193, 221, 266, 265, 262, 135, 136,
2390     122, 266, 1, 265, 175, 176, 177, 178, 179, 265,
2391     265, 5, 265, 265, 265, 152, 153, 265, 265, 265,
2392     231, 265, 265, 265, 98, 99, 265, 238, 255, 86,
2393     265, 265, 154, 107, 108, 265, 263, 265, 249, 250,
2394     742, 265, 41, 180, 38, 265, 168, 265, 259, 265,
2395     250, 265, 263, 265, 128, 129, 50, 56, 265, 181,
2396     265, 263, 265, 263, 122, 122, 265, 124, 125, 265,
2397     265, 145, 146, 67, 265, 265, 265, 265, 265, 78,
2398     74, 80, 156, 82, 83, 79, 265, 81, 133, 265,
2399     265, 165, 222, 223, 224, 225, 226, 227, 228, 265,
2400     94, 265, 101, 265, 265, 265, 265, 20, 21, 265,
2401     167, 265, 169, 170, 265, 265, 1, 265, 265, 262,
2402     265, 265, 244, 8, 9, 265, 263, 12, 185, 265,
2403     265, 265, 265, 127, 19, 257, 265, 265, 51, 265,
2404     265, 263, 928, 28, 265, 262, 265, 32, 33, 143,
2405     265, 264, 155, 265, 39, 265, 69, 265, 43, 44,
2406     45, 1, 47, 76, 265, 265, 265, 161, 53, 163,
2407     164, 265, 229, 262, 265, 265, 155, 265, 252, 253,
2408     254, 265, 95, 265, 265, 265, 265, 72, 73, 263,
2409     265, 155, 77, 1, 265, 265, 4, 37, 262, 84,
2410     257, 258, 199, 88, 89, 90, 263, 133, 93, 133,
2411     123, 96, 97, 199, 199, 1, 918, 133, 131, 5,
2412     262, 106, 133, 133, 926, 927, 199, 112, 113, 199,
2413     115, 116, 117, 118, 119, 133, 199, 231, 46, 199,
2414     26, 49, 199, 199, 199, 130, 86, 265, 265, 155,
2415     262, 265, 38, 199, 139, 249, 141, 142, 265, 144,
2416     199, 174, 147, 148, 50, 259, 151, 133, 94, 55,
2417     133, 155, 199, 133, 199, 1, 199, 162, 155, 199,
2418     193, 67, 122, 133, 124, 125, 133, 133, 74, 133,
2419     199, 199, 199, 79, 155, 81, 104, 23, 24, 184,
2420     199, 186, 133, 133, 30, 190, 133, 155, 94, 194,
2421     195, 196, 197, 198, 122, 133, 133, 202, 203, 133,
2422     199, 199, 265, 199, 265, 199, 211, 167, 199, 169,
2423     170, 155, 199, 133, 199, 199, 122, 199, 133, 133,
2424     199, 127, 199, 1, 1, 185, 3, 173, 199, 6,
2425     199, 265, 155, 10, 155, 94, 155, 262, 243, 155,
2426     245, 265, 265, 149, 265, 262, 251, 262, 25, 26,
2427     27, 256, 265, 265, 31, 161, 261, 163, 164, 205,
2428     155, 155, 168, 109, 110, 111, 155, 155, 114, 229,
2429     265, 155, 265, 50, 220, 265, 122, 54, 55, 57,
2430     58, 59, 60, 61, 62, 63, 64, 1, 155, 135,
2431     136, 265, 265, 265, 240, 241, 199, 257, 258, 13,
2432     246, 247, 248, 249, 265, 1, 152, 153, 85, 265,
2433     87, 265, 265, 259, 173, 155, 265, 265, 155, 262,
2434     34, 35, 250, 100, 20, 231, 40, 105, 42, 265,
2435     26, 262, 238, 265, 180, 265, 265, 262, 265, 265,
2436     155, 265, 199, 249, 250, 122, 205, 265, 265, 199,
2437     199, 199, 199, 259, 50, 51, 155, 262, 199, 55,
2438     155, 220, 140, 155, 155, 155, 155, 265, 155, 155,
2439     155, 262, 262, 69, 204, 277, 315, 154, 265, 265,
2440     76, 240, 241, 262, 98, 99, 262, 246, 247, 248,
2441     249, 168, 265, 107, 108, 265, 262, 262, 262, 95,
2442     259, 262, 262, 265, 181, 155, 262, 262, 0, 1,
2443     262, 262, 265, 5, 128, 129, 155, 262, 262, 262,
2444     262, 155, 155, 262, 262, 133, 262, 123, 262, 262,
2445     22, 145, 146, 262, 26, 131, 262, 29, 262, 262,
2446     265, 262, 156, 221, 36, 265, 265, 265, 265, 265,
2447     262, 165, 265, 149, 265, 265, 265, 265, 265, 265,
2448     52, 265, 158, 159, 265, 265, 133, 244, 265, 265,
2449     155, 265, 265, 65, 66, 199, 68, 255, 155, 199,
2450     257, 265, 265, 75, 265, 265, 265, 155, 199, 265,
2451     265, 265, 265, 262, 262, 262, 192, 193, 262, 262,
2452     92, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2453     102, 262, 104, 262, 262, 262, 262, 262, 262, 262,
2454     262, 262, 262, 199, 262, 262, 262, 262, 199, 121,
2455     262, 262, 262, 262, 262, 262, 262, 262, 252, 253,
2456     254, 206, 207, 208, 209, 210, 138, 212, 213, 262,
2457     215, 216, 217, 262, 250, 220, 262, 262, 262, 262,
2458     262, 262, 262, 262, 262, 230, 231, 232, 262, 234,
2459     235, 236, 262, 262, 239, 262, 262, 242, 262, 262,
2460     262, 173, 262, 199, 265, 199, 265, 262, 199, 199,
2461     182, 183, 265, 155, 155, 187, 188, 206, 207, 208,
2462     209, 210, 155, 212, 213, 199, 215, 216, 217, 155,
2463     262, 220, 155, 155, 265, 262, 265, 155, 155, 262,
2464     262, 230, 231, 232, 262, 234, 235, 236, 262, 262,
2465     239, 262, 262, 242, 206, 207, 208, 209, 210, 262,
2466     212, 213, 262, 215, 216, 217, 265, 262, 220, 262,
2467     262, 155, 155, 155, 262, 262, 262, 262, 230, 231,
2468     232, 262, 234, 235, 236, 262, 262, 239, 155, 262,
2469     242, 262, 262, 155, 155, 133, 265, 265, 265, 265,
2470     265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2471     265, 265, 265, 262, 265, 265, 262, 262, 262, 262,
2472     133, 133, 262, 262, 262, 262, 262, 262, 262, 133,
2473     262, 262, 262, 262, 262, 262, 133, 262, 155, 133,
2474     133, 265, 262, 262, 265, 155, 262, 199, 155, 155,
2475     199, 199, 199, 155, 265, 155, 155, 155, 133, 155,
2476     155, 262, 199, 155, 155, 262, 262, 262, 262, 262,
2477     160, 262, 262, 262, 262, 262, 262, 262, 132, 160,
2478     199, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2479     262, 262, 262, 262, 262, 155, 262, 155, 199, 155,
2480     155, 266, 265, 155, 262, 265, 262, 262, 262, 262,
2481     199, 199, 199, 199, 199, 199, 199, 199, 262, 199,
2482     199, 199, 199, 199, 132, 132, 262, 262, 262, 262,
2483     262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2484     262, 262, 262, 133, 262, 71, 262, 262, 262, 1304,
2485     1486, 262, 1467, 262, 262, 1395, 825, 262, 1465, 262,
2486     501, 468, 614, 1275, 1380, 1378, 564, 1446, 1448, 572,
2487     1393, 649, 491, 531, 1449, 1451, 124, 1371, 1227, 185,
2488     1225, 1377, 374, 1375, 95, -1, -1, -1, 262, 262,
2489     262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2490     262, 262, -1, 262, -1, 262, -1, -1, -1, 262,
2491     -1, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2492     262, 262, 260, 362, -1, -1, -1, -1, 443, -1,
2493 michael 913 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2494     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2495 michael 967 -1, -1, -1, 293
2496 michael 913 };
2497    
2498     /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2499     symbol of state STATE-NUM. */
2500     static const yytype_uint16 yystos[] =
2501     {
2502 michael 967 0, 268, 0, 1, 5, 22, 26, 29, 36, 52,
2503     65, 66, 68, 75, 92, 102, 104, 121, 138, 173,
2504     182, 183, 187, 188, 269, 274, 279, 297, 303, 318,
2505     355, 374, 388, 414, 421, 431, 440, 471, 481, 487,
2506     491, 501, 566, 582, 603, 262, 263, 264, 264, 356,
2507     441, 482, 264, 492, 264, 567, 389, 472, 375, 264,
2508     264, 319, 415, 264, 264, 422, 432, 1, 37, 48,
2509     122, 298, 299, 300, 301, 302, 1, 13, 34, 35,
2510 michael 913 40, 42, 98, 99, 107, 108, 128, 129, 145, 146,
2511 michael 967 156, 165, 252, 253, 254, 583, 584, 585, 586, 587,
2512     588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
2513     598, 599, 600, 601, 602, 155, 357, 361, 155, 442,
2514     446, 264, 1, 91, 488, 489, 490, 264, 1, 8,
2515 michael 913 9, 12, 19, 28, 32, 33, 39, 43, 44, 45,
2516     47, 53, 72, 73, 77, 84, 88, 89, 90, 93,
2517     96, 97, 106, 112, 113, 115, 116, 117, 118, 119,
2518 michael 967 130, 139, 141, 142, 144, 147, 148, 151, 162, 184,
2519     186, 190, 194, 195, 196, 197, 198, 202, 203, 211,
2520     243, 245, 251, 256, 261, 502, 503, 504, 505, 506,
2521     507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
2522     517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
2523     527, 528, 529, 530, 531, 532, 533, 534, 535, 536,
2524     537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
2525     547, 548, 549, 550, 551, 552, 553, 557, 561, 562,
2526     563, 564, 565, 264, 264, 264, 264, 1, 57, 58,
2527     59, 60, 61, 62, 63, 64, 105, 140, 221, 255,
2528     304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
2529     314, 315, 316, 317, 1, 120, 150, 275, 276, 277,
2530     278, 155, 320, 324, 264, 1, 41, 56, 78, 80,
2531     82, 83, 101, 604, 605, 606, 607, 608, 609, 610,
2532     611, 612, 1, 37, 86, 122, 124, 125, 167, 169,
2533     170, 185, 229, 257, 258, 280, 281, 282, 286, 287,
2534     288, 289, 290, 291, 292, 293, 294, 295, 296, 264,
2535     264, 262, 265, 265, 265, 263, 299, 265, 265, 265,
2536     265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2537     265, 265, 265, 265, 265, 263, 584, 264, 264, 1,
2538     91, 157, 483, 484, 485, 486, 265, 263, 489, 1,
2539     122, 157, 189, 493, 497, 498, 499, 500, 265, 265,
2540     265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2541     265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2542     265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2543     265, 558, 265, 554, 265, 265, 265, 265, 265, 265,
2544     265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2545     265, 265, 265, 265, 263, 503, 1, 4, 46, 49,
2546     104, 122, 250, 568, 569, 570, 571, 572, 576, 577,
2547     578, 1, 20, 26, 50, 51, 55, 69, 76, 95,
2548     123, 131, 149, 158, 159, 192, 193, 250, 390, 391,
2549     392, 393, 394, 395, 396, 397, 404, 405, 406, 407,
2550     408, 409, 410, 411, 412, 413, 1, 157, 189, 250,
2551     473, 477, 478, 479, 480, 1, 55, 85, 91, 154,
2552     376, 380, 381, 382, 386, 387, 262, 265, 265, 265,
2553     265, 265, 265, 265, 265, 265, 265, 265, 265, 263,
2554     305, 262, 265, 265, 263, 276, 264, 1, 22, 126,
2555     157, 416, 417, 418, 419, 420, 265, 265, 265, 265,
2556     265, 265, 265, 263, 605, 262, 265, 265, 265, 265,
2557     265, 265, 265, 283, 265, 265, 265, 265, 263, 281,
2558     1, 122, 189, 250, 423, 424, 425, 426, 427, 1,
2559     122, 189, 433, 434, 435, 436, 155, 155, 155, 262,
2560     199, 133, 133, 199, 199, 133, 271, 271, 133, 133,
2561     199, 199, 133, 271, 199, 199, 199, 199, 199, 262,
2562     1, 23, 24, 30, 109, 110, 111, 114, 122, 135,
2563     136, 152, 153, 180, 358, 359, 360, 362, 363, 364,
2564     365, 366, 367, 368, 369, 370, 371, 372, 373, 1,
2565     3, 6, 10, 25, 26, 27, 31, 50, 54, 55,
2566     85, 87, 100, 122, 154, 168, 181, 244, 257, 443,
2567     444, 445, 447, 448, 449, 450, 451, 452, 453, 454,
2568     461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
2569     265, 265, 263, 484, 155, 262, 265, 265, 494, 263,
2570     498, 199, 271, 199, 271, 133, 155, 133, 199, 199,
2571     199, 133, 155, 199, 133, 133, 133, 199, 271, 199,
2572     199, 133, 155, 199, 133, 133, 271, 133, 133, 155,
2573     133, 133, 199, 199, 265, 199, 265, 271, 271, 199,
2574     271, 155, 199, 199, 199, 199, 200, 199, 200, 199,
2575     199, 271, 271, 133, 273, 271, 199, 199, 199, 199,
2576     262, 579, 265, 265, 573, 265, 265, 263, 569, 262,
2577     265, 265, 265, 265, 398, 265, 265, 265, 265, 265,
2578     265, 265, 265, 265, 265, 265, 263, 391, 265, 474,
2579     265, 263, 478, 262, 377, 265, 265, 265, 263, 381,
2580     155, 155, 155, 155, 155, 155, 155, 155, 222, 223,
2581     224, 225, 226, 227, 228, 155, 155, 199, 262, 155,
2582     155, 262, 1, 5, 26, 38, 50, 55, 67, 74,
2583     79, 81, 94, 122, 127, 149, 161, 163, 164, 168,
2584     231, 238, 249, 250, 259, 321, 322, 323, 325, 326,
2585     327, 328, 329, 330, 334, 335, 336, 337, 338, 339,
2586     340, 341, 342, 343, 344, 345, 346, 347, 348, 262,
2587     265, 265, 265, 263, 417, 199, 199, 199, 155, 199,
2588     199, 271, 262, 155, 199, 155, 155, 155, 155, 155,
2589     265, 155, 133, 155, 155, 262, 262, 265, 428, 265,
2590     263, 424, 262, 265, 437, 263, 434, 262, 262, 262,
2591     262, 262, 262, 262, 262, 175, 176, 177, 178, 179,
2592     270, 271, 262, 262, 262, 262, 262, 262, 262, 262,
2593     262, 262, 262, 262, 262, 262, 265, 265, 265, 265,
2594     265, 265, 265, 265, 265, 265, 265, 265, 265, 263,
2595     359, 262, 265, 265, 265, 265, 265, 265, 265, 265,
2596     265, 455, 265, 265, 265, 265, 265, 265, 265, 265,
2597     265, 263, 444, 155, 155, 262, 262, 155, 155, 265,
2598 michael 913 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2599     262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2600     262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2601 michael 967 262, 262, 262, 262, 206, 207, 208, 209, 210, 212,
2602     213, 215, 216, 217, 220, 230, 231, 232, 234, 235,
2603     236, 239, 242, 559, 560, 262, 206, 207, 208, 209,
2604     210, 212, 213, 215, 216, 217, 220, 230, 231, 232,
2605     234, 235, 236, 239, 242, 555, 556, 262, 262, 262,
2606 michael 913 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2607 michael 967 262, 262, 262, 14, 15, 16, 272, 273, 262, 262,
2608     262, 262, 262, 262, 265, 271, 199, 265, 155, 155,
2609     262, 199, 155, 199, 199, 265, 199, 199, 199, 199,
2610     199, 155, 133, 155, 155, 199, 155, 262, 155, 265,
2611     155, 262, 265, 155, 155, 133, 384, 385, 262, 262,
2612     262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2613     262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2614     265, 265, 265, 265, 349, 265, 265, 265, 265, 265,
2615     265, 265, 265, 265, 265, 265, 265, 265, 331, 265,
2616     265, 265, 263, 322, 155, 155, 155, 262, 262, 262,
2617     262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2618     262, 262, 171, 172, 284, 285, 262, 262, 262, 262,
2619     155, 265, 155, 262, 155, 265, 262, 270, 270, 270,
2620     270, 270, 133, 133, 271, 133, 133, 133, 133, 155,
2621     133, 133, 271, 271, 273, 262, 155, 218, 219, 199,
2622     155, 155, 199, 199, 199, 155, 265, 155, 155, 155,
2623     155, 133, 155, 155, 199, 155, 262, 262, 262, 262,
2624     262, 160, 495, 496, 262, 266, 262, 266, 272, 272,
2625     272, 11, 201, 580, 581, 262, 262, 11, 201, 574,
2626     575, 262, 262, 262, 262, 262, 262, 132, 399, 400,
2627     402, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2628     262, 262, 262, 160, 475, 476, 262, 78, 233, 237,
2629     378, 379, 262, 262, 204, 266, 383, 199, 155, 199,
2630     199, 265, 199, 199, 199, 199, 199, 155, 199, 155,
2631     199, 199, 199, 155, 199, 265, 199, 155, 199, 262,
2632     262, 262, 262, 262, 266, 262, 94, 173, 205, 220,
2633     240, 241, 246, 247, 248, 249, 259, 429, 430, 262,
2634     262, 94, 173, 205, 220, 240, 241, 246, 247, 248,
2635     249, 259, 438, 439, 262, 262, 262, 262, 262, 262,
2636     262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2637     262, 262, 262, 262, 262, 262, 262, 132, 456, 457,
2638     459, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2639     262, 266, 560, 556, 262, 266, 262, 266, 401, 262,
2640     266, 20, 21, 51, 69, 76, 95, 123, 131, 174,
2641     193, 403, 262, 266, 262, 266, 133, 385, 262, 262,
2642     262, 262, 262, 132, 350, 351, 353, 262, 262, 262,
2643     262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
2644     206, 207, 208, 209, 210, 212, 213, 215, 216, 217,
2645     220, 230, 231, 232, 234, 235, 236, 239, 242, 332,
2646     333, 262, 262, 262, 285, 262, 266, 262, 266, 458,
2647     262, 266, 10, 12, 27, 31, 244, 460, 496, 581,
2648     575, 403, 400, 476, 379, 352, 262, 266, 5, 38,
2649     50, 67, 74, 79, 81, 94, 127, 143, 161, 163,
2650     164, 231, 249, 259, 354, 262, 266, 430, 439, 460,
2651     457, 354, 351, 333
2652 michael 913 };
2653    
2654     #define yyerrok (yyerrstatus = 0)
2655     #define yyclearin (yychar = YYEMPTY)
2656     #define YYEMPTY (-2)
2657     #define YYEOF 0
2658    
2659     #define YYACCEPT goto yyacceptlab
2660     #define YYABORT goto yyabortlab
2661     #define YYERROR goto yyerrorlab
2662    
2663    
2664     /* Like YYERROR except do call yyerror. This remains here temporarily
2665     to ease the transition to the new meaning of YYERROR, for GCC.
2666     Once GCC version 2 has supplanted version 1, this can go. */
2667    
2668     #define YYFAIL goto yyerrlab
2669    
2670     #define YYRECOVERING() (!!yyerrstatus)
2671    
2672     #define YYBACKUP(Token, Value) \
2673     do \
2674     if (yychar == YYEMPTY && yylen == 1) \
2675     { \
2676     yychar = (Token); \
2677     yylval = (Value); \
2678     yytoken = YYTRANSLATE (yychar); \
2679     YYPOPSTACK (1); \
2680     goto yybackup; \
2681     } \
2682     else \
2683     { \
2684     yyerror (YY_("syntax error: cannot back up")); \
2685     YYERROR; \
2686     } \
2687     while (YYID (0))
2688    
2689    
2690     #define YYTERROR 1
2691     #define YYERRCODE 256
2692    
2693    
2694     /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2695     If N is 0, then set CURRENT to the empty location which ends
2696     the previous symbol: RHS[0] (always defined). */
2697    
2698     #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2699     #ifndef YYLLOC_DEFAULT
2700     # define YYLLOC_DEFAULT(Current, Rhs, N) \
2701     do \
2702     if (YYID (N)) \
2703     { \
2704     (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2705     (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2706     (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2707     (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2708     } \
2709     else \
2710     { \
2711     (Current).first_line = (Current).last_line = \
2712     YYRHSLOC (Rhs, 0).last_line; \
2713     (Current).first_column = (Current).last_column = \
2714     YYRHSLOC (Rhs, 0).last_column; \
2715     } \
2716     while (YYID (0))
2717     #endif
2718    
2719    
2720     /* YY_LOCATION_PRINT -- Print the location on the stream.
2721     This macro was not mandated originally: define only if we know
2722     we won't break user code: when these are the locations we know. */
2723    
2724     #ifndef YY_LOCATION_PRINT
2725     # if YYLTYPE_IS_TRIVIAL
2726     # define YY_LOCATION_PRINT(File, Loc) \
2727     fprintf (File, "%d.%d-%d.%d", \
2728     (Loc).first_line, (Loc).first_column, \
2729     (Loc).last_line, (Loc).last_column)
2730     # else
2731     # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2732     # endif
2733     #endif
2734    
2735    
2736     /* YYLEX -- calling `yylex' with the right arguments. */
2737    
2738     #ifdef YYLEX_PARAM
2739     # define YYLEX yylex (YYLEX_PARAM)
2740     #else
2741     # define YYLEX yylex ()
2742     #endif
2743    
2744     /* Enable debugging if requested. */
2745     #if YYDEBUG
2746    
2747     # ifndef YYFPRINTF
2748     # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2749     # define YYFPRINTF fprintf
2750     # endif
2751    
2752     # define YYDPRINTF(Args) \
2753     do { \
2754     if (yydebug) \
2755     YYFPRINTF Args; \
2756     } while (YYID (0))
2757    
2758     # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2759     do { \
2760     if (yydebug) \
2761     { \
2762     YYFPRINTF (stderr, "%s ", Title); \
2763     yy_symbol_print (stderr, \
2764     Type, Value); \
2765     YYFPRINTF (stderr, "\n"); \
2766     } \
2767     } while (YYID (0))
2768    
2769    
2770     /*--------------------------------.
2771     | Print this symbol on YYOUTPUT. |
2772     `--------------------------------*/
2773    
2774     /*ARGSUSED*/
2775     #if (defined __STDC__ || defined __C99__FUNC__ \
2776     || defined __cplusplus || defined _MSC_VER)
2777     static void
2778     yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2779     #else
2780     static void
2781     yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2782     FILE *yyoutput;
2783     int yytype;
2784     YYSTYPE const * const yyvaluep;
2785     #endif
2786     {
2787     if (!yyvaluep)
2788     return;
2789     # ifdef YYPRINT
2790     if (yytype < YYNTOKENS)
2791     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2792     # else
2793     YYUSE (yyoutput);
2794     # endif
2795     switch (yytype)
2796     {
2797     default:
2798     break;
2799     }
2800     }
2801    
2802    
2803     /*--------------------------------.
2804     | Print this symbol on YYOUTPUT. |
2805     `--------------------------------*/
2806    
2807     #if (defined __STDC__ || defined __C99__FUNC__ \
2808     || defined __cplusplus || defined _MSC_VER)
2809     static void
2810     yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2811     #else
2812     static void
2813     yy_symbol_print (yyoutput, yytype, yyvaluep)
2814     FILE *yyoutput;
2815     int yytype;
2816     YYSTYPE const * const yyvaluep;
2817     #endif
2818     {
2819     if (yytype < YYNTOKENS)
2820     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2821     else
2822     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2823    
2824     yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2825     YYFPRINTF (yyoutput, ")");
2826     }
2827    
2828     /*------------------------------------------------------------------.
2829     | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2830     | TOP (included). |
2831     `------------------------------------------------------------------*/
2832    
2833     #if (defined __STDC__ || defined __C99__FUNC__ \
2834     || defined __cplusplus || defined _MSC_VER)
2835     static void
2836 michael 967 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2837 michael 913 #else
2838     static void
2839 michael 967 yy_stack_print (yybottom, yytop)
2840     yytype_int16 *yybottom;
2841     yytype_int16 *yytop;
2842 michael 913 #endif
2843     {
2844     YYFPRINTF (stderr, "Stack now");
2845 michael 967 for (; yybottom <= yytop; yybottom++)
2846     {
2847     int yybot = *yybottom;
2848     YYFPRINTF (stderr, " %d", yybot);
2849     }
2850 michael 913 YYFPRINTF (stderr, "\n");
2851     }
2852    
2853     # define YY_STACK_PRINT(Bottom, Top) \
2854     do { \
2855     if (yydebug) \
2856     yy_stack_print ((Bottom), (Top)); \
2857     } while (YYID (0))
2858    
2859    
2860     /*------------------------------------------------.
2861     | Report that the YYRULE is going to be reduced. |
2862     `------------------------------------------------*/
2863    
2864     #if (defined __STDC__ || defined __C99__FUNC__ \
2865     || defined __cplusplus || defined _MSC_VER)
2866     static void
2867     yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2868     #else
2869     static void
2870     yy_reduce_print (yyvsp, yyrule)
2871     YYSTYPE *yyvsp;
2872     int yyrule;
2873     #endif
2874     {
2875     int yynrhs = yyr2[yyrule];
2876     int yyi;
2877     unsigned long int yylno = yyrline[yyrule];
2878     YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2879     yyrule - 1, yylno);
2880     /* The symbols being reduced. */
2881     for (yyi = 0; yyi < yynrhs; yyi++)
2882     {
2883 michael 967 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2884 michael 913 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2885     &(yyvsp[(yyi + 1) - (yynrhs)])
2886     );
2887 michael 967 YYFPRINTF (stderr, "\n");
2888 michael 913 }
2889     }
2890    
2891     # define YY_REDUCE_PRINT(Rule) \
2892     do { \
2893     if (yydebug) \
2894     yy_reduce_print (yyvsp, Rule); \
2895     } while (YYID (0))
2896    
2897     /* Nonzero means print parse trace. It is left uninitialized so that
2898     multiple parsers can coexist. */
2899     int yydebug;
2900     #else /* !YYDEBUG */
2901     # define YYDPRINTF(Args)
2902     # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2903     # define YY_STACK_PRINT(Bottom, Top)
2904     # define YY_REDUCE_PRINT(Rule)
2905     #endif /* !YYDEBUG */
2906    
2907    
2908     /* YYINITDEPTH -- initial size of the parser's stacks. */
2909     #ifndef YYINITDEPTH
2910     # define YYINITDEPTH 200
2911     #endif
2912    
2913     /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2914     if the built-in stack extension method is used).
2915    
2916     Do not make this value too large; the results are undefined if
2917     YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2918     evaluated with infinite-precision integer arithmetic. */
2919    
2920     #ifndef YYMAXDEPTH
2921     # define YYMAXDEPTH 10000
2922     #endif
2923    
2924    
2925    
2926     #if YYERROR_VERBOSE
2927    
2928     # ifndef yystrlen
2929     # if defined __GLIBC__ && defined _STRING_H
2930     # define yystrlen strlen
2931     # else
2932     /* Return the length of YYSTR. */
2933     #if (defined __STDC__ || defined __C99__FUNC__ \
2934     || defined __cplusplus || defined _MSC_VER)
2935     static YYSIZE_T
2936     yystrlen (const char *yystr)
2937     #else
2938     static YYSIZE_T
2939     yystrlen (yystr)
2940     const char *yystr;
2941     #endif
2942     {
2943     YYSIZE_T yylen;
2944     for (yylen = 0; yystr[yylen]; yylen++)
2945     continue;
2946     return yylen;
2947     }
2948     # endif
2949     # endif
2950    
2951     # ifndef yystpcpy
2952     # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2953     # define yystpcpy stpcpy
2954     # else
2955     /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2956     YYDEST. */
2957     #if (defined __STDC__ || defined __C99__FUNC__ \
2958     || defined __cplusplus || defined _MSC_VER)
2959     static char *
2960     yystpcpy (char *yydest, const char *yysrc)
2961     #else
2962     static char *
2963     yystpcpy (yydest, yysrc)
2964     char *yydest;
2965     const char *yysrc;
2966     #endif
2967     {
2968     char *yyd = yydest;
2969     const char *yys = yysrc;
2970    
2971     while ((*yyd++ = *yys++) != '\0')
2972     continue;
2973    
2974     return yyd - 1;
2975     }
2976     # endif
2977     # endif
2978    
2979     # ifndef yytnamerr
2980     /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2981     quotes and backslashes, so that it's suitable for yyerror. The
2982     heuristic is that double-quoting is unnecessary unless the string
2983     contains an apostrophe, a comma, or backslash (other than
2984     backslash-backslash). YYSTR is taken from yytname. If YYRES is
2985     null, do not copy; instead, return the length of what the result
2986     would have been. */
2987     static YYSIZE_T
2988     yytnamerr (char *yyres, const char *yystr)
2989     {
2990     if (*yystr == '"')
2991     {
2992     YYSIZE_T yyn = 0;
2993     char const *yyp = yystr;
2994    
2995     for (;;)
2996     switch (*++yyp)
2997     {
2998     case '\'':
2999     case ',':
3000     goto do_not_strip_quotes;
3001    
3002     case '\\':
3003     if (*++yyp != '\\')
3004     goto do_not_strip_quotes;
3005     /* Fall through. */
3006     default:
3007     if (yyres)
3008     yyres[yyn] = *yyp;
3009     yyn++;
3010     break;
3011    
3012     case '"':
3013     if (yyres)
3014     yyres[yyn] = '\0';
3015     return yyn;
3016     }
3017     do_not_strip_quotes: ;
3018     }
3019    
3020     if (! yyres)
3021     return yystrlen (yystr);
3022    
3023     return yystpcpy (yyres, yystr) - yyres;
3024     }
3025     # endif
3026    
3027     /* Copy into YYRESULT an error message about the unexpected token
3028     YYCHAR while in state YYSTATE. Return the number of bytes copied,
3029     including the terminating null byte. If YYRESULT is null, do not
3030     copy anything; just return the number of bytes that would be
3031     copied. As a special case, return 0 if an ordinary "syntax error"
3032     message will do. Return YYSIZE_MAXIMUM if overflow occurs during
3033     size calculation. */
3034     static YYSIZE_T
3035     yysyntax_error (char *yyresult, int yystate, int yychar)
3036     {
3037     int yyn = yypact[yystate];
3038    
3039     if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
3040     return 0;
3041     else
3042     {
3043     int yytype = YYTRANSLATE (yychar);
3044     YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
3045     YYSIZE_T yysize = yysize0;
3046     YYSIZE_T yysize1;
3047     int yysize_overflow = 0;
3048     enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
3049     char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
3050     int yyx;
3051    
3052     # if 0
3053     /* This is so xgettext sees the translatable formats that are
3054     constructed on the fly. */
3055     YY_("syntax error, unexpected %s");
3056     YY_("syntax error, unexpected %s, expecting %s");
3057     YY_("syntax error, unexpected %s, expecting %s or %s");
3058     YY_("syntax error, unexpected %s, expecting %s or %s or %s");
3059     YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
3060     # endif
3061     char *yyfmt;
3062     char const *yyf;
3063     static char const yyunexpected[] = "syntax error, unexpected %s";
3064     static char const yyexpecting[] = ", expecting %s";
3065     static char const yyor[] = " or %s";
3066     char yyformat[sizeof yyunexpected
3067     + sizeof yyexpecting - 1
3068     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
3069     * (sizeof yyor - 1))];
3070     char const *yyprefix = yyexpecting;
3071    
3072     /* Start YYX at -YYN if negative to avoid negative indexes in
3073     YYCHECK. */
3074     int yyxbegin = yyn < 0 ? -yyn : 0;
3075    
3076     /* Stay within bounds of both yycheck and yytname. */
3077     int yychecklim = YYLAST - yyn + 1;
3078     int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
3079     int yycount = 1;
3080    
3081     yyarg[0] = yytname[yytype];
3082     yyfmt = yystpcpy (yyformat, yyunexpected);
3083    
3084     for (yyx = yyxbegin; yyx < yyxend; ++yyx)
3085     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3086     {
3087     if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
3088     {
3089     yycount = 1;
3090     yysize = yysize0;
3091     yyformat[sizeof yyunexpected - 1] = '\0';
3092     break;
3093     }
3094     yyarg[yycount++] = yytname[yyx];
3095     yysize1 = yysize + yytnamerr (0, yytname[yyx]);
3096     yysize_overflow |= (yysize1 < yysize);
3097     yysize = yysize1;
3098     yyfmt = yystpcpy (yyfmt, yyprefix);
3099     yyprefix = yyor;
3100     }
3101    
3102     yyf = YY_(yyformat);
3103     yysize1 = yysize + yystrlen (yyf);
3104     yysize_overflow |= (yysize1 < yysize);
3105     yysize = yysize1;
3106    
3107     if (yysize_overflow)
3108     return YYSIZE_MAXIMUM;
3109    
3110     if (yyresult)
3111     {
3112     /* Avoid sprintf, as that infringes on the user's name space.
3113     Don't have undefined behavior even if the translation
3114     produced a string with the wrong number of "%s"s. */
3115     char *yyp = yyresult;
3116     int yyi = 0;
3117     while ((*yyp = *yyf) != '\0')
3118     {
3119     if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
3120     {
3121     yyp += yytnamerr (yyp, yyarg[yyi++]);
3122     yyf += 2;
3123     }
3124     else
3125     {
3126     yyp++;
3127     yyf++;
3128     }
3129     }
3130     }
3131     return yysize;
3132     }
3133     }
3134     #endif /* YYERROR_VERBOSE */
3135    
3136    
3137     /*-----------------------------------------------.
3138     | Release the memory associated to this symbol. |
3139     `-----------------------------------------------*/
3140    
3141     /*ARGSUSED*/
3142     #if (defined __STDC__ || defined __C99__FUNC__ \
3143     || defined __cplusplus || defined _MSC_VER)
3144     static void
3145     yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
3146     #else
3147     static void
3148     yydestruct (yymsg, yytype, yyvaluep)
3149     const char *yymsg;
3150     int yytype;
3151     YYSTYPE *yyvaluep;
3152     #endif
3153     {
3154     YYUSE (yyvaluep);
3155    
3156     if (!yymsg)
3157     yymsg = "Deleting";
3158     YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
3159    
3160     switch (yytype)
3161     {
3162    
3163     default:
3164     break;
3165     }
3166     }
3167    
3168     /* Prevent warnings from -Wmissing-prototypes. */
3169     #ifdef YYPARSE_PARAM
3170     #if defined __STDC__ || defined __cplusplus
3171     int yyparse (void *YYPARSE_PARAM);
3172     #else
3173     int yyparse ();
3174     #endif
3175     #else /* ! YYPARSE_PARAM */
3176     #if defined __STDC__ || defined __cplusplus
3177     int yyparse (void);
3178     #else
3179     int yyparse ();
3180     #endif
3181     #endif /* ! YYPARSE_PARAM */
3182    
3183    
3184 michael 967 /* The lookahead symbol. */
3185 michael 913 int yychar;
3186    
3187 michael 967 /* The semantic value of the lookahead symbol. */
3188 michael 913 YYSTYPE yylval;
3189    
3190     /* Number of syntax errors so far. */
3191     int yynerrs;
3192    
3193    
3194    
3195 michael 967 /*-------------------------.
3196     | yyparse or yypush_parse. |
3197     `-------------------------*/
3198 michael 913
3199     #ifdef YYPARSE_PARAM
3200     #if (defined __STDC__ || defined __C99__FUNC__ \
3201     || defined __cplusplus || defined _MSC_VER)
3202     int
3203     yyparse (void *YYPARSE_PARAM)
3204     #else
3205     int
3206     yyparse (YYPARSE_PARAM)
3207     void *YYPARSE_PARAM;
3208     #endif
3209     #else /* ! YYPARSE_PARAM */
3210     #if (defined __STDC__ || defined __C99__FUNC__ \
3211     || defined __cplusplus || defined _MSC_VER)
3212     int
3213     yyparse (void)
3214     #else
3215     int
3216     yyparse ()
3217    
3218     #endif
3219     #endif
3220     {
3221    
3222    
3223 michael 967 int yystate;
3224     /* Number of tokens to shift before error messages enabled. */
3225     int yyerrstatus;
3226 michael 913
3227 michael 967 /* The stacks and their tools:
3228     `yyss': related to states.
3229     `yyvs': related to semantic values.
3230 michael 913
3231 michael 967 Refer to the stacks thru separate pointers, to allow yyoverflow
3232     to reallocate them elsewhere. */
3233 michael 913
3234 michael 967 /* The state stack. */
3235     yytype_int16 yyssa[YYINITDEPTH];
3236     yytype_int16 *yyss;
3237     yytype_int16 *yyssp;
3238 michael 913
3239 michael 967 /* The semantic value stack. */
3240     YYSTYPE yyvsa[YYINITDEPTH];
3241     YYSTYPE *yyvs;
3242     YYSTYPE *yyvsp;
3243 michael 913
3244 michael 967 YYSIZE_T yystacksize;
3245 michael 913
3246 michael 967 int yyn;
3247     int yyresult;
3248     /* Lookahead token as an internal (translated) token number. */
3249     int yytoken;
3250 michael 913 /* The variables used to return semantic value and location from the
3251     action routines. */
3252     YYSTYPE yyval;
3253    
3254 michael 967 #if YYERROR_VERBOSE
3255     /* Buffer for error messages, and its allocated size. */
3256     char yymsgbuf[128];
3257     char *yymsg = yymsgbuf;
3258     YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
3259     #endif
3260 michael 913
3261 michael 967 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
3262    
3263 michael 913 /* The number of symbols on the RHS of the reduced rule.
3264     Keep to zero when no symbol should be popped. */
3265     int yylen = 0;
3266    
3267 michael 967 yytoken = 0;
3268     yyss = yyssa;
3269     yyvs = yyvsa;
3270     yystacksize = YYINITDEPTH;
3271    
3272 michael 913 YYDPRINTF ((stderr, "Starting parse\n"));
3273    
3274     yystate = 0;
3275     yyerrstatus = 0;
3276     yynerrs = 0;
3277 michael 967 yychar = YYEMPTY; /* Cause a token to be read. */
3278 michael 913
3279     /* Initialize stack pointers.
3280     Waste one element of value and location stack
3281     so that they stay on the same level as the state stack.
3282     The wasted elements are never initialized. */
3283     yyssp = yyss;
3284     yyvsp = yyvs;
3285    
3286     goto yysetstate;
3287    
3288     /*------------------------------------------------------------.
3289     | yynewstate -- Push a new state, which is found in yystate. |
3290     `------------------------------------------------------------*/
3291     yynewstate:
3292     /* In all cases, when you get here, the value and location stacks
3293     have just been pushed. So pushing a state here evens the stacks. */
3294     yyssp++;
3295    
3296     yysetstate:
3297     *yyssp = yystate;
3298    
3299     if (yyss + yystacksize - 1 <= yyssp)
3300     {
3301     /* Get the current used size of the three stacks, in elements. */
3302     YYSIZE_T yysize = yyssp - yyss + 1;
3303    
3304     #ifdef yyoverflow
3305     {
3306     /* Give user a chance to reallocate the stack. Use copies of
3307     these so that the &'s don't force the real ones into
3308     memory. */
3309     YYSTYPE *yyvs1 = yyvs;
3310     yytype_int16 *yyss1 = yyss;
3311    
3312     /* Each stack pointer address is followed by the size of the
3313     data in use in that stack, in bytes. This used to be a
3314     conditional around just the two extra args, but that might
3315     be undefined if yyoverflow is a macro. */
3316     yyoverflow (YY_("memory exhausted"),
3317     &yyss1, yysize * sizeof (*yyssp),
3318     &yyvs1, yysize * sizeof (*yyvsp),
3319     &yystacksize);
3320    
3321     yyss = yyss1;
3322     yyvs = yyvs1;
3323     }
3324     #else /* no yyoverflow */
3325     # ifndef YYSTACK_RELOCATE
3326     goto yyexhaustedlab;
3327     # else
3328     /* Extend the stack our own way. */
3329     if (YYMAXDEPTH <= yystacksize)
3330     goto yyexhaustedlab;
3331     yystacksize *= 2;
3332     if (YYMAXDEPTH < yystacksize)
3333     yystacksize = YYMAXDEPTH;
3334    
3335     {
3336     yytype_int16 *yyss1 = yyss;
3337     union yyalloc *yyptr =
3338     (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
3339     if (! yyptr)
3340     goto yyexhaustedlab;
3341 michael 967 YYSTACK_RELOCATE (yyss_alloc, yyss);
3342     YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3343 michael 913 # undef YYSTACK_RELOCATE
3344     if (yyss1 != yyssa)
3345     YYSTACK_FREE (yyss1);
3346     }
3347     # endif
3348     #endif /* no yyoverflow */
3349    
3350     yyssp = yyss + yysize - 1;
3351     yyvsp = yyvs + yysize - 1;
3352    
3353     YYDPRINTF ((stderr, "Stack size increased to %lu\n",
3354     (unsigned long int) yystacksize));
3355    
3356     if (yyss + yystacksize - 1 <= yyssp)
3357     YYABORT;
3358     }
3359    
3360     YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3361    
3362 michael 967 if (yystate == YYFINAL)
3363     YYACCEPT;
3364    
3365 michael 913 goto yybackup;
3366    
3367     /*-----------.
3368     | yybackup. |
3369     `-----------*/
3370     yybackup:
3371    
3372     /* Do appropriate processing given the current state. Read a
3373 michael 967 lookahead token if we need one and don't already have one. */
3374 michael 913
3375 michael 967 /* First try to decide what to do without reference to lookahead token. */
3376 michael 913 yyn = yypact[yystate];
3377     if (yyn == YYPACT_NINF)
3378     goto yydefault;
3379    
3380 michael 967 /* Not known => get a lookahead token if don't already have one. */
3381 michael 913
3382 michael 967 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
3383 michael 913 if (yychar == YYEMPTY)
3384     {
3385     YYDPRINTF ((stderr, "Reading a token: "));
3386     yychar = YYLEX;
3387     }
3388    
3389     if (yychar <= YYEOF)
3390     {
3391     yychar = yytoken = YYEOF;
3392     YYDPRINTF ((stderr, "Now at end of input.\n"));
3393     }
3394     else
3395     {
3396     yytoken = YYTRANSLATE (yychar);
3397     YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3398     }
3399    
3400     /* If the proper action on seeing token YYTOKEN is to reduce or to
3401     detect an error, take that action. */
3402     yyn += yytoken;
3403     if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3404     goto yydefault;
3405     yyn = yytable[yyn];
3406     if (yyn <= 0)
3407     {
3408     if (yyn == 0 || yyn == YYTABLE_NINF)
3409     goto yyerrlab;
3410     yyn = -yyn;
3411     goto yyreduce;
3412     }
3413    
3414     /* Count tokens shifted since error; after three, turn off error
3415     status. */
3416     if (yyerrstatus)
3417     yyerrstatus--;
3418    
3419 michael 967 /* Shift the lookahead token. */
3420 michael 913 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3421    
3422 michael 967 /* Discard the shifted token. */
3423     yychar = YYEMPTY;
3424 michael 913
3425     yystate = yyn;
3426     *++yyvsp = yylval;
3427    
3428     goto yynewstate;
3429    
3430    
3431     /*-----------------------------------------------------------.
3432     | yydefault -- do the default action for the current state. |
3433     `-----------------------------------------------------------*/
3434     yydefault:
3435     yyn = yydefact[yystate];
3436     if (yyn == 0)
3437     goto yyerrlab;
3438     goto yyreduce;
3439    
3440    
3441     /*-----------------------------.
3442     | yyreduce -- Do a reduction. |
3443     `-----------------------------*/
3444     yyreduce:
3445     /* yyn is the number of a rule to reduce with. */
3446     yylen = yyr2[yyn];
3447    
3448     /* If YYLEN is nonzero, implement the default value of the action:
3449     `$$ = $1'.
3450    
3451     Otherwise, the following line sets YYVAL to garbage.
3452     This behavior is undocumented and Bison
3453     users should not rely upon it. Assigning to YYVAL
3454     unconditionally makes the parser a bit smaller, and it avoids a
3455     GCC warning that YYVAL may be used uninitialized. */
3456     yyval = yyvsp[1-yylen];
3457    
3458    
3459     YY_REDUCE_PRINT (yyn);
3460     switch (yyn)
3461     {
3462     case 26:
3463 michael 967
3464     /* Line 1455 of yacc.c */
3465 michael 1011 #line 426 "ircd_parser.y"
3466 michael 913 { (yyval.number) = 0; }
3467     break;
3468    
3469     case 28:
3470 michael 967
3471     /* Line 1455 of yacc.c */
3472 michael 1011 #line 428 "ircd_parser.y"
3473 michael 913 {
3474     (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3475     }
3476     break;
3477    
3478     case 29:
3479 michael 967
3480     /* Line 1455 of yacc.c */
3481 michael 1011 #line 432 "ircd_parser.y"
3482 michael 913 {
3483     (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3484     }
3485     break;
3486    
3487     case 30:
3488 michael 967
3489     /* Line 1455 of yacc.c */
3490 michael 1011 #line 436 "ircd_parser.y"
3491 michael 913 {
3492     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3493     }
3494     break;
3495    
3496     case 31:
3497 michael 967
3498     /* Line 1455 of yacc.c */
3499 michael 1011 #line 440 "ircd_parser.y"
3500 michael 913 {
3501     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3502     }
3503     break;
3504    
3505     case 32:
3506 michael 967
3507     /* Line 1455 of yacc.c */
3508 michael 1011 #line 444 "ircd_parser.y"
3509 michael 913 {
3510     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3511     }
3512     break;
3513    
3514     case 33:
3515 michael 967
3516     /* Line 1455 of yacc.c */
3517 michael 1011 #line 448 "ircd_parser.y"
3518 michael 913 {
3519     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3520     }
3521     break;
3522    
3523     case 34:
3524 michael 967
3525     /* Line 1455 of yacc.c */
3526 michael 1011 #line 453 "ircd_parser.y"
3527 michael 913 { (yyval.number) = 0; }
3528     break;
3529    
3530     case 36:
3531 michael 967
3532     /* Line 1455 of yacc.c */
3533 michael 1011 #line 454 "ircd_parser.y"
3534 michael 913 { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
3535     break;
3536    
3537     case 37:
3538 michael 967
3539     /* Line 1455 of yacc.c */
3540 michael 1011 #line 455 "ircd_parser.y"
3541 michael 913 { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
3542     break;
3543    
3544     case 38:
3545 michael 967
3546     /* Line 1455 of yacc.c */
3547 michael 1011 #line 456 "ircd_parser.y"
3548 michael 913 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
3549     break;
3550    
3551     case 39:
3552 michael 967
3553     /* Line 1455 of yacc.c */
3554 michael 1011 #line 457 "ircd_parser.y"
3555 michael 913 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
3556     break;
3557    
3558     case 46:
3559 michael 967
3560     /* Line 1455 of yacc.c */
3561 michael 1011 #line 471 "ircd_parser.y"
3562 michael 913 {
3563     #ifndef STATIC_MODULES /* NOOP in the static case */
3564 michael 967 if (conf_parser_ctx.pass == 2)
3565 michael 978 add_conf_module(libio_basename(yylval.string));
3566 michael 913 #endif
3567     }
3568     break;
3569    
3570     case 47:
3571 michael 967
3572     /* Line 1455 of yacc.c */
3573 michael 1011 #line 479 "ircd_parser.y"
3574 michael 913 {
3575     #ifndef STATIC_MODULES
3576 michael 967 if (conf_parser_ctx.pass == 2)
3577 michael 913 mod_add_path(yylval.string);
3578     #endif
3579     }
3580     break;
3581    
3582 michael 967 case 64:
3583    
3584     /* Line 1455 of yacc.c */
3585 michael 1011 #line 501 "ircd_parser.y"
3586 michael 913 {
3587 michael 1024 #ifdef HAVE_LIBCRYPTO
3588 michael 967 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3589     ServerInfo.tls_version = 0;
3590 michael 1024 #endif
3591 michael 967 }
3592     break;
3593    
3594     case 65:
3595    
3596     /* Line 1455 of yacc.c */
3597 michael 1024 #line 507 "ircd_parser.y"
3598 michael 967 {
3599 michael 1024 #ifdef HAVE_LIBCRYPTO
3600 michael 967 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3601     {
3602     if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_SSLV3))
3603     SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3604     if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_TLSV1))
3605     SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3606     }
3607 michael 1024 #endif
3608 michael 967 }
3609     break;
3610    
3611     case 68:
3612    
3613     /* Line 1455 of yacc.c */
3614 michael 1024 #line 521 "ircd_parser.y"
3615 michael 967 {
3616 michael 1024 #ifdef HAVE_LIBCRYPTO
3617 michael 967 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3618     ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_SSLV3;
3619 michael 1024 #endif
3620 michael 967 }
3621     break;
3622    
3623     case 69:
3624    
3625     /* Line 1455 of yacc.c */
3626 michael 1024 #line 527 "ircd_parser.y"
3627 michael 967 {
3628 michael 1024 #ifdef HAVE_LIBCRYPTO
3629 michael 967 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3630     ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_TLSV1;
3631 michael 1024 #endif
3632 michael 967 }
3633     break;
3634    
3635     case 70:
3636    
3637     /* Line 1455 of yacc.c */
3638 michael 1024 #line 535 "ircd_parser.y"
3639 michael 967 {
3640 michael 913 #ifdef HAVE_LIBCRYPTO
3641 michael 967 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3642 michael 913 {
3643     if (!ServerInfo.rsa_private_key_file)
3644     {
3645     yyerror("No rsa_private_key_file specified, SSL disabled");
3646     break;
3647     }
3648    
3649 michael 967 if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
3650     SSL_FILETYPE_PEM) <= 0)
3651 michael 913 {
3652     yyerror(ERR_lib_error_string(ERR_get_error()));
3653     break;
3654     }
3655    
3656 michael 967 if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
3657     SSL_FILETYPE_PEM) <= 0)
3658 michael 913 {
3659     yyerror(ERR_lib_error_string(ERR_get_error()));
3660     break;
3661     }
3662    
3663 michael 967 if (!SSL_CTX_check_private_key(ServerInfo.server_ctx))
3664 michael 913 {
3665 michael 967 yyerror(ERR_lib_error_string(ERR_get_error()));
3666 michael 913 break;
3667     }
3668     }
3669     #endif
3670     }
3671     break;
3672    
3673 michael 967 case 71:
3674    
3675     /* Line 1455 of yacc.c */
3676 michael 1024 #line 569 "ircd_parser.y"
3677 michael 913 {
3678     #ifdef HAVE_LIBCRYPTO
3679 michael 967 if (conf_parser_ctx.pass == 1)
3680 michael 913 {
3681     BIO *file;
3682    
3683     if (ServerInfo.rsa_private_key)
3684     {
3685     RSA_free(ServerInfo.rsa_private_key);
3686     ServerInfo.rsa_private_key = NULL;
3687     }
3688    
3689     if (ServerInfo.rsa_private_key_file)
3690     {
3691     MyFree(ServerInfo.rsa_private_key_file);
3692     ServerInfo.rsa_private_key_file = NULL;
3693     }
3694    
3695     DupString(ServerInfo.rsa_private_key_file, yylval.string);
3696    
3697     if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3698     {
3699     yyerror("File open failed, ignoring");
3700     break;
3701     }
3702    
3703     ServerInfo.rsa_private_key = (RSA *)PEM_read_bio_RSAPrivateKey(file, NULL,
3704     0, NULL);
3705    
3706     BIO_set_close(file, BIO_CLOSE);
3707     BIO_free(file);
3708    
3709     if (ServerInfo.rsa_private_key == NULL)
3710     {
3711     yyerror("Couldn't extract key, ignoring");
3712     break;
3713     }
3714    
3715     if (!RSA_check_key(ServerInfo.rsa_private_key))
3716     {
3717     RSA_free(ServerInfo.rsa_private_key);
3718     ServerInfo.rsa_private_key = NULL;
3719    
3720     yyerror("Invalid key, ignoring");
3721     break;
3722     }
3723    
3724     /* require 2048 bit (256 byte) key */
3725     if (RSA_size(ServerInfo.rsa_private_key) != 256)
3726     {
3727     RSA_free(ServerInfo.rsa_private_key);
3728     ServerInfo.rsa_private_key = NULL;
3729    
3730     yyerror("Not a 2048 bit key, ignoring");
3731     }
3732     }
3733     #endif
3734     }
3735     break;
3736    
3737 michael 967 case 72:
3738    
3739     /* Line 1455 of yacc.c */
3740 michael 1024 #line 629 "ircd_parser.y"
3741 michael 913 {
3742     /* this isn't rehashable */
3743 michael 967 if (conf_parser_ctx.pass == 2)
3744 michael 913 {
3745     if (ServerInfo.name == NULL)
3746     {
3747     /* the ircd will exit() in main() if we dont set one */
3748     if (strlen(yylval.string) <= HOSTLEN)
3749     DupString(ServerInfo.name, yylval.string);
3750     }
3751     }
3752     }
3753     break;
3754    
3755 michael 967 case 73:
3756    
3757     /* Line 1455 of yacc.c */
3758 michael 1024 #line 643 "ircd_parser.y"
3759 michael 913 {
3760     /* this isn't rehashable */
3761 michael 967 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3762 michael 913 {
3763     if (valid_sid(yylval.string))
3764     DupString(ServerInfo.sid, yylval.string);
3765     else
3766     {
3767     ilog(L_ERROR, "Ignoring config file entry SID -- invalid SID. Aborting.");
3768     exit(0);
3769     }
3770     }
3771     }
3772     break;
3773    
3774 michael 967 case 74:
3775    
3776     /* Line 1455 of yacc.c */
3777 michael 1024 #line 658 "ircd_parser.y"
3778 michael 913 {
3779 michael 967 if (conf_parser_ctx.pass == 2)
3780 michael 913 {
3781     MyFree(ServerInfo.description);
3782     DupString(ServerInfo.description,yylval.string);
3783     }
3784     }
3785     break;
3786    
3787 michael 967 case 75:
3788    
3789     /* Line 1455 of yacc.c */
3790 michael 1024 #line 667 "ircd_parser.y"
3791 michael 913 {
3792 michael 967 if (conf_parser_ctx.pass == 2)
3793 michael 913 {
3794     char *p;
3795    
3796     if ((p = strchr(yylval.string, ' ')) != NULL)
3797     p = '\0';
3798    
3799     MyFree(ServerInfo.network_name);
3800     DupString(ServerInfo.network_name, yylval.string);
3801     }
3802     }
3803     break;
3804    
3805 michael 967 case 76:
3806    
3807     /* Line 1455 of yacc.c */
3808 michael 1024 #line 681 "ircd_parser.y"
3809 michael 913 {
3810 michael 967 if (conf_parser_ctx.pass == 2)
3811 michael 913 {
3812     MyFree(ServerInfo.network_desc);
3813     DupString(ServerInfo.network_desc, yylval.string);
3814     }
3815     }
3816     break;
3817    
3818 michael 967 case 77:
3819    
3820     /* Line 1455 of yacc.c */
3821 michael 1024 #line 690 "ircd_parser.y"
3822 michael 913 {
3823 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3824 michael 913 {
3825     struct addrinfo hints, *res;
3826    
3827     memset(&hints, 0, sizeof(hints));
3828    
3829     hints.ai_family = AF_UNSPEC;
3830     hints.ai_socktype = SOCK_STREAM;
3831     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3832    
3833     if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3834     ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
3835     else
3836     {
3837     assert(res != NULL);
3838    
3839     memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3840     ServerInfo.ip.ss.ss_family = res->ai_family;
3841     ServerInfo.ip.ss_len = res->ai_addrlen;
3842     irc_freeaddrinfo(res);
3843    
3844     ServerInfo.specific_ipv4_vhost = 1;
3845     }
3846     }
3847     }
3848     break;
3849    
3850 michael 967 case 78:
3851    
3852     /* Line 1455 of yacc.c */
3853 michael 1024 #line 718 "ircd_parser.y"
3854 michael 913 {
3855     #ifdef IPV6
3856 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3857 michael 913 {
3858     struct addrinfo hints, *res;
3859    
3860     memset(&hints, 0, sizeof(hints));
3861    
3862     hints.ai_family = AF_UNSPEC;
3863     hints.ai_socktype = SOCK_STREAM;
3864     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3865    
3866     if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3867     ilog(L_ERROR, "Invalid netmask for server vhost6(%s)", yylval.string);
3868     else
3869     {
3870     assert(res != NULL);
3871    
3872     memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3873     ServerInfo.ip6.ss.ss_family = res->ai_family;
3874     ServerInfo.ip6.ss_len = res->ai_addrlen;
3875     irc_freeaddrinfo(res);
3876    
3877     ServerInfo.specific_ipv6_vhost = 1;
3878     }
3879     }
3880     #endif
3881     }
3882     break;
3883    
3884 michael 967 case 79:
3885    
3886     /* Line 1455 of yacc.c */
3887 michael 1024 #line 748 "ircd_parser.y"
3888 michael 913 {
3889 michael 967 if (conf_parser_ctx.pass == 2)
3890 michael 913 {
3891     recalc_fdlimit(NULL);
3892    
3893     if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3894     {
3895     char buf[IRCD_BUFSIZE];
3896     ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3897     yyerror(buf);
3898     }
3899     else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3900     {
3901     char buf[IRCD_BUFSIZE];
3902     ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3903     yyerror(buf);
3904     }
3905     else
3906     ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3907     }
3908     }
3909     break;
3910    
3911 michael 967 case 80:
3912    
3913     /* Line 1455 of yacc.c */
3914 michael 1024 #line 771 "ircd_parser.y"
3915 michael 913 {
3916 michael 967 if (conf_parser_ctx.pass == 2)
3917 michael 913 {
3918     if (yylval.number)
3919     {
3920     ServerInfo.hub = 1;
3921     delete_capability("HUB");
3922     add_capability("HUB", CAP_HUB, 1);
3923     }
3924     else if (ServerInfo.hub)
3925     {
3926    
3927     ServerInfo.hub = 0;
3928     delete_capability("HUB");
3929     }
3930     }
3931     }
3932     break;
3933    
3934 michael 967 case 88:
3935    
3936     /* Line 1455 of yacc.c */
3937 michael 1024 #line 799 "ircd_parser.y"
3938 michael 913 {
3939 michael 967 if (conf_parser_ctx.pass == 2)
3940 michael 913 {
3941     MyFree(AdminInfo.name);
3942     DupString(AdminInfo.name, yylval.string);
3943     }
3944     }
3945     break;
3946    
3947 michael 967 case 89:
3948    
3949     /* Line 1455 of yacc.c */
3950 michael 1024 #line 808 "ircd_parser.y"
3951 michael 913 {
3952 michael 967 if (conf_parser_ctx.pass == 2)
3953 michael 913 {
3954     MyFree(AdminInfo.email);
3955     DupString(AdminInfo.email, yylval.string);
3956     }
3957     }
3958     break;
3959    
3960 michael 967 case 90:
3961    
3962     /* Line 1455 of yacc.c */
3963 michael 1024 #line 817 "ircd_parser.y"
3964 michael 913 {
3965 michael 967 if (conf_parser_ctx.pass == 2)
3966 michael 913 {
3967     MyFree(AdminInfo.description);
3968     DupString(AdminInfo.description, yylval.string);
3969     }
3970     }
3971     break;
3972    
3973 michael 967 case 107:
3974    
3975     /* Line 1455 of yacc.c */
3976 michael 1024 #line 844 "ircd_parser.y"
3977 michael 913 {
3978     }
3979     break;
3980    
3981 michael 967 case 108:
3982    
3983     /* Line 1455 of yacc.c */
3984 michael 1024 #line 848 "ircd_parser.y"
3985 michael 913 {
3986     }
3987     break;
3988    
3989 michael 967 case 109:
3990    
3991     /* Line 1455 of yacc.c */
3992 michael 1024 #line 852 "ircd_parser.y"
3993 michael 913 {
3994 michael 967 if (conf_parser_ctx.pass == 2)
3995 michael 913 strlcpy(ConfigLoggingEntry.userlog, yylval.string,
3996     sizeof(ConfigLoggingEntry.userlog));
3997     }
3998     break;
3999    
4000 michael 967 case 110:
4001    
4002     /* Line 1455 of yacc.c */
4003 michael 1024 #line 859 "ircd_parser.y"
4004 michael 913 {
4005 michael 967 if (conf_parser_ctx.pass == 2)
4006 michael 913 strlcpy(ConfigLoggingEntry.failed_operlog, yylval.string,
4007     sizeof(ConfigLoggingEntry.failed_operlog));
4008     }
4009     break;
4010    
4011 michael 967 case 111:
4012    
4013     /* Line 1455 of yacc.c */
4014 michael 1024 #line 866 "ircd_parser.y"
4015 michael 913 {
4016 michael 967 if (conf_parser_ctx.pass == 2)
4017 michael 913 strlcpy(ConfigLoggingEntry.operlog, yylval.string,
4018     sizeof(ConfigLoggingEntry.operlog));
4019     }
4020     break;
4021    
4022 michael 967 case 112:
4023    
4024     /* Line 1455 of yacc.c */
4025 michael 1024 #line 873 "ircd_parser.y"
4026 michael 913 {
4027 michael 967 if (conf_parser_ctx.pass == 2)
4028 michael 913 strlcpy(ConfigLoggingEntry.operspylog, yylval.string,
4029     sizeof(ConfigLoggingEntry.operspylog));
4030     }
4031     break;
4032    
4033 michael 967 case 113:
4034    
4035     /* Line 1455 of yacc.c */
4036 michael 1024 #line 880 "ircd_parser.y"
4037 michael 913 {
4038 michael 967 if (conf_parser_ctx.pass == 2)
4039 michael 913 strlcpy(ConfigLoggingEntry.glinelog, yylval.string,
4040     sizeof(ConfigLoggingEntry.glinelog));
4041     }
4042     break;
4043    
4044 michael 967 case 114:
4045    
4046     /* Line 1455 of yacc.c */
4047 michael 1024 #line 887 "ircd_parser.y"
4048 michael 913 {
4049 michael 967 if (conf_parser_ctx.pass == 2)
4050 michael 913 strlcpy(ConfigLoggingEntry.klinelog, yylval.string,
4051     sizeof(ConfigLoggingEntry.klinelog));
4052     }
4053     break;
4054    
4055 michael 967 case 115:
4056    
4057     /* Line 1455 of yacc.c */
4058 michael 1024 #line 894 "ircd_parser.y"
4059 michael 913 {
4060 michael 967 if (conf_parser_ctx.pass == 2)
4061 michael 913 strlcpy(ConfigLoggingEntry.ioerrlog, yylval.string,
4062     sizeof(ConfigLoggingEntry.ioerrlog));
4063     }
4064     break;
4065    
4066 michael 967 case 116:
4067    
4068     /* Line 1455 of yacc.c */
4069 michael 1024 #line 901 "ircd_parser.y"
4070 michael 913 {
4071 michael 967 if (conf_parser_ctx.pass == 2)
4072 michael 913 strlcpy(ConfigLoggingEntry.killlog, yylval.string,
4073     sizeof(ConfigLoggingEntry.killlog));
4074     }
4075     break;
4076    
4077 michael 967 case 117:
4078    
4079     /* Line 1455 of yacc.c */
4080 michael 1024 #line 908 "ircd_parser.y"
4081 michael 913 {
4082 michael 967 if (conf_parser_ctx.pass == 2)
4083 michael 913 set_log_level(L_CRIT);
4084     }
4085     break;
4086    
4087 michael 967 case 118:
4088    
4089     /* Line 1455 of yacc.c */
4090 michael 1024 #line 912 "ircd_parser.y"
4091 michael 913 {
4092 michael 967 if (conf_parser_ctx.pass == 2)
4093 michael 913 set_log_level(L_ERROR);
4094     }
4095     break;
4096    
4097 michael 967 case 119:
4098    
4099     /* Line 1455 of yacc.c */
4100 michael 1024 #line 916 "ircd_parser.y"
4101 michael 913 {
4102 michael 967 if (conf_parser_ctx.pass == 2)
4103 michael 913 set_log_level(L_WARN);
4104     }
4105     break;
4106    
4107 michael 967 case 120:
4108    
4109     /* Line 1455 of yacc.c */
4110 michael 1024 #line 920 "ircd_parser.y"
4111 michael 913 {
4112 michael 967 if (conf_parser_ctx.pass == 2)
4113 michael 913 set_log_level(L_NOTICE);
4114     }
4115     break;
4116    
4117 michael 967 case 121:
4118    
4119     /* Line 1455 of yacc.c */
4120 michael 1024 #line 924 "ircd_parser.y"
4121 michael 913 {
4122 michael 967 if (conf_parser_ctx.pass == 2)
4123 michael 913 set_log_level(L_TRACE);
4124     }
4125     break;
4126    
4127 michael 967 case 122:
4128    
4129     /* Line 1455 of yacc.c */
4130 michael 1024 #line 928 "ircd_parser.y"
4131 michael 913 {
4132 michael 967 if (conf_parser_ctx.pass == 2)
4133 michael 913 set_log_level(L_INFO);
4134     }
4135     break;
4136    
4137 michael 967 case 123:
4138    
4139     /* Line 1455 of yacc.c */
4140 michael 1024 #line 932 "ircd_parser.y"
4141 michael 913 {
4142 michael 967 if (conf_parser_ctx.pass == 2)
4143 michael 913 set_log_level(L_DEBUG);
4144     }
4145     break;
4146    
4147 michael 967 case 124:
4148    
4149     /* Line 1455 of yacc.c */
4150 michael 1024 #line 938 "ircd_parser.y"
4151 michael 913 {
4152 michael 967 if (conf_parser_ctx.pass == 2)
4153 michael 913 ConfigLoggingEntry.use_logging = yylval.number;
4154     }
4155     break;
4156    
4157 michael 967 case 125:
4158    
4159     /* Line 1455 of yacc.c */
4160 michael 1024 #line 947 "ircd_parser.y"
4161 michael 913 {
4162 michael 967 if (conf_parser_ctx.pass == 2)
4163 michael 913 {
4164     yy_conf = make_conf_item(OPER_TYPE);
4165     yy_aconf = map_to_conf(yy_conf);
4166     SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
4167     }
4168     else
4169     {
4170     MyFree(class_name);
4171     class_name = NULL;
4172     }
4173     }
4174     break;
4175    
4176 michael 967 case 126:
4177    
4178     /* Line 1455 of yacc.c */
4179 michael 1024 #line 960 "ircd_parser.y"
4180 michael 913 {
4181 michael 967 if (conf_parser_ctx.pass == 2)
4182 michael 913 {
4183     struct CollectItem *yy_tmp;
4184     dlink_node *ptr;
4185     dlink_node *next_ptr;
4186    
4187     conf_add_class_to_conf(yy_conf, class_name);
4188    
4189     /* Now, make sure there is a copy of the "base" given oper
4190     * block in each of the collected copies
4191     */
4192    
4193     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4194     {
4195     struct AccessItem *new_aconf;
4196     struct ConfItem *new_conf;
4197     yy_tmp = ptr->data;
4198    
4199     new_conf = make_conf_item(OPER_TYPE);
4200     new_aconf = (struct AccessItem *)map_to_conf(new_conf);
4201    
4202     new_aconf->flags = yy_aconf->flags;
4203    
4204     if (yy_conf->name != NULL)
4205     DupString(new_conf->name, yy_conf->name);
4206     if (yy_tmp->user != NULL)
4207     DupString(new_aconf->user, yy_tmp->user);
4208     else
4209     DupString(new_aconf->user, "*");
4210     if (yy_tmp->host != NULL)
4211     DupString(new_aconf->host, yy_tmp->host);
4212     else
4213     DupString(new_aconf->host, "*");
4214     conf_add_class_to_conf(new_conf, class_name);
4215     if (yy_aconf->passwd != NULL)
4216     DupString(new_aconf->passwd, yy_aconf->passwd);
4217    
4218     new_aconf->port = yy_aconf->port;
4219     #ifdef HAVE_LIBCRYPTO
4220     if (yy_aconf->rsa_public_key_file != NULL)
4221     {
4222     BIO *file;
4223    
4224     DupString(new_aconf->rsa_public_key_file,
4225     yy_aconf->rsa_public_key_file);
4226    
4227     file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
4228     new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
4229     NULL, 0, NULL);
4230     BIO_set_close(file, BIO_CLOSE);
4231     BIO_free(file);
4232     }
4233     #endif
4234    
4235     #ifdef HAVE_LIBCRYPTO
4236     if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
4237     && yy_tmp->host)
4238     #else
4239     if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
4240     #endif
4241     {
4242     conf_add_class_to_conf(new_conf, class_name);
4243     if (yy_tmp->name != NULL)
4244     DupString(new_conf->name, yy_tmp->name);
4245     }
4246    
4247     dlinkDelete(&yy_tmp->node, &col_conf_list);
4248     free_collect_item(yy_tmp);
4249     }
4250    
4251     yy_conf = NULL;
4252     yy_aconf = NULL;
4253    
4254    
4255     MyFree(class_name);
4256     class_name = NULL;
4257     }
4258     }
4259     break;
4260    
4261 michael 967 case 154:
4262    
4263     /* Line 1455 of yacc.c */
4264 michael 1024 #line 1052 "ircd_parser.y"
4265 michael 913 {
4266 michael 967 if (conf_parser_ctx.pass == 2)
4267 michael 913 {
4268     if (strlen(yylval.string) > OPERNICKLEN)
4269     yylval.string[OPERNICKLEN] = '\0';
4270    
4271     MyFree(yy_conf->name);
4272     DupString(yy_conf->name, yylval.string);
4273     }
4274     }
4275     break;
4276    
4277 michael 967 case 155:
4278    
4279     /* Line 1455 of yacc.c */
4280 michael 1024 #line 1064 "ircd_parser.y"
4281 michael 913 {
4282 michael 967 if (conf_parser_ctx.pass == 2)
4283 michael 913 {
4284     if (strlen(yylval.string) > OPERNICKLEN)
4285     yylval.string[OPERNICKLEN] = '\0';
4286    
4287     MyFree(yy_conf->name);
4288     DupString(yy_conf->name, yylval.string);
4289     }
4290     }
4291     break;
4292    
4293 michael 967 case 156:
4294    
4295     /* Line 1455 of yacc.c */
4296 michael 1024 #line 1076 "ircd_parser.y"
4297 michael 913 {
4298 michael 967 if (conf_parser_ctx.pass == 2)
4299 michael 913 {
4300     struct split_nuh_item nuh;
4301    
4302     nuh.nuhmask = yylval.string;
4303     nuh.nickptr = NULL;
4304     nuh.userptr = userbuf;
4305     nuh.hostptr = hostbuf;
4306    
4307     nuh.nicksize = 0;
4308     nuh.usersize = sizeof(userbuf);
4309     nuh.hostsize = sizeof(hostbuf);
4310    
4311     split_nuh(&nuh);
4312    
4313     if (yy_aconf->user == NULL)
4314     {
4315     DupString(yy_aconf->user, userbuf);
4316     DupString(yy_aconf->host, hostbuf);
4317     }
4318     else
4319     {
4320     struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
4321    
4322     DupString(yy_tmp->user, userbuf);
4323     DupString(yy_tmp->host, hostbuf);
4324    
4325     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4326     }
4327     }
4328     }
4329     break;
4330    
4331 michael 967 case 157:
4332    
4333     /* Line 1455 of yacc.c */
4334 michael 1024 #line 1110 "ircd_parser.y"
4335 michael 913 {
4336 michael 967 if (conf_parser_ctx.pass == 2)
4337 michael 913 {
4338     if (yy_aconf->passwd != NULL)
4339     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4340    
4341     MyFree(yy_aconf->passwd);
4342     DupString(yy_aconf->passwd, yylval.string);
4343     }
4344     }
4345     break;
4346    
4347 michael 967 case 158:
4348    
4349     /* Line 1455 of yacc.c */
4350 michael 1024 #line 1122 "ircd_parser.y"
4351 michael 913 {
4352 michael 967 if (conf_parser_ctx.pass == 2)
4353 michael 913 {
4354     if (yylval.number)
4355     SetConfEncrypted(yy_aconf);
4356     else
4357     ClearConfEncrypted(yy_aconf);
4358     }
4359     }
4360     break;
4361    
4362 michael 967 case 159:
4363    
4364     /* Line 1455 of yacc.c */
4365 michael 1024 #line 1133 "ircd_parser.y"
4366 michael 913 {
4367     #ifdef HAVE_LIBCRYPTO
4368 michael 967 if (conf_parser_ctx.pass == 2)
4369 michael 913 {
4370     BIO *file;
4371    
4372     if (yy_aconf->rsa_public_key != NULL)
4373     {
4374     RSA_free(yy_aconf->rsa_public_key);
4375     yy_aconf->rsa_public_key = NULL;
4376     }
4377    
4378     if (yy_aconf->rsa_public_key_file != NULL)
4379     {
4380     MyFree(yy_aconf->rsa_public_key_file);
4381     yy_aconf->rsa_public_key_file = NULL;
4382     }
4383    
4384     DupString(yy_aconf->rsa_public_key_file, yylval.string);
4385     file = BIO_new_file(yylval.string, "r");
4386    
4387     if (file == NULL)
4388     {
4389     yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
4390     break;
4391     }
4392    
4393     yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
4394    
4395     if (yy_aconf->rsa_public_key == NULL)
4396     {
4397     yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4398     break;
4399     }
4400    
4401     BIO_set_close(file, BIO_CLOSE);
4402     BIO_free(file);
4403     }
4404     #endif /* HAVE_LIBCRYPTO */
4405     }
4406     break;
4407    
4408 michael 967 case 160:
4409    
4410     /* Line 1455 of yacc.c */
4411 michael 1024 #line 1175 "ircd_parser.y"
4412 michael 913 {
4413 michael 967 if (conf_parser_ctx.pass == 2)
4414 michael 913 {
4415     MyFree(class_name);
4416     DupString(class_name, yylval.string);
4417     }
4418     }
4419     break;
4420    
4421 michael 967 case 161:
4422    
4423     /* Line 1455 of yacc.c */
4424 michael 1024 #line 1184 "ircd_parser.y"
4425 michael 913 {
4426 michael 967 if (conf_parser_ctx.pass == 2)
4427 michael 913 yy_aconf->modes = 0;
4428     }
4429     break;
4430    
4431 michael 967 case 165:
4432    
4433     /* Line 1455 of yacc.c */
4434 michael 1024 #line 1191 "ircd_parser.y"
4435 michael 913 {
4436 michael 967 if (conf_parser_ctx.pass == 2)
4437 michael 913 yy_aconf->modes |= UMODE_BOTS;
4438     }
4439     break;
4440    
4441 michael 967 case 166:
4442    
4443     /* Line 1455 of yacc.c */
4444 michael 1024 #line 1195 "ircd_parser.y"
4445 michael 913 {
4446 michael 967 if (conf_parser_ctx.pass == 2)
4447 michael 913 yy_aconf->modes |= UMODE_CCONN;
4448     }
4449     break;
4450    
4451 michael 967 case 167:
4452    
4453     /* Line 1455 of yacc.c */
4454 michael 1024 #line 1199 "ircd_parser.y"
4455 michael 913 {
4456 michael 967 if (conf_parser_ctx.pass == 2)
4457 michael 913 yy_aconf->modes |= UMODE_CCONN_FULL;
4458     }
4459     break;
4460    
4461 michael 967 case 168:
4462    
4463     /* Line 1455 of yacc.c */
4464 michael 1024 #line 1203 "ircd_parser.y"
4465 michael 913 {
4466 michael 967 if (conf_parser_ctx.pass == 2)
4467 michael 913 yy_aconf->modes |= UMODE_DEAF;
4468     }
4469     break;
4470    
4471 michael 967 case 169:
4472    
4473     /* Line 1455 of yacc.c */
4474 michael 1024 #line 1207 "ircd_parser.y"
4475 michael 913 {
4476 michael 967 if (conf_parser_ctx.pass == 2)
4477 michael 913 yy_aconf->modes |= UMODE_DEBUG;
4478     }
4479     break;
4480    
4481 michael 967 case 170:
4482    
4483     /* Line 1455 of yacc.c */
4484 michael 1024 #line 1211 "ircd_parser.y"
4485 michael 913 {
4486 michael 967 if (conf_parser_ctx.pass == 2)
4487 michael 913 yy_aconf->modes |= UMODE_FULL;
4488     }
4489     break;
4490    
4491 michael 967 case 171:
4492    
4493     /* Line 1455 of yacc.c */
4494 michael 1024 #line 1215 "ircd_parser.y"
4495 michael 913 {
4496 michael 967 if (conf_parser_ctx.pass == 2)
4497 michael 913 yy_aconf->modes |= UMODE_SKILL;
4498     }
4499     break;
4500    
4501 michael 967 case 172:
4502    
4503     /* Line 1455 of yacc.c */
4504 michael 1024 #line 1219 "ircd_parser.y"
4505 michael 913 {
4506 michael 967 if (conf_parser_ctx.pass == 2)
4507 michael 913 yy_aconf->modes |= UMODE_NCHANGE;
4508     }
4509     break;
4510    
4511 michael 967 case 173:
4512    
4513     /* Line 1455 of yacc.c */
4514 michael 1024 #line 1223 "ircd_parser.y"
4515 michael 913 {
4516 michael 967 if (conf_parser_ctx.pass == 2)
4517 michael 913 yy_aconf->modes |= UMODE_REJ;
4518     }
4519     break;
4520    
4521 michael 967 case 174:
4522    
4523     /* Line 1455 of yacc.c */
4524 michael 1024 #line 1227 "ircd_parser.y"
4525 michael 913 {
4526 michael 967 if (conf_parser_ctx.pass == 2)
4527 michael 913 yy_aconf->modes |= UMODE_UNAUTH;
4528     }
4529     break;
4530    
4531 michael 967 case 175:
4532    
4533     /* Line 1455 of yacc.c */
4534 michael 1024 #line 1231 "ircd_parser.y"
4535 michael 913 {
4536 michael 967 if (conf_parser_ctx.pass == 2)
4537 michael 913 yy_aconf->modes |= UMODE_SPY;
4538     }
4539     break;
4540    
4541 michael 967 case 176:
4542    
4543     /* Line 1455 of yacc.c */
4544 michael 1024 #line 1235 "ircd_parser.y"
4545 michael 913 {
4546 michael 967 if (conf_parser_ctx.pass == 2)
4547 michael 913 yy_aconf->modes |= UMODE_EXTERNAL;
4548     }
4549     break;
4550    
4551 michael 967 case 177:
4552    
4553     /* Line 1455 of yacc.c */
4554 michael 1024 #line 1239 "ircd_parser.y"
4555 michael 913 {
4556 michael 967 if (conf_parser_ctx.pass == 2)
4557 michael 913 yy_aconf->modes |= UMODE_OPERWALL;
4558     }
4559     break;
4560    
4561 michael 967 case 178:
4562    
4563     /* Line 1455 of yacc.c */
4564 michael 1024 #line 1243 "ircd_parser.y"
4565 michael 913 {
4566 michael 967 if (conf_parser_ctx.pass == 2)
4567 michael 913 yy_aconf->modes |= UMODE_SERVNOTICE;
4568     }
4569     break;
4570    
4571 michael 967 case 179:
4572    
4573     /* Line 1455 of yacc.c */
4574 michael 1024 #line 1247 "ircd_parser.y"
4575 michael 913 {
4576 michael 967 if (conf_parser_ctx.pass == 2)
4577 michael 913 yy_aconf->modes |= UMODE_INVISIBLE;
4578     }
4579     break;
4580    
4581 michael 967 case 180:
4582    
4583     /* Line 1455 of yacc.c */
4584 michael 1024 #line 1251 "ircd_parser.y"
4585 michael 913 {
4586 michael 967 if (conf_parser_ctx.pass == 2)
4587 michael 913 yy_aconf->modes |= UMODE_WALLOP;
4588     }
4589     break;
4590    
4591 michael 967 case 181:
4592    
4593     /* Line 1455 of yacc.c */
4594 michael 1024 #line 1255 "ircd_parser.y"
4595 michael 913 {
4596 michael 967 if (conf_parser_ctx.pass == 2)
4597 michael 913 yy_aconf->modes |= UMODE_SOFTCALLERID;
4598     }
4599     break;
4600    
4601 michael 967 case 182:
4602    
4603     /* Line 1455 of yacc.c */
4604 michael 1024 #line 1259 "ircd_parser.y"
4605 michael 913 {
4606 michael 967 if (conf_parser_ctx.pass == 2)
4607 michael 913 yy_aconf->modes |= UMODE_CALLERID;
4608     }
4609     break;
4610    
4611 michael 967 case 183:
4612    
4613     /* Line 1455 of yacc.c */
4614 michael 1024 #line 1263 "ircd_parser.y"
4615 michael 913 {
4616 michael 967 if (conf_parser_ctx.pass == 2)
4617 michael 913 yy_aconf->modes |= UMODE_LOCOPS;
4618     }
4619     break;
4620    
4621 michael 967 case 184:
4622    
4623     /* Line 1455 of yacc.c */
4624 michael 1024 #line 1269 "ircd_parser.y"
4625 michael 913 {
4626 michael 967 if (conf_parser_ctx.pass == 2)
4627 michael 913 {
4628     if (yylval.number)
4629     yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4630     else
4631     yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4632     }
4633     }
4634     break;
4635    
4636 michael 967 case 185:
4637    
4638     /* Line 1455 of yacc.c */
4639 michael 1024 #line 1280 "ircd_parser.y"
4640 michael 913 {
4641 michael 967 if (conf_parser_ctx.pass == 2)
4642 michael 913 {
4643     if (yylval.number)
4644     yy_aconf->port |= OPER_FLAG_REMOTE;
4645     else
4646     yy_aconf->port &= ~OPER_FLAG_REMOTE;
4647     }
4648     }
4649     break;
4650    
4651 michael 967 case 186:
4652    
4653     /* Line 1455 of yacc.c */
4654 michael 1024 #line 1291 "ircd_parser.y"
4655 michael 913 {
4656 michael 967 if (conf_parser_ctx.pass == 2)
4657 michael 913 {
4658     if (yylval.number)
4659     yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4660     else
4661     yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
4662     }
4663     }
4664     break;
4665    
4666 michael 967 case 187:
4667    
4668     /* Line 1455 of yacc.c */
4669 michael 1024 #line 1302 "ircd_parser.y"
4670 michael 913 {
4671 michael 967 if (conf_parser_ctx.pass == 2)
4672 michael 913 {
4673     if (yylval.number)
4674     yy_aconf->port |= OPER_FLAG_K;
4675     else
4676     yy_aconf->port &= ~OPER_FLAG_K;
4677     }
4678     }
4679     break;
4680    
4681 michael 967 case 188:
4682    
4683     /* Line 1455 of yacc.c */
4684 michael 1024 #line 1313 "ircd_parser.y"
4685 michael 913 {
4686 michael 967 if (conf_parser_ctx.pass == 2)
4687 michael 913 {
4688     if (yylval.number)
4689     yy_aconf->port |= OPER_FLAG_X;
4690     else
4691     yy_aconf->port &= ~OPER_FLAG_X;
4692     }
4693     }
4694     break;
4695    
4696 michael 967 case 189:
4697    
4698     /* Line 1455 of yacc.c */
4699 michael 1024 #line 1324 "ircd_parser.y"
4700 michael 913 {
4701 michael 967 if (conf_parser_ctx.pass == 2)
4702 michael 913 {
4703     if (yylval.number)
4704     yy_aconf->port |= OPER_FLAG_UNKLINE;
4705     else
4706     yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4707     }
4708     }
4709     break;
4710    
4711 michael 967 case 190:
4712    
4713     /* Line 1455 of yacc.c */
4714 michael 1024 #line 1335 "ircd_parser.y"
4715 michael 913 {
4716 michael 967 if (conf_parser_ctx.pass == 2)
4717 michael 913 {
4718     if (yylval.number)
4719     yy_aconf->port |= OPER_FLAG_GLINE;
4720     else
4721     yy_aconf->port &= ~OPER_FLAG_GLINE;
4722     }
4723     }
4724     break;
4725    
4726 michael 967 case 191:
4727    
4728     /* Line 1455 of yacc.c */
4729 michael 1024 #line 1346 "ircd_parser.y"
4730 michael 913 {
4731 michael 967 if (conf_parser_ctx.pass == 2)
4732 michael 913 {
4733     if (yylval.number)
4734     yy_aconf->port |= OPER_FLAG_N;
4735     else
4736     yy_aconf->port &= ~OPER_FLAG_N;
4737     }
4738     }
4739     break;
4740    
4741 michael 967 case 192:
4742    
4743     /* Line 1455 of yacc.c */
4744 michael 1024 #line 1357 "ircd_parser.y"
4745 michael 913 {
4746 michael 967 if (conf_parser_ctx.pass == 2)
4747 michael 913 {
4748     if (yylval.number)
4749     yy_aconf->port |= OPER_FLAG_DIE;
4750     else
4751     yy_aconf->port &= ~OPER_FLAG_DIE;
4752     }
4753     }
4754     break;
4755    
4756 michael 967 case 193:
4757    
4758     /* Line 1455 of yacc.c */
4759 michael 1024 #line 1368 "ircd_parser.y"
4760 michael 913 {
4761 michael 967 if (conf_parser_ctx.pass == 2)
4762 michael 913 {
4763     if (yylval.number)
4764     yy_aconf->port |= OPER_FLAG_REHASH;
4765     else
4766     yy_aconf->port &= ~OPER_FLAG_REHASH;
4767     }
4768     }
4769     break;
4770    
4771 michael 967 case 194:
4772    
4773     /* Line 1455 of yacc.c */
4774 michael 1024 #line 1379 "ircd_parser.y"
4775 michael 913 {
4776 michael 967 if (conf_parser_ctx.pass == 2)
4777 michael 913 {
4778     if (yylval.number)
4779     yy_aconf->port |= OPER_FLAG_ADMIN;
4780     else
4781     yy_aconf->port &= ~OPER_FLAG_ADMIN;
4782     }
4783     }
4784     break;
4785    
4786 michael 967 case 195:
4787    
4788     /* Line 1455 of yacc.c */
4789 michael 1024 #line 1390 "ircd_parser.y"
4790 michael 913 {
4791 michael 967 if (conf_parser_ctx.pass == 2)
4792 michael 913 {
4793     if (yylval.number)
4794     yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4795     else
4796     yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4797     }
4798     }
4799     break;
4800    
4801 michael 967 case 196:
4802    
4803     /* Line 1455 of yacc.c */
4804 michael 1024 #line 1401 "ircd_parser.y"
4805 michael 913 {
4806 michael 967 if (conf_parser_ctx.pass == 2)
4807 michael 913 {
4808     if (yylval.number)
4809     yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
4810     else
4811     yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
4812     }
4813     }
4814     break;
4815    
4816 michael 967 case 197:
4817    
4818     /* Line 1455 of yacc.c */
4819 michael 1024 #line 1412 "ircd_parser.y"
4820 michael 913 {
4821 michael 967 if (conf_parser_ctx.pass == 2)
4822 michael 913 {
4823     if (yylval.number)
4824     yy_aconf->port |= OPER_FLAG_OPERWALL;
4825     else
4826     yy_aconf->port &= ~OPER_FLAG_OPERWALL;
4827     }
4828     }
4829     break;
4830    
4831 michael 967 case 198:
4832    
4833     /* Line 1455 of yacc.c */
4834 michael 1024 #line 1423 "ircd_parser.y"
4835 michael 913 {
4836     }
4837     break;
4838    
4839 michael 967 case 202:
4840    
4841     /* Line 1455 of yacc.c */
4842 michael 1024 #line 1427 "ircd_parser.y"
4843 michael 913 { not_atom = 1; }
4844     break;
4845    
4846 michael 967 case 204:
4847    
4848     /* Line 1455 of yacc.c */
4849 michael 1024 #line 1428 "ircd_parser.y"
4850 michael 913 { not_atom = 0; }
4851     break;
4852    
4853 michael 967 case 206:
4854    
4855     /* Line 1455 of yacc.c */
4856 michael 1024 #line 1431 "ircd_parser.y"
4857 michael 913 {
4858 michael 967 if (conf_parser_ctx.pass == 2)
4859 michael 913 {
4860     if (not_atom)yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4861     else yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4862     }
4863     }
4864     break;
4865    
4866 michael 967 case 207:
4867    
4868     /* Line 1455 of yacc.c */
4869 michael 1024 #line 1438 "ircd_parser.y"
4870 michael 913 {
4871 michael 967 if (conf_parser_ctx.pass == 2)
4872 michael 913 {
4873     if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTE;
4874     else yy_aconf->port |= OPER_FLAG_REMOTE;
4875     }
4876     }
4877     break;
4878    
4879 michael 967 case 208:
4880    
4881     /* Line 1455 of yacc.c */
4882 michael 1024 #line 1445 "ircd_parser.y"
4883 michael 913 {
4884 michael 967 if (conf_parser_ctx.pass == 2)
4885 michael 913 {
4886     if (not_atom) yy_aconf->port &= ~OPER_FLAG_K;
4887     else yy_aconf->port |= OPER_FLAG_K;
4888     }
4889     }
4890     break;
4891    
4892 michael 967 case 209:
4893    
4894     /* Line 1455 of yacc.c */
4895 michael 1024 #line 1452 "ircd_parser.y"
4896 michael 913 {
4897 michael 967 if (conf_parser_ctx.pass == 2)
4898 michael 913 {
4899     if (not_atom) yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4900     else yy_aconf->port |= OPER_FLAG_UNKLINE;
4901     }
4902     }
4903     break;
4904    
4905 michael 967 case 210:
4906    
4907     /* Line 1455 of yacc.c */
4908 michael 1024 #line 1459 "ircd_parser.y"
4909 michael 913 {
4910 michael 967 if (conf_parser_ctx.pass == 2)
4911 michael 913 {
4912     if (not_atom) yy_aconf->port &= ~OPER_FLAG_X;
4913     else yy_aconf->port |= OPER_FLAG_X;
4914     }
4915     }
4916     break;
4917    
4918 michael 967 case 211:
4919    
4920     /* Line 1455 of yacc.c */
4921 michael 1024 #line 1466 "ircd_parser.y"
4922 michael 913 {
4923 michael 967 if (conf_parser_ctx.pass == 2)
4924 michael 913 {
4925     if (not_atom) yy_aconf->port &= ~OPER_FLAG_GLINE;
4926     else yy_aconf->port |= OPER_FLAG_GLINE;
4927     }
4928     }
4929     break;
4930    
4931 michael 967 case 212:
4932    
4933     /* Line 1455 of yacc.c */
4934 michael 1024 #line 1473 "ircd_parser.y"
4935 michael 913 {
4936 michael 967 if (conf_parser_ctx.pass == 2)
4937 michael 913 {
4938     if (not_atom) yy_aconf->port &= ~OPER_FLAG_DIE;
4939     else yy_aconf->port |= OPER_FLAG_DIE;
4940     }
4941     }
4942     break;
4943    
4944 michael 967 case 213:
4945    
4946     /* Line 1455 of yacc.c */
4947 michael 1024 #line 1480 "ircd_parser.y"
4948 michael 913 {
4949 michael 967 if (conf_parser_ctx.pass == 2)
4950 michael 913 {
4951     if (not_atom) yy_aconf->port &= ~OPER_FLAG_REHASH;
4952     else yy_aconf->port |= OPER_FLAG_REHASH;
4953     }
4954     }
4955     break;
4956    
4957 michael 967 case 214:
4958    
4959     /* Line 1455 of yacc.c */
4960 michael 1024 #line 1487 "ircd_parser.y"
4961 michael 913 {
4962 michael 967 if (conf_parser_ctx.pass == 2)
4963 michael 913 {
4964     if (not_atom) yy_aconf->port &= ~OPER_FLAG_ADMIN;
4965     else yy_aconf->port |= OPER_FLAG_ADMIN;
4966     }
4967     }
4968     break;
4969    
4970 michael 967 case 215:
4971    
4972     /* Line 1455 of yacc.c */
4973 michael 1024 #line 1494 "ircd_parser.y"
4974 michael 913 {
4975 michael 967 if (conf_parser_ctx.pass == 2)
4976 michael 913 {
4977     if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4978     else yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4979     }
4980     }
4981     break;
4982    
4983 michael 967 case 216:
4984    
4985     /* Line 1455 of yacc.c */
4986 michael 1024 #line 1501 "ircd_parser.y"
4987 michael 913 {
4988 michael 967 if (conf_parser_ctx.pass == 2)
4989 michael 913 {
4990     if (not_atom) yy_aconf->port &= ~OPER_FLAG_N;
4991     else yy_aconf->port |= OPER_FLAG_N;
4992     }
4993     }
4994     break;
4995    
4996 michael 967 case 217:
4997    
4998     /* Line 1455 of yacc.c */
4999 michael 1024 #line 1508 "ircd_parser.y"
5000 michael 913 {
5001 michael 967 if (conf_parser_ctx.pass == 2)
5002 michael 913 {
5003     if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPERWALL;
5004     else yy_aconf->port |= OPER_FLAG_OPERWALL;
5005     }
5006     }
5007     break;
5008    
5009 michael 967 case 218:
5010    
5011     /* Line 1455 of yacc.c */
5012 michael 1024 #line 1515 "ircd_parser.y"
5013 michael 913 {
5014 michael 967 if (conf_parser_ctx.pass == 2)
5015 michael 913 {
5016     if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPER_SPY;
5017     else yy_aconf->port |= OPER_FLAG_OPER_SPY;
5018     }
5019     }
5020     break;
5021    
5022 michael 967 case 219:
5023    
5024     /* Line 1455 of yacc.c */
5025 michael 1024 #line 1522 "ircd_parser.y"
5026 michael 913 {
5027 michael 967 if (conf_parser_ctx.pass == 2)
5028 michael 913 {
5029     if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
5030     else yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
5031     }
5032     }
5033     break;
5034    
5035 michael 967 case 220:
5036    
5037     /* Line 1455 of yacc.c */
5038 michael 1024 #line 1529 "ircd_parser.y"
5039 michael 913 {
5040 michael 967 if (conf_parser_ctx.pass == 2)
5041 michael 913 {
5042     if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
5043     else yy_aconf->port |= OPER_FLAG_REMOTEBAN;
5044     }
5045     }
5046     break;
5047    
5048 michael 967 case 221:
5049    
5050     /* Line 1455 of yacc.c */
5051 michael 1024 #line 1536 "ircd_parser.y"
5052 michael 913 {
5053 michael 967 if (conf_parser_ctx.pass == 2)
5054 michael 913 {
5055     if (not_atom) ClearConfEncrypted(yy_aconf);
5056     else SetConfEncrypted(yy_aconf);
5057     }
5058     }
5059     break;
5060    
5061 michael 967 case 222:
5062    
5063     /* Line 1455 of yacc.c */
5064 michael 1024 #line 1549 "ircd_parser.y"
5065 michael 913 {
5066 michael 967 if (conf_parser_ctx.pass == 1)
5067 michael 913 {
5068     yy_conf = make_conf_item(CLASS_TYPE);
5069     yy_class = map_to_conf(yy_conf);
5070     }
5071     }
5072     break;
5073    
5074 michael 967 case 223:
5075    
5076     /* Line 1455 of yacc.c */
5077 michael 1024 #line 1556 "ircd_parser.y"
5078 michael 913 {
5079 michael 967 if (conf_parser_ctx.pass == 1)
5080 michael 913 {
5081     struct ConfItem *cconf = NULL;
5082     struct ClassItem *class = NULL;
5083    
5084     if (yy_class_name == NULL)
5085     delete_conf_item(yy_conf);
5086     else
5087     {
5088     cconf = find_exact_name_conf(CLASS_TYPE, yy_class_name, NULL, NULL);
5089    
5090     if (cconf != NULL) /* The class existed already */
5091     {
5092     int user_count = 0;
5093    
5094     rebuild_cidr_class(cconf, yy_class);
5095    
5096     class = map_to_conf(cconf);
5097    
5098     user_count = class->curr_user_count;
5099     memcpy(class, yy_class, sizeof(*class));
5100     class->curr_user_count = user_count;
5101     class->active = 1;
5102    
5103     delete_conf_item(yy_conf);
5104    
5105     MyFree(cconf->name); /* Allows case change of class name */
5106     cconf->name = yy_class_name;
5107     }
5108     else /* Brand new class */
5109     {
5110     MyFree(yy_conf->name); /* just in case it was allocated */
5111     yy_conf->name = yy_class_name;
5112     yy_class->active = 1;
5113     }
5114     }
5115    
5116     yy_class_name = NULL;
5117     }
5118     }
5119     break;
5120    
5121 michael 967 case 242:
5122    
5123     /* Line 1455 of yacc.c */
5124 michael 1024 #line 1616 "ircd_parser.y"
5125 michael 913 {
5126 michael 967 if (conf_parser_ctx.pass == 1)
5127 michael 913 {
5128     MyFree(yy_class_name);
5129     DupString(yy_class_name, yylval.string);
5130     }
5131     }
5132     break;
5133    
5134 michael 967 case 243:
5135    
5136     /* Line 1455 of yacc.c */
5137 michael 1024 #line 1625 "ircd_parser.y"
5138 michael 913 {
5139 michael 967 if (conf_parser_ctx.pass == 1)
5140 michael 913 {
5141     MyFree(yy_class_name);
5142     DupString(yy_class_name, yylval.string);
5143     }
5144     }
5145     break;
5146    
5147 michael 967 case 244:
5148    
5149     /* Line 1455 of yacc.c */
5150 michael 1024 #line 1634 "ircd_parser.y"
5151 michael 913 {
5152 michael 967 if (conf_parser_ctx.pass == 1)
5153 michael 913 PingFreq(yy_class) = (yyvsp[(3) - (4)].number);
5154     }
5155     break;
5156    
5157 michael 967 case 245:
5158    
5159     /* Line 1455 of yacc.c */
5160 michael 1024 #line 1640 "ircd_parser.y"
5161 michael 913 {
5162 michael 967 if (conf_parser_ctx.pass == 1)
5163 michael 913 PingWarning(yy_class) = (yyvsp[(3) - (4)].number);
5164     }
5165     break;
5166    
5167 michael 967 case 246:
5168    
5169     /* Line 1455 of yacc.c */
5170 michael 1024 #line 1646 "ircd_parser.y"
5171 michael 913 {
5172 michael 967 if (conf_parser_ctx.pass == 1)
5173 michael 913 MaxPerIp(yy_class) = (yyvsp[(3) - (4)].number);
5174     }
5175     break;
5176    
5177 michael 967 case 247:
5178    
5179     /* Line 1455 of yacc.c */
5180 michael 1024 #line 1652 "ircd_parser.y"
5181 michael 913 {
5182 michael 967 if (conf_parser_ctx.pass == 1)
5183 michael 913 ConFreq(yy_class) = (yyvsp[(3) - (4)].number);
5184     }
5185     break;
5186    
5187 michael 967 case 248:
5188    
5189     /* Line 1455 of yacc.c */
5190 michael 1024 #line 1658 "ircd_parser.y"
5191 michael 913 {
5192 michael 967 if (conf_parser_ctx.pass == 1)
5193 michael 913 MaxTotal(yy_class) = (yyvsp[(3) - (4)].number);
5194     }
5195     break;
5196    
5197 michael 967 case 249:
5198    
5199     /* Line 1455 of yacc.c */
5200 michael 1024 #line 1664 "ircd_parser.y"
5201 michael 913 {
5202 michael 967 if (conf_parser_ctx.pass == 1)
5203 michael 913 MaxGlobal(yy_class) = (yyvsp[(3) - (4)].number);
5204     }
5205     break;
5206    
5207 michael 967 case 250:
5208    
5209     /* Line 1455 of yacc.c */
5210 michael 1024 #line 1670 "ircd_parser.y"
5211 michael 913 {
5212 michael 967 if (conf_parser_ctx.pass == 1)
5213 michael 913 MaxLocal(yy_class) = (yyvsp[(3) - (4)].number);
5214     }
5215     break;
5216    
5217 michael 967 case 251:
5218    
5219     /* Line 1455 of yacc.c */
5220 michael 1024 #line 1676 "ircd_parser.y"
5221 michael 913 {
5222 michael 967 if (conf_parser_ctx.pass == 1)
5223 michael 913 MaxIdent(yy_class) = (yyvsp[(3) - (4)].number);
5224     }
5225     break;
5226    
5227 michael 967 case 252:
5228    
5229     /* Line 1455 of yacc.c */
5230 michael 1024 #line 1682 "ircd_parser.y"
5231 michael 913 {
5232 michael 967 if (conf_parser_ctx.pass == 1)
5233 michael 913 MaxSendq(yy_class) = (yyvsp[(3) - (4)].number);
5234     }
5235     break;
5236    
5237 michael 967 case 253:
5238    
5239     /* Line 1455 of yacc.c */
5240 michael 1024 #line 1688 "ircd_parser.y"
5241 michael 913 {
5242 michael 967 if (conf_parser_ctx.pass == 1)
5243 michael 913 CidrBitlenIPV4(yy_class) = (yyvsp[(3) - (4)].number);
5244     }
5245     break;
5246    
5247 michael 967 case 254:
5248    
5249     /* Line 1455 of yacc.c */
5250 michael 1024 #line 1694 "ircd_parser.y"
5251 michael 913 {
5252 michael 967 if (conf_parser_ctx.pass == 1)
5253 michael 913 CidrBitlenIPV6(yy_class) = (yyvsp[(3) - (4)].number);
5254     }
5255     break;
5256    
5257 michael 967 case 255:
5258    
5259     /* Line 1455 of yacc.c */
5260 michael 1024 #line 1700 "ircd_parser.y"
5261 michael 913 {
5262 michael 967 if (conf_parser_ctx.pass == 1)
5263 michael 913 NumberPerCidr(yy_class) = (yyvsp[(3) - (4)].number);
5264     }
5265     break;
5266    
5267 michael 967 case 256:
5268    
5269     /* Line 1455 of yacc.c */
5270 michael 1024 #line 1709 "ircd_parser.y"
5271 michael 913 {
5272 michael 967 if (conf_parser_ctx.pass == 2)
5273 michael 913 {
5274     listener_address = NULL;
5275     listener_flags = 0;
5276     }
5277     }
5278     break;
5279    
5280 michael 967 case 257:
5281    
5282     /* Line 1455 of yacc.c */
5283 michael 1024 #line 1716 "ircd_parser.y"
5284 michael 913 {
5285 michael 967 if (conf_parser_ctx.pass == 2)
5286 michael 913 {
5287     MyFree(listener_address);
5288     listener_address = NULL;
5289     }
5290     }
5291     break;
5292    
5293 michael 967 case 258:
5294    
5295     /* Line 1455 of yacc.c */
5296 michael 1024 #line 1725 "ircd_parser.y"
5297 michael 913 {
5298     listener_flags = 0;
5299     }
5300     break;
5301    
5302 michael 967 case 262:
5303    
5304     /* Line 1455 of yacc.c */
5305 michael 1024 #line 1731 "ircd_parser.y"
5306 michael 913 {
5307 michael 967 if (conf_parser_ctx.pass == 2)
5308 michael 913 listener_flags |= LISTENER_SSL;
5309     }
5310     break;
5311    
5312 michael 967 case 263:
5313    
5314     /* Line 1455 of yacc.c */
5315 michael 1024 #line 1735 "ircd_parser.y"
5316 michael 913 {
5317 michael 967 if (conf_parser_ctx.pass == 2)
5318 michael 913 listener_flags |= LISTENER_HIDDEN;
5319     }
5320     break;
5321    
5322 michael 967 case 264:
5323    
5324     /* Line 1455 of yacc.c */
5325 michael 1024 #line 1739 "ircd_parser.y"
5326 michael 913 {
5327 michael 967 if (conf_parser_ctx.pass == 2)
5328 michael 913 listener_flags |= LISTENER_SERVER;
5329     }
5330     break;
5331    
5332 michael 967 case 272:
5333    
5334     /* Line 1455 of yacc.c */
5335 michael 1024 #line 1749 "ircd_parser.y"
5336 michael 913 { listener_flags = 0; }
5337     break;
5338    
5339 michael 967 case 276:
5340    
5341     /* Line 1455 of yacc.c */
5342 michael 1024 #line 1754 "ircd_parser.y"
5343 michael 913 {
5344 michael 967 if (conf_parser_ctx.pass == 2)
5345 michael 913 {
5346     if ((listener_flags & LISTENER_SSL))
5347     #ifdef HAVE_LIBCRYPTO
5348 michael 967 if (!ServerInfo.server_ctx)
5349 michael 913 #endif
5350     {
5351     yyerror("SSL not available - port closed");
5352     break;
5353     }
5354     add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
5355     }
5356     }
5357     break;
5358    
5359 michael 967 case 277:
5360    
5361     /* Line 1455 of yacc.c */
5362 michael 1024 #line 1768 "ircd_parser.y"
5363 michael 913 {
5364 michael 967 if (conf_parser_ctx.pass == 2)
5365 michael 913 {
5366     int i;
5367    
5368     if ((listener_flags & LISTENER_SSL))
5369     #ifdef HAVE_LIBCRYPTO
5370 michael 967 if (!ServerInfo.server_ctx)
5371 michael 913 #endif
5372     {
5373     yyerror("SSL not available - port closed");
5374     break;
5375     }
5376    
5377     for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
5378     add_listener(i, listener_address, listener_flags);
5379     }
5380     }
5381     break;
5382    
5383 michael 967 case 278:
5384    
5385     /* Line 1455 of yacc.c */
5386 michael 1024 #line 1788 "ircd_parser.y"
5387 michael 913 {
5388 michael 967 if (conf_parser_ctx.pass == 2)
5389 michael 913 {
5390     MyFree(listener_address);
5391     DupString(listener_address, yylval.string);
5392     }
5393     }
5394     break;
5395    
5396 michael 967 case 279:
5397    
5398     /* Line 1455 of yacc.c */
5399 michael 1024 #line 1797 "ircd_parser.y"
5400 michael 913 {
5401 michael 967 if (conf_parser_ctx.pass == 2)
5402 michael 913 {
5403     MyFree(listener_address);
5404     DupString(listener_address, yylval.string);
5405     }
5406     }
5407     break;
5408    
5409 michael 967 case 280:
5410    
5411     /* Line 1455 of yacc.c */
5412 michael 1024 #line 1809 "ircd_parser.y"
5413 michael 913 {
5414 michael 967 if (conf_parser_ctx.pass == 2)
5415 michael 913 {
5416     yy_conf = make_conf_item(CLIENT_TYPE);
5417     yy_aconf = map_to_conf(yy_conf);
5418     }
5419     else
5420     {
5421     MyFree(class_name);
5422     class_name = NULL;
5423     }
5424     }
5425     break;
5426    
5427 michael 967 case 281:
5428    
5429     /* Line 1455 of yacc.c */
5430 michael 1024 #line 1821 "ircd_parser.y"
5431 michael 913 {
5432 michael 967 if (conf_parser_ctx.pass == 2)
5433 michael 913 {
5434     struct CollectItem *yy_tmp = NULL;
5435     dlink_node *ptr = NULL, *next_ptr = NULL;
5436    
5437     if (yy_aconf->user && yy_aconf->host)
5438     {
5439     conf_add_class_to_conf(yy_conf, class_name);
5440     add_conf_by_address(CONF_CLIENT, yy_aconf);
5441     }
5442     else
5443     delete_conf_item(yy_conf);
5444    
5445     /* copy over settings from first struct */
5446     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
5447     {
5448     struct AccessItem *new_aconf;
5449     struct ConfItem *new_conf;
5450    
5451     new_conf = make_conf_item(CLIENT_TYPE);
5452     new_aconf = map_to_conf(new_conf);
5453    
5454     yy_tmp = ptr->data;
5455    
5456     assert(yy_tmp->user && yy_tmp->host);
5457    
5458     if (yy_aconf->passwd != NULL)
5459     DupString(new_aconf->passwd, yy_aconf->passwd);
5460     if (yy_conf->name != NULL)
5461     DupString(new_conf->name, yy_conf->name);
5462     if (yy_aconf->passwd != NULL)
5463     DupString(new_aconf->passwd, yy_aconf->passwd);
5464    
5465     new_aconf->flags = yy_aconf->flags;
5466     new_aconf->port = yy_aconf->port;
5467    
5468     DupString(new_aconf->user, yy_tmp->user);
5469     collapse(new_aconf->user);
5470    
5471     DupString(new_aconf->host, yy_tmp->host);
5472     collapse(new_aconf->host);
5473    
5474     conf_add_class_to_conf(new_conf, class_name);
5475     add_conf_by_address(CONF_CLIENT, new_aconf);
5476     dlinkDelete(&yy_tmp->node, &col_conf_list);
5477     free_collect_item(yy_tmp);
5478     }
5479    
5480     MyFree(class_name);
5481     class_name = NULL;
5482     yy_conf = NULL;
5483     yy_aconf = NULL;
5484     }
5485     }
5486     break;
5487    
5488 michael 967 case 301:
5489    
5490     /* Line 1455 of yacc.c */
5491 michael 1024 #line 1886 "ircd_parser.y"
5492 michael 913 {
5493 michael 967 if (conf_parser_ctx.pass == 2)
5494 michael 913 {
5495     struct CollectItem *yy_tmp = NULL;
5496     struct split_nuh_item nuh;
5497    
5498     nuh.nuhmask = yylval.string;
5499     nuh.nickptr = NULL;
5500     nuh.userptr = userbuf;
5501     nuh.hostptr = hostbuf;
5502    
5503     nuh.nicksize = 0;
5504     nuh.usersize = sizeof(userbuf);
5505     nuh.hostsize = sizeof(hostbuf);
5506    
5507     split_nuh(&nuh);
5508    
5509     if (yy_aconf->user == NULL)
5510     {
5511     DupString(yy_aconf->user, userbuf);
5512     DupString(yy_aconf->host, hostbuf);
5513     }
5514     else
5515     {
5516     yy_tmp = MyMalloc(sizeof(struct CollectItem));
5517    
5518     DupString(yy_tmp->user, userbuf);
5519     DupString(yy_tmp->host, hostbuf);
5520    
5521     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
5522     }
5523     }
5524     }
5525     break;
5526    
5527 michael 967 case 302:
5528    
5529     /* Line 1455 of yacc.c */
5530 michael 1024 #line 1923 "ircd_parser.y"
5531 michael 913 {
5532 michael 967 if (conf_parser_ctx.pass == 2)
5533 michael 913 {
5534     /* be paranoid */
5535     if (yy_aconf->passwd != NULL)
5536     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5537    
5538     MyFree(yy_aconf->passwd);
5539     DupString(yy_aconf->passwd, yylval.string);
5540     }
5541     }
5542     break;
5543    
5544 michael 967 case 303:
5545    
5546     /* Line 1455 of yacc.c */
5547 michael 1024 #line 1936 "ircd_parser.y"
5548 michael 913 {
5549 michael 967 if (conf_parser_ctx.pass == 2)
5550 michael 913 {
5551     if (yylval.number)
5552     yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5553     else
5554     yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5555     }
5556     }
5557     break;
5558    
5559 michael 967 case 304:
5560    
5561     /* Line 1455 of yacc.c */
5562 michael 1024 #line 1947 "ircd_parser.y"
5563 michael 913 {
5564 michael 967 if (conf_parser_ctx.pass == 2)
5565 michael 913 {
5566     MyFree(class_name);
5567     DupString(class_name, yylval.string);
5568     }
5569     }
5570     break;
5571    
5572 michael 967 case 305:
5573    
5574     /* Line 1455 of yacc.c */
5575 michael 1024 #line 1956 "ircd_parser.y"
5576 michael 913 {
5577 michael 967 if (conf_parser_ctx.pass == 2)
5578 michael 913 {
5579     if (yylval.number)
5580     SetConfEncrypted(yy_aconf);
5581     else
5582     ClearConfEncrypted(yy_aconf);
5583     }
5584     }
5585     break;
5586    
5587 michael 967 case 306:
5588    
5589     /* Line 1455 of yacc.c */
5590 michael 1024 #line 1967 "ircd_parser.y"
5591 michael 913 {
5592     }
5593     break;
5594    
5595 michael 967 case 310:
5596    
5597     /* Line 1455 of yacc.c */
5598 michael 1024 #line 1971 "ircd_parser.y"
5599 michael 913 { not_atom = 1; }
5600     break;
5601    
5602 michael 967 case 312:
5603    
5604     /* Line 1455 of yacc.c */
5605 michael 1024 #line 1972 "ircd_parser.y"
5606 michael 913 { not_atom = 0; }
5607     break;
5608    
5609 michael 967 case 314:
5610    
5611     /* Line 1455 of yacc.c */
5612 michael 1024 #line 1975 "ircd_parser.y"
5613 michael 913 {
5614 michael 967 if (conf_parser_ctx.pass == 2)
5615 michael 913 {
5616     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5617     else yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5618     }
5619    
5620     }
5621     break;
5622    
5623 michael 967 case 315:
5624    
5625     /* Line 1455 of yacc.c */
5626 michael 1024 #line 1983 "ircd_parser.y"
5627 michael 913 {
5628 michael 967 if (conf_parser_ctx.pass == 2)
5629 michael 913 {
5630     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5631     else yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5632     }
5633     }
5634     break;
5635    
5636 michael 967 case 316:
5637    
5638     /* Line 1455 of yacc.c */
5639 michael 1024 #line 1990 "ircd_parser.y"
5640 michael 913 {
5641 michael 967 if (conf_parser_ctx.pass == 2)
5642 michael 913 {
5643     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5644     else yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5645     }
5646     }
5647     break;
5648    
5649 michael 967 case 317:
5650    
5651     /* Line 1455 of yacc.c */
5652 michael 1024 #line 1997 "ircd_parser.y"
5653 michael 913 {
5654 michael 967 if (conf_parser_ctx.pass == 2)
5655 michael 913 {
5656     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5657     else yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5658     }
5659     }
5660     break;
5661    
5662 michael 967 case 318:
5663    
5664     /* Line 1455 of yacc.c */
5665 michael 1024 #line 2004 "ircd_parser.y"
5666 michael 913 {
5667 michael 967 if (conf_parser_ctx.pass == 2)
5668 michael 913 {
5669     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5670     else yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5671     }
5672     }
5673     break;
5674    
5675 michael 967 case 319:
5676    
5677     /* Line 1455 of yacc.c */
5678 michael 1024 #line 2011 "ircd_parser.y"
5679 michael 913 {
5680 michael 967 if (conf_parser_ctx.pass == 2)
5681 michael 913 {
5682     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_IDLE_LINED;
5683     else yy_aconf->flags |= CONF_FLAGS_IDLE_LINED;
5684     }
5685     }
5686     break;
5687    
5688 michael 967 case 320:
5689    
5690     /* Line 1455 of yacc.c */
5691 michael 1024 #line 2018 "ircd_parser.y"
5692 michael 913 {
5693 michael 967 if (conf_parser_ctx.pass == 2)
5694 michael 913 {
5695     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5696     else yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5697     }
5698     }
5699     break;
5700    
5701 michael 967 case 321:
5702    
5703     /* Line 1455 of yacc.c */
5704 michael 1024 #line 2025 "ircd_parser.y"
5705 michael 913 {
5706 michael 967 if (conf_parser_ctx.pass == 2)
5707 michael 913 {
5708     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5709     else yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5710     }
5711     }
5712     break;
5713    
5714 michael 967 case 322:
5715    
5716     /* Line 1455 of yacc.c */
5717 michael 1024 #line 2032 "ircd_parser.y"
5718 michael 913 {
5719 michael 967 if (conf_parser_ctx.pass == 2)
5720 michael 913 {
5721     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTRESV;
5722     else yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5723     }
5724     }
5725     break;
5726    
5727 michael 967 case 323:
5728    
5729     /* Line 1455 of yacc.c */
5730 michael 1024 #line 2039 "ircd_parser.y"
5731 michael 913 {
5732 michael 967 if (conf_parser_ctx.pass == 2)
5733 michael 913 {
5734     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5735     else yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5736     }
5737     }
5738     break;
5739    
5740 michael 967 case 324:
5741    
5742     /* Line 1455 of yacc.c */
5743 michael 1024 #line 2048 "ircd_parser.y"
5744 michael 913 {
5745 michael 967 if (conf_parser_ctx.pass == 2)
5746 michael 913 {
5747     if (yylval.number)
5748     yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5749     else
5750     yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5751     }
5752     }
5753     break;
5754    
5755 michael 967 case 325:
5756    
5757     /* Line 1455 of yacc.c */
5758 michael 1024 #line 2059 "ircd_parser.y"
5759 michael 913 {
5760 michael 967 if (conf_parser_ctx.pass == 2)
5761 michael 913 {
5762     if (yylval.number)
5763     yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5764     else
5765     yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5766     }
5767     }
5768     break;
5769    
5770 michael 967 case 326:
5771    
5772     /* Line 1455 of yacc.c */
5773 michael 1024 #line 2070 "ircd_parser.y"
5774 michael 913 {
5775 michael 967 if (conf_parser_ctx.pass == 2)
5776 michael 913 {
5777     if (yylval.number)
5778     yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5779     else
5780     yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5781     }
5782     }
5783     break;
5784    
5785 michael 967 case 327:
5786    
5787     /* Line 1455 of yacc.c */
5788 michael 1024 #line 2081 "ircd_parser.y"
5789 michael 913 {
5790 michael 967 if (conf_parser_ctx.pass == 2)
5791 michael 913 {
5792     if (yylval.number)
5793     yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5794     else
5795     yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5796     }
5797     }
5798     break;
5799    
5800 michael 967 case 328:
5801    
5802     /* Line 1455 of yacc.c */
5803 michael 1024 #line 2092 "ircd_parser.y"
5804 michael 913 {
5805 michael 967 if (conf_parser_ctx.pass == 2)
5806 michael 913 {
5807     if (yylval.number)
5808     yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5809     else
5810     yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5811     }
5812     }
5813     break;
5814    
5815 michael 967 case 329:
5816    
5817     /* Line 1455 of yacc.c */
5818 michael 1024 #line 2103 "ircd_parser.y"
5819 michael 913 {
5820 michael 967 if (conf_parser_ctx.pass == 2)
5821 michael 913 {
5822     if (yylval.number)
5823     yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5824     else
5825     yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5826     }
5827     }
5828     break;
5829    
5830 michael 967 case 330:
5831    
5832     /* Line 1455 of yacc.c */
5833 michael 1024 #line 2115 "ircd_parser.y"
5834 michael 913 {
5835 michael 967 if (conf_parser_ctx.pass == 2)
5836 michael 913 {
5837     MyFree(yy_conf->name);
5838    
5839     if (strlen(yylval.string) < HOSTLEN)
5840     {
5841     DupString(yy_conf->name, yylval.string);
5842     yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5843     }
5844     else
5845     {
5846     ilog(L_ERROR, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5847     yy_conf->name = NULL;
5848     }
5849     }
5850     }
5851     break;
5852    
5853 michael 967 case 331:
5854    
5855     /* Line 1455 of yacc.c */
5856 michael 1024 #line 2134 "ircd_parser.y"
5857 michael 913 {
5858 michael 967 if (conf_parser_ctx.pass == 2)
5859 michael 913 {
5860     yy_aconf->flags |= CONF_FLAGS_REDIR;
5861     MyFree(yy_conf->name);
5862     DupString(yy_conf->name, yylval.string);
5863     }
5864     }
5865     break;
5866    
5867 michael 967 case 332:
5868    
5869     /* Line 1455 of yacc.c */
5870 michael 1024 #line 2144 "ircd_parser.y"
5871 michael 913 {
5872 michael 967 if (conf_parser_ctx.pass == 2)
5873 michael 913 {
5874     yy_aconf->flags |= CONF_FLAGS_REDIR;
5875     yy_aconf->port = (yyvsp[(3) - (4)].number);
5876     }
5877     }
5878     break;
5879    
5880 michael 967 case 333:
5881    
5882     /* Line 1455 of yacc.c */
5883 michael 1024 #line 2153 "ircd_parser.y"
5884 michael 913 {
5885 michael 967 if (conf_parser_ctx.pass == 2)
5886 michael 913 {
5887     if (yylval.number)
5888     yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5889     else
5890     yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5891     }
5892     }
5893     break;
5894    
5895 michael 967 case 334:
5896    
5897     /* Line 1455 of yacc.c */
5898 michael 1024 #line 2168 "ircd_parser.y"
5899 michael 913 {
5900 michael 967 if (conf_parser_ctx.pass == 2)
5901 michael 913 {
5902     MyFree(resv_reason);
5903     resv_reason = NULL;
5904     }
5905     }
5906     break;
5907    
5908 michael 967 case 335:
5909    
5910     /* Line 1455 of yacc.c */
5911 michael 1024 #line 2175 "ircd_parser.y"
5912 michael 913 {
5913 michael 967 if (conf_parser_ctx.pass == 2)
5914 michael 913 {
5915     MyFree(resv_reason);
5916     resv_reason = NULL;
5917     }
5918     }
5919     break;
5920    
5921 michael 967 case 342:
5922    
5923     /* Line 1455 of yacc.c */
5924 michael 1024 #line 2187 "ircd_parser.y"
5925 michael 913 {
5926 michael 967 if (conf_parser_ctx.pass == 2)
5927 michael 913 {
5928     MyFree(resv_reason);
5929     DupString(resv_reason, yylval.string);
5930     }
5931     }
5932     break;
5933    
5934 michael 967 case 343:
5935    
5936     /* Line 1455 of yacc.c */
5937 michael 1024 #line 2196 "ircd_parser.y"
5938 michael 913 {
5939 michael 967 if (conf_parser_ctx.pass == 2)
5940 michael 913 {
5941     if (IsChanPrefix(*yylval.string))
5942     {
5943     char def_reason[] = "No reason";
5944    
5945     create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5946     }
5947     }
5948     /* ignore it for now.. but we really should make a warning if
5949     * its an erroneous name --fl_ */
5950     }
5951     break;
5952    
5953 michael 967 case 344:
5954    
5955     /* Line 1455 of yacc.c */
5956 michael 1024 #line 2211 "ircd_parser.y"
5957 michael 913 {
5958 michael 967 if (conf_parser_ctx.pass == 2)
5959 michael 913 {
5960     char def_reason[] = "No reason";
5961    
5962     create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5963     }
5964     }
5965     break;
5966    
5967 michael 967 case 345:
5968    
5969     /* Line 1455 of yacc.c */
5970 michael 1024 #line 2224 "ircd_parser.y"
5971 michael 913 {
5972 michael 967 if (conf_parser_ctx.pass == 2)
5973 michael 913 {
5974     yy_conf = make_conf_item(ULINE_TYPE);
5975     yy_match_item = map_to_conf(yy_conf);
5976     yy_match_item->action = SHARED_ALL;
5977     }
5978     }
5979     break;
5980    
5981 michael 967 case 346:
5982    
5983     /* Line 1455 of yacc.c */
5984 michael 1024 #line 2232 "ircd_parser.y"
5985 michael 913 {
5986 michael 967 if (conf_parser_ctx.pass == 2)
5987 michael 913 {
5988     yy_conf = NULL;
5989     }
5990     }
5991     break;
5992    
5993 michael 967 case 353:
5994    
5995     /* Line 1455 of yacc.c */
5996 michael 1024 #line 2243 "ircd_parser.y"
5997 michael 913 {
5998 michael 967 if (conf_parser_ctx.pass == 2)
5999 michael 913 {
6000     MyFree(yy_conf->name);
6001     DupString(yy_conf->name, yylval.string);
6002     }
6003     }
6004     break;
6005    
6006 michael 967 case 354:
6007    
6008     /* Line 1455 of yacc.c */
6009 michael 1024 #line 2252 "ircd_parser.y"
6010 michael 913 {
6011 michael 967 if (conf_parser_ctx.pass == 2)
6012 michael 913 {
6013     struct split_nuh_item nuh;
6014    
6015     nuh.nuhmask = yylval.string;
6016     nuh.nickptr = NULL;
6017     nuh.userptr = userbuf;
6018     nuh.hostptr = hostbuf;
6019    
6020     nuh.nicksize = 0;
6021     nuh.usersize = sizeof(userbuf);
6022     nuh.hostsize = sizeof(hostbuf);
6023    
6024     split_nuh(&nuh);
6025    
6026     DupString(yy_match_item->user, userbuf);
6027     DupString(yy_match_item->host, hostbuf);
6028     }
6029     }
6030     break;
6031    
6032 michael 967 case 355:
6033    
6034     /* Line 1455 of yacc.c */
6035 michael 1024 #line 2274 "ircd_parser.y"
6036 michael 913 {
6037 michael 967 if (conf_parser_ctx.pass == 2)
6038 michael 913 yy_match_item->action = 0;
6039     }
6040     break;
6041    
6042 michael 967 case 359:
6043    
6044     /* Line 1455 of yacc.c */
6045 michael 1024 #line 2281 "ircd_parser.y"
6046 michael 913 {
6047 michael 967 if (conf_parser_ctx.pass == 2)
6048 michael 913 yy_match_item->action |= SHARED_KLINE;
6049     }
6050     break;
6051    
6052 michael 967 case 360:
6053    
6054     /* Line 1455 of yacc.c */
6055 michael 1024 #line 2285 "ircd_parser.y"
6056 michael 913 {
6057 michael 967 if (conf_parser_ctx.pass == 2)
6058 michael 913 yy_match_item->action |= SHARED_TKLINE;
6059     }
6060     break;
6061    
6062 michael 967 case 361:
6063    
6064     /* Line 1455 of yacc.c */
6065 michael 1024 #line 2289 "ircd_parser.y"
6066 michael 913 {
6067 michael 967 if (conf_parser_ctx.pass == 2)
6068 michael 913 yy_match_item->action |= SHARED_UNKLINE;
6069     }
6070     break;
6071    
6072 michael 967 case 362:
6073    
6074     /* Line 1455 of yacc.c */
6075 michael 1024 #line 2293 "ircd_parser.y"
6076 michael 913 {
6077 michael 967 if (conf_parser_ctx.pass == 2)
6078 michael 913 yy_match_item->action |= SHARED_XLINE;
6079     }
6080     break;
6081    
6082 michael 967 case 363:
6083    
6084     /* Line 1455 of yacc.c */
6085 michael 1024 #line 2297 "ircd_parser.y"
6086 michael 913 {
6087 michael 967 if (conf_parser_ctx.pass == 2)
6088 michael 913 yy_match_item->action |= SHARED_TXLINE;
6089     }
6090     break;
6091    
6092 michael 967 case 364:
6093    
6094     /* Line 1455 of yacc.c */
6095 michael 1024 #line 2301 "ircd_parser.y"
6096 michael 913 {
6097 michael 967 if (conf_parser_ctx.pass == 2)
6098 michael 913 yy_match_item->action |= SHARED_UNXLINE;
6099     }
6100     break;
6101    
6102 michael 967 case 365:
6103    
6104     /* Line 1455 of yacc.c */
6105 michael 1024 #line 2305 "ircd_parser.y"
6106 michael 913 {
6107 michael 967 if (conf_parser_ctx.pass == 2)
6108 michael 913 yy_match_item->action |= SHARED_RESV;
6109     }
6110     break;
6111    
6112 michael 967 case 366:
6113    
6114     /* Line 1455 of yacc.c */
6115 michael 1024 #line 2309 "ircd_parser.y"
6116 michael 913 {
6117 michael 967 if (conf_parser_ctx.pass == 2)
6118 michael 913 yy_match_item->action |= SHARED_TRESV;
6119     }
6120     break;
6121    
6122 michael 967 case 367:
6123    
6124     /* Line 1455 of yacc.c */
6125 michael 1024 #line 2313 "ircd_parser.y"
6126 michael 913 {
6127 michael 967 if (conf_parser_ctx.pass == 2)
6128 michael 913 yy_match_item->action |= SHARED_UNRESV;
6129     }
6130     break;
6131    
6132 michael 967 case 368:
6133    
6134     /* Line 1455 of yacc.c */
6135 michael 1024 #line 2317 "ircd_parser.y"
6136 michael 913 {
6137 michael 967 if (conf_parser_ctx.pass == 2)
6138 michael 913 yy_match_item->action |= SHARED_LOCOPS;
6139     }
6140     break;
6141    
6142 michael 967 case 369:
6143    
6144     /* Line 1455 of yacc.c */
6145 michael 1024 #line 2321 "ircd_parser.y"
6146 michael 913 {
6147 michael 967 if (conf_parser_ctx.pass == 2)
6148 michael 913 yy_match_item->action = SHARED_ALL;
6149     }
6150     break;
6151    
6152 michael 967 case 370:
6153    
6154     /* Line 1455 of yacc.c */
6155 michael 1024 #line 2330 "ircd_parser.y"
6156 michael 913 {
6157 michael 967 if (conf_parser_ctx.pass == 2)
6158 michael 913 {
6159     yy_conf = make_conf_item(CLUSTER_TYPE);
6160     yy_conf->flags = SHARED_ALL;
6161     }
6162     }
6163     break;
6164    
6165 michael 967 case 371:
6166    
6167     /* Line 1455 of yacc.c */
6168 michael 1024 #line 2337 "ircd_parser.y"
6169 michael 913 {
6170 michael 967 if (conf_parser_ctx.pass == 2)
6171 michael 913 {
6172     if (yy_conf->name == NULL)
6173     DupString(yy_conf->name, "*");
6174     yy_conf = NULL;
6175     }
6176     }
6177     break;
6178    
6179 michael 967 case 377:
6180    
6181     /* Line 1455 of yacc.c */
6182 michael 1024 #line 2350 "ircd_parser.y"
6183 michael 913 {
6184 michael 967 if (conf_parser_ctx.pass == 2)
6185 michael 913 DupString(yy_conf->name, yylval.string);
6186     }
6187     break;
6188    
6189 michael 967 case 378:
6190    
6191     /* Line 1455 of yacc.c */
6192 michael 1024 #line 2356 "ircd_parser.y"
6193 michael 913 {
6194 michael 967 if (conf_parser_ctx.pass == 2)
6195 michael 913 yy_conf->flags = 0;
6196     }
6197     break;
6198    
6199 michael 967 case 382:
6200    
6201     /* Line 1455 of yacc.c */
6202 michael 1024 #line 2363 "ircd_parser.y"
6203 michael 913 {
6204 michael 967 if (conf_parser_ctx.pass == 2)
6205 michael 913 yy_conf->flags |= SHARED_KLINE;
6206     }
6207     break;
6208    
6209 michael 967 case 383:
6210    
6211     /* Line 1455 of yacc.c */
6212 michael 1024 #line 2367 "ircd_parser.y"
6213 michael 913 {
6214 michael 967 if (conf_parser_ctx.pass == 2)
6215 michael 913 yy_conf->flags |= SHARED_TKLINE;
6216     }
6217     break;
6218    
6219 michael 967 case 384:
6220    
6221     /* Line 1455 of yacc.c */
6222 michael 1024 #line 2371 "ircd_parser.y"
6223 michael 913 {
6224 michael 967 if (conf_parser_ctx.pass == 2)
6225 michael 913 yy_conf->flags |= SHARED_UNKLINE;
6226     }
6227     break;
6228    
6229 michael 967 case 385:
6230    
6231     /* Line 1455 of yacc.c */
6232 michael 1024 #line 2375 "ircd_parser.y"
6233 michael 913 {
6234 michael 967 if (conf_parser_ctx.pass == 2)
6235 michael 913 yy_conf->flags |= SHARED_XLINE;
6236     }
6237     break;
6238    
6239 michael 967 case 386:
6240    
6241     /* Line 1455 of yacc.c */
6242 michael 1024 #line 2379 "ircd_parser.y"
6243 michael 913 {
6244 michael 967 if (conf_parser_ctx.pass == 2)
6245 michael 913 yy_conf->flags |= SHARED_TXLINE;
6246     }
6247     break;
6248    
6249 michael 967 case 387:
6250    
6251     /* Line 1455 of yacc.c */
6252 michael 1024 #line 2383 "ircd_parser.y"
6253 michael 913 {
6254 michael 967 if (conf_parser_ctx.pass == 2)
6255 michael 913 yy_conf->flags |= SHARED_UNXLINE;
6256     }
6257     break;
6258    
6259 michael 967 case 388:
6260    
6261     /* Line 1455 of yacc.c */
6262 michael 1024 #line 2387 "ircd_parser.y"
6263 michael 913 {
6264 michael 967 if (conf_parser_ctx.pass == 2)
6265 michael 913 yy_conf->flags |= SHARED_RESV;
6266     }
6267     break;
6268    
6269 michael 967 case 389:
6270    
6271     /* Line 1455 of yacc.c */
6272 michael 1024 #line 2391 "ircd_parser.y"
6273 michael 913 {
6274 michael 967 if (conf_parser_ctx.pass == 2)
6275 michael 913 yy_conf->flags |= SHARED_TRESV;
6276     }
6277     break;
6278    
6279 michael 967 case 390:
6280    
6281     /* Line 1455 of yacc.c */
6282 michael 1024 #line 2395 "ircd_parser.y"
6283 michael 913 {
6284 michael 967 if (conf_parser_ctx.pass == 2)
6285 michael 913 yy_conf->flags |= SHARED_UNRESV;
6286     }
6287     break;
6288    
6289 michael 967 case 391:
6290    
6291     /* Line 1455 of yacc.c */
6292 michael 1024 #line 2399 "ircd_parser.y"
6293 michael 913 {
6294 michael 967 if (conf_parser_ctx.pass == 2)
6295 michael 913 yy_conf->flags |= SHARED_LOCOPS;
6296     }
6297     break;
6298    
6299 michael 967 case 392:
6300    
6301     /* Line 1455 of yacc.c */
6302 michael 1024 #line 2403 "ircd_parser.y"
6303 michael 913 {
6304 michael 967 if (conf_parser_ctx.pass == 2)
6305 michael 913 yy_conf->flags = SHARED_ALL;
6306     }
6307     break;
6308    
6309 michael 967 case 393:
6310    
6311     /* Line 1455 of yacc.c */
6312 michael 1024 #line 2412 "ircd_parser.y"
6313 michael 913 {
6314 michael 967 if (conf_parser_ctx.pass == 2)
6315 michael 913 {
6316     yy_conf = make_conf_item(SERVER_TYPE);
6317     yy_aconf = (struct AccessItem *)map_to_conf(yy_conf);
6318     yy_aconf->passwd = NULL;
6319     /* defaults */
6320     yy_aconf->port = PORTNUM;
6321    
6322     if (ConfigFileEntry.burst_away)
6323     yy_aconf->flags = CONF_FLAGS_BURST_AWAY;
6324     }
6325     else
6326     {
6327     MyFree(class_name);
6328     class_name = NULL;
6329     }
6330     }
6331     break;
6332    
6333 michael 967 case 394:
6334    
6335     /* Line 1455 of yacc.c */
6336 michael 1024 #line 2430 "ircd_parser.y"
6337 michael 913 {
6338 michael 967 if (conf_parser_ctx.pass == 2)
6339 michael 913 {
6340     struct CollectItem *yy_hconf=NULL;
6341     struct CollectItem *yy_lconf=NULL;
6342     dlink_node *ptr;
6343     dlink_node *next_ptr;
6344     #ifdef HAVE_LIBCRYPTO
6345     if (yy_aconf->host &&
6346     ((yy_aconf->passwd && yy_aconf->spasswd) ||
6347     (yy_aconf->rsa_public_key && IsConfCryptLink(yy_aconf))))
6348     #else /* !HAVE_LIBCRYPTO */
6349     if (yy_aconf->host && !IsConfCryptLink(yy_aconf) &&
6350     yy_aconf->passwd && yy_aconf->spasswd)
6351     #endif /* !HAVE_LIBCRYPTO */
6352     {
6353     if (conf_add_server(yy_conf, class_name) == -1)
6354     {
6355     delete_conf_item(yy_conf);
6356     yy_conf = NULL;
6357     yy_aconf = NULL;
6358     }
6359     }
6360     else
6361     {
6362     /* Even if yy_conf ->name is NULL
6363     * should still unhook any hub/leaf confs still pending
6364     */
6365     unhook_hub_leaf_confs();
6366    
6367     if (yy_conf->name != NULL)
6368     {
6369     #ifndef HAVE_LIBCRYPTO
6370     if (IsConfCryptLink(yy_aconf))
6371     yyerror("Ignoring connect block -- no OpenSSL support");
6372     #else
6373     if (IsConfCryptLink(yy_aconf) && !yy_aconf->rsa_public_key)
6374     yyerror("Ignoring connect block -- missing key");
6375     #endif
6376     if (yy_aconf->host == NULL)
6377     yyerror("Ignoring connect block -- missing host");
6378     else if (!IsConfCryptLink(yy_aconf) &&
6379     (!yy_aconf->passwd || !yy_aconf->spasswd))
6380     yyerror("Ignoring connect block -- missing password");
6381     }
6382    
6383    
6384     /* XXX
6385     * This fixes a try_connections() core (caused by invalid class_ptr
6386     * pointers) reported by metalrock. That's an ugly fix, but there
6387     * is currently no better way. The entire config subsystem needs an
6388     * rewrite ASAP. make_conf_item() shouldn't really add things onto
6389     * a doubly linked list immediately without any sanity checks! -Michael
6390     */
6391     delete_conf_item(yy_conf);
6392    
6393     yy_aconf = NULL;
6394     yy_conf = NULL;
6395     }
6396    
6397     /*
6398     * yy_conf is still pointing at the server that is having
6399     * a connect block built for it. This means, y_aconf->name
6400     * points to the actual irc name this server will be known as.
6401     * Now this new server has a set or even just one hub_mask (or leaf_mask)
6402     * given in the link list at yy_hconf. Fill in the HUB confs
6403     * from this link list now.
6404     */
6405     DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
6406     {
6407     struct ConfItem *new_hub_conf;
6408     struct MatchItem *match_item;
6409    
6410     yy_hconf = ptr->data;
6411    
6412     /* yy_conf == NULL is a fatal error for this connect block! */
6413     if ((yy_conf != NULL) && (yy_conf->name != NULL))
6414     {
6415     new_hub_conf = make_conf_item(HUB_TYPE);
6416     match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
6417     DupString(new_hub_conf->name, yy_conf->name);
6418     if (yy_hconf->user != NULL)
6419     DupString(match_item->user, yy_hconf->user);
6420     else
6421     DupString(match_item->user, "*");
6422     if (yy_hconf->host != NULL)
6423     DupString(match_item->host, yy_hconf->host);
6424     else
6425     DupString(match_item->host, "*");
6426     }
6427     dlinkDelete(&yy_hconf->node, &hub_conf_list);
6428     free_collect_item(yy_hconf);
6429     }
6430    
6431     /* Ditto for the LEAF confs */
6432    
6433     DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
6434     {
6435     struct ConfItem *new_leaf_conf;
6436     struct MatchItem *match_item;
6437    
6438     yy_lconf = ptr->data;
6439    
6440     if ((yy_conf != NULL) && (yy_conf->name != NULL))
6441     {
6442     new_leaf_conf = make_conf_item(LEAF_TYPE);
6443     match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
6444     DupString(new_leaf_conf->name, yy_conf->name);
6445     if (yy_lconf->user != NULL)
6446     DupString(match_item->user, yy_lconf->user);
6447     else
6448     DupString(match_item->user, "*");
6449     if (yy_lconf->host != NULL)
6450     DupString(match_item->host, yy_lconf->host);
6451     else
6452     DupString(match_item->host, "*");
6453     }
6454     dlinkDelete(&yy_lconf->node, &leaf_conf_list);
6455     free_collect_item(yy_lconf);
6456     }
6457     MyFree(class_name);
6458     class_name = NULL;
6459     yy_conf = NULL;
6460     yy_aconf = NULL;
6461     }
6462     }
6463     break;
6464    
6465 michael 967 case 419:
6466    
6467     /* Line 1455 of yacc.c */
6468 michael 1024 #line 2569 "ircd_parser.y"
6469 michael 913 {
6470 michael 967 if (conf_parser_ctx.pass == 2)
6471 michael 913 {
6472     if (yy_conf->name != NULL)
6473     yyerror("Multiple connect name entry");
6474    
6475     MyFree(yy_conf->name);
6476     DupString(yy_conf->name, yylval.string);
6477     }
6478     }
6479     break;
6480    
6481 michael 967 case 420:
6482    
6483     /* Line 1455 of yacc.c */
6484 michael 1024 #line 2581 "ircd_parser.y"
6485 michael 913 {
6486 michael 967 if (conf_parser_ctx.pass == 2)
6487 michael 913 {
6488     if (yy_conf->name != NULL)
6489     yyerror("Multiple connect name entry");
6490    
6491     MyFree(yy_conf->name);
6492     DupString(yy_conf->name, yylval.string);
6493     }
6494     }
6495     break;
6496    
6497 michael 967 case 421:
6498    
6499     /* Line 1455 of yacc.c */
6500 michael 1024 #line 2593 "ircd_parser.y"
6501 michael 913 {
6502 michael 967 if (conf_parser_ctx.pass == 2)
6503 michael 913 {
6504     MyFree(yy_aconf->host);
6505     DupString(yy_aconf->host, yylval.string);
6506     }
6507     }
6508     break;
6509    
6510 michael 967 case 422:
6511    
6512     /* Line 1455 of yacc.c */
6513 michael 1024 #line 2602 "ircd_parser.y"
6514 michael 913 {
6515 michael 967 if (conf_parser_ctx.pass == 2)
6516 michael 913 {
6517     struct addrinfo hints, *res;
6518    
6519     memset(&hints, 0, sizeof(hints));
6520    
6521     hints.ai_family = AF_UNSPEC;
6522     hints.ai_socktype = SOCK_STREAM;
6523     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
6524    
6525     if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
6526     ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
6527     else
6528     {
6529     assert(res != NULL);
6530    
6531     memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
6532     yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
6533     yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
6534     irc_freeaddrinfo(res);
6535     }
6536     }
6537     }
6538     break;
6539    
6540 michael 967 case 423:
6541    
6542     /* Line 1455 of yacc.c */
6543 michael 1024 #line 2628 "ircd_parser.y"
6544 michael 913 {
6545 michael 967 if (conf_parser_ctx.pass == 2)
6546 michael 913 {
6547     if ((yyvsp[(3) - (4)].string)[0] == ':')
6548     yyerror("Server passwords cannot begin with a colon");
6549     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6550     yyerror("Server passwords cannot contain spaces");
6551     else {
6552     if (yy_aconf->spasswd != NULL)
6553     memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
6554    
6555     MyFree(yy_aconf->spasswd);
6556     DupString(yy_aconf->spasswd, yylval.string);
6557     }
6558     }
6559     }
6560     break;
6561    
6562 michael 967 case 424:
6563    
6564     /* Line 1455 of yacc.c */
6565 michael 1024 #line 2646 "ircd_parser.y"
6566 michael 913 {
6567 michael 967 if (conf_parser_ctx.pass == 2)
6568 michael 913 {
6569     if ((yyvsp[(3) - (4)].string)[0] == ':')
6570     yyerror("Server passwords cannot begin with a colon");
6571     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6572     yyerror("Server passwords cannot contain spaces");
6573     else {
6574     if (yy_aconf->passwd != NULL)
6575     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
6576    
6577     MyFree(yy_aconf->passwd);
6578     DupString(yy_aconf->passwd, yylval.string);
6579     }
6580     }
6581     }
6582     break;
6583    
6584 michael 967 case 425:
6585    
6586     /* Line 1455 of yacc.c */
6587 michael 1024 #line 2664 "ircd_parser.y"
6588 michael 913 {
6589 michael 967 if (conf_parser_ctx.pass == 2)
6590 michael 913 yy_aconf->port = (yyvsp[(3) - (4)].number);
6591     }
6592     break;
6593    
6594 michael 967 case 426:
6595    
6596     /* Line 1455 of yacc.c */
6597 michael 1024 #line 2670 "ircd_parser.y"
6598 michael 913 {
6599 michael 967 if (conf_parser_ctx.pass == 2)
6600 michael 913 yy_aconf->aftype = AF_INET;
6601     }
6602     break;
6603    
6604 michael 967 case 427:
6605    
6606     /* Line 1455 of yacc.c */
6607 michael 1024 #line 2674 "ircd_parser.y"
6608 michael 913 {
6609     #ifdef IPV6
6610 michael 967 if (conf_parser_ctx.pass == 2)
6611 michael 913 yy_aconf->aftype = AF_INET6;
6612     #endif
6613     }
6614     break;
6615    
6616 michael 967 case 428:
6617    
6618     /* Line 1455 of yacc.c */
6619 michael 1024 #line 2682 "ircd_parser.y"
6620 michael 913 {
6621 michael 967 if (conf_parser_ctx.pass == 2)
6622 michael 913 {
6623     MyFree(yy_aconf->fakename);
6624     DupString(yy_aconf->fakename, yylval.string);
6625     }
6626     }
6627     break;
6628    
6629 michael 967 case 429:
6630    
6631     /* Line 1455 of yacc.c */
6632 michael 1024 #line 2691 "ircd_parser.y"
6633 michael 913 {
6634     }
6635     break;
6636    
6637 michael 967 case 433:
6638    
6639     /* Line 1455 of yacc.c */
6640 michael 1024 #line 2695 "ircd_parser.y"
6641 michael 913 { not_atom = 1; }
6642     break;
6643    
6644 michael 967 case 435:
6645    
6646     /* Line 1455 of yacc.c */
6647 michael 1024 #line 2696 "ircd_parser.y"
6648 michael 913 { not_atom = 0; }
6649     break;
6650    
6651 michael 967 case 437:
6652    
6653     /* Line 1455 of yacc.c */
6654 michael 1024 #line 2699 "ircd_parser.y"
6655 michael 913 {
6656 michael 967 if (conf_parser_ctx.pass == 2)
6657 michael 913 #ifndef HAVE_LIBZ
6658     yyerror("Ignoring flags = compressed; -- no zlib support");
6659     #else
6660     {
6661     if (not_atom)ClearConfCompressed(yy_aconf);
6662     else SetConfCompressed(yy_aconf);
6663     }
6664     #endif
6665     }
6666     break;
6667    
6668 michael 967 case 438:
6669    
6670     /* Line 1455 of yacc.c */
6671 michael 1024 #line 2710 "ircd_parser.y"
6672 michael 913 {
6673 michael 967 if (conf_parser_ctx.pass == 2)
6674 michael 913 {
6675     if (not_atom)ClearConfCryptLink(yy_aconf);
6676     else SetConfCryptLink(yy_aconf);
6677     }
6678     }
6679     break;
6680    
6681 michael 967 case 439:
6682    
6683     /* Line 1455 of yacc.c */
6684 michael 1024 #line 2717 "ircd_parser.y"
6685 michael 913 {
6686 michael 967 if (conf_parser_ctx.pass == 2)
6687 michael 913 {
6688     if (not_atom)ClearConfAllowAutoConn(yy_aconf);
6689     else SetConfAllowAutoConn(yy_aconf);
6690     }
6691     }
6692     break;
6693    
6694 michael 967 case 440:
6695    
6696     /* Line 1455 of yacc.c */
6697 michael 1024 #line 2724 "ircd_parser.y"
6698 michael 913 {
6699 michael 967 if (conf_parser_ctx.pass == 2)
6700 michael 913 {
6701     if (not_atom)ClearConfAwayBurst(yy_aconf);
6702     else SetConfAwayBurst(yy_aconf);
6703     }
6704     }
6705     break;
6706    
6707 michael 967 case 441:
6708    
6709     /* Line 1455 of yacc.c */
6710 michael 1024 #line 2731 "ircd_parser.y"
6711 michael 913 {
6712 michael 967 if (conf_parser_ctx.pass == 2)
6713 michael 913 {
6714     if (not_atom)ClearConfTopicBurst(yy_aconf);
6715     else SetConfTopicBurst(yy_aconf);
6716     }
6717     }
6718     break;
6719    
6720 michael 967 case 442:
6721    
6722     /* Line 1455 of yacc.c */
6723 michael 1024 #line 2741 "ircd_parser.y"
6724 michael 913 {
6725     #ifdef HAVE_LIBCRYPTO
6726 michael 967 if (conf_parser_ctx.pass == 2)
6727 michael 913 {
6728     BIO *file;
6729    
6730     if (yy_aconf->rsa_public_key != NULL)
6731     {
6732     RSA_free(yy_aconf->rsa_public_key);
6733     yy_aconf->rsa_public_key = NULL;
6734     }
6735    
6736     if (yy_aconf->rsa_public_key_file != NULL)
6737     {
6738     MyFree(yy_aconf->rsa_public_key_file);
6739     yy_aconf->rsa_public_key_file = NULL;
6740     }
6741    
6742     DupString(yy_aconf->rsa_public_key_file, yylval.string);
6743    
6744     if ((file = BIO_new_file(yylval.string, "r")) == NULL)
6745     {
6746     yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
6747     break;
6748     }
6749    
6750     yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
6751    
6752     if (yy_aconf->rsa_public_key == NULL)
6753     {
6754     yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
6755     break;
6756     }
6757    
6758     BIO_set_close(file, BIO_CLOSE);
6759     BIO_free(file);
6760     }
6761     #endif /* HAVE_LIBCRYPTO */
6762     }
6763     break;
6764    
6765 michael 967 case 443:
6766    
6767     /* Line 1455 of yacc.c */
6768 michael 1024 #line 2782 "ircd_parser.y"
6769 michael 913 {
6770 michael 967 if (conf_parser_ctx.pass == 2)
6771 michael 913 {
6772     if (yylval.number)
6773     yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
6774     else
6775     yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
6776     }
6777     }
6778     break;
6779    
6780 michael 967 case 444:
6781    
6782     /* Line 1455 of yacc.c */
6783 michael 1024 #line 2793 "ircd_parser.y"
6784 michael 913 {
6785 michael 967 if (conf_parser_ctx.pass == 2)
6786 michael 913 {
6787     if (yylval.number)
6788     yy_aconf->flags |= CONF_FLAGS_CRYPTLINK;
6789     else
6790     yy_aconf->flags &= ~CONF_FLAGS_CRYPTLINK;
6791     }
6792     }
6793     break;
6794    
6795 michael 967 case 445:
6796    
6797     /* Line 1455 of yacc.c */
6798 michael 1024 #line 2804 "ircd_parser.y"
6799 michael 913 {
6800 michael 967 if (conf_parser_ctx.pass == 2)
6801 michael 913 {
6802     if (yylval.number)
6803     #ifndef HAVE_LIBZ
6804     yyerror("Ignoring compressed=yes; -- no zlib support");
6805     #else
6806     yy_aconf->flags |= CONF_FLAGS_COMPRESSED;
6807     #endif
6808     else
6809     yy_aconf->flags &= ~CONF_FLAGS_COMPRESSED;
6810     }
6811     }
6812     break;
6813    
6814 michael 967 case 446:
6815    
6816     /* Line 1455 of yacc.c */
6817 michael 1024 #line 2819 "ircd_parser.y"
6818 michael 913 {
6819 michael 967 if (conf_parser_ctx.pass == 2)
6820 michael 913 {
6821     if (yylval.number)
6822     yy_aconf->flags |= CONF_FLAGS_ALLOW_AUTO_CONN;
6823     else
6824     yy_aconf->flags &= ~CONF_FLAGS_ALLOW_AUTO_CONN;
6825     }
6826     }
6827     break;
6828    
6829 michael 967 case 447:
6830    
6831     /* Line 1455 of yacc.c */
6832 michael 1024 #line 2830 "ircd_parser.y"
6833 michael 913 {
6834 michael 967 if (conf_parser_ctx.pass == 2)
6835 michael 913 {
6836     if (yylval.number)
6837     SetConfTopicBurst(yy_aconf);
6838     else
6839     ClearConfTopicBurst(yy_aconf);
6840     }
6841     }
6842     break;
6843    
6844 michael 967 case 448:
6845    
6846     /* Line 1455 of yacc.c */
6847 michael 1024 #line 2841 "ircd_parser.y"
6848 michael 913 {
6849 michael 967 if (conf_parser_ctx.pass == 2)
6850 michael 913 {
6851     struct CollectItem *yy_tmp;
6852    
6853     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6854     DupString(yy_tmp->host, yylval.string);
6855     DupString(yy_tmp->user, "*");
6856     dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6857     }
6858     }
6859     break;
6860    
6861 michael 967 case 449:
6862    
6863     /* Line 1455 of yacc.c */
6864 michael 1024 #line 2854 "ircd_parser.y"
6865 michael 913 {
6866 michael 967 if (conf_parser_ctx.pass == 2)
6867 michael 913 {
6868     struct CollectItem *yy_tmp;
6869    
6870     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6871     DupString(yy_tmp->host, yylval.string);
6872     DupString(yy_tmp->user, "*");
6873     dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6874     }
6875     }
6876     break;
6877    
6878 michael 967 case 450:
6879    
6880     /* Line 1455 of yacc.c */
6881 michael 1024 #line 2867 "ircd_parser.y"
6882 michael 913 {
6883 michael 967 if (conf_parser_ctx.pass == 2)
6884 michael 913 {
6885     MyFree(class_name);
6886     DupString(class_name, yylval.string);
6887     }
6888     }
6889     break;
6890    
6891 michael 967 case 451:
6892    
6893     /* Line 1455 of yacc.c */
6894 michael 1024 #line 2876 "ircd_parser.y"
6895 michael 913 {
6896     #ifdef HAVE_LIBCRYPTO
6897 michael 967 if (conf_parser_ctx.pass == 2)
6898 michael 913 {
6899     struct EncCapability *ecap;
6900     const char *cipher_name;
6901     int found = 0;
6902    
6903     yy_aconf->cipher_preference = NULL;
6904     cipher_name = yylval.string;
6905    
6906     for (ecap = CipherTable; ecap->name; ecap++)
6907     {
6908     if ((irccmp(ecap->name, cipher_name) == 0) &&
6909     (ecap->cap & CAP_ENC_MASK))
6910     {
6911     yy_aconf->cipher_preference = ecap;
6912     found = 1;
6913     break;
6914     }
6915     }
6916    
6917     if (!found)
6918     yyerror("Invalid cipher");
6919     }
6920     #else
6921 michael 967 if (conf_parser_ctx.pass == 2)
6922 michael 913 yyerror("Ignoring cipher_preference -- no OpenSSL support");
6923     #endif
6924     }
6925     break;
6926    
6927 michael 967 case 452:
6928    
6929     /* Line 1455 of yacc.c */
6930 michael 1024 #line 2911 "ircd_parser.y"
6931 michael 913 {
6932 michael 967 if (conf_parser_ctx.pass == 2)
6933 michael 913 {
6934     userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6935     regex_ban = 0;
6936     }
6937     }
6938     break;
6939    
6940 michael 967 case 453:
6941    
6942     /* Line 1455 of yacc.c */
6943 michael 1024 #line 2918 "ircd_parser.y"
6944 michael 913 {
6945 michael 967 if (conf_parser_ctx.pass == 2)
6946 michael 913 {
6947     if (userbuf[0] && hostbuf[0])
6948     {
6949     if (regex_ban)
6950     {
6951 michael 1009 #ifdef HAVE_LIBPCRE
6952 michael 1011 void *exp_user = NULL;
6953     void *exp_host = NULL;
6954 michael 913 const char *errptr = NULL;
6955    
6956     if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6957     !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6958     {
6959     ilog(L_ERROR, "Failed to add regular expression based K-Line: %s",
6960     errptr);
6961     break;
6962     }
6963    
6964 michael 1005 yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6965 michael 913 yy_aconf->regexuser = exp_user;
6966     yy_aconf->regexhost = exp_host;
6967    
6968     DupString(yy_aconf->user, userbuf);
6969     DupString(yy_aconf->host, hostbuf);
6970    
6971     if (reasonbuf[0])
6972     DupString(yy_aconf->reason, reasonbuf);
6973     else
6974     DupString(yy_aconf->reason, "No reason");
6975 michael 1009 #else
6976     ilog(L_ERROR, "Failed to add regular expression based K-Line: no PCRE support");
6977     break;
6978     #endif
6979 michael 913 }
6980     else
6981     {
6982 michael 1005 yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6983 michael 913
6984     DupString(yy_aconf->user, userbuf);
6985     DupString(yy_aconf->host, hostbuf);
6986    
6987     if (reasonbuf[0])
6988     DupString(yy_aconf->reason, reasonbuf);
6989     else
6990     DupString(yy_aconf->reason, "No reason");
6991     add_conf_by_address(CONF_KILL, yy_aconf);
6992     }
6993     }
6994    
6995     yy_aconf = NULL;
6996     }
6997     }
6998     break;
6999    
7000 michael 967 case 454:
7001    
7002     /* Line 1455 of yacc.c */
7003 michael 1024 #line 2974 "ircd_parser.y"
7004 michael 913 {
7005     }
7006     break;
7007    
7008 michael 967 case 458:
7009    
7010     /* Line 1455 of yacc.c */
7011 michael 1024 #line 2979 "ircd_parser.y"
7012 michael 913 {
7013 michael 967 if (conf_parser_ctx.pass == 2)
7014 michael 913 regex_ban = 1;
7015     }
7016     break;
7017    
7018 michael 967 case 465:
7019    
7020     /* Line 1455 of yacc.c */
7021 michael 1024 #line 2988 "ircd_parser.y"
7022 michael 913 {
7023 michael 967 if (conf_parser_ctx.pass == 2)
7024 michael 913 {
7025     struct split_nuh_item nuh;
7026    
7027     nuh.nuhmask = yylval.string;
7028     nuh.nickptr = NULL;
7029     nuh.userptr = userbuf;
7030     nuh.hostptr = hostbuf;
7031    
7032     nuh.nicksize = 0;
7033     nuh.usersize = sizeof(userbuf);
7034     nuh.hostsize = sizeof(hostbuf);
7035    
7036     split_nuh(&nuh);
7037     }
7038     }
7039     break;
7040    
7041 michael 967 case 466:
7042    
7043     /* Line 1455 of yacc.c */
7044 michael 1024 #line 3007 "ircd_parser.y"
7045 michael 913 {
7046 michael 967 if (conf_parser_ctx.pass == 2)
7047 michael 913 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7048     }
7049     break;
7050    
7051 michael 967 case 467:
7052    
7053     /* Line 1455 of yacc.c */
7054 michael 1024 #line 3016 "ircd_parser.y"
7055 michael 913 {
7056 michael 967 if (conf_parser_ctx.pass == 2)
7057 michael 1005 hostbuf[0] = reasonbuf[0] = '\0';
7058 michael 913 }
7059     break;
7060    
7061 michael 967 case 468:
7062    
7063     /* Line 1455 of yacc.c */
7064 michael 1024 #line 3020 "ircd_parser.y"
7065 michael 913 {
7066 michael 967 if (conf_parser_ctx.pass == 2)
7067 michael 913 {
7068 michael 1005 if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
7069     {
7070     yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
7071     DupString(yy_aconf->host, hostbuf);
7072    
7073     if (reasonbuf[0])
7074     DupString(yy_aconf->reason, reasonbuf);
7075     else
7076     DupString(yy_aconf->reason, "No reason");
7077 michael 913 add_conf_by_address(CONF_DLINE, yy_aconf);
7078 michael 1005 yy_aconf = NULL;
7079     }
7080 michael 913 }
7081     }
7082     break;
7083    
7084 michael 967 case 474:
7085    
7086     /* Line 1455 of yacc.c */
7087 michael 1024 #line 3042 "ircd_parser.y"
7088 michael 913 {
7089 michael 967 if (conf_parser_ctx.pass == 2)
7090 michael 1005 strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
7091 michael 913 }
7092     break;
7093    
7094 michael 967 case 475:
7095    
7096     /* Line 1455 of yacc.c */
7097 michael 1024 #line 3048 "ircd_parser.y"
7098 michael 913 {
7099 michael 967 if (conf_parser_ctx.pass == 2)
7100 michael 1005 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7101 michael 913 }
7102     break;
7103    
7104 michael 967 case 481:
7105    
7106     /* Line 1455 of yacc.c */
7107 michael 1024 #line 3062 "ircd_parser.y"
7108 michael 913 {
7109 michael 967 if (conf_parser_ctx.pass == 2)
7110 michael 913 {
7111     if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
7112     {
7113 michael 1005 yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
7114 michael 913 DupString(yy_aconf->host, yylval.string);
7115    
7116     add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
7117     yy_aconf = NULL;
7118     }
7119     }
7120     }
7121     break;
7122    
7123 michael 967 case 482:
7124    
7125     /* Line 1455 of yacc.c */
7126 michael 1024 #line 3080 "ircd_parser.y"
7127 michael 913 {
7128 michael 967 if (conf_parser_ctx.pass == 2)
7129 michael 913 {
7130     regex_ban = 0;
7131     reasonbuf[0] = gecos_name[0] = '\0';
7132     }
7133     }
7134     break;
7135    
7136 michael 967 case 483:
7137    
7138     /* Line 1455 of yacc.c */
7139 michael 1024 #line 3087 "ircd_parser.y"
7140 michael 913 {
7141 michael 967 if (conf_parser_ctx.pass == 2)
7142 michael 913 {
7143     if (gecos_name[0])
7144     {
7145     if (regex_ban)
7146     {
7147 michael 1009 #ifdef HAVE_LIBPCRE
7148 michael 1011 void *exp_p = NULL;
7149 michael 913 const char *errptr = NULL;
7150    
7151     if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
7152     {
7153     ilog(L_ERROR, "Failed to add regular expression based X-Line: %s",
7154     errptr);
7155     break;
7156     }
7157    
7158     yy_conf = make_conf_item(RXLINE_TYPE);
7159     yy_conf->regexpname = exp_p;
7160 michael 1009 #else
7161     ilog(L_ERROR, "Failed to add regular expression based X-Line: no PCRE support");
7162     break;
7163     #endif
7164 michael 913 }
7165     else
7166     yy_conf = make_conf_item(XLINE_TYPE);
7167    
7168     yy_match_item = map_to_conf(yy_conf);
7169     DupString(yy_conf->name, gecos_name);
7170    
7171     if (reasonbuf[0])
7172     DupString(yy_match_item->reason, reasonbuf);
7173     else
7174     DupString(yy_match_item->reason, "No reason");
7175     }
7176     }
7177     }
7178     break;
7179    
7180 michael 967 case 484:
7181    
7182     /* Line 1455 of yacc.c */
7183 michael 1024 #line 3127 "ircd_parser.y"
7184 michael 913 {
7185     }
7186     break;
7187    
7188 michael 967 case 488:
7189    
7190     /* Line 1455 of yacc.c */
7191 michael 1024 #line 3132 "ircd_parser.y"
7192 michael 913 {
7193 michael 967 if (conf_parser_ctx.pass == 2)
7194 michael 913 regex_ban = 1;
7195     }
7196     break;
7197    
7198 michael 967 case 495:
7199    
7200     /* Line 1455 of yacc.c */
7201 michael 1024 #line 3141 "ircd_parser.y"
7202 michael 913 {
7203 michael 967 if (conf_parser_ctx.pass == 2)
7204 michael 913 strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
7205     }
7206     break;
7207    
7208 michael 967 case 496:
7209    
7210     /* Line 1455 of yacc.c */
7211 michael 1024 #line 3147 "ircd_parser.y"
7212 michael 913 {
7213 michael 967 if (conf_parser_ctx.pass == 2)
7214 michael 913 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7215     }
7216     break;
7217    
7218 michael 967 case 557:
7219    
7220     /* Line 1455 of yacc.c */
7221 michael 1024 #line 3192 "ircd_parser.y"
7222 michael 913 {
7223     ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
7224     }
7225     break;
7226    
7227 michael 967 case 558:
7228    
7229     /* Line 1455 of yacc.c */
7230 michael 1024 #line 3197 "ircd_parser.y"
7231 michael 913 {
7232     ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
7233     }
7234     break;
7235    
7236 michael 967 case 559:
7237    
7238     /* Line 1455 of yacc.c */
7239 michael 1024 #line 3202 "ircd_parser.y"
7240 michael 913 {
7241     ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
7242     }
7243     break;
7244    
7245 michael 967 case 560:
7246    
7247     /* Line 1455 of yacc.c */
7248 michael 1024 #line 3207 "ircd_parser.y"
7249 michael 913 {
7250     ConfigFileEntry.burst_away = yylval.number;
7251     }
7252     break;
7253    
7254 michael 967 case 561:
7255    
7256     /* Line 1455 of yacc.c */
7257 michael 1024 #line 3212 "ircd_parser.y"
7258 michael 913 {
7259     ConfigFileEntry.use_whois_actually = yylval.number;
7260     }
7261     break;
7262    
7263 michael 967 case 562:
7264    
7265     /* Line 1455 of yacc.c */
7266 michael 1024 #line 3217 "ircd_parser.y"
7267 michael 913 {
7268     GlobalSetOptions.rejecttime = yylval.number;
7269     }
7270     break;
7271    
7272 michael 967 case 563:
7273    
7274     /* Line 1455 of yacc.c */
7275 michael 1024 #line 3222 "ircd_parser.y"
7276 michael 913 {
7277     ConfigFileEntry.tkline_expire_notices = yylval.number;
7278     }
7279     break;
7280    
7281 michael 967 case 564:
7282    
7283     /* Line 1455 of yacc.c */
7284 michael 1024 #line 3227 "ircd_parser.y"
7285 michael 913 {
7286     ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
7287     }
7288     break;
7289    
7290 michael 967 case 565:
7291    
7292     /* Line 1455 of yacc.c */
7293 michael 1024 #line 3232 "ircd_parser.y"
7294 michael 913 {
7295     ConfigFileEntry.hide_spoof_ips = yylval.number;
7296     }
7297     break;
7298    
7299 michael 967 case 566:
7300    
7301     /* Line 1455 of yacc.c */
7302 michael 1024 #line 3237 "ircd_parser.y"
7303 michael 913 {
7304     ConfigFileEntry.ignore_bogus_ts = yylval.number;
7305     }
7306     break;
7307    
7308 michael 967 case 567:
7309    
7310     /* Line 1455 of yacc.c */
7311 michael 1024 #line 3242 "ircd_parser.y"
7312 michael 913 {
7313     ConfigFileEntry.disable_remote = yylval.number;
7314     }
7315     break;
7316    
7317 michael 967 case 568:
7318    
7319     /* Line 1455 of yacc.c */
7320 michael 1024 #line 3247 "ircd_parser.y"
7321 michael 913 {
7322     ConfigFileEntry.failed_oper_notice = yylval.number;
7323     }
7324     break;
7325    
7326 michael 967 case 569:
7327    
7328     /* Line 1455 of yacc.c */
7329 michael 1024 #line 3252 "ircd_parser.y"
7330 michael 913 {
7331     ConfigFileEntry.anti_nick_flood = yylval.number;
7332     }
7333     break;
7334    
7335 michael 967 case 570:
7336    
7337     /* Line 1455 of yacc.c */
7338 michael 1024 #line 3257 "ircd_parser.y"
7339 michael 913 {
7340     ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
7341     }
7342     break;
7343    
7344 michael 967 case 571:
7345    
7346     /* Line 1455 of yacc.c */
7347 michael 1024 #line 3262 "ircd_parser.y"
7348 michael 913 {
7349     ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
7350     }
7351     break;
7352    
7353 michael 967 case 572:
7354    
7355     /* Line 1455 of yacc.c */
7356 michael 1024 #line 3267 "ircd_parser.y"
7357 michael 913 {
7358     ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
7359     }
7360     break;
7361    
7362 michael 967 case 573:
7363    
7364     /* Line 1455 of yacc.c */
7365 michael 1024 #line 3272 "ircd_parser.y"
7366 michael 913 {
7367     ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
7368     }
7369     break;
7370    
7371 michael 967 case 574:
7372    
7373     /* Line 1455 of yacc.c */
7374 michael 1024 #line 3277 "ircd_parser.y"
7375 michael 913 {
7376     ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
7377     }
7378     break;
7379    
7380 michael 967 case 575:
7381    
7382     /* Line 1455 of yacc.c */
7383 michael 1024 #line 3282 "ircd_parser.y"
7384 michael 913 {
7385 michael 967 if (conf_parser_ctx.pass == 2)
7386 michael 913 ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
7387     }
7388     break;
7389    
7390 michael 967 case 576:
7391    
7392     /* Line 1455 of yacc.c */
7393 michael 1024 #line 3288 "ircd_parser.y"
7394 michael 913 {
7395 michael 967 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
7396 michael 913 {
7397     ilog(L_CRIT, "You haven't read your config file properly.");
7398     ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
7399     ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
7400     exit(0);
7401     }
7402     }
7403     break;
7404    
7405 michael 967 case 577:
7406    
7407     /* Line 1455 of yacc.c */
7408 michael 1024 #line 3299 "ircd_parser.y"
7409 michael 913 {
7410     ConfigFileEntry.kline_with_reason = yylval.number;
7411     }
7412     break;
7413    
7414 michael 967 case 578:
7415    
7416     /* Line 1455 of yacc.c */
7417 michael 1024 #line 3304 "ircd_parser.y"
7418 michael 913 {
7419 michael 967 if (conf_parser_ctx.pass == 2)
7420 michael 913 {
7421     MyFree(ConfigFileEntry.kline_reason);
7422     DupString(ConfigFileEntry.kline_reason, yylval.string);
7423     }
7424     }
7425     break;
7426    
7427 michael 967 case 579:
7428    
7429     /* Line 1455 of yacc.c */
7430 michael 1024 #line 3313 "ircd_parser.y"
7431 michael 913 {
7432     ConfigFileEntry.invisible_on_connect = yylval.number;
7433     }
7434     break;
7435    
7436 michael 967 case 580:
7437    
7438     /* Line 1455 of yacc.c */
7439 michael 1024 #line 3318 "ircd_parser.y"
7440 michael 913 {
7441     ConfigFileEntry.warn_no_nline = yylval.number;
7442     }
7443     break;
7444    
7445 michael 967 case 581:
7446    
7447     /* Line 1455 of yacc.c */
7448 michael 1024 #line 3323 "ircd_parser.y"
7449 michael 913 {
7450     ConfigFileEntry.stats_e_disabled = yylval.number;
7451     }
7452     break;
7453    
7454 michael 967 case 582:
7455    
7456     /* Line 1455 of yacc.c */
7457 michael 1024 #line 3328 "ircd_parser.y"
7458 michael 913 {
7459     ConfigFileEntry.stats_o_oper_only = yylval.number;
7460     }
7461     break;
7462    
7463 michael 967 case 583:
7464    
7465     /* Line 1455 of yacc.c */
7466 michael 1024 #line 3333 "ircd_parser.y"
7467 michael 913 {
7468     ConfigFileEntry.stats_P_oper_only = yylval.number;
7469     }
7470     break;
7471    
7472 michael 967 case 584:
7473    
7474     /* Line 1455 of yacc.c */
7475 michael 1024 #line 3338 "ircd_parser.y"
7476 michael 913 {
7477     ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
7478     }
7479     break;
7480    
7481 michael 967 case 585:
7482    
7483     /* Line 1455 of yacc.c */
7484 michael 1024 #line 3341 "ircd_parser.y"
7485 michael 913 {
7486     ConfigFileEntry.stats_k_oper_only = 1;
7487     }
7488     break;
7489    
7490 michael 967 case 586:
7491    
7492     /* Line 1455 of yacc.c */
7493 michael 1024 #line 3346 "ircd_parser.y"
7494 michael 913 {
7495     ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
7496     }
7497     break;
7498    
7499 michael 967 case 587:
7500    
7501     /* Line 1455 of yacc.c */
7502 michael 1024 #line 3349 "ircd_parser.y"
7503 michael 913 {
7504     ConfigFileEntry.stats_i_oper_only = 1;
7505     }
7506     break;
7507    
7508 michael 967 case 588:
7509    
7510     /* Line 1455 of yacc.c */
7511 michael 1024 #line 3354 "ircd_parser.y"
7512 michael 913 {
7513     ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
7514     }
7515     break;
7516    
7517 michael 967 case 589:
7518    
7519     /* Line 1455 of yacc.c */
7520 michael 1024 #line 3359 "ircd_parser.y"
7521 michael 913 {
7522     ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
7523     }
7524     break;
7525    
7526 michael 967 case 590:
7527    
7528     /* Line 1455 of yacc.c */
7529 michael 1024 #line 3364 "ircd_parser.y"
7530 michael 913 {
7531     ConfigFileEntry.opers_bypass_callerid = yylval.number;
7532     }
7533     break;
7534    
7535 michael 967 case 591:
7536    
7537     /* Line 1455 of yacc.c */
7538 michael 1024 #line 3369 "ircd_parser.y"
7539 michael 913 {
7540     ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
7541     }
7542     break;
7543    
7544 michael 967 case 592:
7545    
7546     /* Line 1455 of yacc.c */
7547 michael 1024 #line 3374 "ircd_parser.y"
7548 michael 913 {
7549     ConfigFileEntry.short_motd = yylval.number;
7550     }
7551     break;
7552    
7553 michael 967 case 593:
7554    
7555     /* Line 1455 of yacc.c */
7556 michael 1024 #line 3379 "ircd_parser.y"
7557 michael 913 {
7558     ConfigFileEntry.no_oper_flood = yylval.number;
7559     }
7560     break;
7561    
7562 michael 967 case 594:
7563    
7564     /* Line 1455 of yacc.c */
7565 michael 1024 #line 3384 "ircd_parser.y"
7566 michael 913 {
7567     ConfigFileEntry.true_no_oper_flood = yylval.number;
7568     }
7569     break;
7570    
7571 michael 967 case 595:
7572    
7573     /* Line 1455 of yacc.c */
7574 michael 1024 #line 3389 "ircd_parser.y"
7575 michael 913 {
7576     ConfigFileEntry.oper_pass_resv = yylval.number;
7577     }
7578     break;
7579    
7580 michael 967 case 596:
7581    
7582     /* Line 1455 of yacc.c */
7583 michael 1024 #line 3394 "ircd_parser.y"
7584 michael 913 {
7585 michael 967 if (conf_parser_ctx.pass == 2)
7586 michael 913 {
7587     if (strlen(yylval.string) > LOCALE_LENGTH-2)
7588     yylval.string[LOCALE_LENGTH-1] = '\0';
7589    
7590     set_locale(yylval.string);
7591     }
7592     }
7593     break;
7594    
7595 michael 967 case 597:
7596    
7597     /* Line 1455 of yacc.c */
7598 michael 1024 #line 3405 "ircd_parser.y"
7599 michael 913 {
7600     ConfigFileEntry.idletime = (yyvsp[(3) - (4)].number);
7601     }
7602     break;
7603    
7604 michael 967 case 598:
7605    
7606     /* Line 1455 of yacc.c */
7607 michael 1024 #line 3410 "ircd_parser.y"
7608 michael 913 {
7609     ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
7610     }
7611     break;
7612    
7613 michael 967 case 599:
7614    
7615     /* Line 1455 of yacc.c */
7616 michael 1024 #line 3415 "ircd_parser.y"
7617 michael 913 {
7618     ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
7619     }
7620     break;
7621    
7622 michael 967 case 600:
7623    
7624     /* Line 1455 of yacc.c */
7625 michael 1024 #line 3420 "ircd_parser.y"
7626 michael 913 {
7627 michael 967 if (conf_parser_ctx.pass == 2)
7628 michael 913 {
7629     MyFree(ConfigFileEntry.servlink_path);
7630     DupString(ConfigFileEntry.servlink_path, yylval.string);
7631     }
7632     }
7633     break;
7634    
7635 michael 967 case 601:
7636    
7637     /* Line 1455 of yacc.c */
7638 michael 1024 #line 3429 "ircd_parser.y"
7639 michael 913 {
7640     #ifdef HAVE_LIBCRYPTO
7641 michael 967 if (conf_parser_ctx.pass == 2)
7642 michael 913 {
7643     struct EncCapability *ecap;
7644     const char *cipher_name;
7645     int found = 0;
7646    
7647     ConfigFileEntry.default_cipher_preference = NULL;
7648     cipher_name = yylval.string;
7649    
7650     for (ecap = CipherTable; ecap->name; ecap++)
7651     {
7652     if ((irccmp(ecap->name, cipher_name) == 0) &&
7653     (ecap->cap & CAP_ENC_MASK))
7654     {
7655     ConfigFileEntry.default_cipher_preference = ecap;
7656     found = 1;
7657     break;
7658     }
7659     }
7660    
7661     if (!found)
7662     yyerror("Invalid cipher");
7663     }
7664     #else
7665 michael 967 if (conf_parser_ctx.pass == 2)
7666 michael 913 yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
7667     #endif
7668     }
7669     break;
7670    
7671 michael 967 case 602:
7672    
7673     /* Line 1455 of yacc.c */
7674 michael 1024 #line 3461 "ircd_parser.y"
7675 michael 913 {
7676 michael 967 if (conf_parser_ctx.pass == 2)
7677 michael 913 {
7678     ConfigFileEntry.compression_level = (yyvsp[(3) - (4)].number);
7679     #ifndef HAVE_LIBZ
7680     yyerror("Ignoring compression_level -- no zlib support");
7681     #else
7682     if ((ConfigFileEntry.compression_level < 1) ||
7683     (ConfigFileEntry.compression_level > 9))
7684     {
7685     yyerror("Ignoring invalid compression_level, using default");
7686     ConfigFileEntry.compression_level = 0;
7687     }
7688     #endif
7689     }
7690     }
7691     break;
7692    
7693 michael 967 case 603:
7694    
7695     /* Line 1455 of yacc.c */
7696 michael 1024 #line 3479 "ircd_parser.y"
7697 michael 913 {
7698     ConfigFileEntry.use_egd = yylval.number;
7699     }
7700     break;
7701    
7702 michael 967 case 604:
7703    
7704     /* Line 1455 of yacc.c */
7705 michael 1024 #line 3484 "ircd_parser.y"
7706 michael 913 {
7707 michael 967 if (conf_parser_ctx.pass == 2)
7708 michael 913 {
7709     MyFree(ConfigFileEntry.egdpool_path);
7710     DupString(ConfigFileEntry.egdpool_path, yylval.string);
7711     }
7712     }
7713     break;
7714    
7715 michael 967 case 605:
7716    
7717     /* Line 1455 of yacc.c */
7718 michael 1024 #line 3493 "ircd_parser.y"
7719 michael 913 {
7720     ConfigFileEntry.ping_cookie = yylval.number;
7721     }
7722     break;
7723    
7724 michael 967 case 606:
7725    
7726     /* Line 1455 of yacc.c */
7727 michael 1024 #line 3498 "ircd_parser.y"
7728 michael 913 {
7729     ConfigFileEntry.disable_auth = yylval.number;
7730     }
7731     break;
7732    
7733 michael 967 case 607:
7734    
7735     /* Line 1455 of yacc.c */
7736 michael 1024 #line 3503 "ircd_parser.y"
7737 michael 913 {
7738     ConfigFileEntry.throttle_time = yylval.number;
7739     }
7740     break;
7741    
7742 michael 967 case 608:
7743    
7744     /* Line 1455 of yacc.c */
7745 michael 1024 #line 3508 "ircd_parser.y"
7746 michael 913 {
7747     ConfigFileEntry.oper_umodes = 0;
7748     }
7749     break;
7750    
7751 michael 967 case 612:
7752    
7753     /* Line 1455 of yacc.c */
7754 michael 1024 #line 3514 "ircd_parser.y"
7755 michael 913 {
7756     ConfigFileEntry.oper_umodes |= UMODE_BOTS;
7757     }
7758     break;
7759    
7760 michael 967 case 613:
7761    
7762     /* Line 1455 of yacc.c */
7763 michael 1024 #line 3517 "ircd_parser.y"
7764 michael 913 {
7765     ConfigFileEntry.oper_umodes |= UMODE_CCONN;
7766     }
7767     break;
7768    
7769 michael 967 case 614:
7770    
7771     /* Line 1455 of yacc.c */
7772 michael 1024 #line 3520 "ircd_parser.y"
7773 michael 913 {
7774     ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
7775     }
7776     break;
7777    
7778 michael 967 case 615:
7779    
7780     /* Line 1455 of yacc.c */
7781 michael 1024 #line 3523 "ircd_parser.y"
7782 michael 913 {
7783     ConfigFileEntry.oper_umodes |= UMODE_DEAF;
7784     }
7785     break;
7786    
7787 michael 967 case 616:
7788    
7789     /* Line 1455 of yacc.c */
7790 michael 1024 #line 3526 "ircd_parser.y"
7791 michael 913 {
7792     ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
7793     }
7794     break;
7795    
7796 michael 967 case 617:
7797    
7798     /* Line 1455 of yacc.c */
7799 michael 1024 #line 3529 "ircd_parser.y"
7800 michael 913 {
7801     ConfigFileEntry.oper_umodes |= UMODE_FULL;
7802     }
7803     break;
7804    
7805 michael 967 case 618:
7806    
7807     /* Line 1455 of yacc.c */
7808 michael 1024 #line 3532 "ircd_parser.y"
7809 michael 913 {
7810     ConfigFileEntry.oper_umodes |= UMODE_SKILL;
7811     }
7812     break;
7813    
7814 michael 967 case 619:
7815    
7816     /* Line 1455 of yacc.c */
7817 michael 1024 #line 3535 "ircd_parser.y"
7818 michael 913 {
7819     ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
7820     }
7821     break;
7822    
7823 michael 967 case 620:
7824    
7825     /* Line 1455 of yacc.c */
7826 michael 1024 #line 3538 "ircd_parser.y"
7827 michael 913 {
7828     ConfigFileEntry.oper_umodes |= UMODE_REJ;
7829     }
7830     break;
7831    
7832 michael 967 case 621:
7833    
7834     /* Line 1455 of yacc.c */
7835 michael 1024 #line 3541 "ircd_parser.y"
7836 michael 913 {
7837     ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
7838     }
7839     break;
7840    
7841 michael 967 case 622:
7842    
7843     /* Line 1455 of yacc.c */
7844 michael 1024 #line 3544 "ircd_parser.y"
7845 michael 913 {
7846     ConfigFileEntry.oper_umodes |= UMODE_SPY;
7847     }
7848     break;
7849    
7850 michael 967 case 623:
7851    
7852     /* Line 1455 of yacc.c */
7853 michael 1024 #line 3547 "ircd_parser.y"
7854 michael 913 {
7855     ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
7856     }
7857     break;
7858    
7859 michael 967 case 624:
7860    
7861     /* Line 1455 of yacc.c */
7862 michael 1024 #line 3550 "ircd_parser.y"
7863 michael 913 {
7864     ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
7865     }
7866     break;
7867    
7868 michael 967 case 625:
7869    
7870     /* Line 1455 of yacc.c */
7871 michael 1024 #line 3553 "ircd_parser.y"
7872 michael 913 {
7873     ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
7874     }
7875     break;
7876    
7877 michael 967 case 626:
7878    
7879     /* Line 1455 of yacc.c */
7880 michael 1024 #line 3556 "ircd_parser.y"
7881 michael 913 {
7882     ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
7883     }
7884     break;
7885    
7886 michael 967 case 627:
7887    
7888     /* Line 1455 of yacc.c */
7889 michael 1024 #line 3559 "ircd_parser.y"
7890 michael 913 {
7891     ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
7892     }
7893     break;
7894    
7895 michael 967 case 628:
7896    
7897     /* Line 1455 of yacc.c */
7898 michael 1024 #line 3562 "ircd_parser.y"
7899 michael 913 {
7900     ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
7901     }
7902     break;
7903    
7904 michael 967 case 629:
7905    
7906     /* Line 1455 of yacc.c */
7907 michael 1024 #line 3565 "ircd_parser.y"
7908 michael 913 {
7909     ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
7910     }
7911     break;
7912    
7913 michael 967 case 630:
7914    
7915     /* Line 1455 of yacc.c */
7916 michael 1024 #line 3568 "ircd_parser.y"
7917 michael 913 {
7918     ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
7919     }
7920     break;
7921    
7922 michael 967 case 631:
7923    
7924     /* Line 1455 of yacc.c */
7925 michael 1024 #line 3573 "ircd_parser.y"
7926 michael 913 {
7927     ConfigFileEntry.oper_only_umodes = 0;
7928     }
7929     break;
7930    
7931 michael 967 case 635:
7932    
7933     /* Line 1455 of yacc.c */
7934 michael 1024 #line 3579 "ircd_parser.y"
7935 michael 913 {
7936     ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
7937     }
7938     break;
7939    
7940 michael 967 case 636:
7941    
7942     /* Line 1455 of yacc.c */
7943 michael 1024 #line 3582 "ircd_parser.y"
7944 michael 913 {
7945     ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
7946     }
7947     break;
7948    
7949 michael 967 case 637:
7950    
7951     /* Line 1455 of yacc.c */
7952 michael 1024 #line 3585 "ircd_parser.y"
7953 michael 913 {
7954     ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
7955     }
7956     break;
7957    
7958 michael 967 case 638:
7959    
7960     /* Line 1455 of yacc.c */
7961 michael 1024 #line 3588 "ircd_parser.y"
7962 michael 913 {
7963     ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
7964     }
7965     break;
7966    
7967 michael 967 case 639:
7968    
7969     /* Line 1455 of yacc.c */
7970 michael 1024 #line 3591 "ircd_parser.y"
7971 michael 913 {
7972     ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
7973     }
7974     break;
7975    
7976 michael 967 case 640:
7977    
7978     /* Line 1455 of yacc.c */
7979 michael 1024 #line 3594 "ircd_parser.y"
7980 michael 913 {
7981     ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
7982     }
7983     break;
7984    
7985 michael 967 case 641:
7986    
7987     /* Line 1455 of yacc.c */
7988 michael 1024 #line 3597 "ircd_parser.y"
7989 michael 913 {
7990     ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
7991     }
7992     break;
7993    
7994 michael 967 case 642:
7995    
7996     /* Line 1455 of yacc.c */
7997 michael 1024 #line 3600 "ircd_parser.y"
7998 michael 913 {
7999     ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
8000     }
8001     break;
8002    
8003 michael 967 case 643:
8004    
8005     /* Line 1455 of yacc.c */
8006 michael 1024 #line 3603 "ircd_parser.y"
8007 michael 913 {
8008     ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
8009     }
8010     break;
8011    
8012 michael 967 case 644:
8013    
8014     /* Line 1455 of yacc.c */
8015 michael 1024 #line 3606 "ircd_parser.y"
8016 michael 913 {
8017     ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
8018     }
8019     break;
8020    
8021 michael 967 case 645:
8022    
8023     /* Line 1455 of yacc.c */
8024 michael 1024 #line 3609 "ircd_parser.y"
8025 michael 913 {
8026     ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
8027     }
8028     break;
8029    
8030 michael 967 case 646:
8031    
8032     /* Line 1455 of yacc.c */
8033 michael 1024 #line 3612 "ircd_parser.y"
8034 michael 913 {
8035     ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
8036     }
8037     break;
8038    
8039 michael 967 case 647:
8040    
8041     /* Line 1455 of yacc.c */
8042 michael 1024 #line 3615 "ircd_parser.y"
8043 michael 913 {
8044     ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
8045     }
8046     break;
8047    
8048 michael 967 case 648:
8049    
8050     /* Line 1455 of yacc.c */
8051 michael 1024 #line 3618 "ircd_parser.y"
8052 michael 913 {
8053     ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
8054     }
8055     break;
8056    
8057 michael 967 case 649:
8058    
8059     /* Line 1455 of yacc.c */
8060 michael 1024 #line 3621 "ircd_parser.y"
8061 michael 913 {
8062     ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
8063     }
8064     break;
8065    
8066 michael 967 case 650:
8067    
8068     /* Line 1455 of yacc.c */
8069 michael 1024 #line 3624 "ircd_parser.y"
8070 michael 913 {
8071     ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
8072     }
8073     break;
8074    
8075 michael 967 case 651:
8076    
8077     /* Line 1455 of yacc.c */
8078 michael 1024 #line 3627 "ircd_parser.y"
8079 michael 913 {
8080     ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
8081     }
8082     break;
8083    
8084 michael 967 case 652:
8085    
8086     /* Line 1455 of yacc.c */
8087 michael 1024 #line 3630 "ircd_parser.y"
8088 michael 913 {
8089     ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
8090     }
8091     break;
8092    
8093 michael 967 case 653:
8094    
8095     /* Line 1455 of yacc.c */
8096 michael 1024 #line 3633 "ircd_parser.y"
8097 michael 913 {
8098     ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
8099     }
8100     break;
8101    
8102 michael 967 case 654:
8103    
8104     /* Line 1455 of yacc.c */
8105 michael 1024 #line 3638 "ircd_parser.y"
8106 michael 913 {
8107     ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
8108     }
8109     break;
8110    
8111 michael 967 case 655:
8112    
8113     /* Line 1455 of yacc.c */
8114 michael 1024 #line 3643 "ircd_parser.y"
8115 michael 913 {
8116     ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
8117     }
8118     break;
8119    
8120 michael 967 case 656:
8121    
8122     /* Line 1455 of yacc.c */
8123 michael 1024 #line 3648 "ircd_parser.y"
8124 michael 913 {
8125     ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
8126     }
8127     break;
8128    
8129 michael 967 case 657:
8130    
8131     /* Line 1455 of yacc.c */
8132 michael 1024 #line 3653 "ircd_parser.y"
8133 michael 913 {
8134     ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
8135     }
8136     break;
8137    
8138 michael 967 case 658:
8139    
8140     /* Line 1455 of yacc.c */
8141 michael 1024 #line 3658 "ircd_parser.y"
8142 michael 913 {
8143     ConfigFileEntry.dot_in_ip6_addr = yylval.number;
8144     }
8145     break;
8146    
8147 michael 967 case 659:
8148    
8149     /* Line 1455 of yacc.c */
8150 michael 1024 #line 3666 "ircd_parser.y"
8151 michael 913 {
8152 michael 967 if (conf_parser_ctx.pass == 2)
8153 michael 913 {
8154     yy_conf = make_conf_item(GDENY_TYPE);
8155     yy_aconf = map_to_conf(yy_conf);
8156     }
8157     }
8158     break;
8159    
8160 michael 967 case 660:
8161    
8162     /* Line 1455 of yacc.c */
8163 michael 1024 #line 3673 "ircd_parser.y"
8164 michael 913 {
8165 michael 967 if (conf_parser_ctx.pass == 2)
8166 michael 913 {
8167     /*
8168     * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
8169     * end we will have one extra, so we should free it.
8170     */
8171     if (yy_conf->name == NULL || yy_aconf->user == NULL)
8172     {
8173     delete_conf_item(yy_conf);
8174     yy_conf = NULL;
8175     yy_aconf = NULL;
8176     }
8177     }
8178     }
8179     break;
8180    
8181 michael 967 case 670:
8182    
8183     /* Line 1455 of yacc.c */
8184 michael 1024 #line 3699 "ircd_parser.y"
8185 michael 913 {
8186 michael 967 if (conf_parser_ctx.pass == 2)
8187 michael 913 ConfigFileEntry.glines = yylval.number;
8188     }
8189     break;
8190    
8191 michael 967 case 671:
8192    
8193     /* Line 1455 of yacc.c */
8194 michael 1024 #line 3705 "ircd_parser.y"
8195 michael 913 {
8196 michael 967 if (conf_parser_ctx.pass == 2)
8197 michael 913 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
8198     }
8199     break;
8200    
8201 michael 967 case 672:
8202    
8203     /* Line 1455 of yacc.c */
8204 michael 1024 #line 3711 "ircd_parser.y"
8205 michael 913 {
8206 michael 967 if (conf_parser_ctx.pass == 2)
8207 michael 913 ConfigFileEntry.gline_logging = 0;
8208     }
8209     break;
8210    
8211 michael 967 case 676:
8212    
8213     /* Line 1455 of yacc.c */
8214 michael 1024 #line 3717 "ircd_parser.y"
8215 michael 913 {
8216 michael 967 if (conf_parser_ctx.pass == 2)
8217 michael 913 ConfigFileEntry.gline_logging |= GDENY_REJECT;
8218     }
8219     break;
8220    
8221 michael 967 case 677:
8222    
8223     /* Line 1455 of yacc.c */
8224 michael 1024 #line 3721 "ircd_parser.y"
8225 michael 913 {
8226 michael 967 if (conf_parser_ctx.pass == 2)
8227 michael 913 ConfigFileEntry.gline_logging |= GDENY_BLOCK;
8228     }
8229     break;
8230    
8231 michael 967 case 678:
8232    
8233     /* Line 1455 of yacc.c */
8234 michael 1024 #line 3727 "ircd_parser.y"
8235 michael 913 {
8236 michael 967 if (conf_parser_ctx.pass == 2)
8237 michael 913 {
8238     struct split_nuh_item nuh;
8239    
8240     nuh.nuhmask = yylval.string;
8241     nuh.nickptr = NULL;
8242     nuh.userptr = userbuf;
8243     nuh.hostptr = hostbuf;
8244    
8245     nuh.nicksize = 0;
8246     nuh.usersize = sizeof(userbuf);
8247     nuh.hostsize = sizeof(hostbuf);
8248    
8249     split_nuh(&nuh);
8250    
8251     if (yy_aconf->user == NULL)
8252     {
8253     DupString(yy_aconf->user, userbuf);
8254     DupString(yy_aconf->host, hostbuf);
8255     }
8256     else
8257     {
8258     struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
8259    
8260     DupString(yy_tmp->user, userbuf);
8261     DupString(yy_tmp->host, hostbuf);
8262    
8263     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
8264     }
8265     }
8266     }
8267     break;
8268    
8269 michael 967 case 679:
8270    
8271     /* Line 1455 of yacc.c */
8272 michael 1024 #line 3761 "ircd_parser.y"
8273 michael 913 {
8274 michael 967 if (conf_parser_ctx.pass == 2)
8275 michael 913 {
8276     MyFree(yy_conf->name);
8277     DupString(yy_conf->name, yylval.string);
8278     }
8279     }
8280     break;
8281    
8282 michael 967 case 680:
8283    
8284     /* Line 1455 of yacc.c */
8285 michael 1024 #line 3770 "ircd_parser.y"
8286 michael 913 {
8287 michael 967 if (conf_parser_ctx.pass == 2)
8288 michael 913 yy_aconf->flags = 0;
8289     }
8290     break;
8291    
8292 michael 967 case 681:
8293    
8294     /* Line 1455 of yacc.c */
8295 michael 1024 #line 3774 "ircd_parser.y"
8296 michael 913 {
8297 michael 967 if (conf_parser_ctx.pass == 2)
8298 michael 913 {
8299     struct CollectItem *yy_tmp = NULL;
8300     dlink_node *ptr, *next_ptr;
8301    
8302     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
8303     {
8304     struct AccessItem *new_aconf;
8305     struct ConfItem *new_conf;
8306    
8307     yy_tmp = ptr->data;
8308     new_conf = make_conf_item(GDENY_TYPE);
8309     new_aconf = map_to_conf(new_conf);
8310    
8311     new_aconf->flags = yy_aconf->flags;
8312    
8313     if (yy_conf->name != NULL)
8314     DupString(new_conf->name, yy_conf->name);
8315     else
8316     DupString(new_conf->name, "*");
8317     if (yy_aconf->user != NULL)
8318     DupString(new_aconf->user, yy_tmp->user);
8319     else
8320     DupString(new_aconf->user, "*");
8321     if (yy_aconf->host != NULL)
8322     DupString(new_aconf->host, yy_tmp->host);
8323     else
8324     DupString(new_aconf->host, "*");
8325    
8326     dlinkDelete(&yy_tmp->node, &col_conf_list);
8327     }
8328    
8329     /*
8330     * In case someone has fed us with more than one action= after user/name
8331     * which would leak memory -Michael
8332     */
8333     if (yy_conf->name == NULL || yy_aconf->user == NULL)
8334     delete_conf_item(yy_conf);
8335    
8336     yy_conf = make_conf_item(GDENY_TYPE);
8337     yy_aconf = map_to_conf(yy_conf);
8338     }
8339     }
8340     break;
8341    
8342 michael 967 case 684:
8343    
8344     /* Line 1455 of yacc.c */
8345 michael 1024 #line 3821 "ircd_parser.y"
8346 michael 913 {
8347 michael 967 if (conf_parser_ctx.pass == 2)
8348 michael 913 yy_aconf->flags |= GDENY_REJECT;
8349     }
8350     break;
8351    
8352 michael 967 case 685:
8353    
8354     /* Line 1455 of yacc.c */
8355 michael 1024 #line 3825 "ircd_parser.y"
8356 michael 913 {
8357 michael 967 if (conf_parser_ctx.pass == 2)
8358 michael 913 yy_aconf->flags |= GDENY_BLOCK;
8359     }
8360     break;
8361    
8362 michael 967 case 708:
8363    
8364     /* Line 1455 of yacc.c */
8365 michael 1024 #line 3849 "ircd_parser.y"
8366 michael 913 {
8367     ConfigChannel.disable_fake_channels = yylval.number;
8368     }
8369     break;
8370    
8371 michael 967 case 709:
8372    
8373     /* Line 1455 of yacc.c */
8374 michael 1024 #line 3854 "ircd_parser.y"
8375 michael 913 {
8376     ConfigChannel.restrict_channels = yylval.number;
8377     }
8378     break;
8379    
8380 michael 967 case 710:
8381    
8382     /* Line 1455 of yacc.c */
8383 michael 1024 #line 3859 "ircd_parser.y"
8384 michael 913 {
8385     ConfigChannel.disable_local_channels = yylval.number;
8386     }
8387     break;
8388    
8389 michael 967 case 711:
8390    
8391     /* Line 1455 of yacc.c */
8392 michael 1024 #line 3864 "ircd_parser.y"
8393 michael 913 {
8394     ConfigChannel.use_except = yylval.number;
8395     }
8396     break;
8397    
8398 michael 967 case 712:
8399    
8400     /* Line 1455 of yacc.c */
8401 michael 1024 #line 3869 "ircd_parser.y"
8402 michael 913 {
8403     ConfigChannel.use_invex = yylval.number;
8404     }
8405     break;
8406    
8407 michael 967 case 713:
8408    
8409     /* Line 1455 of yacc.c */
8410 michael 1024 #line 3874 "ircd_parser.y"
8411 michael 913 {
8412     ConfigChannel.use_knock = yylval.number;
8413     }
8414     break;
8415    
8416 michael 967 case 714:
8417    
8418     /* Line 1455 of yacc.c */
8419 michael 1024 #line 3879 "ircd_parser.y"
8420 michael 913 {
8421     ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
8422     }
8423     break;
8424    
8425 michael 967 case 715:
8426    
8427     /* Line 1455 of yacc.c */
8428 michael 1024 #line 3884 "ircd_parser.y"
8429 michael 913 {
8430     ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
8431     }
8432     break;
8433    
8434 michael 967 case 716:
8435    
8436     /* Line 1455 of yacc.c */
8437 michael 1024 #line 3889 "ircd_parser.y"
8438 michael 913 {
8439     ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
8440     }
8441     break;
8442    
8443 michael 967 case 717:
8444    
8445     /* Line 1455 of yacc.c */
8446 michael 1024 #line 3894 "ircd_parser.y"
8447 michael 913 {
8448     ConfigChannel.quiet_on_ban = yylval.number;
8449     }
8450     break;
8451    
8452 michael 967 case 718:
8453    
8454     /* Line 1455 of yacc.c */
8455 michael 1024 #line 3899 "ircd_parser.y"
8456 michael 913 {
8457     ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
8458     }
8459     break;
8460    
8461 michael 967 case 719:
8462    
8463     /* Line 1455 of yacc.c */
8464 michael 1024 #line 3904 "ircd_parser.y"
8465 michael 913 {
8466     ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
8467     }
8468     break;
8469    
8470 michael 967 case 720:
8471    
8472     /* Line 1455 of yacc.c */
8473 michael 1024 #line 3909 "ircd_parser.y"
8474 michael 913 {
8475     ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
8476     }
8477     break;
8478    
8479 michael 967 case 721:
8480    
8481     /* Line 1455 of yacc.c */
8482 michael 1024 #line 3914 "ircd_parser.y"
8483 michael 913 {
8484     ConfigChannel.no_create_on_split = yylval.number;
8485     }
8486     break;
8487    
8488 michael 967 case 722:
8489    
8490     /* Line 1455 of yacc.c */
8491 michael 1024 #line 3919 "ircd_parser.y"
8492 michael 913 {
8493     ConfigChannel.no_join_on_split = yylval.number;
8494     }
8495     break;
8496    
8497 michael 967 case 723:
8498    
8499     /* Line 1455 of yacc.c */
8500 michael 1024 #line 3924 "ircd_parser.y"
8501 michael 913 {
8502     ConfigChannel.burst_topicwho = yylval.number;
8503     }
8504     break;
8505    
8506 michael 967 case 724:
8507    
8508     /* Line 1455 of yacc.c */
8509 michael 1024 #line 3929 "ircd_parser.y"
8510 michael 913 {
8511     GlobalSetOptions.joinfloodcount = yylval.number;
8512     }
8513     break;
8514    
8515 michael 967 case 725:
8516    
8517     /* Line 1455 of yacc.c */
8518 michael 1024 #line 3934 "ircd_parser.y"
8519 michael 913 {
8520     GlobalSetOptions.joinfloodtime = yylval.number;
8521     }
8522     break;
8523    
8524 michael 967 case 737:
8525    
8526     /* Line 1455 of yacc.c */
8527 michael 1024 #line 3953 "ircd_parser.y"
8528 michael 913 {
8529 michael 967 if (conf_parser_ctx.pass == 2)
8530 michael 913 ConfigServerHide.flatten_links = yylval.number;
8531     }
8532     break;
8533    
8534 michael 967 case 738:
8535    
8536     /* Line 1455 of yacc.c */
8537 michael 1024 #line 3959 "ircd_parser.y"
8538 michael 913 {
8539 michael 967 if (conf_parser_ctx.pass == 2)
8540 michael 913 ConfigServerHide.hide_servers = yylval.number;
8541     }
8542     break;
8543    
8544 michael 967 case 739:
8545    
8546     /* Line 1455 of yacc.c */
8547 michael 1024 #line 3965 "ircd_parser.y"
8548 michael 913 {
8549 michael 967 if (conf_parser_ctx.pass == 2)
8550 michael 913 {
8551     MyFree(ConfigServerHide.hidden_name);
8552     DupString(ConfigServerHide.hidden_name, yylval.string);
8553     }
8554     }
8555     break;
8556    
8557 michael 967 case 740:
8558    
8559     /* Line 1455 of yacc.c */
8560 michael 1024 #line 3974 "ircd_parser.y"
8561 michael 913 {
8562 michael 967 if (conf_parser_ctx.pass == 2)
8563 michael 913 {
8564     if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
8565     {
8566     eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
8567     ConfigServerHide.links_disabled = 0;
8568     }
8569    
8570     ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
8571     }
8572     }
8573     break;
8574    
8575 michael 967 case 741:
8576    
8577     /* Line 1455 of yacc.c */
8578 michael 1024 #line 3988 "ircd_parser.y"
8579 michael 913 {
8580 michael 967 if (conf_parser_ctx.pass == 2)
8581 michael 913 ConfigServerHide.hidden = yylval.number;
8582     }
8583     break;
8584    
8585 michael 967 case 742:
8586    
8587     /* Line 1455 of yacc.c */
8588 michael 1024 #line 3994 "ircd_parser.y"
8589 michael 913 {
8590 michael 967 if (conf_parser_ctx.pass == 2)
8591 michael 913 ConfigServerHide.disable_hidden = yylval.number;
8592     }
8593     break;
8594    
8595 michael 967 case 743:
8596    
8597     /* Line 1455 of yacc.c */
8598 michael 1024 #line 4000 "ircd_parser.y"
8599 michael 913 {
8600 michael 967 if (conf_parser_ctx.pass == 2)
8601 michael 913 ConfigServerHide.hide_server_ips = yylval.number;
8602     }
8603     break;
8604    
8605    
8606 michael 967
8607     /* Line 1455 of yacc.c */
8608 michael 1024 #line 8609 "ircd_parser.c"
8609 michael 913 default: break;
8610     }
8611     YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
8612    
8613     YYPOPSTACK (yylen);
8614     yylen = 0;
8615     YY_STACK_PRINT (yyss, yyssp);
8616    
8617     *++yyvsp = yyval;
8618    
8619     /* Now `shift' the result of the reduction. Determine what state
8620     that goes to, based on the state we popped back to and the rule
8621     number reduced by. */
8622    
8623     yyn = yyr1[yyn];
8624    
8625     yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
8626     if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
8627     yystate = yytable[yystate];
8628     else
8629     yystate = yydefgoto[yyn - YYNTOKENS];
8630    
8631     goto yynewstate;
8632    
8633    
8634     /*------------------------------------.
8635     | yyerrlab -- here on detecting error |
8636     `------------------------------------*/
8637     yyerrlab:
8638     /* If not already recovering from an error, report this error. */
8639     if (!yyerrstatus)
8640     {
8641     ++yynerrs;
8642     #if ! YYERROR_VERBOSE
8643     yyerror (YY_("syntax error"));
8644     #else
8645     {
8646     YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
8647     if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
8648     {
8649     YYSIZE_T yyalloc = 2 * yysize;
8650     if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
8651     yyalloc = YYSTACK_ALLOC_MAXIMUM;
8652     if (yymsg != yymsgbuf)
8653     YYSTACK_FREE (yymsg);
8654     yymsg = (char *) YYSTACK_ALLOC (yyalloc);
8655     if (yymsg)
8656     yymsg_alloc = yyalloc;
8657     else
8658     {
8659     yymsg = yymsgbuf;
8660     yymsg_alloc = sizeof yymsgbuf;
8661     }
8662     }
8663    
8664     if (0 < yysize && yysize <= yymsg_alloc)
8665     {
8666     (void) yysyntax_error (yymsg, yystate, yychar);
8667     yyerror (yymsg);
8668     }
8669     else
8670     {
8671     yyerror (YY_("syntax error"));
8672     if (yysize != 0)
8673     goto yyexhaustedlab;
8674     }
8675     }
8676     #endif
8677     }
8678    
8679    
8680    
8681     if (yyerrstatus == 3)
8682     {
8683 michael 967 /* If just tried and failed to reuse lookahead token after an
8684 michael 913 error, discard it. */
8685    
8686     if (yychar <= YYEOF)
8687     {
8688     /* Return failure if at end of input. */
8689     if (yychar == YYEOF)
8690     YYABORT;
8691     }
8692     else
8693     {
8694     yydestruct ("Error: discarding",
8695     yytoken, &yylval);
8696     yychar = YYEMPTY;
8697     }
8698     }
8699    
8700 michael 967 /* Else will try to reuse lookahead token after shifting the error
8701 michael 913 token. */
8702     goto yyerrlab1;
8703    
8704    
8705     /*---------------------------------------------------.
8706     | yyerrorlab -- error raised explicitly by YYERROR. |
8707     `---------------------------------------------------*/
8708     yyerrorlab:
8709    
8710     /* Pacify compilers like GCC when the user code never invokes
8711     YYERROR and the label yyerrorlab therefore never appears in user
8712     code. */
8713     if (/*CONSTCOND*/ 0)
8714     goto yyerrorlab;
8715    
8716     /* Do not reclaim the symbols of the rule which action triggered
8717     this YYERROR. */
8718     YYPOPSTACK (yylen);
8719     yylen = 0;
8720     YY_STACK_PRINT (yyss, yyssp);
8721     yystate = *yyssp;
8722     goto yyerrlab1;
8723    
8724    
8725     /*-------------------------------------------------------------.
8726     | yyerrlab1 -- common code for both syntax error and YYERROR. |
8727     `-------------------------------------------------------------*/
8728     yyerrlab1:
8729     yyerrstatus = 3; /* Each real token shifted decrements this. */
8730    
8731     for (;;)
8732     {
8733     yyn = yypact[yystate];
8734     if (yyn != YYPACT_NINF)
8735     {
8736     yyn += YYTERROR;
8737     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
8738     {
8739     yyn = yytable[yyn];
8740     if (0 < yyn)
8741     break;
8742     }
8743     }
8744    
8745     /* Pop the current state because it cannot handle the error token. */
8746     if (yyssp == yyss)
8747     YYABORT;
8748    
8749    
8750     yydestruct ("Error: popping",
8751     yystos[yystate], yyvsp);
8752     YYPOPSTACK (1);
8753     yystate = *yyssp;
8754     YY_STACK_PRINT (yyss, yyssp);
8755     }
8756    
8757     *++yyvsp = yylval;
8758    
8759    
8760     /* Shift the error token. */
8761     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8762    
8763     yystate = yyn;
8764     goto yynewstate;
8765    
8766    
8767     /*-------------------------------------.
8768     | yyacceptlab -- YYACCEPT comes here. |
8769     `-------------------------------------*/
8770     yyacceptlab:
8771     yyresult = 0;
8772     goto yyreturn;
8773    
8774     /*-----------------------------------.
8775     | yyabortlab -- YYABORT comes here. |
8776     `-----------------------------------*/
8777     yyabortlab:
8778     yyresult = 1;
8779     goto yyreturn;
8780    
8781 michael 967 #if !defined(yyoverflow) || YYERROR_VERBOSE
8782 michael 913 /*-------------------------------------------------.
8783     | yyexhaustedlab -- memory exhaustion comes here. |
8784     `-------------------------------------------------*/
8785     yyexhaustedlab:
8786     yyerror (YY_("memory exhausted"));
8787     yyresult = 2;
8788     /* Fall through. */
8789     #endif
8790    
8791     yyreturn:
8792 michael 967 if (yychar != YYEMPTY)
8793 michael 913 yydestruct ("Cleanup: discarding lookahead",
8794     yytoken, &yylval);
8795     /* Do not reclaim the symbols of the rule which action triggered
8796     this YYABORT or YYACCEPT. */
8797     YYPOPSTACK (yylen);
8798     YY_STACK_PRINT (yyss, yyssp);
8799     while (yyssp != yyss)
8800     {
8801     yydestruct ("Cleanup: popping",
8802     yystos[*yyssp], yyvsp);
8803     YYPOPSTACK (1);
8804     }
8805     #ifndef yyoverflow
8806     if (yyss != yyssa)
8807     YYSTACK_FREE (yyss);
8808     #endif
8809     #if YYERROR_VERBOSE
8810     if (yymsg != yymsgbuf)
8811     YYSTACK_FREE (yymsg);
8812     #endif
8813     /* Make sure YYID is used. */
8814     return YYID (yyresult);
8815     }
8816    
8817    
8818    

Properties

Name Value
svn:eol-style native