ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1851
Committed: Wed Apr 24 18:31:06 2013 UTC (12 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 223693 byte(s)
Log Message:
- Cleanup m_map.c
- Implemented serverhide::hide_services configuration option

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

Properties

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