ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/src/ircd_parser.c
Revision: 978
Committed: Sun Aug 9 09:47:58 2009 UTC (16 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.2/src/ircd_parser.c
File size: 258456 byte(s)
Log Message:
- avoid using native basename() since some implementations may or may not modify passed data

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

Properties

Name Value
svn:eol-style native