ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1250
Committed: Sat Oct 1 10:48:16 2011 UTC (15 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 240269 byte(s)
Log Message:
- A file size of 'unlimited' can now be specified for log files

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

Properties

Name Value
svn:eol-style native