ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1459
Committed: Fri Jul 6 14:23:09 2012 UTC (13 years, 1 month ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 228273 byte(s)
Log Message:
- remove g-line acls
- added general::gline_request_duration configuration option which
  simply replaces the harcoded PENDING_GLINE_TIME definition

File Contents

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

Properties

Name Value
svn:eol-style native