ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1294
Committed: Wed Feb 22 20:48:30 2012 UTC (13 years, 6 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 239969 byte(s)
Log Message:
- Add user mode +H which simply hides operator status to other users.
  This solution replaces current method of hidding operator status where the
  admin mode is not sent to other servers unless hidden_administrator is disabled.
- m_who() now takes care whether an operator is hidden or not

File Contents

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

Properties

Name Value
svn:eol-style native