ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/ircd_parser.c
Revision: 1009
Committed: Sun Sep 13 15:02:30 2009 UTC (14 years, 6 months ago) by michael
Content type: text/x-csrc
File size: 258611 byte(s)
Log Message:
- add configure test for pcre lib and remove pcre sources from the tree

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

Properties

Name Value
svn:eol-style native