ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1752
Committed: Wed Jan 16 19:17:40 2013 UTC (12 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 219884 byte(s)
Log Message:
- Forward-port -r1740 [Fixed yyerror() not reporting configuration errors
  in some cases]

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

Properties

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