ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1011
Committed: Fri Sep 18 10:14:09 2009 UTC (14 years, 6 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.2/src/ircd_parser.c
File size: 258505 byte(s)
Log Message:
- move list manipulation routines from tools.c to list.c
- mem_frob() goes to memory.c
- sort out redundant/unneeded header includes

File Contents

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

Properties

Name Value
svn:eol-style native