ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.1.x/src/conf_parser.c
Revision: 1492
Committed: Fri Aug 3 16:13:27 2012 UTC (13 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 226515 byte(s)
Log Message:
- bison 2.6.1

File Contents

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

Properties

Name Value
svn:eol-style native