ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1383
Committed: Tue May 1 11:18:22 2012 UTC (11 years, 11 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 232275 byte(s)
Log Message:
- Cleanup/rewrite Hub/Leaf-mask configuration. Hub and Leaf configuration items
  are no longer separately attached to Client structures.

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

Properties

Name Value
svn:eol-style native