ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1121
Committed: Sun Jan 9 11:03:03 2011 UTC (14 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 242405 byte(s)
Log Message:
- removed all instances of STATIC_MODULES since we don't have
  static modules anymore
- removed m_mkpasswd module from contrib

File Contents

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

Properties

Name Value
svn:eol-style native