ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1264
Committed: Tue Jan 17 12:30:57 2012 UTC (13 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 239566 byte(s)
Log Message:
- remove general::burst_away configuration directive. AWAY burst will have to
  be controlled via connect::flags explicitly.

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

Properties

Name Value
svn:eol-style native