ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1301
Committed: Sat Mar 10 21:47:17 2012 UTC (12 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 240347 byte(s)
Log Message:
- add 'dline' and 'undline' operator flags
- implement remote dlines mainly for services purposes, but can be used
  by operators as well
- update example configuration files; remove invalid shared::flags entries

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

Properties

Name Value
svn:eol-style native