ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1460
Committed: Fri Jul 6 14:32:53 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: 227836 byte(s)
Log Message:
- Added 'set' to operator privilege flags. Gives access to the "SET" command

File Contents

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

Properties

Name Value
svn:eol-style native