ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1216
Committed: Tue Sep 13 18:22:31 2011 UTC (13 years, 11 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 247002 byte(s)
Log Message:
- add 'globops' to operflags

File Contents

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

Properties

Name Value
svn:eol-style native