ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1076
Committed: Thu Feb 18 09:23:47 2010 UTC (15 years, 6 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 242774 byte(s)
Log Message:
- Dropped support for old style 'operflag = yes|no;' configuration format

File Contents

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

Properties

Name Value
svn:eol-style native