ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1117
Committed: Tue Dec 21 15:01:46 2010 UTC (14 years, 8 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 243302 byte(s)
Log Message:
- ircd_parser.y: ensure only valid hostnames can be
  specified in serverinfo::name

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

Properties

Name Value
svn:eol-style native