ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1858
Committed: Thu Apr 25 15:00:52 2013 UTC (12 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 225401 byte(s)
Log Message:
- Added basic support for libGeoIP
- Added exempt configuration option to resv{} blocks

File Contents

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

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision