ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1474
Committed: Sun Jul 22 14:44:07 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: 226917 byte(s)
Log Message:
- removed &localchannels

File Contents

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

Properties

Name Value
svn:eol-style native