ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1466
Committed: Fri Jul 20 16:02:20 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: 228402 byte(s)
Log Message:
- bison 2.6

File Contents

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

Properties

Name Value
svn:eol-style native