ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1783
Committed: Thu Jan 24 19:26:51 2013 UTC (12 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 223531 byte(s)
Log Message:
- Forward-port -r1774:
  - Configuration parser now does support 'year' and 'month' units
  - Add support for fake idle times to /whois. Known from csircd, this
    adds min_idle, and max_idle configuration directives to class{} blocks

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

Properties

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