ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1823
Committed: Sun Apr 14 18:24:38 2013 UTC (12 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 224143 byte(s)
Log Message:
- Renamed example.conf to reference.conf
- Due to upcoming feature implementation, resv{} blocks are no longer stackable

File Contents

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

Properties

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