ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1074
Committed: Wed Feb 17 23:28:33 2010 UTC (14 years, 1 month ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 258031 byte(s)
Log Message:
- Made general::kill_chase_time_limit accept time units. too bad this entire
  crap is still needed even with ts6.

File Contents

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

Properties

Name Value
svn:eol-style native