ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1651
Committed: Sun Nov 11 10:54:51 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 217163 byte(s)
Log Message:
- Fixed class blocks not getting default values set properly
- bison 2.6.5

File Contents

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

Properties

Name Value
svn:eol-style native