ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/y.tab.c
Revision: 201
Committed: Tue Nov 1 11:41:52 2005 UTC (18 years, 4 months ago) by adx
Content type: text/x-csrc
File size: 226549 byte(s)
Log Message:
MFC:
+ removed invite_ops_only, controlled by +p now
+ sorted ircd.conf:channel{} a bit

File Contents

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

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision