ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1425
Committed: Wed Jun 6 08:44:22 2012 UTC (11 years, 10 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 232666 byte(s)
Log Message:
- automake 1.12.1 & bison 2.5.1

File Contents

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

Properties

Name Value
svn:eol-style native