ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1303
Committed: Fri Mar 23 10:52:19 2012 UTC (12 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 234686 byte(s)
Log Message:
- Implement basic tls connections for server-server links

File Contents

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

Properties

Name Value
svn:eol-style native