ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1306
Committed: Sat Mar 24 07:43:04 2012 UTC (13 years, 5 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 234914 byte(s)
Log Message:
- improve ssl/tls support
- cipher suites can now be specified via ircd.conf

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

Properties

Name Value
svn:eol-style native