ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 967
Committed: Sun Aug 2 18:05:28 2009 UTC (14 years, 8 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.2/src/ircd_parser.c
File size: 258643 byte(s)
Log Message:
- added ssl_server_protocol configuration option to servinfo{}.
  valid flags are 'sslv3' and 'tlsv1'

File Contents

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

Properties

Name Value
svn:eol-style native