ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1401
Committed: Tue May 8 18:58:13 2012 UTC (13 years, 3 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 231618 byte(s)
Log Message:
o) Removed channel::burst_topicwho configuration option. Topicsetters are
   now sent by default

File Contents

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

Properties

Name Value
svn:eol-style native