ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1247
Committed: Sat Oct 1 07:54:24 2011 UTC (13 years, 11 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 240344 byte(s)
Log Message:
- Rewrite and cleanup half-broken logging subsystem.
  Logfile rotating is not working yet

File Contents

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

Properties

Name Value
svn:eol-style native