ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1648
Committed: Sat Nov 10 17:34:09 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 218480 byte(s)
Log Message:
- conf_parser.y: fixed some logic errors

File Contents

# User Rev Content
1 michael 1619 /* A Bison parser, made by GNU Bison 2.6.2.33-cc5a9. */
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 1619 #define YYBISON_VERSION "2.6.2.33-cc5a9"
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 1619 /* Line 358 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 1619 /* Line 358 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 1619 /* Line 374 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 1619 /* Line 374 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 1619 /* Line 377 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     898, 977, 977, 978, 978, 978, 979, 979, 979, 980,
1253     980, 980, 982, 988, 994, 1000, 1011, 1017, 1024, 1023,
1254     1029, 1029, 1030, 1034, 1038, 1042, 1046, 1050, 1054, 1058,
1255     1062, 1066, 1070, 1074, 1078, 1082, 1086, 1090, 1094, 1098,
1256     1102, 1106, 1113, 1112, 1118, 1118, 1119, 1123, 1127, 1131,
1257     1135, 1139, 1143, 1147, 1151, 1155, 1159, 1163, 1167, 1171,
1258     1175, 1179, 1183, 1187, 1191, 1202, 1201, 1243, 1243, 1244,
1259     1245, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
1260     1254, 1254, 1255, 1257, 1263, 1269, 1275, 1281, 1287, 1293,
1261     1299, 1305, 1311, 1318, 1324, 1330, 1340, 1339, 1346, 1345,
1262     1350, 1350, 1351, 1355, 1359, 1365, 1365, 1366, 1366, 1366,
1263     1366, 1366, 1368, 1368, 1370, 1370, 1372, 1386, 1406, 1412,
1264     1422, 1421, 1463, 1463, 1464, 1464, 1464, 1464, 1465, 1465,
1265     1465, 1466, 1466, 1468, 1474, 1480, 1486, 1498, 1497, 1503,
1266     1503, 1504, 1508, 1512, 1516, 1520, 1524, 1528, 1532, 1536,
1267     1542, 1556, 1565, 1579, 1578, 1587, 1587, 1588, 1588, 1588,
1268     1588, 1590, 1596, 1605, 1614, 1616, 1616, 1617, 1617, 1619,
1269     1635, 1634, 1659, 1659, 1660, 1660, 1660, 1660, 1662, 1668,
1270     1688, 1687, 1693, 1693, 1694, 1698, 1702, 1706, 1710, 1714,
1271     1718, 1722, 1726, 1730, 1740, 1739, 1760, 1760, 1761, 1761,
1272     1761, 1763, 1770, 1769, 1775, 1775, 1776, 1780, 1784, 1788,
1273     1792, 1796, 1800, 1804, 1808, 1812, 1822, 1821, 1887, 1887,
1274     1888, 1888, 1888, 1889, 1889, 1890, 1890, 1890, 1891, 1891,
1275     1891, 1892, 1892, 1893, 1895, 1901, 1907, 1913, 1926, 1939,
1276     1945, 1949, 1958, 1957, 1962, 1962, 1963, 1967, 1973, 1984,
1277     1990, 1996, 2002, 2018, 2017, 2080, 2079, 2085, 2085, 2086,
1278     2092, 2092, 2093, 2093, 2093, 2093, 2095, 2115, 2125, 2124,
1279     2151, 2151, 2152, 2152, 2152, 2154, 2160, 2169, 2171, 2171,
1280     2172, 2172, 2174, 2192, 2191, 2237, 2236, 2242, 2242, 2243,
1281     2249, 2249, 2250, 2250, 2250, 2250, 2252, 2258, 2267, 2270,
1282     2270, 2271, 2271, 2272, 2272, 2273, 2273, 2274, 2274, 2275,
1283     2275, 2276, 2277, 2278, 2278, 2279, 2279, 2280, 2280, 2281,
1284     2281, 2282, 2282, 2283, 2283, 2284, 2285, 2285, 2286, 2286,
1285     2287, 2287, 2288, 2288, 2289, 2289, 2290, 2291, 2291, 2292,
1286     2293, 2294, 2294, 2295, 2295, 2296, 2297, 2298, 2299, 2299,
1287     2300, 2303, 2308, 2314, 2320, 2326, 2331, 2336, 2341, 2346,
1288     2351, 2356, 2361, 2366, 2371, 2376, 2381, 2386, 2391, 2396,
1289     2402, 2413, 2418, 2423, 2428, 2433, 2438, 2441, 2446, 2449,
1290     2454, 2459, 2464, 2469, 2474, 2479, 2484, 2489, 2494, 2505,
1291     2510, 2515, 2520, 2529, 2538, 2543, 2548, 2554, 2553, 2558,
1292     2558, 2559, 2562, 2565, 2568, 2571, 2574, 2577, 2580, 2583,
1293     2586, 2589, 2592, 2595, 2598, 2601, 2604, 2607, 2610, 2613,
1294     2616, 2622, 2621, 2626, 2626, 2627, 2630, 2633, 2636, 2639,
1295     2642, 2645, 2648, 2651, 2654, 2657, 2660, 2663, 2666, 2669,
1296     2672, 2675, 2678, 2681, 2684, 2689, 2694, 2699, 2708, 2711,
1297     2711, 2712, 2713, 2713, 2714, 2714, 2715, 2715, 2716, 2717,
1298     2717, 2718, 2719, 2719, 2720, 2720, 2722, 2727, 2732, 2737,
1299     2742, 2747, 2752, 2757, 2762, 2767, 2772, 2777, 2782, 2787,
1300     2795, 2798, 2798, 2799, 2799, 2800, 2801, 2801, 2802, 2803,
1301     2805, 2811, 2817, 2826, 2840, 2846
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    
2372     #define YYTERROR 1
2373     #define YYERRCODE 256
2374    
2375     /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2376     If N is 0, then set CURRENT to the empty location which ends
2377     the previous symbol: RHS[0] (always defined). */
2378    
2379     #ifndef YYLLOC_DEFAULT
2380 michael 1466 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2381     do \
2382     if (YYID (N)) \
2383     { \
2384     (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2385     (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2386     (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2387     (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2388     } \
2389     else \
2390     { \
2391     (Current).first_line = (Current).last_line = \
2392     YYRHSLOC (Rhs, 0).last_line; \
2393     (Current).first_column = (Current).last_column = \
2394     YYRHSLOC (Rhs, 0).last_column; \
2395     } \
2396 michael 913 while (YYID (0))
2397     #endif
2398    
2399 michael 1466 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2400 michael 913
2401 michael 1466
2402    
2403 michael 1133 /* This macro is provided for backward compatibility. */
2404 michael 913
2405     #ifndef YY_LOCATION_PRINT
2406 michael 1133 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2407 michael 913 #endif
2408    
2409    
2410     /* YYLEX -- calling `yylex' with the right arguments. */
2411    
2412     #ifdef YYLEX_PARAM
2413     # define YYLEX yylex (YYLEX_PARAM)
2414     #else
2415     # define YYLEX yylex ()
2416     #endif
2417    
2418     /* Enable debugging if requested. */
2419     #if YYDEBUG
2420    
2421     # ifndef YYFPRINTF
2422     # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2423     # define YYFPRINTF fprintf
2424     # endif
2425    
2426     # define YYDPRINTF(Args) \
2427     do { \
2428     if (yydebug) \
2429     YYFPRINTF Args; \
2430     } while (YYID (0))
2431    
2432     # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2433     do { \
2434     if (yydebug) \
2435     { \
2436     YYFPRINTF (stderr, "%s ", Title); \
2437     yy_symbol_print (stderr, \
2438     Type, Value); \
2439     YYFPRINTF (stderr, "\n"); \
2440     } \
2441     } while (YYID (0))
2442    
2443    
2444     /*--------------------------------.
2445     | Print this symbol on YYOUTPUT. |
2446     `--------------------------------*/
2447    
2448     /*ARGSUSED*/
2449     #if (defined __STDC__ || defined __C99__FUNC__ \
2450     || defined __cplusplus || defined _MSC_VER)
2451     static void
2452     yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2453     #else
2454     static void
2455     yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2456     FILE *yyoutput;
2457     int yytype;
2458     YYSTYPE const * const yyvaluep;
2459     #endif
2460     {
2461 michael 1425 FILE *yyo = yyoutput;
2462     YYUSE (yyo);
2463 michael 913 if (!yyvaluep)
2464     return;
2465     # ifdef YYPRINT
2466     if (yytype < YYNTOKENS)
2467     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2468     # else
2469     YYUSE (yyoutput);
2470     # endif
2471     switch (yytype)
2472     {
2473     default:
2474     break;
2475     }
2476     }
2477    
2478    
2479     /*--------------------------------.
2480     | Print this symbol on YYOUTPUT. |
2481     `--------------------------------*/
2482    
2483     #if (defined __STDC__ || defined __C99__FUNC__ \
2484     || defined __cplusplus || defined _MSC_VER)
2485     static void
2486     yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2487     #else
2488     static void
2489     yy_symbol_print (yyoutput, yytype, yyvaluep)
2490     FILE *yyoutput;
2491     int yytype;
2492     YYSTYPE const * const yyvaluep;
2493     #endif
2494     {
2495     if (yytype < YYNTOKENS)
2496     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2497     else
2498     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2499    
2500     yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2501     YYFPRINTF (yyoutput, ")");
2502     }
2503    
2504     /*------------------------------------------------------------------.
2505     | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2506     | TOP (included). |
2507     `------------------------------------------------------------------*/
2508    
2509     #if (defined __STDC__ || defined __C99__FUNC__ \
2510     || defined __cplusplus || defined _MSC_VER)
2511     static void
2512 michael 967 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2513 michael 913 #else
2514     static void
2515 michael 967 yy_stack_print (yybottom, yytop)
2516     yytype_int16 *yybottom;
2517     yytype_int16 *yytop;
2518 michael 913 #endif
2519     {
2520     YYFPRINTF (stderr, "Stack now");
2521 michael 967 for (; yybottom <= yytop; yybottom++)
2522     {
2523     int yybot = *yybottom;
2524     YYFPRINTF (stderr, " %d", yybot);
2525     }
2526 michael 913 YYFPRINTF (stderr, "\n");
2527     }
2528    
2529     # define YY_STACK_PRINT(Bottom, Top) \
2530     do { \
2531     if (yydebug) \
2532     yy_stack_print ((Bottom), (Top)); \
2533     } while (YYID (0))
2534    
2535    
2536     /*------------------------------------------------.
2537     | Report that the YYRULE is going to be reduced. |
2538     `------------------------------------------------*/
2539    
2540     #if (defined __STDC__ || defined __C99__FUNC__ \
2541     || defined __cplusplus || defined _MSC_VER)
2542     static void
2543     yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2544     #else
2545     static void
2546     yy_reduce_print (yyvsp, yyrule)
2547     YYSTYPE *yyvsp;
2548     int yyrule;
2549     #endif
2550     {
2551     int yynrhs = yyr2[yyrule];
2552     int yyi;
2553     unsigned long int yylno = yyrline[yyrule];
2554     YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2555     yyrule - 1, yylno);
2556     /* The symbols being reduced. */
2557     for (yyi = 0; yyi < yynrhs; yyi++)
2558     {
2559 michael 967 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2560 michael 913 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2561     &(yyvsp[(yyi + 1) - (yynrhs)])
2562     );
2563 michael 967 YYFPRINTF (stderr, "\n");
2564 michael 913 }
2565     }
2566    
2567     # define YY_REDUCE_PRINT(Rule) \
2568     do { \
2569     if (yydebug) \
2570     yy_reduce_print (yyvsp, Rule); \
2571     } while (YYID (0))
2572    
2573     /* Nonzero means print parse trace. It is left uninitialized so that
2574     multiple parsers can coexist. */
2575     int yydebug;
2576     #else /* !YYDEBUG */
2577     # define YYDPRINTF(Args)
2578     # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2579     # define YY_STACK_PRINT(Bottom, Top)
2580     # define YY_REDUCE_PRINT(Rule)
2581     #endif /* !YYDEBUG */
2582    
2583    
2584     /* YYINITDEPTH -- initial size of the parser's stacks. */
2585     #ifndef YYINITDEPTH
2586     # define YYINITDEPTH 200
2587     #endif
2588    
2589     /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2590     if the built-in stack extension method is used).
2591    
2592     Do not make this value too large; the results are undefined if
2593     YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2594     evaluated with infinite-precision integer arithmetic. */
2595    
2596     #ifndef YYMAXDEPTH
2597     # define YYMAXDEPTH 10000
2598     #endif
2599    
2600    
2601     #if YYERROR_VERBOSE
2602    
2603     # ifndef yystrlen
2604     # if defined __GLIBC__ && defined _STRING_H
2605     # define yystrlen strlen
2606     # else
2607     /* Return the length of YYSTR. */
2608     #if (defined __STDC__ || defined __C99__FUNC__ \
2609     || defined __cplusplus || defined _MSC_VER)
2610     static YYSIZE_T
2611     yystrlen (const char *yystr)
2612     #else
2613     static YYSIZE_T
2614     yystrlen (yystr)
2615     const char *yystr;
2616     #endif
2617     {
2618     YYSIZE_T yylen;
2619     for (yylen = 0; yystr[yylen]; yylen++)
2620     continue;
2621     return yylen;
2622     }
2623     # endif
2624     # endif
2625    
2626     # ifndef yystpcpy
2627     # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2628     # define yystpcpy stpcpy
2629     # else
2630     /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2631     YYDEST. */
2632     #if (defined __STDC__ || defined __C99__FUNC__ \
2633     || defined __cplusplus || defined _MSC_VER)
2634     static char *
2635     yystpcpy (char *yydest, const char *yysrc)
2636     #else
2637     static char *
2638     yystpcpy (yydest, yysrc)
2639     char *yydest;
2640     const char *yysrc;
2641     #endif
2642     {
2643     char *yyd = yydest;
2644     const char *yys = yysrc;
2645    
2646     while ((*yyd++ = *yys++) != '\0')
2647     continue;
2648    
2649     return yyd - 1;
2650     }
2651     # endif
2652     # endif
2653    
2654     # ifndef yytnamerr
2655     /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2656     quotes and backslashes, so that it's suitable for yyerror. The
2657     heuristic is that double-quoting is unnecessary unless the string
2658     contains an apostrophe, a comma, or backslash (other than
2659     backslash-backslash). YYSTR is taken from yytname. If YYRES is
2660     null, do not copy; instead, return the length of what the result
2661     would have been. */
2662     static YYSIZE_T
2663     yytnamerr (char *yyres, const char *yystr)
2664     {
2665     if (*yystr == '"')
2666     {
2667     YYSIZE_T yyn = 0;
2668     char const *yyp = yystr;
2669    
2670     for (;;)
2671     switch (*++yyp)
2672     {
2673     case '\'':
2674     case ',':
2675     goto do_not_strip_quotes;
2676    
2677     case '\\':
2678     if (*++yyp != '\\')
2679     goto do_not_strip_quotes;
2680     /* Fall through. */
2681     default:
2682     if (yyres)
2683     yyres[yyn] = *yyp;
2684     yyn++;
2685     break;
2686    
2687     case '"':
2688     if (yyres)
2689     yyres[yyn] = '\0';
2690     return yyn;
2691     }
2692     do_not_strip_quotes: ;
2693     }
2694    
2695     if (! yyres)
2696     return yystrlen (yystr);
2697    
2698     return yystpcpy (yyres, yystr) - yyres;
2699     }
2700     # endif
2701    
2702 michael 1133 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2703     about the unexpected token YYTOKEN for the state stack whose top is
2704     YYSSP.
2705    
2706     Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2707     not large enough to hold the message. In that case, also set
2708     *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2709     required number of bytes is too large to store. */
2710     static int
2711     yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2712     yytype_int16 *yyssp, int yytoken)
2713 michael 913 {
2714 michael 1425 YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
2715 michael 1133 YYSIZE_T yysize = yysize0;
2716     YYSIZE_T yysize1;
2717     enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2718     /* Internationalized format string. */
2719 michael 1425 const char *yyformat = YY_NULL;
2720 michael 1133 /* Arguments of yyformat. */
2721     char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2722     /* Number of reported tokens (one for the "unexpected", one per
2723     "expected"). */
2724     int yycount = 0;
2725 michael 913
2726 michael 1133 /* There are many possibilities here to consider:
2727     - Assume YYFAIL is not used. It's too flawed to consider. See
2728     <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
2729     for details. YYERROR is fine as it does not invoke this
2730     function.
2731     - If this state is a consistent state with a default action, then
2732     the only way this function was invoked is if the default action
2733     is an error action. In that case, don't check for expected
2734     tokens because there are none.
2735     - The only way there can be no lookahead present (in yychar) is if
2736     this state is a consistent state with a default action. Thus,
2737     detecting the absence of a lookahead is sufficient to determine
2738     that there is no unexpected or expected token to report. In that
2739     case, just report a simple "syntax error".
2740     - Don't assume there isn't a lookahead just because this state is a
2741     consistent state with a default action. There might have been a
2742     previous inconsistent state, consistent state with a non-default
2743     action, or user semantic action that manipulated yychar.
2744     - Of course, the expected token list depends on states to have
2745     correct lookahead information, and it depends on the parser not
2746     to perform extra reductions after fetching a lookahead from the
2747     scanner and before detecting a syntax error. Thus, state merging
2748     (from LALR or IELR) and default reductions corrupt the expected
2749     token list. However, the list is correct for canonical LR with
2750     one exception: it will still contain any token that will not be
2751     accepted due to an error action in a later state.
2752     */
2753     if (yytoken != YYEMPTY)
2754 michael 913 {
2755 michael 1133 int yyn = yypact[*yyssp];
2756     yyarg[yycount++] = yytname[yytoken];
2757     if (!yypact_value_is_default (yyn))
2758     {
2759     /* Start YYX at -YYN if negative to avoid negative indexes in
2760     YYCHECK. In other words, skip the first -YYN actions for
2761     this state because they are default actions. */
2762     int yyxbegin = yyn < 0 ? -yyn : 0;
2763     /* Stay within bounds of both yycheck and yytname. */
2764     int yychecklim = YYLAST - yyn + 1;
2765     int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2766     int yyx;
2767 michael 913
2768 michael 1133 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2769     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2770     && !yytable_value_is_error (yytable[yyx + yyn]))
2771     {
2772     if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2773     {
2774     yycount = 1;
2775     yysize = yysize0;
2776     break;
2777     }
2778     yyarg[yycount++] = yytname[yyx];
2779 michael 1425 yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
2780 michael 1133 if (! (yysize <= yysize1
2781     && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2782     return 2;
2783     yysize = yysize1;
2784     }
2785     }
2786     }
2787 michael 913
2788 michael 1133 switch (yycount)
2789     {
2790     # define YYCASE_(N, S) \
2791     case N: \
2792     yyformat = S; \
2793     break
2794     YYCASE_(0, YY_("syntax error"));
2795     YYCASE_(1, YY_("syntax error, unexpected %s"));
2796     YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2797     YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2798     YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2799     YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2800     # undef YYCASE_
2801     }
2802 michael 913
2803 michael 1133 yysize1 = yysize + yystrlen (yyformat);
2804     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2805     return 2;
2806     yysize = yysize1;
2807 michael 913
2808 michael 1133 if (*yymsg_alloc < yysize)
2809     {
2810     *yymsg_alloc = 2 * yysize;
2811     if (! (yysize <= *yymsg_alloc
2812     && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2813     *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2814     return 1;
2815     }
2816 michael 913
2817 michael 1133 /* Avoid sprintf, as that infringes on the user's name space.
2818     Don't have undefined behavior even if the translation
2819     produced a string with the wrong number of "%s"s. */
2820     {
2821     char *yyp = *yymsg;
2822     int yyi = 0;
2823     while ((*yyp = *yyformat) != '\0')
2824     if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2825     {
2826     yyp += yytnamerr (yyp, yyarg[yyi++]);
2827     yyformat += 2;
2828     }
2829     else
2830     {
2831     yyp++;
2832     yyformat++;
2833     }
2834     }
2835     return 0;
2836 michael 913 }
2837     #endif /* YYERROR_VERBOSE */
2838    
2839     /*-----------------------------------------------.
2840     | Release the memory associated to this symbol. |
2841     `-----------------------------------------------*/
2842    
2843     /*ARGSUSED*/
2844     #if (defined __STDC__ || defined __C99__FUNC__ \
2845     || defined __cplusplus || defined _MSC_VER)
2846     static void
2847     yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2848     #else
2849     static void
2850     yydestruct (yymsg, yytype, yyvaluep)
2851     const char *yymsg;
2852     int yytype;
2853     YYSTYPE *yyvaluep;
2854     #endif
2855     {
2856     YYUSE (yyvaluep);
2857    
2858     if (!yymsg)
2859     yymsg = "Deleting";
2860     YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2861    
2862     switch (yytype)
2863     {
2864    
2865     default:
2866     break;
2867     }
2868     }
2869    
2870 michael 1133
2871 michael 913
2872    
2873 michael 967 /* The lookahead symbol. */
2874 michael 913 int yychar;
2875    
2876 michael 1619
2877     #ifndef YYLVAL_INITIALIZE
2878     # define YYLVAL_INITIALIZE()
2879     #endif
2880     #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2881     # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2882     # define YY_IGNORE_MAYBE_UNINITIALIZED_END
2883     #endif
2884    
2885 michael 967 /* The semantic value of the lookahead symbol. */
2886 michael 913 YYSTYPE yylval;
2887    
2888     /* Number of syntax errors so far. */
2889     int yynerrs;
2890    
2891    
2892 michael 1133 /*----------.
2893     | yyparse. |
2894     `----------*/
2895 michael 913
2896     #ifdef YYPARSE_PARAM
2897     #if (defined __STDC__ || defined __C99__FUNC__ \
2898     || defined __cplusplus || defined _MSC_VER)
2899     int
2900     yyparse (void *YYPARSE_PARAM)
2901     #else
2902     int
2903     yyparse (YYPARSE_PARAM)
2904     void *YYPARSE_PARAM;
2905     #endif
2906     #else /* ! YYPARSE_PARAM */
2907     #if (defined __STDC__ || defined __C99__FUNC__ \
2908     || defined __cplusplus || defined _MSC_VER)
2909     int
2910     yyparse (void)
2911     #else
2912     int
2913     yyparse ()
2914    
2915     #endif
2916     #endif
2917     {
2918 michael 967 int yystate;
2919     /* Number of tokens to shift before error messages enabled. */
2920     int yyerrstatus;
2921 michael 913
2922 michael 967 /* The stacks and their tools:
2923     `yyss': related to states.
2924     `yyvs': related to semantic values.
2925 michael 913
2926 michael 1425 Refer to the stacks through separate pointers, to allow yyoverflow
2927 michael 967 to reallocate them elsewhere. */
2928 michael 913
2929 michael 967 /* The state stack. */
2930     yytype_int16 yyssa[YYINITDEPTH];
2931     yytype_int16 *yyss;
2932     yytype_int16 *yyssp;
2933 michael 913
2934 michael 967 /* The semantic value stack. */
2935     YYSTYPE yyvsa[YYINITDEPTH];
2936     YYSTYPE *yyvs;
2937     YYSTYPE *yyvsp;
2938 michael 913
2939 michael 967 YYSIZE_T yystacksize;
2940 michael 913
2941 michael 967 int yyn;
2942     int yyresult;
2943     /* Lookahead token as an internal (translated) token number. */
2944 michael 1619 int yytoken = 0;
2945 michael 913 /* The variables used to return semantic value and location from the
2946     action routines. */
2947     YYSTYPE yyval;
2948    
2949 michael 967 #if YYERROR_VERBOSE
2950     /* Buffer for error messages, and its allocated size. */
2951     char yymsgbuf[128];
2952     char *yymsg = yymsgbuf;
2953     YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2954     #endif
2955 michael 913
2956 michael 967 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2957    
2958 michael 913 /* The number of symbols on the RHS of the reduced rule.
2959     Keep to zero when no symbol should be popped. */
2960     int yylen = 0;
2961    
2962 michael 967 yyss = yyssa;
2963     yyvs = yyvsa;
2964     yystacksize = YYINITDEPTH;
2965    
2966 michael 913 YYDPRINTF ((stderr, "Starting parse\n"));
2967    
2968     yystate = 0;
2969     yyerrstatus = 0;
2970     yynerrs = 0;
2971 michael 967 yychar = YYEMPTY; /* Cause a token to be read. */
2972 michael 913
2973     /* Initialize stack pointers.
2974     Waste one element of value and location stack
2975     so that they stay on the same level as the state stack.
2976     The wasted elements are never initialized. */
2977     yyssp = yyss;
2978     yyvsp = yyvs;
2979 michael 1619
2980     YYLVAL_INITIALIZE ();
2981 michael 913 goto yysetstate;
2982    
2983     /*------------------------------------------------------------.
2984     | yynewstate -- Push a new state, which is found in yystate. |
2985     `------------------------------------------------------------*/
2986     yynewstate:
2987     /* In all cases, when you get here, the value and location stacks
2988     have just been pushed. So pushing a state here evens the stacks. */
2989     yyssp++;
2990    
2991     yysetstate:
2992     *yyssp = yystate;
2993    
2994     if (yyss + yystacksize - 1 <= yyssp)
2995     {
2996     /* Get the current used size of the three stacks, in elements. */
2997     YYSIZE_T yysize = yyssp - yyss + 1;
2998    
2999     #ifdef yyoverflow
3000     {
3001     /* Give user a chance to reallocate the stack. Use copies of
3002     these so that the &'s don't force the real ones into
3003     memory. */
3004     YYSTYPE *yyvs1 = yyvs;
3005     yytype_int16 *yyss1 = yyss;
3006    
3007     /* Each stack pointer address is followed by the size of the
3008     data in use in that stack, in bytes. This used to be a
3009     conditional around just the two extra args, but that might
3010     be undefined if yyoverflow is a macro. */
3011     yyoverflow (YY_("memory exhausted"),
3012     &yyss1, yysize * sizeof (*yyssp),
3013     &yyvs1, yysize * sizeof (*yyvsp),
3014     &yystacksize);
3015    
3016     yyss = yyss1;
3017     yyvs = yyvs1;
3018     }
3019     #else /* no yyoverflow */
3020     # ifndef YYSTACK_RELOCATE
3021     goto yyexhaustedlab;
3022     # else
3023     /* Extend the stack our own way. */
3024     if (YYMAXDEPTH <= yystacksize)
3025     goto yyexhaustedlab;
3026     yystacksize *= 2;
3027     if (YYMAXDEPTH < yystacksize)
3028     yystacksize = YYMAXDEPTH;
3029    
3030     {
3031     yytype_int16 *yyss1 = yyss;
3032     union yyalloc *yyptr =
3033     (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
3034     if (! yyptr)
3035     goto yyexhaustedlab;
3036 michael 967 YYSTACK_RELOCATE (yyss_alloc, yyss);
3037     YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3038 michael 913 # undef YYSTACK_RELOCATE
3039     if (yyss1 != yyssa)
3040     YYSTACK_FREE (yyss1);
3041     }
3042     # endif
3043     #endif /* no yyoverflow */
3044    
3045     yyssp = yyss + yysize - 1;
3046     yyvsp = yyvs + yysize - 1;
3047    
3048     YYDPRINTF ((stderr, "Stack size increased to %lu\n",
3049     (unsigned long int) yystacksize));
3050    
3051     if (yyss + yystacksize - 1 <= yyssp)
3052     YYABORT;
3053     }
3054    
3055     YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3056    
3057 michael 967 if (yystate == YYFINAL)
3058     YYACCEPT;
3059    
3060 michael 913 goto yybackup;
3061    
3062     /*-----------.
3063     | yybackup. |
3064     `-----------*/
3065     yybackup:
3066    
3067     /* Do appropriate processing given the current state. Read a
3068 michael 967 lookahead token if we need one and don't already have one. */
3069 michael 913
3070 michael 967 /* First try to decide what to do without reference to lookahead token. */
3071 michael 913 yyn = yypact[yystate];
3072 michael 1133 if (yypact_value_is_default (yyn))
3073 michael 913 goto yydefault;
3074    
3075 michael 967 /* Not known => get a lookahead token if don't already have one. */
3076 michael 913
3077 michael 967 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
3078 michael 913 if (yychar == YYEMPTY)
3079     {
3080     YYDPRINTF ((stderr, "Reading a token: "));
3081     yychar = YYLEX;
3082     }
3083    
3084     if (yychar <= YYEOF)
3085     {
3086     yychar = yytoken = YYEOF;
3087     YYDPRINTF ((stderr, "Now at end of input.\n"));
3088     }
3089     else
3090     {
3091     yytoken = YYTRANSLATE (yychar);
3092     YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3093     }
3094    
3095     /* If the proper action on seeing token YYTOKEN is to reduce or to
3096     detect an error, take that action. */
3097     yyn += yytoken;
3098     if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3099     goto yydefault;
3100     yyn = yytable[yyn];
3101     if (yyn <= 0)
3102     {
3103 michael 1133 if (yytable_value_is_error (yyn))
3104     goto yyerrlab;
3105 michael 913 yyn = -yyn;
3106     goto yyreduce;
3107     }
3108    
3109     /* Count tokens shifted since error; after three, turn off error
3110     status. */
3111     if (yyerrstatus)
3112     yyerrstatus--;
3113    
3114 michael 967 /* Shift the lookahead token. */
3115 michael 913 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3116    
3117 michael 967 /* Discard the shifted token. */
3118     yychar = YYEMPTY;
3119 michael 913
3120     yystate = yyn;
3121 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3122 michael 913 *++yyvsp = yylval;
3123 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_END
3124 michael 913
3125     goto yynewstate;
3126    
3127    
3128     /*-----------------------------------------------------------.
3129     | yydefault -- do the default action for the current state. |
3130     `-----------------------------------------------------------*/
3131     yydefault:
3132     yyn = yydefact[yystate];
3133     if (yyn == 0)
3134     goto yyerrlab;
3135     goto yyreduce;
3136    
3137    
3138     /*-----------------------------.
3139     | yyreduce -- Do a reduction. |
3140     `-----------------------------*/
3141     yyreduce:
3142     /* yyn is the number of a rule to reduce with. */
3143     yylen = yyr2[yyn];
3144    
3145     /* If YYLEN is nonzero, implement the default value of the action:
3146     `$$ = $1'.
3147    
3148     Otherwise, the following line sets YYVAL to garbage.
3149     This behavior is undocumented and Bison
3150     users should not rely upon it. Assigning to YYVAL
3151     unconditionally makes the parser a bit smaller, and it avoids a
3152     GCC warning that YYVAL may be used uninitialized. */
3153     yyval = yyvsp[1-yylen];
3154    
3155    
3156     YY_REDUCE_PRINT (yyn);
3157     switch (yyn)
3158     {
3159 michael 1459 case 26:
3160 michael 1619 /* Line 1813 of yacc.c */
3161 michael 1647 #line 383 "conf_parser.y"
3162 michael 913 { (yyval.number) = 0; }
3163     break;
3164    
3165 michael 1459 case 28:
3166 michael 1619 /* Line 1813 of yacc.c */
3167 michael 1647 #line 385 "conf_parser.y"
3168 michael 913 {
3169     (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3170     }
3171     break;
3172    
3173 michael 1459 case 29:
3174 michael 1619 /* Line 1813 of yacc.c */
3175 michael 1647 #line 389 "conf_parser.y"
3176 michael 913 {
3177     (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3178     }
3179     break;
3180    
3181 michael 1459 case 30:
3182 michael 1619 /* Line 1813 of yacc.c */
3183 michael 1647 #line 393 "conf_parser.y"
3184 michael 913 {
3185     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3186     }
3187     break;
3188    
3189 michael 1459 case 31:
3190 michael 1619 /* Line 1813 of yacc.c */
3191 michael 1647 #line 397 "conf_parser.y"
3192 michael 913 {
3193     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3194     }
3195     break;
3196    
3197 michael 1459 case 32:
3198 michael 1619 /* Line 1813 of yacc.c */
3199 michael 1647 #line 401 "conf_parser.y"
3200 michael 913 {
3201     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3202     }
3203     break;
3204    
3205 michael 1459 case 33:
3206 michael 1619 /* Line 1813 of yacc.c */
3207 michael 1647 #line 405 "conf_parser.y"
3208 michael 913 {
3209     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3210     }
3211     break;
3212    
3213 michael 1459 case 34:
3214 michael 1619 /* Line 1813 of yacc.c */
3215 michael 1647 #line 410 "conf_parser.y"
3216 michael 913 { (yyval.number) = 0; }
3217     break;
3218    
3219 michael 1459 case 36:
3220 michael 1619 /* Line 1813 of yacc.c */
3221 michael 1647 #line 411 "conf_parser.y"
3222 michael 913 { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
3223     break;
3224    
3225 michael 1459 case 37:
3226 michael 1619 /* Line 1813 of yacc.c */
3227 michael 1647 #line 412 "conf_parser.y"
3228 michael 913 { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
3229     break;
3230    
3231 michael 1459 case 38:
3232 michael 1619 /* Line 1813 of yacc.c */
3233 michael 1647 #line 413 "conf_parser.y"
3234 michael 913 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
3235     break;
3236    
3237 michael 1459 case 39:
3238 michael 1619 /* Line 1813 of yacc.c */
3239 michael 1647 #line 414 "conf_parser.y"
3240 michael 913 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
3241     break;
3242    
3243 michael 1459 case 46:
3244 michael 1619 /* Line 1813 of yacc.c */
3245 michael 1647 #line 428 "conf_parser.y"
3246 michael 913 {
3247 michael 967 if (conf_parser_ctx.pass == 2)
3248 michael 978 add_conf_module(libio_basename(yylval.string));
3249 michael 913 }
3250     break;
3251    
3252 michael 1459 case 47:
3253 michael 1619 /* Line 1813 of yacc.c */
3254 michael 1647 #line 434 "conf_parser.y"
3255 michael 913 {
3256 michael 967 if (conf_parser_ctx.pass == 2)
3257 michael 913 mod_add_path(yylval.string);
3258     }
3259     break;
3260    
3261 michael 1459 case 71:
3262 michael 1619 /* Line 1813 of yacc.c */
3263 michael 1647 #line 459 "conf_parser.y"
3264 michael 913 {
3265 michael 1024 #ifdef HAVE_LIBCRYPTO
3266 michael 1316 if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
3267     SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_SSLv3);
3268 michael 1024 #endif
3269 michael 967 }
3270     break;
3271    
3272 michael 1459 case 72:
3273 michael 1619 /* Line 1813 of yacc.c */
3274 michael 1647 #line 465 "conf_parser.y"
3275 michael 967 {
3276 michael 1024 #ifdef HAVE_LIBCRYPTO
3277 michael 1316 if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
3278     SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_TLSv1);
3279 michael 1024 #endif
3280 michael 967 }
3281     break;
3282    
3283 michael 1459 case 75:
3284 michael 1619 /* Line 1813 of yacc.c */
3285 michael 1647 #line 474 "conf_parser.y"
3286 michael 967 {
3287 michael 1024 #ifdef HAVE_LIBCRYPTO
3288 michael 1316 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3289     SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3290 michael 1024 #endif
3291 michael 967 }
3292     break;
3293    
3294 michael 1459 case 76:
3295 michael 1619 /* Line 1813 of yacc.c */
3296 michael 1647 #line 480 "conf_parser.y"
3297 michael 967 {
3298 michael 1024 #ifdef HAVE_LIBCRYPTO
3299 michael 1316 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3300     SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3301 michael 1024 #endif
3302 michael 967 }
3303     break;
3304    
3305 michael 1459 case 77:
3306 michael 1619 /* Line 1813 of yacc.c */
3307 michael 1647 #line 488 "conf_parser.y"
3308 michael 967 {
3309 michael 913 #ifdef HAVE_LIBCRYPTO
3310 michael 967 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3311 michael 913 {
3312     if (!ServerInfo.rsa_private_key_file)
3313     {
3314     yyerror("No rsa_private_key_file specified, SSL disabled");
3315     break;
3316     }
3317    
3318 michael 967 if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
3319 michael 1303 SSL_FILETYPE_PEM) <= 0 ||
3320     SSL_CTX_use_certificate_file(ServerInfo.client_ctx, yylval.string,
3321 michael 967 SSL_FILETYPE_PEM) <= 0)
3322 michael 913 {
3323     yyerror(ERR_lib_error_string(ERR_get_error()));
3324     break;
3325     }
3326    
3327 michael 967 if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
3328 michael 1303 SSL_FILETYPE_PEM) <= 0 ||
3329     SSL_CTX_use_PrivateKey_file(ServerInfo.client_ctx, ServerInfo.rsa_private_key_file,
3330 michael 967 SSL_FILETYPE_PEM) <= 0)
3331 michael 913 {
3332     yyerror(ERR_lib_error_string(ERR_get_error()));
3333     break;
3334     }
3335    
3336 michael 1303 if (!SSL_CTX_check_private_key(ServerInfo.server_ctx) ||
3337     !SSL_CTX_check_private_key(ServerInfo.client_ctx))
3338 michael 913 {
3339 michael 967 yyerror(ERR_lib_error_string(ERR_get_error()));
3340 michael 913 break;
3341     }
3342     }
3343     #endif
3344     }
3345     break;
3346    
3347 michael 1459 case 78:
3348 michael 1619 /* Line 1813 of yacc.c */
3349 michael 1647 #line 527 "conf_parser.y"
3350 michael 913 {
3351     #ifdef HAVE_LIBCRYPTO
3352 michael 967 if (conf_parser_ctx.pass == 1)
3353 michael 913 {
3354     BIO *file;
3355    
3356     if (ServerInfo.rsa_private_key)
3357     {
3358     RSA_free(ServerInfo.rsa_private_key);
3359     ServerInfo.rsa_private_key = NULL;
3360     }
3361    
3362     if (ServerInfo.rsa_private_key_file)
3363     {
3364     MyFree(ServerInfo.rsa_private_key_file);
3365     ServerInfo.rsa_private_key_file = NULL;
3366     }
3367    
3368 michael 1646 ServerInfo.rsa_private_key_file = xstrdup(yylval.string);
3369 michael 913
3370     if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3371     {
3372     yyerror("File open failed, ignoring");
3373     break;
3374     }
3375    
3376 michael 1306 ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3377 michael 913
3378     BIO_set_close(file, BIO_CLOSE);
3379     BIO_free(file);
3380    
3381     if (ServerInfo.rsa_private_key == NULL)
3382     {
3383     yyerror("Couldn't extract key, ignoring");
3384     break;
3385     }
3386    
3387     if (!RSA_check_key(ServerInfo.rsa_private_key))
3388     {
3389     RSA_free(ServerInfo.rsa_private_key);
3390     ServerInfo.rsa_private_key = NULL;
3391    
3392     yyerror("Invalid key, ignoring");
3393     break;
3394     }
3395    
3396     /* require 2048 bit (256 byte) key */
3397     if (RSA_size(ServerInfo.rsa_private_key) != 256)
3398     {
3399     RSA_free(ServerInfo.rsa_private_key);
3400     ServerInfo.rsa_private_key = NULL;
3401    
3402     yyerror("Not a 2048 bit key, ignoring");
3403     }
3404     }
3405     #endif
3406     }
3407     break;
3408    
3409 michael 1459 case 79:
3410 michael 1619 /* Line 1813 of yacc.c */
3411 michael 1647 #line 586 "conf_parser.y"
3412 michael 913 {
3413 michael 1306 /* TBD - XXX: error reporting */
3414     #ifdef HAVE_LIBCRYPTO
3415     if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3416     {
3417     BIO *file = BIO_new_file(yylval.string, "r");
3418    
3419     if (file)
3420     {
3421     DH *dh = PEM_read_bio_DHparams(file, NULL, NULL, NULL);
3422    
3423     BIO_free(file);
3424    
3425     if (dh)
3426     {
3427 michael 1352 if (DH_size(dh) < 128)
3428     ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
3429     else
3430     SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
3431    
3432 michael 1306 DH_free(dh);
3433     }
3434     }
3435     }
3436     #endif
3437     }
3438     break;
3439    
3440 michael 1459 case 80:
3441 michael 1619 /* Line 1813 of yacc.c */
3442 michael 1647 #line 614 "conf_parser.y"
3443 michael 1306 {
3444     #ifdef HAVE_LIBCRYPTO
3445     if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3446     SSL_CTX_set_cipher_list(ServerInfo.server_ctx, yylval.string);
3447     #endif
3448     }
3449     break;
3450    
3451 michael 1459 case 81:
3452 michael 1619 /* Line 1813 of yacc.c */
3453 michael 1647 #line 622 "conf_parser.y"
3454 michael 1306 {
3455 michael 913 /* this isn't rehashable */
3456 michael 1117 if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3457 michael 913 {
3458 michael 1117 if (valid_servname(yylval.string))
3459 michael 1646 ServerInfo.name = xstrdup(yylval.string);
3460 michael 1117 else
3461 michael 913 {
3462 michael 1247 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::name -- invalid name. Aborting.");
3463 michael 1117 exit(0);
3464 michael 913 }
3465     }
3466     }
3467     break;
3468    
3469 michael 1459 case 82:
3470 michael 1619 /* Line 1813 of yacc.c */
3471 michael 1647 #line 637 "conf_parser.y"
3472 michael 913 {
3473     /* this isn't rehashable */
3474 michael 967 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3475 michael 913 {
3476     if (valid_sid(yylval.string))
3477 michael 1646 ServerInfo.sid = xstrdup(yylval.string);
3478 michael 913 else
3479     {
3480 michael 1247 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
3481 michael 913 exit(0);
3482     }
3483     }
3484     }
3485     break;
3486    
3487 michael 1459 case 83:
3488 michael 1619 /* Line 1813 of yacc.c */
3489 michael 1647 #line 652 "conf_parser.y"
3490 michael 913 {
3491 michael 967 if (conf_parser_ctx.pass == 2)
3492 michael 913 {
3493     MyFree(ServerInfo.description);
3494 michael 1646 ServerInfo.description = xstrdup(yylval.string);
3495 michael 913 }
3496     }
3497     break;
3498    
3499 michael 1459 case 84:
3500 michael 1619 /* Line 1813 of yacc.c */
3501 michael 1647 #line 661 "conf_parser.y"
3502 michael 913 {
3503 michael 967 if (conf_parser_ctx.pass == 2)
3504 michael 913 {
3505     char *p;
3506    
3507     if ((p = strchr(yylval.string, ' ')) != NULL)
3508     p = '\0';
3509    
3510     MyFree(ServerInfo.network_name);
3511 michael 1646 ServerInfo.network_name = xstrdup(yylval.string);
3512 michael 913 }
3513     }
3514     break;
3515    
3516 michael 1459 case 85:
3517 michael 1619 /* Line 1813 of yacc.c */
3518 michael 1647 #line 675 "conf_parser.y"
3519 michael 913 {
3520 michael 967 if (conf_parser_ctx.pass == 2)
3521 michael 913 {
3522     MyFree(ServerInfo.network_desc);
3523 michael 1646 ServerInfo.network_desc = xstrdup(yylval.string);
3524 michael 913 }
3525     }
3526     break;
3527    
3528 michael 1459 case 86:
3529 michael 1619 /* Line 1813 of yacc.c */
3530 michael 1647 #line 684 "conf_parser.y"
3531 michael 913 {
3532 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3533 michael 913 {
3534     struct addrinfo hints, *res;
3535    
3536     memset(&hints, 0, sizeof(hints));
3537    
3538     hints.ai_family = AF_UNSPEC;
3539     hints.ai_socktype = SOCK_STREAM;
3540     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3541    
3542 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3543 michael 1247 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3544 michael 913 else
3545     {
3546     assert(res != NULL);
3547    
3548     memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3549     ServerInfo.ip.ss.ss_family = res->ai_family;
3550     ServerInfo.ip.ss_len = res->ai_addrlen;
3551 michael 1123 freeaddrinfo(res);
3552 michael 913
3553     ServerInfo.specific_ipv4_vhost = 1;
3554     }
3555     }
3556     }
3557     break;
3558    
3559 michael 1459 case 87:
3560 michael 1619 /* Line 1813 of yacc.c */
3561 michael 1647 #line 712 "conf_parser.y"
3562 michael 913 {
3563     #ifdef IPV6
3564 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3565 michael 913 {
3566     struct addrinfo hints, *res;
3567    
3568     memset(&hints, 0, sizeof(hints));
3569    
3570     hints.ai_family = AF_UNSPEC;
3571     hints.ai_socktype = SOCK_STREAM;
3572     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3573    
3574 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3575 michael 1247 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3576 michael 913 else
3577     {
3578     assert(res != NULL);
3579    
3580     memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3581     ServerInfo.ip6.ss.ss_family = res->ai_family;
3582     ServerInfo.ip6.ss_len = res->ai_addrlen;
3583 michael 1123 freeaddrinfo(res);
3584 michael 913
3585     ServerInfo.specific_ipv6_vhost = 1;
3586     }
3587     }
3588     #endif
3589     }
3590     break;
3591    
3592 michael 1459 case 88:
3593 michael 1619 /* Line 1813 of yacc.c */
3594 michael 1647 #line 742 "conf_parser.y"
3595 michael 913 {
3596 michael 967 if (conf_parser_ctx.pass == 2)
3597 michael 913 {
3598     recalc_fdlimit(NULL);
3599    
3600     if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3601     {
3602     char buf[IRCD_BUFSIZE];
3603     ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3604     yyerror(buf);
3605     }
3606     else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3607     {
3608     char buf[IRCD_BUFSIZE];
3609     ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3610     yyerror(buf);
3611     }
3612     else
3613     ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3614     }
3615     }
3616     break;
3617    
3618 michael 1459 case 89:
3619 michael 1619 /* Line 1813 of yacc.c */
3620 michael 1647 #line 765 "conf_parser.y"
3621 michael 913 {
3622 michael 967 if (conf_parser_ctx.pass == 2)
3623 michael 1119 ServerInfo.hub = yylval.number;
3624 michael 913 }
3625     break;
3626    
3627 michael 1459 case 97:
3628 michael 1619 /* Line 1813 of yacc.c */
3629 michael 1647 #line 780 "conf_parser.y"
3630 michael 913 {
3631 michael 967 if (conf_parser_ctx.pass == 2)
3632 michael 913 {
3633     MyFree(AdminInfo.name);
3634 michael 1646 AdminInfo.name = xstrdup(yylval.string);
3635 michael 913 }
3636     }
3637     break;
3638    
3639 michael 1459 case 98:
3640 michael 1619 /* Line 1813 of yacc.c */
3641 michael 1647 #line 789 "conf_parser.y"
3642 michael 913 {
3643 michael 967 if (conf_parser_ctx.pass == 2)
3644 michael 913 {
3645     MyFree(AdminInfo.email);
3646 michael 1646 AdminInfo.email = xstrdup(yylval.string);
3647 michael 913 }
3648     }
3649     break;
3650    
3651 michael 1459 case 99:
3652 michael 1619 /* Line 1813 of yacc.c */
3653 michael 1647 #line 798 "conf_parser.y"
3654 michael 913 {
3655 michael 967 if (conf_parser_ctx.pass == 2)
3656 michael 913 {
3657     MyFree(AdminInfo.description);
3658 michael 1646 AdminInfo.description = xstrdup(yylval.string);
3659 michael 913 }
3660     }
3661     break;
3662    
3663 michael 1459 case 106:
3664 michael 1619 /* Line 1813 of yacc.c */
3665 michael 1647 #line 816 "conf_parser.y"
3666 michael 913 {
3667 michael 1247 if (conf_parser_ctx.pass == 2)
3668     ConfigLoggingEntry.use_logging = yylval.number;
3669     }
3670 michael 913 break;
3671    
3672 michael 1459 case 107:
3673 michael 1619 /* Line 1813 of yacc.c */
3674 michael 1647 #line 822 "conf_parser.y"
3675 michael 913 {
3676 michael 1647 if (conf_parser_ctx.pass == 2)
3677     reset_block_state();
3678 michael 913 }
3679     break;
3680    
3681 michael 1459 case 108:
3682 michael 1619 /* Line 1813 of yacc.c */
3683 michael 1647 #line 826 "conf_parser.y"
3684 michael 913 {
3685 michael 1647 if (conf_parser_ctx.pass != 2)
3686     break;
3687    
3688     if (block_state.type.value && block_state.file.buf[0])
3689     log_add_file(block_state.type.value, block_state.size.value,
3690     block_state.file.buf);
3691 michael 913 }
3692     break;
3693    
3694 michael 1459 case 115:
3695 michael 1619 /* Line 1813 of yacc.c */
3696 michael 1647 #line 842 "conf_parser.y"
3697 michael 913 {
3698 michael 1647 if (conf_parser_ctx.pass != 2)
3699     break;
3700    
3701     strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3702 michael 913 }
3703     break;
3704    
3705 michael 1459 case 116:
3706 michael 1619 /* Line 1813 of yacc.c */
3707 michael 1647 #line 850 "conf_parser.y"
3708 michael 913 {
3709 michael 1647 block_state.size.value = (yyvsp[(3) - (4)].number);
3710 michael 913 }
3711     break;
3712    
3713 michael 1459 case 117:
3714 michael 1619 /* Line 1813 of yacc.c */
3715 michael 1647 #line 853 "conf_parser.y"
3716 michael 913 {
3717 michael 1647 block_state.size.value = 0;
3718 michael 913 }
3719     break;
3720    
3721 michael 1459 case 118:
3722 michael 1619 /* Line 1813 of yacc.c */
3723 michael 1647 #line 858 "conf_parser.y"
3724 michael 913 {
3725 michael 967 if (conf_parser_ctx.pass == 2)
3726 michael 1647 block_state.type.value = 0;
3727 michael 913 }
3728     break;
3729    
3730 michael 1459 case 122:
3731 michael 1619 /* Line 1813 of yacc.c */
3732 michael 1647 #line 865 "conf_parser.y"
3733 michael 913 {
3734 michael 967 if (conf_parser_ctx.pass == 2)
3735 michael 1647 block_state.type.value = LOG_TYPE_USER;
3736 michael 913 }
3737     break;
3738    
3739 michael 1459 case 123:
3740 michael 1619 /* Line 1813 of yacc.c */
3741 michael 1647 #line 869 "conf_parser.y"
3742 michael 913 {
3743 michael 967 if (conf_parser_ctx.pass == 2)
3744 michael 1647 block_state.type.value = LOG_TYPE_OPER;
3745 michael 913 }
3746     break;
3747    
3748 michael 1459 case 124:
3749 michael 1619 /* Line 1813 of yacc.c */
3750 michael 1647 #line 873 "conf_parser.y"
3751 michael 1247 {
3752 michael 967 if (conf_parser_ctx.pass == 2)
3753 michael 1647 block_state.type.value = LOG_TYPE_GLINE;
3754 michael 913 }
3755     break;
3756    
3757 michael 1459 case 125:
3758 michael 1619 /* Line 1813 of yacc.c */
3759 michael 1647 #line 877 "conf_parser.y"
3760 michael 913 {
3761 michael 967 if (conf_parser_ctx.pass == 2)
3762 michael 1647 block_state.type.value = LOG_TYPE_DLINE;
3763 michael 913 }
3764     break;
3765    
3766 michael 1459 case 126:
3767 michael 1619 /* Line 1813 of yacc.c */
3768 michael 1647 #line 881 "conf_parser.y"
3769 michael 913 {
3770 michael 967 if (conf_parser_ctx.pass == 2)
3771 michael 1647 block_state.type.value = LOG_TYPE_KLINE;
3772 michael 913 }
3773     break;
3774    
3775 michael 1459 case 127:
3776 michael 1619 /* Line 1813 of yacc.c */
3777 michael 1647 #line 885 "conf_parser.y"
3778 michael 913 {
3779 michael 967 if (conf_parser_ctx.pass == 2)
3780 michael 1647 block_state.type.value = LOG_TYPE_KILL;
3781 michael 913 }
3782     break;
3783    
3784 michael 1459 case 128:
3785 michael 1619 /* Line 1813 of yacc.c */
3786 michael 1647 #line 889 "conf_parser.y"
3787 michael 913 {
3788 michael 967 if (conf_parser_ctx.pass == 2)
3789 michael 1647 block_state.type.value = LOG_TYPE_DEBUG;
3790 michael 1250 }
3791     break;
3792    
3793 michael 1459 case 129:
3794 michael 1619 /* Line 1813 of yacc.c */
3795 michael 1647 #line 899 "conf_parser.y"
3796 michael 1250 {
3797 michael 1646 if (conf_parser_ctx.pass != 2)
3798     break;
3799    
3800     reset_block_state();
3801     block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3802 michael 913 }
3803     break;
3804    
3805 michael 1459 case 130:
3806 michael 1619 /* Line 1813 of yacc.c */
3807 michael 1647 #line 906 "conf_parser.y"
3808 michael 913 {
3809 michael 1646 dlink_node *ptr = NULL;
3810 michael 913
3811 michael 1646 if (conf_parser_ctx.pass != 2)
3812     break;
3813 michael 913
3814 michael 1646 if (!block_state.name.buf[0])
3815     break;
3816     #ifdef HAVE_LIBCRYPTO
3817     if (!(block_state.file.buf[0] ||
3818 michael 1647 block_state.rpass.buf[0]))
3819 michael 1646 break;
3820     #else
3821 michael 1647 if (!block_state.rpass.buf[0])
3822 michael 1646 break;
3823     #endif
3824 michael 913
3825 michael 1646 DLINK_FOREACH(ptr, block_state.mask.list.head)
3826     {
3827     struct MaskItem *conf = NULL;
3828     struct split_nuh_item nuh;
3829 michael 913
3830 michael 1646 nuh.nuhmask = ptr->data;
3831     nuh.nickptr = NULL;
3832 michael 1647 nuh.userptr = block_state.user.buf;
3833     nuh.hostptr = block_state.host.buf;
3834 michael 1646 nuh.nicksize = 0;
3835 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
3836     nuh.hostsize = sizeof(block_state.host.buf);
3837 michael 1646 split_nuh(&nuh);
3838 michael 913
3839 michael 1646 conf = conf_make(CONF_OPER);
3840 michael 1647 conf->user = xstrdup(block_state.user.buf);
3841     conf->host = xstrdup(block_state.host.buf);
3842 michael 1285
3843 michael 1647 if (block_state.rpass.buf[0])
3844     conf->passwd = xstrdup(block_state.rpass.buf);
3845 michael 1285
3846 michael 1646 conf->flags = block_state.flags.value;
3847     conf->modes = block_state.modes.value;
3848     conf->port = block_state.port.value;
3849     conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3850 michael 913
3851 michael 1646 conf_add_class_to_conf(conf, block_state.class.buf);
3852    
3853 michael 913 #ifdef HAVE_LIBCRYPTO
3854 michael 1646 if (block_state.file.buf[0])
3855     {
3856     BIO *file = NULL;
3857     RSA *pkey = NULL;
3858    
3859     if ((file = BIO_new_file(block_state.file.buf, "r")) == NULL)
3860 michael 913 {
3861 michael 1646 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
3862     break;
3863 michael 913 }
3864    
3865 michael 1646 if ((pkey = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL)) == NULL)
3866 michael 913 {
3867 michael 1646 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3868     break;
3869 michael 913 }
3870    
3871 michael 1646 conf->rsa_public_key = pkey;
3872     BIO_set_close(file, BIO_CLOSE);
3873     BIO_free(file);
3874 michael 913 }
3875 michael 1646 #endif /* HAVE_LIBCRYPTO */
3876 michael 913 }
3877     }
3878     break;
3879    
3880 michael 1459 case 142:
3881 michael 1619 /* Line 1813 of yacc.c */
3882 michael 1647 #line 983 "conf_parser.y"
3883 michael 913 {
3884 michael 967 if (conf_parser_ctx.pass == 2)
3885 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3886 michael 913 }
3887     break;
3888    
3889 michael 1459 case 143:
3890 michael 1619 /* Line 1813 of yacc.c */
3891 michael 1647 #line 989 "conf_parser.y"
3892 michael 913 {
3893 michael 967 if (conf_parser_ctx.pass == 2)
3894 michael 1646 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3895 michael 913 }
3896     break;
3897    
3898 michael 1459 case 144:
3899 michael 1619 /* Line 1813 of yacc.c */
3900 michael 1647 #line 995 "conf_parser.y"
3901 michael 913 {
3902 michael 967 if (conf_parser_ctx.pass == 2)
3903 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3904 michael 913 }
3905     break;
3906    
3907 michael 1459 case 145:
3908 michael 1619 /* Line 1813 of yacc.c */
3909 michael 1647 #line 1001 "conf_parser.y"
3910 michael 913 {
3911 michael 967 if (conf_parser_ctx.pass == 2)
3912 michael 913 {
3913     if (yylval.number)
3914 michael 1646 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3915 michael 913 else
3916 michael 1646 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3917 michael 913 }
3918     }
3919     break;
3920    
3921 michael 1459 case 146:
3922 michael 1619 /* Line 1813 of yacc.c */
3923 michael 1647 #line 1012 "conf_parser.y"
3924 michael 913 {
3925 michael 967 if (conf_parser_ctx.pass == 2)
3926 michael 1646 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3927 michael 913 }
3928     break;
3929    
3930 michael 1459 case 147:
3931 michael 1619 /* Line 1813 of yacc.c */
3932 michael 1647 #line 1018 "conf_parser.y"
3933 michael 913 {
3934 michael 967 if (conf_parser_ctx.pass == 2)
3935 michael 1646 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3936 michael 913 }
3937     break;
3938    
3939 michael 1459 case 148:
3940 michael 1619 /* Line 1813 of yacc.c */
3941 michael 1647 #line 1024 "conf_parser.y"
3942 michael 913 {
3943 michael 967 if (conf_parser_ctx.pass == 2)
3944 michael 1646 block_state.modes.value = 0;
3945 michael 913 }
3946     break;
3947    
3948 michael 1459 case 152:
3949 michael 1619 /* Line 1813 of yacc.c */
3950 michael 1647 #line 1031 "conf_parser.y"
3951 michael 913 {
3952 michael 967 if (conf_parser_ctx.pass == 2)
3953 michael 1646 block_state.modes.value |= UMODE_BOTS;
3954 michael 913 }
3955     break;
3956    
3957 michael 1459 case 153:
3958 michael 1619 /* Line 1813 of yacc.c */
3959 michael 1647 #line 1035 "conf_parser.y"
3960 michael 913 {
3961 michael 967 if (conf_parser_ctx.pass == 2)
3962 michael 1646 block_state.modes.value |= UMODE_CCONN;
3963 michael 913 }
3964     break;
3965    
3966 michael 1459 case 154:
3967 michael 1619 /* Line 1813 of yacc.c */
3968 michael 1647 #line 1039 "conf_parser.y"
3969 michael 913 {
3970 michael 967 if (conf_parser_ctx.pass == 2)
3971 michael 1646 block_state.modes.value |= UMODE_CCONN_FULL;
3972 michael 913 }
3973     break;
3974    
3975 michael 1459 case 155:
3976 michael 1619 /* Line 1813 of yacc.c */
3977 michael 1647 #line 1043 "conf_parser.y"
3978 michael 913 {
3979 michael 967 if (conf_parser_ctx.pass == 2)
3980 michael 1646 block_state.modes.value |= UMODE_DEAF;
3981 michael 913 }
3982     break;
3983    
3984 michael 1459 case 156:
3985 michael 1619 /* Line 1813 of yacc.c */
3986 michael 1647 #line 1047 "conf_parser.y"
3987 michael 913 {
3988 michael 967 if (conf_parser_ctx.pass == 2)
3989 michael 1646 block_state.modes.value |= UMODE_DEBUG;
3990 michael 913 }
3991     break;
3992    
3993 michael 1459 case 157:
3994 michael 1619 /* Line 1813 of yacc.c */
3995 michael 1647 #line 1051 "conf_parser.y"
3996 michael 913 {
3997 michael 967 if (conf_parser_ctx.pass == 2)
3998 michael 1646 block_state.modes.value |= UMODE_FULL;
3999 michael 913 }
4000     break;
4001    
4002 michael 1459 case 158:
4003 michael 1619 /* Line 1813 of yacc.c */
4004 michael 1647 #line 1055 "conf_parser.y"
4005 michael 913 {
4006 michael 967 if (conf_parser_ctx.pass == 2)
4007 michael 1646 block_state.modes.value |= UMODE_HIDDEN;
4008 michael 913 }
4009     break;
4010    
4011 michael 1459 case 159:
4012 michael 1619 /* Line 1813 of yacc.c */
4013 michael 1647 #line 1059 "conf_parser.y"
4014 michael 913 {
4015 michael 967 if (conf_parser_ctx.pass == 2)
4016 michael 1646 block_state.modes.value |= UMODE_SKILL;
4017 michael 913 }
4018     break;
4019    
4020 michael 1459 case 160:
4021 michael 1619 /* Line 1813 of yacc.c */
4022 michael 1647 #line 1063 "conf_parser.y"
4023 michael 913 {
4024 michael 967 if (conf_parser_ctx.pass == 2)
4025 michael 1646 block_state.modes.value |= UMODE_NCHANGE;
4026 michael 913 }
4027     break;
4028    
4029 michael 1459 case 161:
4030 michael 1619 /* Line 1813 of yacc.c */
4031 michael 1647 #line 1067 "conf_parser.y"
4032 michael 913 {
4033 michael 967 if (conf_parser_ctx.pass == 2)
4034 michael 1646 block_state.modes.value |= UMODE_REJ;
4035 michael 913 }
4036     break;
4037    
4038 michael 1459 case 162:
4039 michael 1619 /* Line 1813 of yacc.c */
4040 michael 1647 #line 1071 "conf_parser.y"
4041 michael 913 {
4042 michael 967 if (conf_parser_ctx.pass == 2)
4043 michael 1646 block_state.modes.value |= UMODE_UNAUTH;
4044 michael 913 }
4045     break;
4046    
4047 michael 1459 case 163:
4048 michael 1619 /* Line 1813 of yacc.c */
4049 michael 1647 #line 1075 "conf_parser.y"
4050 michael 913 {
4051 michael 967 if (conf_parser_ctx.pass == 2)
4052 michael 1646 block_state.modes.value |= UMODE_SPY;
4053 michael 913 }
4054     break;
4055    
4056 michael 1459 case 164:
4057 michael 1619 /* Line 1813 of yacc.c */
4058 michael 1647 #line 1079 "conf_parser.y"
4059 michael 913 {
4060 michael 967 if (conf_parser_ctx.pass == 2)
4061 michael 1646 block_state.modes.value |= UMODE_EXTERNAL;
4062 michael 913 }
4063     break;
4064    
4065 michael 1459 case 165:
4066 michael 1619 /* Line 1813 of yacc.c */
4067 michael 1647 #line 1083 "conf_parser.y"
4068 michael 913 {
4069 michael 967 if (conf_parser_ctx.pass == 2)
4070 michael 1646 block_state.modes.value |= UMODE_OPERWALL;
4071 michael 913 }
4072     break;
4073    
4074 michael 1459 case 166:
4075 michael 1619 /* Line 1813 of yacc.c */
4076 michael 1647 #line 1087 "conf_parser.y"
4077 michael 913 {
4078 michael 967 if (conf_parser_ctx.pass == 2)
4079 michael 1646 block_state.modes.value |= UMODE_SERVNOTICE;
4080 michael 913 }
4081     break;
4082    
4083 michael 1459 case 167:
4084 michael 1619 /* Line 1813 of yacc.c */
4085 michael 1647 #line 1091 "conf_parser.y"
4086 michael 913 {
4087 michael 967 if (conf_parser_ctx.pass == 2)
4088 michael 1646 block_state.modes.value |= UMODE_INVISIBLE;
4089 michael 913 }
4090     break;
4091    
4092 michael 1459 case 168:
4093 michael 1619 /* Line 1813 of yacc.c */
4094 michael 1647 #line 1095 "conf_parser.y"
4095 michael 913 {
4096 michael 967 if (conf_parser_ctx.pass == 2)
4097 michael 1646 block_state.modes.value |= UMODE_WALLOP;
4098 michael 913 }
4099     break;
4100    
4101 michael 1459 case 169:
4102 michael 1619 /* Line 1813 of yacc.c */
4103 michael 1647 #line 1099 "conf_parser.y"
4104 michael 913 {
4105 michael 967 if (conf_parser_ctx.pass == 2)
4106 michael 1646 block_state.modes.value |= UMODE_SOFTCALLERID;
4107 michael 913 }
4108     break;
4109    
4110 michael 1459 case 170:
4111 michael 1619 /* Line 1813 of yacc.c */
4112 michael 1647 #line 1103 "conf_parser.y"
4113 michael 913 {
4114 michael 1228 if (conf_parser_ctx.pass == 2)
4115 michael 1646 block_state.modes.value |= UMODE_CALLERID;
4116 michael 913 }
4117     break;
4118    
4119 michael 1459 case 171:
4120 michael 1619 /* Line 1813 of yacc.c */
4121 michael 1647 #line 1107 "conf_parser.y"
4122 michael 1228 {
4123     if (conf_parser_ctx.pass == 2)
4124 michael 1646 block_state.modes.value |= UMODE_LOCOPS;
4125 michael 1228 }
4126 michael 913 break;
4127    
4128 michael 1459 case 172:
4129 michael 1619 /* Line 1813 of yacc.c */
4130 michael 1647 #line 1113 "conf_parser.y"
4131 michael 913 {
4132 michael 967 if (conf_parser_ctx.pass == 2)
4133 michael 1646 block_state.port.value = 0;
4134 michael 913 }
4135     break;
4136    
4137 michael 1459 case 176:
4138 michael 1619 /* Line 1813 of yacc.c */
4139 michael 1647 #line 1120 "conf_parser.y"
4140 michael 913 {
4141 michael 967 if (conf_parser_ctx.pass == 2)
4142 michael 1646 block_state.port.value |= OPER_FLAG_GLOBAL_KILL;
4143 michael 913 }
4144     break;
4145    
4146 michael 1459 case 177:
4147 michael 1619 /* Line 1813 of yacc.c */
4148 michael 1647 #line 1124 "conf_parser.y"
4149 michael 913 {
4150 michael 967 if (conf_parser_ctx.pass == 2)
4151 michael 1646 block_state.port.value |= OPER_FLAG_REMOTE;
4152 michael 913 }
4153     break;
4154    
4155 michael 1459 case 178:
4156 michael 1619 /* Line 1813 of yacc.c */
4157 michael 1647 #line 1128 "conf_parser.y"
4158 michael 913 {
4159 michael 967 if (conf_parser_ctx.pass == 2)
4160 michael 1646 block_state.port.value |= OPER_FLAG_K;
4161 michael 913 }
4162     break;
4163    
4164 michael 1459 case 179:
4165 michael 1619 /* Line 1813 of yacc.c */
4166 michael 1647 #line 1132 "conf_parser.y"
4167 michael 913 {
4168 michael 967 if (conf_parser_ctx.pass == 2)
4169 michael 1646 block_state.port.value |= OPER_FLAG_UNKLINE;
4170 michael 913 }
4171     break;
4172    
4173 michael 1459 case 180:
4174 michael 1619 /* Line 1813 of yacc.c */
4175 michael 1647 #line 1136 "conf_parser.y"
4176 michael 913 {
4177 michael 967 if (conf_parser_ctx.pass == 2)
4178 michael 1646 block_state.port.value |= OPER_FLAG_DLINE;
4179 michael 913 }
4180     break;
4181    
4182 michael 1459 case 181:
4183 michael 1619 /* Line 1813 of yacc.c */
4184 michael 1647 #line 1140 "conf_parser.y"
4185 michael 913 {
4186 michael 967 if (conf_parser_ctx.pass == 2)
4187 michael 1646 block_state.port.value |= OPER_FLAG_UNDLINE;
4188 michael 913 }
4189     break;
4190    
4191 michael 1459 case 182:
4192 michael 1619 /* Line 1813 of yacc.c */
4193 michael 1647 #line 1144 "conf_parser.y"
4194 michael 913 {
4195 michael 967 if (conf_parser_ctx.pass == 2)
4196 michael 1646 block_state.port.value |= OPER_FLAG_X;
4197 michael 913 }
4198     break;
4199    
4200 michael 1459 case 183:
4201 michael 1619 /* Line 1813 of yacc.c */
4202 michael 1647 #line 1148 "conf_parser.y"
4203 michael 913 {
4204 michael 967 if (conf_parser_ctx.pass == 2)
4205 michael 1646 block_state.port.value |= OPER_FLAG_GLINE;
4206 michael 913 }
4207     break;
4208    
4209 michael 1459 case 184:
4210 michael 1619 /* Line 1813 of yacc.c */
4211 michael 1647 #line 1152 "conf_parser.y"
4212 michael 913 {
4213 michael 967 if (conf_parser_ctx.pass == 2)
4214 michael 1646 block_state.port.value |= OPER_FLAG_DIE;
4215 michael 913 }
4216     break;
4217    
4218 michael 1459 case 185:
4219 michael 1619 /* Line 1813 of yacc.c */
4220 michael 1647 #line 1156 "conf_parser.y"
4221 michael 913 {
4222 michael 967 if (conf_parser_ctx.pass == 2)
4223 michael 1646 block_state.port.value |= OPER_FLAG_RESTART;
4224 michael 913 }
4225     break;
4226    
4227 michael 1459 case 186:
4228 michael 1619 /* Line 1813 of yacc.c */
4229 michael 1647 #line 1160 "conf_parser.y"
4230 michael 913 {
4231 michael 967 if (conf_parser_ctx.pass == 2)
4232 michael 1646 block_state.port.value |= OPER_FLAG_REHASH;
4233 michael 913 }
4234     break;
4235    
4236 michael 1459 case 187:
4237 michael 1619 /* Line 1813 of yacc.c */
4238 michael 1647 #line 1164 "conf_parser.y"
4239 michael 913 {
4240 michael 967 if (conf_parser_ctx.pass == 2)
4241 michael 1646 block_state.port.value |= OPER_FLAG_ADMIN;
4242 michael 1216 }
4243     break;
4244    
4245 michael 1459 case 188:
4246 michael 1619 /* Line 1813 of yacc.c */
4247 michael 1647 #line 1168 "conf_parser.y"
4248 michael 1216 {
4249     if (conf_parser_ctx.pass == 2)
4250 michael 1646 block_state.port.value |= OPER_FLAG_N;
4251 michael 913 }
4252     break;
4253    
4254 michael 1459 case 189:
4255 michael 1619 /* Line 1813 of yacc.c */
4256 michael 1647 #line 1172 "conf_parser.y"
4257 michael 913 {
4258 michael 967 if (conf_parser_ctx.pass == 2)
4259 michael 1646 block_state.port.value |= OPER_FLAG_OPERWALL;
4260 michael 913 }
4261     break;
4262    
4263 michael 1459 case 190:
4264 michael 1619 /* Line 1813 of yacc.c */
4265 michael 1647 #line 1176 "conf_parser.y"
4266 michael 913 {
4267 michael 967 if (conf_parser_ctx.pass == 2)
4268 michael 1646 block_state.port.value |= OPER_FLAG_GLOBOPS;
4269 michael 913 }
4270     break;
4271    
4272 michael 1459 case 191:
4273 michael 1619 /* Line 1813 of yacc.c */
4274 michael 1647 #line 1180 "conf_parser.y"
4275 michael 913 {
4276 michael 967 if (conf_parser_ctx.pass == 2)
4277 michael 1646 block_state.port.value |= OPER_FLAG_OPER_SPY;
4278 michael 913 }
4279     break;
4280    
4281 michael 1459 case 192:
4282 michael 1619 /* Line 1813 of yacc.c */
4283 michael 1647 #line 1184 "conf_parser.y"
4284 michael 913 {
4285 michael 1301 if (conf_parser_ctx.pass == 2)
4286 michael 1646 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4287 michael 1301 }
4288     break;
4289    
4290 michael 1459 case 193:
4291 michael 1619 /* Line 1813 of yacc.c */
4292 michael 1647 #line 1188 "conf_parser.y"
4293 michael 1301 {
4294     if (conf_parser_ctx.pass == 2)
4295 michael 1646 block_state.port.value |= OPER_FLAG_SET;
4296 michael 1301 }
4297     break;
4298    
4299 michael 1459 case 194:
4300 michael 1619 /* Line 1813 of yacc.c */
4301 michael 1647 #line 1192 "conf_parser.y"
4302 michael 1301 {
4303 michael 1460 if (conf_parser_ctx.pass == 2)
4304 michael 1646 block_state.port.value |= OPER_FLAG_MODULE;
4305 michael 1460 }
4306     break;
4307    
4308     case 195:
4309 michael 1619 /* Line 1813 of yacc.c */
4310 michael 1647 #line 1202 "conf_parser.y"
4311 michael 1460 {
4312 michael 967 if (conf_parser_ctx.pass == 1)
4313 michael 1647 reset_block_state();
4314 michael 913 }
4315     break;
4316    
4317 michael 1460 case 196:
4318 michael 1619 /* Line 1813 of yacc.c */
4319 michael 1647 #line 1206 "conf_parser.y"
4320 michael 913 {
4321 michael 1647 struct ClassItem *class = NULL;
4322 michael 913
4323 michael 1647 if (conf_parser_ctx.pass != 1)
4324     break;
4325 michael 913
4326 michael 1647 if (!block_state.class.buf[0])
4327     break;
4328 michael 913
4329 michael 1647 if (!(class = class_find(block_state.class.buf, 0)))
4330     class = class_make();
4331 michael 913
4332 michael 1647 class->active = 1;
4333     MyFree(class->name);
4334     class->name = xstrdup(block_state.class.buf);
4335     class->ping_freq = block_state.ping_freq.value;
4336     class->max_perip = block_state.max_perip.value;
4337     class->con_freq = block_state.con_freq.value;
4338     class->max_total = block_state.max_total.value;
4339     class->max_global = block_state.max_global.value;
4340     class->max_local = block_state.max_local.value;
4341     class->max_ident = block_state.max_ident.value;
4342     class->max_sendq = block_state.max_sendq.value;
4343     class->max_recvq = block_state.max_recvq.value;
4344 michael 913
4345 michael 1647 if (class->number_per_cidr && block_state.number_per_cidr.value)
4346     if ((class->cidr_bitlen_ipv4 && block_state.cidr_bitlen_ipv4.value) ||
4347     (class->cidr_bitlen_ipv6 && block_state.cidr_bitlen_ipv6.value))
4348     if ((class->cidr_bitlen_ipv4 != block_state.cidr_bitlen_ipv4.value) ||
4349     (class->cidr_bitlen_ipv6 != block_state.cidr_bitlen_ipv6.value))
4350     rebuild_cidr_list(class);
4351 michael 913
4352 michael 1647 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4353     class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4354     class->number_per_cidr = block_state.number_per_cidr.value;
4355 michael 913 }
4356     break;
4357    
4358 michael 1644 case 213:
4359 michael 1619 /* Line 1813 of yacc.c */
4360 michael 1647 #line 1258 "conf_parser.y"
4361 michael 913 {
4362 michael 967 if (conf_parser_ctx.pass == 1)
4363 michael 1647 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4364 michael 913 }
4365     break;
4366    
4367 michael 1644 case 214:
4368 michael 1619 /* Line 1813 of yacc.c */
4369 michael 1647 #line 1264 "conf_parser.y"
4370 michael 1294 {
4371     if (conf_parser_ctx.pass == 1)
4372 michael 1647 block_state.ping_freq.value = (yyvsp[(3) - (4)].number);
4373 michael 1294 }
4374     break;
4375    
4376 michael 1644 case 215:
4377 michael 1619 /* Line 1813 of yacc.c */
4378 michael 1647 #line 1270 "conf_parser.y"
4379 michael 913 {
4380 michael 967 if (conf_parser_ctx.pass == 1)
4381 michael 1647 block_state.max_perip.value = (yyvsp[(3) - (4)].number);
4382 michael 913 }
4383     break;
4384    
4385 michael 1644 case 216:
4386 michael 1619 /* Line 1813 of yacc.c */
4387 michael 1647 #line 1276 "conf_parser.y"
4388 michael 913 {
4389 michael 967 if (conf_parser_ctx.pass == 1)
4390 michael 1647 block_state.con_freq.value = (yyvsp[(3) - (4)].number);
4391 michael 913 }
4392     break;
4393    
4394 michael 1644 case 217:
4395 michael 1619 /* Line 1813 of yacc.c */
4396 michael 1647 #line 1282 "conf_parser.y"
4397 michael 913 {
4398 michael 967 if (conf_parser_ctx.pass == 1)
4399 michael 1647 block_state.max_total.value = (yyvsp[(3) - (4)].number);
4400 michael 913 }
4401     break;
4402    
4403 michael 1644 case 218:
4404 michael 1619 /* Line 1813 of yacc.c */
4405 michael 1647 #line 1288 "conf_parser.y"
4406 michael 913 {
4407 michael 967 if (conf_parser_ctx.pass == 1)
4408 michael 1647 block_state.max_global.value = (yyvsp[(3) - (4)].number);
4409 michael 913 }
4410     break;
4411    
4412 michael 1644 case 219:
4413 michael 1619 /* Line 1813 of yacc.c */
4414 michael 1647 #line 1294 "conf_parser.y"
4415 michael 913 {
4416 michael 967 if (conf_parser_ctx.pass == 1)
4417 michael 1647 block_state.max_local.value = (yyvsp[(3) - (4)].number);
4418 michael 913 }
4419     break;
4420    
4421 michael 1644 case 220:
4422 michael 1619 /* Line 1813 of yacc.c */
4423 michael 1647 #line 1300 "conf_parser.y"
4424 michael 913 {
4425 michael 967 if (conf_parser_ctx.pass == 1)
4426 michael 1647 block_state.max_ident.value = (yyvsp[(3) - (4)].number);
4427 michael 913 }
4428     break;
4429    
4430 michael 1644 case 221:
4431 michael 1619 /* Line 1813 of yacc.c */
4432 michael 1647 #line 1306 "conf_parser.y"
4433 michael 913 {
4434 michael 967 if (conf_parser_ctx.pass == 1)
4435 michael 1647 block_state.max_sendq.value = (yyvsp[(3) - (4)].number);
4436 michael 913 }
4437     break;
4438    
4439 michael 1644 case 222:
4440 michael 1619 /* Line 1813 of yacc.c */
4441 michael 1647 #line 1312 "conf_parser.y"
4442 michael 913 {
4443 michael 967 if (conf_parser_ctx.pass == 1)
4444 michael 1516 if ((yyvsp[(3) - (4)].number) >= CLIENT_FLOOD_MIN && (yyvsp[(3) - (4)].number) <= CLIENT_FLOOD_MAX)
4445 michael 1647 block_state.max_recvq.value = (yyvsp[(3) - (4)].number);
4446 michael 1516 }
4447     break;
4448    
4449 michael 1644 case 223:
4450 michael 1619 /* Line 1813 of yacc.c */
4451 michael 1647 #line 1319 "conf_parser.y"
4452 michael 1516 {
4453     if (conf_parser_ctx.pass == 1)
4454 michael 1647 block_state.cidr_bitlen_ipv4.value = (yyvsp[(3) - (4)].number) > 32 ? 32 : (yyvsp[(3) - (4)].number);
4455 michael 913 }
4456     break;
4457    
4458 michael 1644 case 224:
4459 michael 1619 /* Line 1813 of yacc.c */
4460 michael 1647 #line 1325 "conf_parser.y"
4461 michael 913 {
4462 michael 967 if (conf_parser_ctx.pass == 1)
4463 michael 1647 block_state.cidr_bitlen_ipv6.value = (yyvsp[(3) - (4)].number) > 128 ? 128 : (yyvsp[(3) - (4)].number);
4464 michael 913 }
4465     break;
4466    
4467 michael 1644 case 225:
4468 michael 1619 /* Line 1813 of yacc.c */
4469 michael 1647 #line 1331 "conf_parser.y"
4470 michael 913 {
4471 michael 967 if (conf_parser_ctx.pass == 1)
4472 michael 1647 block_state.number_per_cidr.value = (yyvsp[(3) - (4)].number);
4473 michael 913 }
4474     break;
4475    
4476 michael 1644 case 226:
4477 michael 1619 /* Line 1813 of yacc.c */
4478 michael 1647 #line 1340 "conf_parser.y"
4479 michael 913 {
4480 michael 967 if (conf_parser_ctx.pass == 2)
4481 michael 1646 reset_block_state();
4482 michael 913 }
4483     break;
4484    
4485 michael 1644 case 228:
4486 michael 1619 /* Line 1813 of yacc.c */
4487 michael 1647 #line 1346 "conf_parser.y"
4488 michael 913 {
4489 michael 1646 block_state.flags.value = 0;
4490 michael 913 }
4491     break;
4492    
4493 michael 1644 case 232:
4494 michael 1619 /* Line 1813 of yacc.c */
4495 michael 1647 #line 1352 "conf_parser.y"
4496 michael 913 {
4497 michael 967 if (conf_parser_ctx.pass == 2)
4498 michael 1646 block_state.flags.value |= LISTENER_SSL;
4499 michael 913 }
4500     break;
4501    
4502 michael 1644 case 233:
4503 michael 1619 /* Line 1813 of yacc.c */
4504 michael 1647 #line 1356 "conf_parser.y"
4505 michael 913 {
4506 michael 967 if (conf_parser_ctx.pass == 2)
4507 michael 1647 block_state.flags.value |= LISTENER_HIDDEN;
4508 michael 913 }
4509     break;
4510    
4511 michael 1644 case 234:
4512 michael 1619 /* Line 1813 of yacc.c */
4513 michael 1647 #line 1360 "conf_parser.y"
4514 michael 913 {
4515 michael 967 if (conf_parser_ctx.pass == 2)
4516 michael 1647 block_state.flags.value |= LISTENER_SERVER;
4517 michael 913 }
4518     break;
4519    
4520 michael 1644 case 242:
4521 michael 1619 /* Line 1813 of yacc.c */
4522 michael 1647 #line 1368 "conf_parser.y"
4523 michael 1648 { block_state.flags.value = 0; }
4524 michael 913 break;
4525    
4526 michael 1644 case 246:
4527 michael 1619 /* Line 1813 of yacc.c */
4528 michael 1647 #line 1373 "conf_parser.y"
4529 michael 913 {
4530 michael 967 if (conf_parser_ctx.pass == 2)
4531 michael 913 {
4532 michael 1646 if (block_state.flags.value & LISTENER_SSL)
4533 michael 913 #ifdef HAVE_LIBCRYPTO
4534 michael 967 if (!ServerInfo.server_ctx)
4535 michael 913 #endif
4536     {
4537     yyerror("SSL not available - port closed");
4538     break;
4539     }
4540 michael 1646 add_listener((yyvsp[(1) - (1)].number), block_state.addr.buf, block_state.flags.value);
4541 michael 913 }
4542     }
4543     break;
4544    
4545 michael 1644 case 247:
4546 michael 1619 /* Line 1813 of yacc.c */
4547 michael 1647 #line 1387 "conf_parser.y"
4548 michael 913 {
4549 michael 967 if (conf_parser_ctx.pass == 2)
4550 michael 913 {
4551     int i;
4552    
4553 michael 1646 if (block_state.flags.value & LISTENER_SSL)
4554 michael 913 #ifdef HAVE_LIBCRYPTO
4555 michael 967 if (!ServerInfo.server_ctx)
4556 michael 913 #endif
4557     {
4558     yyerror("SSL not available - port closed");
4559     break;
4560     }
4561    
4562     for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4563 michael 1646 add_listener(i, block_state.addr.buf, block_state.flags.value);
4564 michael 913 }
4565     }
4566     break;
4567    
4568 michael 1644 case 248:
4569 michael 1619 /* Line 1813 of yacc.c */
4570 michael 1647 #line 1407 "conf_parser.y"
4571 michael 913 {
4572 michael 967 if (conf_parser_ctx.pass == 2)
4573 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4574 michael 913 }
4575     break;
4576    
4577 michael 1644 case 249:
4578 michael 1619 /* Line 1813 of yacc.c */
4579 michael 1647 #line 1413 "conf_parser.y"
4580 michael 913 {
4581 michael 967 if (conf_parser_ctx.pass == 2)
4582 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4583 michael 913 }
4584     break;
4585    
4586 michael 1644 case 250:
4587 michael 1619 /* Line 1813 of yacc.c */
4588 michael 1647 #line 1422 "conf_parser.y"
4589 michael 913 {
4590 michael 967 if (conf_parser_ctx.pass == 2)
4591 michael 1646 reset_block_state();
4592 michael 913 }
4593     break;
4594    
4595 michael 1644 case 251:
4596 michael 1619 /* Line 1813 of yacc.c */
4597 michael 1647 #line 1426 "conf_parser.y"
4598 michael 913 {
4599 michael 1646 dlink_node *ptr = NULL;
4600 michael 913
4601 michael 1646 if (conf_parser_ctx.pass != 2)
4602 michael 913 break;
4603    
4604 michael 1646 DLINK_FOREACH(ptr, block_state.mask.list.head)
4605 michael 913 {
4606 michael 1646 struct MaskItem *conf = NULL;
4607 michael 913 struct split_nuh_item nuh;
4608    
4609 michael 1646 nuh.nuhmask = ptr->data;
4610 michael 913 nuh.nickptr = NULL;
4611 michael 1647 nuh.userptr = block_state.user.buf;
4612     nuh.hostptr = block_state.host.buf;
4613 michael 913 nuh.nicksize = 0;
4614 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
4615     nuh.hostsize = sizeof(block_state.host.buf);
4616 michael 913 split_nuh(&nuh);
4617    
4618 michael 1646 conf = conf_make(CONF_CLIENT);
4619 michael 1647 conf->user = xstrdup(collapse(block_state.user.buf));
4620     conf->host = xstrdup(collapse(block_state.host.buf));
4621 michael 913
4622 michael 1647 if (block_state.rpass.buf[0])
4623     conf->passwd = xstrdup(block_state.rpass.buf);
4624 michael 1646 if (block_state.name.buf[0])
4625     conf->passwd = xstrdup(block_state.name.buf);
4626 michael 913
4627 michael 1646 conf->flags = block_state.flags.value;
4628     conf->port = block_state.port.value;
4629    
4630     conf_add_class_to_conf(conf, block_state.class.buf);
4631     add_conf_by_address(CONF_CLIENT, conf);
4632 michael 913 }
4633     }
4634     break;
4635    
4636 michael 1646 case 263:
4637     /* Line 1813 of yacc.c */
4638 michael 1647 #line 1469 "conf_parser.y"
4639 michael 1646 {
4640     if (conf_parser_ctx.pass == 2)
4641     dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4642     }
4643     break;
4644    
4645 michael 1644 case 264:
4646 michael 1619 /* Line 1813 of yacc.c */
4647 michael 1647 #line 1475 "conf_parser.y"
4648 michael 913 {
4649 michael 967 if (conf_parser_ctx.pass == 2)
4650 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4651 michael 913 }
4652     break;
4653    
4654 michael 1644 case 265:
4655 michael 1619 /* Line 1813 of yacc.c */
4656 michael 1647 #line 1481 "conf_parser.y"
4657 michael 913 {
4658 michael 967 if (conf_parser_ctx.pass == 2)
4659 michael 1646 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4660 michael 913 }
4661     break;
4662    
4663 michael 1644 case 266:
4664 michael 1619 /* Line 1813 of yacc.c */
4665 michael 1647 #line 1487 "conf_parser.y"
4666 michael 913 {
4667 michael 967 if (conf_parser_ctx.pass == 2)
4668 michael 913 {
4669     if (yylval.number)
4670 michael 1646 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4671 michael 913 else
4672 michael 1646 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4673 michael 913 }
4674     }
4675     break;
4676    
4677 michael 1644 case 267:
4678 michael 1619 /* Line 1813 of yacc.c */
4679 michael 1647 #line 1498 "conf_parser.y"
4680 michael 913 {
4681 michael 1646 if (conf_parser_ctx.pass == 2)
4682 michael 1648 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
4683 michael 913 }
4684     break;
4685    
4686 michael 1644 case 271:
4687 michael 1619 /* Line 1813 of yacc.c */
4688 michael 1647 #line 1505 "conf_parser.y"
4689 michael 913 {
4690 michael 967 if (conf_parser_ctx.pass == 2)
4691 michael 1646 block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4692 michael 913 }
4693     break;
4694    
4695 michael 1644 case 272:
4696 michael 1619 /* Line 1813 of yacc.c */
4697 michael 1647 #line 1509 "conf_parser.y"
4698 michael 913 {
4699 michael 967 if (conf_parser_ctx.pass == 2)
4700 michael 1646 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4701 michael 913 }
4702     break;
4703    
4704 michael 1644 case 273:
4705 michael 1619 /* Line 1813 of yacc.c */
4706 michael 1647 #line 1513 "conf_parser.y"
4707 michael 913 {
4708 michael 967 if (conf_parser_ctx.pass == 2)
4709 michael 1646 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4710 michael 913 }
4711     break;
4712    
4713 michael 1644 case 274:
4714 michael 1619 /* Line 1813 of yacc.c */
4715 michael 1647 #line 1517 "conf_parser.y"
4716 michael 913 {
4717 michael 967 if (conf_parser_ctx.pass == 2)
4718 michael 1646 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4719 michael 913 }
4720     break;
4721    
4722 michael 1644 case 275:
4723 michael 1619 /* Line 1813 of yacc.c */
4724 michael 1647 #line 1521 "conf_parser.y"
4725 michael 913 {
4726 michael 967 if (conf_parser_ctx.pass == 2)
4727 michael 1646 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4728 michael 913 }
4729     break;
4730    
4731 michael 1644 case 276:
4732 michael 1619 /* Line 1813 of yacc.c */
4733 michael 1647 #line 1525 "conf_parser.y"
4734 michael 913 {
4735 michael 967 if (conf_parser_ctx.pass == 2)
4736 michael 1646 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4737 michael 913 }
4738     break;
4739    
4740 michael 1644 case 277:
4741 michael 1619 /* Line 1813 of yacc.c */
4742 michael 1647 #line 1529 "conf_parser.y"
4743 michael 913 {
4744 michael 967 if (conf_parser_ctx.pass == 2)
4745 michael 1646 block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
4746 michael 913 }
4747     break;
4748    
4749 michael 1644 case 278:
4750 michael 1619 /* Line 1813 of yacc.c */
4751 michael 1647 #line 1533 "conf_parser.y"
4752 michael 913 {
4753 michael 967 if (conf_parser_ctx.pass == 2)
4754 michael 1646 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4755 michael 913 }
4756     break;
4757    
4758 michael 1644 case 279:
4759 michael 1619 /* Line 1813 of yacc.c */
4760 michael 1647 #line 1537 "conf_parser.y"
4761 michael 913 {
4762 michael 967 if (conf_parser_ctx.pass == 2)
4763 michael 1646 block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4764 michael 1250 }
4765     break;
4766    
4767 michael 1644 case 280:
4768 michael 1619 /* Line 1813 of yacc.c */
4769 michael 1647 #line 1543 "conf_parser.y"
4770 michael 1250 {
4771 michael 1646 if (conf_parser_ctx.pass != 2)
4772     break;
4773    
4774     if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
4775 michael 913 {
4776 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4777     block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4778 michael 913 }
4779 michael 1646 else
4780     ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4781 michael 913 }
4782     break;
4783    
4784 michael 1644 case 281:
4785 michael 1619 /* Line 1813 of yacc.c */
4786 michael 1647 #line 1557 "conf_parser.y"
4787 michael 913 {
4788 michael 1646 if (conf_parser_ctx.pass != 2)
4789     break;
4790    
4791     strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4792     block_state.flags.value |= CONF_FLAGS_REDIR;
4793 michael 913 }
4794     break;
4795    
4796 michael 1644 case 282:
4797 michael 1619 /* Line 1813 of yacc.c */
4798 michael 1647 #line 1566 "conf_parser.y"
4799 michael 913 {
4800 michael 1646 if (conf_parser_ctx.pass != 2)
4801     break;
4802 michael 1647
4803 michael 1646 block_state.flags.value |= CONF_FLAGS_REDIR;
4804     block_state.port.value = (yyvsp[(3) - (4)].number);
4805 michael 913 }
4806     break;
4807    
4808 michael 1644 case 283:
4809 michael 1619 /* Line 1813 of yacc.c */
4810 michael 1647 #line 1579 "conf_parser.y"
4811 michael 913 {
4812 michael 1647 if (conf_parser_ctx.pass != 2)
4813 michael 913 break;
4814    
4815 michael 1647 reset_block_state();
4816     strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4817 michael 913 }
4818     break;
4819    
4820 michael 1644 case 291:
4821 michael 1619 /* Line 1813 of yacc.c */
4822 michael 1647 #line 1591 "conf_parser.y"
4823 michael 913 {
4824 michael 967 if (conf_parser_ctx.pass == 2)
4825 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4826 michael 913 }
4827     break;
4828    
4829 michael 1644 case 292:
4830 michael 1619 /* Line 1813 of yacc.c */
4831 michael 1647 #line 1597 "conf_parser.y"
4832 michael 913 {
4833 michael 1647 if (conf_parser_ctx.pass != 2)
4834     break;
4835 michael 913
4836 michael 1647 if (IsChanPrefix(*yylval.string))
4837     create_channel_resv(yylval.string, block_state.rpass.buf, 1);
4838 michael 913 }
4839     break;
4840    
4841 michael 1644 case 293:
4842 michael 1619 /* Line 1813 of yacc.c */
4843 michael 1647 #line 1606 "conf_parser.y"
4844 michael 913 {
4845 michael 967 if (conf_parser_ctx.pass == 2)
4846 michael 1647 create_nick_resv(yylval.string, block_state.rpass.buf, 1);
4847 michael 913 }
4848     break;
4849    
4850 michael 1644 case 299:
4851 michael 1619 /* Line 1813 of yacc.c */
4852 michael 1647 #line 1620 "conf_parser.y"
4853 michael 913 {
4854 michael 967 if (conf_parser_ctx.pass == 2)
4855 michael 913 {
4856 michael 1157 if (valid_servname(yylval.string))
4857     {
4858 michael 1647 struct MaskItem *conf = conf_make(CONF_SERVICE);
4859     conf->name = xstrdup(yylval.string);
4860 michael 1157 }
4861     }
4862     }
4863     break;
4864    
4865 michael 1644 case 300:
4866 michael 1619 /* Line 1813 of yacc.c */
4867 michael 1647 #line 1635 "conf_parser.y"
4868 michael 1157 {
4869 michael 1647 if (conf_parser_ctx.pass != 2)
4870     break;
4871    
4872     reset_block_state();
4873    
4874     strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4875     strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4876     strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4877     block_state.flags.value = SHARED_ALL;
4878 michael 913 }
4879     break;
4880    
4881 michael 1644 case 301:
4882 michael 1619 /* Line 1813 of yacc.c */
4883 michael 1647 #line 1646 "conf_parser.y"
4884 michael 913 {
4885 michael 1647 struct MaskItem *conf = NULL;
4886    
4887     if (conf_parser_ctx.pass != 2)
4888     break;
4889    
4890     conf = conf_make(CONF_ULINE);
4891     conf->flags = block_state.flags.value;
4892     conf->name = xstrdup(block_state.name.buf);
4893     conf->user = xstrdup(block_state.user.buf);
4894     conf->user = xstrdup(block_state.host.buf);
4895 michael 913 }
4896     break;
4897    
4898 michael 1644 case 308:
4899 michael 1619 /* Line 1813 of yacc.c */
4900 michael 1647 #line 1663 "conf_parser.y"
4901 michael 913 {
4902 michael 967 if (conf_parser_ctx.pass == 2)
4903 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4904 michael 913 }
4905     break;
4906    
4907 michael 1644 case 309:
4908 michael 1619 /* Line 1813 of yacc.c */
4909 michael 1647 #line 1669 "conf_parser.y"
4910 michael 913 {
4911 michael 967 if (conf_parser_ctx.pass == 2)
4912 michael 913 {
4913     struct split_nuh_item nuh;
4914    
4915     nuh.nuhmask = yylval.string;
4916     nuh.nickptr = NULL;
4917 michael 1647 nuh.userptr = block_state.user.buf;
4918     nuh.hostptr = block_state.host.buf;
4919 michael 913
4920     nuh.nicksize = 0;
4921 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
4922     nuh.hostsize = sizeof(block_state.host.buf);
4923 michael 913
4924     split_nuh(&nuh);
4925     }
4926     }
4927     break;
4928    
4929 michael 1644 case 310:
4930 michael 1619 /* Line 1813 of yacc.c */
4931 michael 1647 #line 1688 "conf_parser.y"
4932 michael 913 {
4933 michael 967 if (conf_parser_ctx.pass == 2)
4934 michael 1647 block_state.flags.value = 0;
4935 michael 913 }
4936     break;
4937    
4938 michael 1644 case 314:
4939     /* Line 1813 of yacc.c */
4940 michael 1647 #line 1695 "conf_parser.y"
4941 michael 1644 {
4942     if (conf_parser_ctx.pass == 2)
4943 michael 1647 block_state.flags.value |= SHARED_KLINE;
4944 michael 1644 }
4945     break;
4946    
4947     case 315:
4948     /* Line 1813 of yacc.c */
4949 michael 1647 #line 1699 "conf_parser.y"
4950 michael 1644 {
4951     if (conf_parser_ctx.pass == 2)
4952 michael 1647 block_state.flags.value |= SHARED_UNKLINE;
4953 michael 1644 }
4954     break;
4955    
4956 michael 1516 case 316:
4957 michael 1619 /* Line 1813 of yacc.c */
4958 michael 1647 #line 1703 "conf_parser.y"
4959 michael 913 {
4960 michael 967 if (conf_parser_ctx.pass == 2)
4961 michael 1647 block_state.flags.value |= SHARED_DLINE;
4962 michael 913 }
4963     break;
4964    
4965 michael 1516 case 317:
4966 michael 1619 /* Line 1813 of yacc.c */
4967 michael 1647 #line 1707 "conf_parser.y"
4968 michael 913 {
4969 michael 967 if (conf_parser_ctx.pass == 2)
4970 michael 1647 block_state.flags.value |= SHARED_UNDLINE;
4971 michael 913 }
4972     break;
4973    
4974 michael 1516 case 318:
4975 michael 1619 /* Line 1813 of yacc.c */
4976 michael 1647 #line 1711 "conf_parser.y"
4977 michael 913 {
4978 michael 967 if (conf_parser_ctx.pass == 2)
4979 michael 1647 block_state.flags.value |= SHARED_XLINE;
4980 michael 913 }
4981     break;
4982    
4983 michael 1516 case 319:
4984 michael 1619 /* Line 1813 of yacc.c */
4985 michael 1647 #line 1715 "conf_parser.y"
4986 michael 913 {
4987 michael 967 if (conf_parser_ctx.pass == 2)
4988 michael 1647 block_state.flags.value |= SHARED_UNXLINE;
4989 michael 913 }
4990     break;
4991    
4992 michael 1516 case 320:
4993 michael 1619 /* Line 1813 of yacc.c */
4994 michael 1647 #line 1719 "conf_parser.y"
4995 michael 913 {
4996 michael 967 if (conf_parser_ctx.pass == 2)
4997 michael 1647 block_state.flags.value |= SHARED_RESV;
4998 michael 913 }
4999     break;
5000    
5001 michael 1516 case 321:
5002 michael 1619 /* Line 1813 of yacc.c */
5003 michael 1647 #line 1723 "conf_parser.y"
5004 michael 913 {
5005 michael 967 if (conf_parser_ctx.pass == 2)
5006 michael 1647 block_state.flags.value |= SHARED_UNRESV;
5007 michael 913 }
5008     break;
5009    
5010 michael 1516 case 322:
5011 michael 1619 /* Line 1813 of yacc.c */
5012 michael 1647 #line 1727 "conf_parser.y"
5013 michael 913 {
5014 michael 967 if (conf_parser_ctx.pass == 2)
5015 michael 1647 block_state.flags.value |= SHARED_LOCOPS;
5016 michael 913 }
5017     break;
5018    
5019 michael 1516 case 323:
5020 michael 1619 /* Line 1813 of yacc.c */
5021 michael 1647 #line 1731 "conf_parser.y"
5022 michael 913 {
5023 michael 967 if (conf_parser_ctx.pass == 2)
5024 michael 1647 block_state.flags.value = SHARED_ALL;
5025 michael 913 }
5026     break;
5027    
5028 michael 1516 case 324:
5029 michael 1619 /* Line 1813 of yacc.c */
5030 michael 1647 #line 1740 "conf_parser.y"
5031 michael 913 {
5032 michael 1647 if (conf_parser_ctx.pass != 2)
5033     break;
5034    
5035     reset_block_state();
5036    
5037     strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5038     block_state.flags.value = SHARED_ALL;
5039 michael 913 }
5040     break;
5041    
5042 michael 1644 case 325:
5043 michael 1619 /* Line 1813 of yacc.c */
5044 michael 1647 #line 1749 "conf_parser.y"
5045 michael 913 {
5046 michael 1647 struct MaskItem *conf = NULL;
5047    
5048     if (conf_parser_ctx.pass != 2)
5049     break;
5050    
5051     conf = conf_make(CONF_CLUSTER);
5052     conf->flags = block_state.flags.value;
5053     conf->name = xstrdup(block_state.name.buf);
5054 michael 913 }
5055     break;
5056    
5057 michael 1644 case 331:
5058 michael 1619 /* Line 1813 of yacc.c */
5059 michael 1647 #line 1764 "conf_parser.y"
5060 michael 913 {
5061 michael 967 if (conf_parser_ctx.pass == 2)
5062 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5063 michael 913 }
5064     break;
5065    
5066 michael 1644 case 332:
5067 michael 1619 /* Line 1813 of yacc.c */
5068 michael 1647 #line 1770 "conf_parser.y"
5069 michael 913 {
5070 michael 967 if (conf_parser_ctx.pass == 2)
5071 michael 1647 block_state.flags.value = 0;
5072 michael 913 }
5073     break;
5074    
5075 michael 1644 case 336:
5076 michael 1619 /* Line 1813 of yacc.c */
5077 michael 1647 #line 1777 "conf_parser.y"
5078 michael 913 {
5079 michael 967 if (conf_parser_ctx.pass == 2)
5080 michael 1647 block_state.flags.value |= SHARED_KLINE;
5081 michael 913 }
5082     break;
5083    
5084 michael 1644 case 337:
5085 michael 1619 /* Line 1813 of yacc.c */
5086 michael 1647 #line 1781 "conf_parser.y"
5087 michael 913 {
5088 michael 967 if (conf_parser_ctx.pass == 2)
5089 michael 1647 block_state.flags.value |= SHARED_UNKLINE;
5090 michael 913 }
5091     break;
5092    
5093 michael 1644 case 338:
5094 michael 1619 /* Line 1813 of yacc.c */
5095 michael 1647 #line 1785 "conf_parser.y"
5096 michael 913 {
5097 michael 967 if (conf_parser_ctx.pass == 2)
5098 michael 1647 block_state.flags.value |= SHARED_DLINE;
5099 michael 913 }
5100     break;
5101    
5102 michael 1644 case 339:
5103 michael 1619 /* Line 1813 of yacc.c */
5104 michael 1647 #line 1789 "conf_parser.y"
5105 michael 913 {
5106 michael 967 if (conf_parser_ctx.pass == 2)
5107 michael 1647 block_state.flags.value |= SHARED_UNDLINE;
5108 michael 913 }
5109     break;
5110    
5111 michael 1644 case 340:
5112 michael 1619 /* Line 1813 of yacc.c */
5113 michael 1647 #line 1793 "conf_parser.y"
5114 michael 913 {
5115 michael 967 if (conf_parser_ctx.pass == 2)
5116 michael 1647 block_state.flags.value |= SHARED_XLINE;
5117 michael 913 }
5118     break;
5119    
5120 michael 1644 case 341:
5121 michael 1619 /* Line 1813 of yacc.c */
5122 michael 1647 #line 1797 "conf_parser.y"
5123 michael 913 {
5124 michael 967 if (conf_parser_ctx.pass == 2)
5125 michael 1647 block_state.flags.value |= SHARED_UNXLINE;
5126 michael 913 }
5127     break;
5128    
5129 michael 1644 case 342:
5130 michael 1619 /* Line 1813 of yacc.c */
5131 michael 1647 #line 1801 "conf_parser.y"
5132 michael 913 {
5133 michael 967 if (conf_parser_ctx.pass == 2)
5134 michael 1647 block_state.flags.value |= SHARED_RESV;
5135 michael 913 }
5136     break;
5137    
5138 michael 1644 case 343:
5139 michael 1619 /* Line 1813 of yacc.c */
5140 michael 1647 #line 1805 "conf_parser.y"
5141 michael 913 {
5142 michael 967 if (conf_parser_ctx.pass == 2)
5143 michael 1647 block_state.flags.value |= SHARED_UNRESV;
5144 michael 913 }
5145     break;
5146    
5147 michael 1644 case 344:
5148 michael 1619 /* Line 1813 of yacc.c */
5149 michael 1647 #line 1809 "conf_parser.y"
5150 michael 913 {
5151 michael 967 if (conf_parser_ctx.pass == 2)
5152 michael 1647 block_state.flags.value |= SHARED_LOCOPS;
5153 michael 913 }
5154     break;
5155    
5156 michael 1644 case 345:
5157 michael 1619 /* Line 1813 of yacc.c */
5158 michael 1647 #line 1813 "conf_parser.y"
5159 michael 913 {
5160 michael 967 if (conf_parser_ctx.pass == 2)
5161 michael 1647 block_state.flags.value = SHARED_ALL;
5162 michael 1250 }
5163     break;
5164    
5165 michael 1644 case 346:
5166 michael 1619 /* Line 1813 of yacc.c */
5167 michael 1647 #line 1822 "conf_parser.y"
5168 michael 1250 {
5169 michael 1285
5170 michael 1647 if (conf_parser_ctx.pass != 2)
5171     break;
5172    
5173     reset_block_state();
5174     block_state.port.value = PORTNUM;
5175 michael 913 }
5176     break;
5177    
5178 michael 1644 case 347:
5179 michael 1619 /* Line 1813 of yacc.c */
5180 michael 1647 #line 1830 "conf_parser.y"
5181 michael 913 {
5182 michael 1647 struct MaskItem *conf = NULL;
5183     struct addrinfo hints, *res;
5184    
5185     if (conf_parser_ctx.pass != 2)
5186     break;
5187    
5188 michael 1648 if (!block_state.name.buf[0] ||
5189     !block_state.host.buf[0])
5190 michael 1647 break;
5191    
5192     if (!(block_state.rpass.buf[0] ||
5193     block_state.spass.buf[0]))
5194     break;
5195    
5196     if (has_wildcards(block_state.name.buf) ||
5197     has_wildcards(block_state.host.buf))
5198     break;
5199    
5200     conf = conf_make(CONF_SERVER);
5201     conf->port = block_state.port.value;
5202     conf->flags = block_state.flags.value;
5203     conf->aftype = block_state.aftype.value;
5204     conf->host = xstrdup(block_state.host.buf);
5205     conf->name = xstrdup(block_state.name.buf);
5206     conf->passwd = xstrdup(block_state.rpass.buf);
5207     conf->spasswd = xstrdup(block_state.spass.buf);
5208     conf->cipher_list = xstrdup(block_state.ciph.buf);
5209    
5210     dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5211     dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5212    
5213     if (block_state.bind.buf[0])
5214 michael 913 {
5215 michael 1647 memset(&hints, 0, sizeof(hints));
5216    
5217     hints.ai_family = AF_UNSPEC;
5218     hints.ai_socktype = SOCK_STREAM;
5219     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5220    
5221     if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5222     ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5223 michael 1302 else
5224     {
5225 michael 1647 assert(res != NULL);
5226 michael 913
5227 michael 1647 memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5228     conf->bind.ss.ss_family = res->ai_family;
5229     conf->bind.ss_len = res->ai_addrlen;
5230     freeaddrinfo(res);
5231 michael 1302 }
5232 michael 1647 }
5233 michael 913
5234 michael 1647 conf_add_class_to_conf(conf, block_state.class.buf);
5235     lookup_confhost(conf);
5236 michael 913 }
5237     break;
5238    
5239 michael 1644 case 364:
5240 michael 1619 /* Line 1813 of yacc.c */
5241 michael 1647 #line 1896 "conf_parser.y"
5242 michael 913 {
5243 michael 967 if (conf_parser_ctx.pass == 2)
5244 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5245 michael 913 }
5246     break;
5247    
5248 michael 1644 case 365:
5249 michael 1619 /* Line 1813 of yacc.c */
5250 michael 1647 #line 1902 "conf_parser.y"
5251 michael 913 {
5252 michael 967 if (conf_parser_ctx.pass == 2)
5253 michael 1647 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5254 michael 913 }
5255     break;
5256    
5257 michael 1644 case 366:
5258 michael 1619 /* Line 1813 of yacc.c */
5259 michael 1647 #line 1908 "conf_parser.y"
5260 michael 913 {
5261 michael 967 if (conf_parser_ctx.pass == 2)
5262 michael 1647 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5263 michael 913 }
5264     break;
5265    
5266 michael 1644 case 367:
5267 michael 1619 /* Line 1813 of yacc.c */
5268 michael 1647 #line 1914 "conf_parser.y"
5269 michael 913 {
5270 michael 1647 if (conf_parser_ctx.pass != 2)
5271     break;
5272 michael 913
5273 michael 1647 if ((yyvsp[(3) - (4)].string)[0] == ':')
5274     yyerror("Server passwords cannot begin with a colon");
5275     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5276     yyerror("Server passwords cannot contain spaces");
5277     else
5278     strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5279 michael 913 }
5280     break;
5281    
5282 michael 1644 case 368:
5283 michael 1619 /* Line 1813 of yacc.c */
5284 michael 1647 #line 1927 "conf_parser.y"
5285 michael 913 {
5286 michael 1647 if (conf_parser_ctx.pass != 2)
5287     break;
5288 michael 913
5289 michael 1647 if ((yyvsp[(3) - (4)].string)[0] == ':')
5290     yyerror("Server passwords cannot begin with a colon");
5291     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5292     yyerror("Server passwords cannot contain spaces");
5293     else
5294     strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5295 michael 913 }
5296     break;
5297    
5298 michael 1644 case 369:
5299 michael 1619 /* Line 1813 of yacc.c */
5300 michael 1647 #line 1940 "conf_parser.y"
5301 michael 913 {
5302 michael 967 if (conf_parser_ctx.pass == 2)
5303 michael 1647 block_state.port.value = (yyvsp[(3) - (4)].number);
5304 michael 913 }
5305     break;
5306    
5307 michael 1644 case 370:
5308 michael 1619 /* Line 1813 of yacc.c */
5309 michael 1647 #line 1946 "conf_parser.y"
5310 michael 913 {
5311 michael 967 if (conf_parser_ctx.pass == 2)
5312 michael 1647 block_state.aftype.value = AF_INET;
5313 michael 913 }
5314     break;
5315    
5316 michael 1644 case 371:
5317 michael 1619 /* Line 1813 of yacc.c */
5318 michael 1647 #line 1950 "conf_parser.y"
5319 michael 913 {
5320     #ifdef IPV6
5321 michael 967 if (conf_parser_ctx.pass == 2)
5322 michael 1647 block_state.aftype.value = AF_INET6;
5323 michael 913 #endif
5324     }
5325     break;
5326    
5327 michael 1644 case 372:
5328 michael 1619 /* Line 1813 of yacc.c */
5329 michael 1647 #line 1958 "conf_parser.y"
5330 michael 913 {
5331 michael 1648 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5332 michael 913 }
5333     break;
5334    
5335 michael 1644 case 376:
5336 michael 1619 /* Line 1813 of yacc.c */
5337 michael 1647 #line 1964 "conf_parser.y"
5338 michael 913 {
5339 michael 967 if (conf_parser_ctx.pass == 2)
5340 michael 1647 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5341 michael 913 }
5342     break;
5343    
5344 michael 1644 case 377:
5345 michael 1619 /* Line 1813 of yacc.c */
5346 michael 1647 #line 1968 "conf_parser.y"
5347 michael 913 {
5348 michael 967 if (conf_parser_ctx.pass == 2)
5349 michael 1647 block_state.flags.value |= CONF_FLAGS_SSL;
5350 michael 913 }
5351     break;
5352    
5353 michael 1644 case 378:
5354 michael 1619 /* Line 1813 of yacc.c */
5355 michael 1647 #line 1974 "conf_parser.y"
5356 michael 913 {
5357 michael 967 if (conf_parser_ctx.pass == 2)
5358 michael 913 {
5359     if (yylval.number)
5360 michael 1647 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5361 michael 913 else
5362 michael 1647 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5363 michael 913 }
5364     }
5365     break;
5366    
5367 michael 1644 case 379:
5368 michael 1619 /* Line 1813 of yacc.c */
5369 michael 1647 #line 1985 "conf_parser.y"
5370 michael 913 {
5371 michael 967 if (conf_parser_ctx.pass == 2)
5372 michael 1647 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5373 michael 913 }
5374     break;
5375    
5376 michael 1644 case 380:
5377 michael 1619 /* Line 1813 of yacc.c */
5378 michael 1647 #line 1991 "conf_parser.y"
5379 michael 913 {
5380 michael 967 if (conf_parser_ctx.pass == 2)
5381 michael 1647 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5382 michael 913 }
5383     break;
5384    
5385 michael 1644 case 381:
5386 michael 1619 /* Line 1813 of yacc.c */
5387 michael 1647 #line 1997 "conf_parser.y"
5388 michael 913 {
5389 michael 967 if (conf_parser_ctx.pass == 2)
5390 michael 1647 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5391 michael 913 }
5392     break;
5393    
5394 michael 1644 case 382:
5395 michael 1619 /* Line 1813 of yacc.c */
5396 michael 1647 #line 2003 "conf_parser.y"
5397 michael 913 {
5398 michael 1306 #ifdef HAVE_LIBCRYPTO
5399 michael 967 if (conf_parser_ctx.pass == 2)
5400 michael 1647 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5401 michael 1306 #else
5402     if (conf_parser_ctx.pass == 2)
5403     yyerror("Ignoring connect::ciphers -- no OpenSSL support");
5404     #endif
5405     }
5406     break;
5407    
5408 michael 1644 case 383:
5409 michael 1619 /* Line 1813 of yacc.c */
5410 michael 1647 #line 2018 "conf_parser.y"
5411 michael 1306 {
5412     if (conf_parser_ctx.pass == 2)
5413 michael 1647 reset_block_state();
5414 michael 913 }
5415     break;
5416    
5417 michael 1644 case 384:
5418 michael 1619 /* Line 1813 of yacc.c */
5419 michael 1647 #line 2022 "conf_parser.y"
5420 michael 913 {
5421 michael 1647 struct MaskItem *conf = NULL;
5422    
5423     if (conf_parser_ctx.pass != 2)
5424     break;
5425    
5426     if (!block_state.user.buf[0] ||
5427     !block_state.host.buf[0])
5428     break;
5429    
5430    
5431     if (block_state.port.value == 1)
5432 michael 913 {
5433 michael 1647 #ifdef HAVE_LIBPCRE
5434     void *exp_user = NULL;
5435     void *exp_host = NULL;
5436     const char *errptr = NULL;
5437    
5438     if (!(exp_user = ircd_pcre_compile(block_state.user.buf, &errptr)) ||
5439     !(exp_host = ircd_pcre_compile(block_state.host.buf, &errptr)))
5440 michael 913 {
5441 michael 1647 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
5442     errptr);
5443     break;
5444     }
5445 michael 913
5446 michael 1647 conf = conf_make(CONF_RKLINE);
5447     conf->regexuser = exp_user;
5448     conf->regexhost = exp_host;
5449 michael 913
5450 michael 1647 conf->user = xstrdup(block_state.user.buf);
5451     conf->host = xstrdup(block_state.host.buf);
5452 michael 913
5453 michael 1647 if (block_state.rpass.buf[0])
5454     conf->reason = xstrdup(block_state.rpass.buf);
5455     else
5456     conf->reason = xstrdup(CONF_NOREASON);
5457 michael 1009 #else
5458 michael 1647 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
5459     break;
5460 michael 1009 #endif
5461 michael 1647 }
5462     else
5463     {
5464     conf = conf_make(CONF_KLINE);
5465 michael 913
5466 michael 1647 conf->user = xstrdup(block_state.user.buf);
5467     conf->host = xstrdup(block_state.host.buf);
5468 michael 913
5469 michael 1647 if (block_state.rpass.buf[0])
5470     conf->reason = xstrdup(block_state.rpass.buf);
5471     else
5472     conf->reason = xstrdup(CONF_NOREASON);
5473     add_conf_by_address(CONF_KLINE, conf);
5474 michael 913 }
5475     }
5476     break;
5477    
5478 michael 1644 case 385:
5479 michael 1619 /* Line 1813 of yacc.c */
5480 michael 1647 #line 2080 "conf_parser.y"
5481 michael 913 {
5482 michael 1647 if (conf_parser_ctx.pass == 2)
5483     block_state.port.value = 0;
5484 michael 913 }
5485     break;
5486    
5487 michael 1644 case 389:
5488 michael 1619 /* Line 1813 of yacc.c */
5489 michael 1647 #line 2087 "conf_parser.y"
5490 michael 913 {
5491 michael 967 if (conf_parser_ctx.pass == 2)
5492 michael 1647 block_state.port.value = 1;
5493 michael 913 }
5494     break;
5495    
5496 michael 1644 case 396:
5497 michael 1619 /* Line 1813 of yacc.c */
5498 michael 1647 #line 2096 "conf_parser.y"
5499 michael 913 {
5500 michael 1647
5501 michael 967 if (conf_parser_ctx.pass == 2)
5502 michael 913 {
5503     struct split_nuh_item nuh;
5504    
5505     nuh.nuhmask = yylval.string;
5506     nuh.nickptr = NULL;
5507 michael 1647 nuh.userptr = block_state.user.buf;
5508     nuh.hostptr = block_state.host.buf;
5509 michael 913
5510     nuh.nicksize = 0;
5511 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
5512     nuh.hostsize = sizeof(block_state.host.buf);
5513 michael 913
5514     split_nuh(&nuh);
5515     }
5516     }
5517     break;
5518    
5519 michael 1644 case 397:
5520 michael 1619 /* Line 1813 of yacc.c */
5521 michael 1647 #line 2116 "conf_parser.y"
5522 michael 913 {
5523 michael 967 if (conf_parser_ctx.pass == 2)
5524 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5525 michael 913 }
5526     break;
5527    
5528 michael 1644 case 398:
5529 michael 1619 /* Line 1813 of yacc.c */
5530 michael 1647 #line 2125 "conf_parser.y"
5531 michael 913 {
5532 michael 967 if (conf_parser_ctx.pass == 2)
5533 michael 1646 reset_block_state();
5534 michael 913 }
5535     break;
5536    
5537 michael 1644 case 399:
5538 michael 1619 /* Line 1813 of yacc.c */
5539 michael 1647 #line 2129 "conf_parser.y"
5540 michael 913 {
5541 michael 1646 struct MaskItem *conf = NULL;
5542    
5543     if (conf_parser_ctx.pass != 2)
5544     break;
5545    
5546     if (!block_state.addr.buf[0])
5547     break;
5548    
5549     if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5550 michael 913 {
5551 michael 1646 conf = conf_make(CONF_DLINE);
5552     conf->host = xstrdup(block_state.addr.buf);
5553 michael 1005
5554 michael 1647 if (block_state.rpass.buf[0])
5555     conf->reason = xstrdup(block_state.rpass.buf);
5556 michael 1646 else
5557     conf->reason = xstrdup(CONF_NOREASON);
5558     add_conf_by_address(CONF_DLINE, conf);
5559 michael 913 }
5560     }
5561     break;
5562    
5563 michael 1644 case 405:
5564 michael 1619 /* Line 1813 of yacc.c */
5565 michael 1647 #line 2155 "conf_parser.y"
5566 michael 913 {
5567 michael 967 if (conf_parser_ctx.pass == 2)
5568 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5569 michael 913 }
5570     break;
5571    
5572 michael 1644 case 406:
5573 michael 1619 /* Line 1813 of yacc.c */
5574 michael 1647 #line 2161 "conf_parser.y"
5575 michael 913 {
5576 michael 967 if (conf_parser_ctx.pass == 2)
5577 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5578 michael 913 }
5579     break;
5580    
5581 michael 1644 case 412:
5582 michael 1619 /* Line 1813 of yacc.c */
5583 michael 1647 #line 2175 "conf_parser.y"
5584 michael 913 {
5585 michael 967 if (conf_parser_ctx.pass == 2)
5586 michael 913 {
5587     if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5588     {
5589 michael 1646 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5590     conf->host = xstrdup(yylval.string);
5591 michael 913
5592 michael 1646 add_conf_by_address(CONF_EXEMPT, conf);
5593 michael 913 }
5594     }
5595     }
5596     break;
5597    
5598 michael 1644 case 413:
5599 michael 1619 /* Line 1813 of yacc.c */
5600 michael 1647 #line 2192 "conf_parser.y"
5601 michael 913 {
5602 michael 967 if (conf_parser_ctx.pass == 2)
5603 michael 1646 reset_block_state();
5604 michael 913 }
5605     break;
5606    
5607 michael 1644 case 414:
5608 michael 1619 /* Line 1813 of yacc.c */
5609 michael 1647 #line 2196 "conf_parser.y"
5610 michael 913 {
5611 michael 1646 struct MaskItem *conf = NULL;
5612    
5613     if (conf_parser_ctx.pass != 2)
5614     break;
5615    
5616     if (!block_state.name.buf[0])
5617     break;
5618    
5619     if (block_state.port.value == 1)
5620 michael 913 {
5621 michael 1009 #ifdef HAVE_LIBPCRE
5622 michael 1646 void *exp_p = NULL;
5623     const char *errptr = NULL;
5624 michael 913
5625 michael 1646 if (!(exp_p = ircd_pcre_compile(block_state.name.buf, &errptr)))
5626     {
5627     ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
5628     errptr);
5629     break;
5630     }
5631 michael 913
5632 michael 1646 conf = conf_make(CONF_RXLINE);
5633     conf->regexuser = exp_p;
5634 michael 1009 #else
5635 michael 1646 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
5636     break;
5637 michael 1009 #endif
5638 michael 1646 }
5639     else
5640     conf = conf_make(CONF_XLINE);
5641 michael 913
5642 michael 1646 conf->name = xstrdup(block_state.name.buf);
5643 michael 913
5644 michael 1647 if (block_state.rpass.buf[0])
5645     conf->reason = xstrdup(block_state.rpass.buf);
5646 michael 1646 else
5647     conf->reason = xstrdup(CONF_NOREASON);
5648 michael 913 }
5649     break;
5650    
5651 michael 1644 case 415:
5652 michael 1619 /* Line 1813 of yacc.c */
5653 michael 1647 #line 2237 "conf_parser.y"
5654 michael 913 {
5655 michael 1646 if (conf_parser_ctx.pass == 2)
5656     block_state.port.value = 0;
5657 michael 913 }
5658     break;
5659    
5660 michael 1644 case 419:
5661 michael 1619 /* Line 1813 of yacc.c */
5662 michael 1647 #line 2244 "conf_parser.y"
5663 michael 913 {
5664 michael 967 if (conf_parser_ctx.pass == 2)
5665 michael 1646 block_state.port.value = 1;
5666 michael 913 }
5667     break;
5668    
5669 michael 1644 case 426:
5670 michael 1619 /* Line 1813 of yacc.c */
5671 michael 1647 #line 2253 "conf_parser.y"
5672 michael 913 {
5673 michael 967 if (conf_parser_ctx.pass == 2)
5674 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5675 michael 913 }
5676     break;
5677    
5678 michael 1644 case 427:
5679 michael 1619 /* Line 1813 of yacc.c */
5680 michael 1647 #line 2259 "conf_parser.y"
5681 michael 913 {
5682 michael 967 if (conf_parser_ctx.pass == 2)
5683 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5684 michael 913 }
5685     break;
5686    
5687 michael 1644 case 481:
5688 michael 1619 /* Line 1813 of yacc.c */
5689 michael 1647 #line 2304 "conf_parser.y"
5690 michael 1118 {
5691     ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
5692     }
5693     break;
5694    
5695 michael 1644 case 482:
5696 michael 1619 /* Line 1813 of yacc.c */
5697 michael 1647 #line 2309 "conf_parser.y"
5698 michael 1118 {
5699 michael 1459 if (conf_parser_ctx.pass == 2)
5700     ConfigFileEntry.glines = yylval.number;
5701     }
5702     break;
5703    
5704 michael 1644 case 483:
5705 michael 1619 /* Line 1813 of yacc.c */
5706 michael 1647 #line 2315 "conf_parser.y"
5707 michael 1459 {
5708     if (conf_parser_ctx.pass == 2)
5709     ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
5710     }
5711     break;
5712    
5713 michael 1644 case 484:
5714 michael 1619 /* Line 1813 of yacc.c */
5715 michael 1647 #line 2321 "conf_parser.y"
5716 michael 1459 {
5717     if (conf_parser_ctx.pass == 2)
5718     ConfigFileEntry.gline_request_time = (yyvsp[(3) - (4)].number);
5719     }
5720     break;
5721    
5722 michael 1644 case 485:
5723 michael 1619 /* Line 1813 of yacc.c */
5724 michael 1647 #line 2327 "conf_parser.y"
5725 michael 1519 {
5726     ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
5727     }
5728     break;
5729    
5730 michael 1644 case 486:
5731 michael 1619 /* Line 1813 of yacc.c */
5732 michael 1647 #line 2332 "conf_parser.y"
5733 michael 1519 {
5734     ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
5735     }
5736     break;
5737    
5738 michael 1644 case 487:
5739 michael 1619 /* Line 1813 of yacc.c */
5740 michael 1647 #line 2337 "conf_parser.y"
5741 michael 913 {
5742 michael 1519 ConfigFileEntry.tkline_expire_notices = yylval.number;
5743 michael 913 }
5744     break;
5745    
5746 michael 1644 case 488:
5747 michael 1619 /* Line 1813 of yacc.c */
5748 michael 1647 #line 2342 "conf_parser.y"
5749 michael 913 {
5750 michael 1519 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
5751 michael 913 }
5752     break;
5753    
5754 michael 1644 case 489:
5755 michael 1619 /* Line 1813 of yacc.c */
5756 michael 1647 #line 2347 "conf_parser.y"
5757 michael 913 {
5758 michael 1519 ConfigFileEntry.hide_spoof_ips = yylval.number;
5759 michael 913 }
5760     break;
5761    
5762 michael 1644 case 490:
5763 michael 1619 /* Line 1813 of yacc.c */
5764 michael 1647 #line 2352 "conf_parser.y"
5765 michael 913 {
5766 michael 1519 ConfigFileEntry.ignore_bogus_ts = yylval.number;
5767 michael 913 }
5768     break;
5769    
5770 michael 1644 case 491:
5771 michael 1619 /* Line 1813 of yacc.c */
5772 michael 1647 #line 2357 "conf_parser.y"
5773 michael 913 {
5774 michael 1519 ConfigFileEntry.disable_remote = yylval.number;
5775 michael 913 }
5776     break;
5777    
5778 michael 1644 case 492:
5779 michael 1619 /* Line 1813 of yacc.c */
5780 michael 1647 #line 2362 "conf_parser.y"
5781 michael 913 {
5782 michael 1519 ConfigFileEntry.failed_oper_notice = yylval.number;
5783 michael 913 }
5784     break;
5785    
5786 michael 1644 case 493:
5787 michael 1619 /* Line 1813 of yacc.c */
5788 michael 1647 #line 2367 "conf_parser.y"
5789 michael 913 {
5790 michael 1519 ConfigFileEntry.anti_nick_flood = yylval.number;
5791 michael 913 }
5792     break;
5793    
5794 michael 1644 case 494:
5795 michael 1619 /* Line 1813 of yacc.c */
5796 michael 1647 #line 2372 "conf_parser.y"
5797 michael 913 {
5798 michael 1519 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
5799 michael 913 }
5800     break;
5801    
5802 michael 1644 case 495:
5803 michael 1619 /* Line 1813 of yacc.c */
5804 michael 1647 #line 2377 "conf_parser.y"
5805 michael 913 {
5806 michael 1519 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
5807 michael 913 }
5808     break;
5809    
5810 michael 1644 case 496:
5811 michael 1619 /* Line 1813 of yacc.c */
5812 michael 1647 #line 2382 "conf_parser.y"
5813 michael 913 {
5814 michael 1519 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
5815 michael 913 }
5816     break;
5817    
5818 michael 1644 case 497:
5819 michael 1619 /* Line 1813 of yacc.c */
5820 michael 1647 #line 2387 "conf_parser.y"
5821 michael 913 {
5822 michael 1519 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
5823 michael 913 }
5824     break;
5825    
5826 michael 1644 case 498:
5827 michael 1619 /* Line 1813 of yacc.c */
5828 michael 1647 #line 2392 "conf_parser.y"
5829 michael 913 {
5830 michael 1519 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
5831 michael 913 }
5832     break;
5833    
5834 michael 1644 case 499:
5835 michael 1619 /* Line 1813 of yacc.c */
5836 michael 1647 #line 2397 "conf_parser.y"
5837 michael 913 {
5838 michael 1519 if (conf_parser_ctx.pass == 2)
5839     ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
5840 michael 913 }
5841     break;
5842    
5843 michael 1644 case 500:
5844 michael 1619 /* Line 1813 of yacc.c */
5845 michael 1647 #line 2403 "conf_parser.y"
5846 michael 913 {
5847 michael 1519 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
5848     {
5849     ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
5850     ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
5851     ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
5852     exit(0);
5853     }
5854 michael 1460 }
5855     break;
5856    
5857 michael 1644 case 501:
5858 michael 1619 /* Line 1813 of yacc.c */
5859 michael 1647 #line 2414 "conf_parser.y"
5860 michael 1460 {
5861 michael 1519 ConfigFileEntry.invisible_on_connect = yylval.number;
5862 michael 913 }
5863     break;
5864    
5865 michael 1644 case 502:
5866 michael 1619 /* Line 1813 of yacc.c */
5867 michael 1647 #line 2419 "conf_parser.y"
5868 michael 913 {
5869 michael 1519 ConfigFileEntry.warn_no_nline = yylval.number;
5870 michael 913 }
5871     break;
5872    
5873 michael 1644 case 503:
5874 michael 1619 /* Line 1813 of yacc.c */
5875 michael 1647 #line 2424 "conf_parser.y"
5876 michael 913 {
5877 michael 1519 ConfigFileEntry.stats_e_disabled = yylval.number;
5878 michael 913 }
5879     break;
5880    
5881 michael 1644 case 504:
5882 michael 1619 /* Line 1813 of yacc.c */
5883 michael 1647 #line 2429 "conf_parser.y"
5884 michael 913 {
5885 michael 1519 ConfigFileEntry.stats_o_oper_only = yylval.number;
5886 michael 913 }
5887     break;
5888    
5889 michael 1644 case 505:
5890 michael 1619 /* Line 1813 of yacc.c */
5891 michael 1647 #line 2434 "conf_parser.y"
5892 michael 913 {
5893 michael 1519 ConfigFileEntry.stats_P_oper_only = yylval.number;
5894 michael 913 }
5895     break;
5896    
5897 michael 1644 case 506:
5898 michael 1619 /* Line 1813 of yacc.c */
5899 michael 1647 #line 2439 "conf_parser.y"
5900 michael 913 {
5901 michael 1519 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5902 michael 913 }
5903     break;
5904    
5905 michael 1644 case 507:
5906 michael 1619 /* Line 1813 of yacc.c */
5907 michael 1647 #line 2442 "conf_parser.y"
5908 michael 913 {
5909 michael 1519 ConfigFileEntry.stats_k_oper_only = 1;
5910 michael 913 }
5911     break;
5912    
5913 michael 1644 case 508:
5914 michael 1619 /* Line 1813 of yacc.c */
5915 michael 1647 #line 2447 "conf_parser.y"
5916 michael 913 {
5917 michael 1519 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5918 michael 913 }
5919     break;
5920    
5921 michael 1644 case 509:
5922 michael 1619 /* Line 1813 of yacc.c */
5923 michael 1647 #line 2450 "conf_parser.y"
5924 michael 913 {
5925 michael 1519 ConfigFileEntry.stats_i_oper_only = 1;
5926 michael 913 }
5927     break;
5928    
5929 michael 1644 case 510:
5930 michael 1619 /* Line 1813 of yacc.c */
5931 michael 1647 #line 2455 "conf_parser.y"
5932 michael 913 {
5933 michael 1519 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
5934 michael 913 }
5935     break;
5936    
5937 michael 1644 case 511:
5938 michael 1619 /* Line 1813 of yacc.c */
5939 michael 1647 #line 2460 "conf_parser.y"
5940 michael 913 {
5941 michael 1519 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
5942 michael 913 }
5943     break;
5944    
5945 michael 1644 case 512:
5946 michael 1619 /* Line 1813 of yacc.c */
5947 michael 1647 #line 2465 "conf_parser.y"
5948 michael 913 {
5949 michael 1519 ConfigFileEntry.opers_bypass_callerid = yylval.number;
5950 michael 913 }
5951     break;
5952    
5953 michael 1644 case 513:
5954 michael 1619 /* Line 1813 of yacc.c */
5955 michael 1647 #line 2470 "conf_parser.y"
5956 michael 913 {
5957 michael 1519 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
5958 michael 913 }
5959     break;
5960    
5961 michael 1644 case 514:
5962 michael 1619 /* Line 1813 of yacc.c */
5963 michael 1647 #line 2475 "conf_parser.y"
5964 michael 913 {
5965 michael 1519 ConfigFileEntry.short_motd = yylval.number;
5966 michael 913 }
5967     break;
5968    
5969 michael 1644 case 515:
5970 michael 1619 /* Line 1813 of yacc.c */
5971 michael 1647 #line 2480 "conf_parser.y"
5972 michael 913 {
5973 michael 1519 ConfigFileEntry.no_oper_flood = yylval.number;
5974 michael 913 }
5975     break;
5976    
5977 michael 1644 case 516:
5978 michael 1619 /* Line 1813 of yacc.c */
5979 michael 1647 #line 2485 "conf_parser.y"
5980 michael 913 {
5981 michael 1519 ConfigFileEntry.true_no_oper_flood = yylval.number;
5982 michael 913 }
5983     break;
5984    
5985 michael 1644 case 517:
5986 michael 1619 /* Line 1813 of yacc.c */
5987 michael 1647 #line 2490 "conf_parser.y"
5988 michael 913 {
5989 michael 1519 ConfigFileEntry.oper_pass_resv = yylval.number;
5990 michael 913 }
5991     break;
5992    
5993 michael 1644 case 518:
5994 michael 1619 /* Line 1813 of yacc.c */
5995 michael 1647 #line 2495 "conf_parser.y"
5996 michael 913 {
5997 michael 967 if (conf_parser_ctx.pass == 2)
5998 michael 913 {
5999     if (strlen(yylval.string) > LOCALE_LENGTH-2)
6000     yylval.string[LOCALE_LENGTH-1] = '\0';
6001    
6002     set_locale(yylval.string);
6003     }
6004     }
6005     break;
6006    
6007 michael 1644 case 519:
6008 michael 1619 /* Line 1813 of yacc.c */
6009 michael 1647 #line 2506 "conf_parser.y"
6010 michael 913 {
6011     ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
6012     }
6013     break;
6014    
6015 michael 1644 case 520:
6016 michael 1619 /* Line 1813 of yacc.c */
6017 michael 1647 #line 2511 "conf_parser.y"
6018 michael 913 {
6019     ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
6020     }
6021     break;
6022    
6023 michael 1644 case 521:
6024 michael 1619 /* Line 1813 of yacc.c */
6025 michael 1647 #line 2516 "conf_parser.y"
6026 michael 913 {
6027     ConfigFileEntry.use_egd = yylval.number;
6028     }
6029     break;
6030    
6031 michael 1644 case 522:
6032 michael 1619 /* Line 1813 of yacc.c */
6033 michael 1647 #line 2521 "conf_parser.y"
6034 michael 913 {
6035 michael 967 if (conf_parser_ctx.pass == 2)
6036 michael 913 {
6037     MyFree(ConfigFileEntry.egdpool_path);
6038 michael 1646 ConfigFileEntry.egdpool_path = xstrdup(yylval.string);
6039 michael 913 }
6040     }
6041     break;
6042    
6043 michael 1644 case 523:
6044 michael 1619 /* Line 1813 of yacc.c */
6045 michael 1647 #line 2530 "conf_parser.y"
6046 michael 913 {
6047 michael 1176 if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
6048 michael 1157 {
6049     MyFree(ConfigFileEntry.service_name);
6050 michael 1646 ConfigFileEntry.service_name = xstrdup(yylval.string);
6051 michael 1157 }
6052     }
6053     break;
6054    
6055 michael 1644 case 524:
6056 michael 1619 /* Line 1813 of yacc.c */
6057 michael 1647 #line 2539 "conf_parser.y"
6058 michael 1157 {
6059 michael 913 ConfigFileEntry.ping_cookie = yylval.number;
6060     }
6061     break;
6062    
6063 michael 1644 case 525:
6064 michael 1619 /* Line 1813 of yacc.c */
6065 michael 1647 #line 2544 "conf_parser.y"
6066 michael 913 {
6067     ConfigFileEntry.disable_auth = yylval.number;
6068     }
6069     break;
6070    
6071 michael 1644 case 526:
6072 michael 1619 /* Line 1813 of yacc.c */
6073 michael 1647 #line 2549 "conf_parser.y"
6074 michael 913 {
6075     ConfigFileEntry.throttle_time = yylval.number;
6076     }
6077     break;
6078    
6079 michael 1644 case 527:
6080 michael 1619 /* Line 1813 of yacc.c */
6081 michael 1647 #line 2554 "conf_parser.y"
6082 michael 913 {
6083     ConfigFileEntry.oper_umodes = 0;
6084     }
6085     break;
6086    
6087 michael 1644 case 531:
6088 michael 1619 /* Line 1813 of yacc.c */
6089 michael 1647 #line 2560 "conf_parser.y"
6090 michael 1547 {
6091     ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6092     }
6093     break;
6094    
6095 michael 1644 case 532:
6096 michael 1619 /* Line 1813 of yacc.c */
6097 michael 1647 #line 2563 "conf_parser.y"
6098 michael 1547 {
6099     ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6100     }
6101     break;
6102    
6103 michael 1644 case 533:
6104 michael 1619 /* Line 1813 of yacc.c */
6105 michael 1647 #line 2566 "conf_parser.y"
6106 michael 913 {
6107 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6108 michael 913 }
6109     break;
6110    
6111 michael 1644 case 534:
6112 michael 1619 /* Line 1813 of yacc.c */
6113 michael 1647 #line 2569 "conf_parser.y"
6114 michael 913 {
6115 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6116 michael 913 }
6117     break;
6118    
6119 michael 1644 case 535:
6120 michael 1619 /* Line 1813 of yacc.c */
6121 michael 1647 #line 2572 "conf_parser.y"
6122 michael 913 {
6123 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6124 michael 913 }
6125     break;
6126    
6127 michael 1644 case 536:
6128 michael 1619 /* Line 1813 of yacc.c */
6129 michael 1647 #line 2575 "conf_parser.y"
6130 michael 913 {
6131 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_FULL;
6132 michael 913 }
6133     break;
6134    
6135 michael 1644 case 537:
6136 michael 1619 /* Line 1813 of yacc.c */
6137 michael 1647 #line 2578 "conf_parser.y"
6138 michael 913 {
6139 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6140 michael 913 }
6141     break;
6142    
6143 michael 1644 case 538:
6144 michael 1619 /* Line 1813 of yacc.c */
6145 michael 1647 #line 2581 "conf_parser.y"
6146 michael 913 {
6147 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6148 michael 913 }
6149     break;
6150    
6151 michael 1644 case 539:
6152 michael 1619 /* Line 1813 of yacc.c */
6153 michael 1647 #line 2584 "conf_parser.y"
6154 michael 1294 {
6155 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6156 michael 1294 }
6157     break;
6158    
6159 michael 1644 case 540:
6160 michael 1619 /* Line 1813 of yacc.c */
6161 michael 1647 #line 2587 "conf_parser.y"
6162 michael 913 {
6163 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_REJ;
6164 michael 913 }
6165     break;
6166    
6167 michael 1644 case 541:
6168 michael 1619 /* Line 1813 of yacc.c */
6169 michael 1647 #line 2590 "conf_parser.y"
6170 michael 913 {
6171 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6172 michael 913 }
6173     break;
6174    
6175 michael 1644 case 542:
6176 michael 1619 /* Line 1813 of yacc.c */
6177 michael 1647 #line 2593 "conf_parser.y"
6178 michael 913 {
6179 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_SPY;
6180 michael 913 }
6181     break;
6182    
6183 michael 1644 case 543:
6184 michael 1619 /* Line 1813 of yacc.c */
6185 michael 1647 #line 2596 "conf_parser.y"
6186 michael 913 {
6187 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6188 michael 913 }
6189     break;
6190    
6191 michael 1644 case 544:
6192 michael 1619 /* Line 1813 of yacc.c */
6193 michael 1647 #line 2599 "conf_parser.y"
6194 michael 913 {
6195 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6196 michael 913 }
6197     break;
6198    
6199 michael 1644 case 545:
6200 michael 1619 /* Line 1813 of yacc.c */
6201 michael 1647 #line 2602 "conf_parser.y"
6202 michael 913 {
6203 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6204 michael 913 }
6205     break;
6206    
6207 michael 1644 case 546:
6208 michael 1619 /* Line 1813 of yacc.c */
6209 michael 1647 #line 2605 "conf_parser.y"
6210 michael 913 {
6211 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6212 michael 913 }
6213     break;
6214    
6215 michael 1644 case 547:
6216 michael 1619 /* Line 1813 of yacc.c */
6217 michael 1647 #line 2608 "conf_parser.y"
6218 michael 913 {
6219 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6220 michael 913 }
6221     break;
6222    
6223 michael 1644 case 548:
6224 michael 1619 /* Line 1813 of yacc.c */
6225 michael 1647 #line 2611 "conf_parser.y"
6226 michael 913 {
6227 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6228 michael 913 }
6229     break;
6230    
6231 michael 1644 case 549:
6232 michael 1619 /* Line 1813 of yacc.c */
6233 michael 1647 #line 2614 "conf_parser.y"
6234 michael 913 {
6235 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6236 michael 913 }
6237     break;
6238    
6239 michael 1644 case 550:
6240 michael 1619 /* Line 1813 of yacc.c */
6241 michael 1647 #line 2617 "conf_parser.y"
6242 michael 913 {
6243 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6244 michael 913 }
6245     break;
6246    
6247 michael 1644 case 551:
6248 michael 1619 /* Line 1813 of yacc.c */
6249 michael 1647 #line 2622 "conf_parser.y"
6250 michael 913 {
6251 michael 1547 ConfigFileEntry.oper_only_umodes = 0;
6252 michael 913 }
6253     break;
6254    
6255 michael 1644 case 555:
6256 michael 1619 /* Line 1813 of yacc.c */
6257 michael 1647 #line 2628 "conf_parser.y"
6258 michael 913 {
6259 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6260 michael 913 }
6261     break;
6262    
6263 michael 1644 case 556:
6264 michael 1619 /* Line 1813 of yacc.c */
6265 michael 1647 #line 2631 "conf_parser.y"
6266 michael 913 {
6267 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6268 michael 913 }
6269     break;
6270    
6271 michael 1644 case 557:
6272 michael 1619 /* Line 1813 of yacc.c */
6273 michael 1647 #line 2634 "conf_parser.y"
6274 michael 913 {
6275 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
6276 michael 913 }
6277     break;
6278    
6279 michael 1644 case 558:
6280 michael 1619 /* Line 1813 of yacc.c */
6281 michael 1647 #line 2637 "conf_parser.y"
6282 michael 913 {
6283 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6284 michael 913 }
6285     break;
6286    
6287 michael 1644 case 559:
6288 michael 1619 /* Line 1813 of yacc.c */
6289 michael 1647 #line 2640 "conf_parser.y"
6290 michael 913 {
6291 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6292 michael 913 }
6293     break;
6294    
6295 michael 1644 case 560:
6296 michael 1619 /* Line 1813 of yacc.c */
6297 michael 1647 #line 2643 "conf_parser.y"
6298 michael 1547 {
6299     ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6300 michael 913 }
6301     break;
6302    
6303 michael 1644 case 561:
6304 michael 1619 /* Line 1813 of yacc.c */
6305 michael 1647 #line 2646 "conf_parser.y"
6306 michael 913 {
6307 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6308 michael 913 }
6309     break;
6310    
6311 michael 1644 case 562:
6312 michael 1619 /* Line 1813 of yacc.c */
6313 michael 1647 #line 2649 "conf_parser.y"
6314 michael 1547 {
6315     ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6316 michael 913 }
6317     break;
6318    
6319 michael 1644 case 563:
6320 michael 1619 /* Line 1813 of yacc.c */
6321 michael 1647 #line 2652 "conf_parser.y"
6322 michael 913 {
6323 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6324 michael 913 }
6325     break;
6326    
6327 michael 1644 case 564:
6328 michael 1619 /* Line 1813 of yacc.c */
6329 michael 1647 #line 2655 "conf_parser.y"
6330 michael 1294 {
6331 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6332 michael 1294 }
6333     break;
6334    
6335 michael 1644 case 565:
6336 michael 1619 /* Line 1813 of yacc.c */
6337 michael 1647 #line 2658 "conf_parser.y"
6338 michael 913 {
6339 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6340 michael 913 }
6341     break;
6342    
6343 michael 1644 case 566:
6344 michael 1619 /* Line 1813 of yacc.c */
6345 michael 1647 #line 2661 "conf_parser.y"
6346 michael 913 {
6347 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6348 michael 913 }
6349     break;
6350    
6351 michael 1644 case 567:
6352 michael 1619 /* Line 1813 of yacc.c */
6353 michael 1647 #line 2664 "conf_parser.y"
6354 michael 913 {
6355 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6356 michael 913 }
6357     break;
6358    
6359 michael 1644 case 568:
6360 michael 1619 /* Line 1813 of yacc.c */
6361 michael 1647 #line 2667 "conf_parser.y"
6362 michael 913 {
6363 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
6364 michael 913 }
6365     break;
6366    
6367 michael 1644 case 569:
6368 michael 1619 /* Line 1813 of yacc.c */
6369 michael 1647 #line 2670 "conf_parser.y"
6370 michael 913 {
6371 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6372 michael 913 }
6373     break;
6374    
6375 michael 1644 case 570:
6376 michael 1619 /* Line 1813 of yacc.c */
6377 michael 1647 #line 2673 "conf_parser.y"
6378 michael 913 {
6379 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6380 michael 913 }
6381     break;
6382    
6383 michael 1644 case 571:
6384 michael 1619 /* Line 1813 of yacc.c */
6385 michael 1647 #line 2676 "conf_parser.y"
6386 michael 913 {
6387 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6388 michael 913 }
6389     break;
6390    
6391 michael 1644 case 572:
6392 michael 1619 /* Line 1813 of yacc.c */
6393 michael 1647 #line 2679 "conf_parser.y"
6394 michael 913 {
6395 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6396 michael 913 }
6397     break;
6398    
6399 michael 1644 case 573:
6400 michael 1619 /* Line 1813 of yacc.c */
6401 michael 1647 #line 2682 "conf_parser.y"
6402 michael 913 {
6403 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6404 michael 913 }
6405     break;
6406    
6407 michael 1644 case 574:
6408 michael 1619 /* Line 1813 of yacc.c */
6409 michael 1647 #line 2685 "conf_parser.y"
6410 michael 913 {
6411 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6412 michael 913 }
6413     break;
6414    
6415 michael 1644 case 575:
6416 michael 1619 /* Line 1813 of yacc.c */
6417 michael 1647 #line 2690 "conf_parser.y"
6418 michael 913 {
6419 michael 1547 ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
6420 michael 913 }
6421     break;
6422    
6423 michael 1644 case 576:
6424 michael 1619 /* Line 1813 of yacc.c */
6425 michael 1647 #line 2695 "conf_parser.y"
6426 michael 913 {
6427 michael 1547 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
6428 michael 913 }
6429     break;
6430    
6431 michael 1644 case 577:
6432 michael 1619 /* Line 1813 of yacc.c */
6433 michael 1647 #line 2700 "conf_parser.y"
6434 michael 913 {
6435 michael 1460 ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
6436 michael 913 }
6437     break;
6438    
6439 michael 1644 case 596:
6440 michael 1619 /* Line 1813 of yacc.c */
6441 michael 1647 #line 2723 "conf_parser.y"
6442 michael 1519 {
6443     ConfigChannel.disable_fake_channels = yylval.number;
6444     }
6445     break;
6446    
6447 michael 1644 case 597:
6448 michael 1619 /* Line 1813 of yacc.c */
6449 michael 1647 #line 2728 "conf_parser.y"
6450 michael 1519 {
6451     ConfigChannel.restrict_channels = yylval.number;
6452     }
6453     break;
6454    
6455 michael 1644 case 598:
6456 michael 1619 /* Line 1813 of yacc.c */
6457 michael 1647 #line 2733 "conf_parser.y"
6458 michael 1118 {
6459 michael 1519 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
6460 michael 1118 }
6461     break;
6462    
6463 michael 1644 case 599:
6464 michael 1619 /* Line 1813 of yacc.c */
6465 michael 1647 #line 2738 "conf_parser.y"
6466 michael 913 {
6467 michael 1519 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
6468 michael 913 }
6469     break;
6470    
6471 michael 1644 case 600:
6472 michael 1619 /* Line 1813 of yacc.c */
6473 michael 1647 #line 2743 "conf_parser.y"
6474 michael 913 {
6475 michael 1519 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
6476 michael 913 }
6477     break;
6478    
6479 michael 1644 case 601:
6480 michael 1619 /* Line 1813 of yacc.c */
6481 michael 1647 #line 2748 "conf_parser.y"
6482 michael 913 {
6483 michael 1519 ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
6484 michael 913 }
6485     break;
6486    
6487 michael 1644 case 602:
6488 michael 1619 /* Line 1813 of yacc.c */
6489 michael 1647 #line 2753 "conf_parser.y"
6490 michael 913 {
6491 michael 1519 ConfigChannel.quiet_on_ban = yylval.number;
6492 michael 1432 }
6493     break;
6494    
6495 michael 1644 case 603:
6496 michael 1619 /* Line 1813 of yacc.c */
6497 michael 1647 #line 2758 "conf_parser.y"
6498 michael 1432 {
6499 michael 1519 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
6500 michael 913 }
6501     break;
6502    
6503 michael 1644 case 604:
6504 michael 1619 /* Line 1813 of yacc.c */
6505 michael 1647 #line 2763 "conf_parser.y"
6506 michael 913 {
6507 michael 1519 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
6508 michael 913 }
6509     break;
6510    
6511 michael 1644 case 605:
6512 michael 1619 /* Line 1813 of yacc.c */
6513 michael 1647 #line 2768 "conf_parser.y"
6514 michael 913 {
6515 michael 1519 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
6516 michael 913 }
6517     break;
6518    
6519 michael 1644 case 606:
6520 michael 1619 /* Line 1813 of yacc.c */
6521 michael 1647 #line 2773 "conf_parser.y"
6522 michael 913 {
6523 michael 1519 ConfigChannel.no_create_on_split = yylval.number;
6524 michael 913 }
6525     break;
6526    
6527 michael 1644 case 607:
6528 michael 1619 /* Line 1813 of yacc.c */
6529 michael 1647 #line 2778 "conf_parser.y"
6530 michael 913 {
6531 michael 1519 ConfigChannel.no_join_on_split = yylval.number;
6532 michael 913 }
6533     break;
6534    
6535 michael 1644 case 608:
6536 michael 1619 /* Line 1813 of yacc.c */
6537 michael 1647 #line 2783 "conf_parser.y"
6538 michael 913 {
6539 michael 1519 GlobalSetOptions.joinfloodcount = yylval.number;
6540 michael 913 }
6541     break;
6542    
6543 michael 1644 case 609:
6544 michael 1619 /* Line 1813 of yacc.c */
6545 michael 1647 #line 2788 "conf_parser.y"
6546 michael 913 {
6547     GlobalSetOptions.joinfloodtime = yylval.number;
6548     }
6549     break;
6550    
6551 michael 1644 case 620:
6552 michael 1619 /* Line 1813 of yacc.c */
6553 michael 1647 #line 2806 "conf_parser.y"
6554 michael 913 {
6555 michael 967 if (conf_parser_ctx.pass == 2)
6556 michael 913 ConfigServerHide.flatten_links = yylval.number;
6557     }
6558     break;
6559    
6560 michael 1644 case 621:
6561 michael 1619 /* Line 1813 of yacc.c */
6562 michael 1647 #line 2812 "conf_parser.y"
6563 michael 913 {
6564 michael 967 if (conf_parser_ctx.pass == 2)
6565 michael 913 ConfigServerHide.hide_servers = yylval.number;
6566     }
6567     break;
6568    
6569 michael 1644 case 622:
6570 michael 1619 /* Line 1813 of yacc.c */
6571 michael 1647 #line 2818 "conf_parser.y"
6572 michael 913 {
6573 michael 967 if (conf_parser_ctx.pass == 2)
6574 michael 913 {
6575     MyFree(ConfigServerHide.hidden_name);
6576 michael 1646 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6577 michael 913 }
6578     }
6579     break;
6580    
6581 michael 1644 case 623:
6582 michael 1619 /* Line 1813 of yacc.c */
6583 michael 1647 #line 2827 "conf_parser.y"
6584 michael 913 {
6585 michael 967 if (conf_parser_ctx.pass == 2)
6586 michael 913 {
6587     if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
6588     {
6589     eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
6590     ConfigServerHide.links_disabled = 0;
6591     }
6592    
6593     ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
6594     }
6595     }
6596     break;
6597    
6598 michael 1644 case 624:
6599 michael 1619 /* Line 1813 of yacc.c */
6600 michael 1647 #line 2841 "conf_parser.y"
6601 michael 913 {
6602 michael 967 if (conf_parser_ctx.pass == 2)
6603 michael 913 ConfigServerHide.hidden = yylval.number;
6604     }
6605     break;
6606    
6607 michael 1644 case 625:
6608 michael 1619 /* Line 1813 of yacc.c */
6609 michael 1647 #line 2847 "conf_parser.y"
6610 michael 913 {
6611 michael 967 if (conf_parser_ctx.pass == 2)
6612 michael 913 ConfigServerHide.hide_server_ips = yylval.number;
6613     }
6614     break;
6615    
6616    
6617 michael 1619 /* Line 1813 of yacc.c */
6618 michael 1647 #line 6619 "conf_parser.c"
6619 michael 913 default: break;
6620     }
6621 michael 1133 /* User semantic actions sometimes alter yychar, and that requires
6622     that yytoken be updated with the new translation. We take the
6623     approach of translating immediately before every use of yytoken.
6624     One alternative is translating here after every semantic action,
6625     but that translation would be missed if the semantic action invokes
6626     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6627     if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6628     incorrect destructor might then be invoked immediately. In the
6629     case of YYERROR or YYBACKUP, subsequent parser actions might lead
6630     to an incorrect destructor call or verbose syntax error message
6631     before the lookahead is translated. */
6632 michael 913 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6633    
6634     YYPOPSTACK (yylen);
6635     yylen = 0;
6636     YY_STACK_PRINT (yyss, yyssp);
6637    
6638     *++yyvsp = yyval;
6639    
6640     /* Now `shift' the result of the reduction. Determine what state
6641     that goes to, based on the state we popped back to and the rule
6642     number reduced by. */
6643    
6644     yyn = yyr1[yyn];
6645    
6646     yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6647     if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6648     yystate = yytable[yystate];
6649     else
6650     yystate = yydefgoto[yyn - YYNTOKENS];
6651    
6652     goto yynewstate;
6653    
6654    
6655     /*------------------------------------.
6656     | yyerrlab -- here on detecting error |
6657     `------------------------------------*/
6658     yyerrlab:
6659 michael 1133 /* Make sure we have latest lookahead translation. See comments at
6660     user semantic actions for why this is necessary. */
6661     yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6662    
6663 michael 913 /* If not already recovering from an error, report this error. */
6664     if (!yyerrstatus)
6665     {
6666     ++yynerrs;
6667     #if ! YYERROR_VERBOSE
6668     yyerror (YY_("syntax error"));
6669     #else
6670 michael 1133 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6671     yyssp, yytoken)
6672 michael 913 {
6673 michael 1133 char const *yymsgp = YY_("syntax error");
6674     int yysyntax_error_status;
6675     yysyntax_error_status = YYSYNTAX_ERROR;
6676     if (yysyntax_error_status == 0)
6677     yymsgp = yymsg;
6678     else if (yysyntax_error_status == 1)
6679     {
6680     if (yymsg != yymsgbuf)
6681     YYSTACK_FREE (yymsg);
6682     yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6683     if (!yymsg)
6684     {
6685     yymsg = yymsgbuf;
6686     yymsg_alloc = sizeof yymsgbuf;
6687     yysyntax_error_status = 2;
6688     }
6689     else
6690     {
6691     yysyntax_error_status = YYSYNTAX_ERROR;
6692     yymsgp = yymsg;
6693     }
6694     }
6695     yyerror (yymsgp);
6696     if (yysyntax_error_status == 2)
6697     goto yyexhaustedlab;
6698 michael 913 }
6699 michael 1133 # undef YYSYNTAX_ERROR
6700 michael 913 #endif
6701     }
6702    
6703    
6704    
6705     if (yyerrstatus == 3)
6706     {
6707 michael 967 /* If just tried and failed to reuse lookahead token after an
6708 michael 913 error, discard it. */
6709    
6710     if (yychar <= YYEOF)
6711     {
6712     /* Return failure if at end of input. */
6713     if (yychar == YYEOF)
6714     YYABORT;
6715     }
6716     else
6717     {
6718     yydestruct ("Error: discarding",
6719     yytoken, &yylval);
6720     yychar = YYEMPTY;
6721     }
6722     }
6723    
6724 michael 967 /* Else will try to reuse lookahead token after shifting the error
6725 michael 913 token. */
6726     goto yyerrlab1;
6727    
6728    
6729     /*---------------------------------------------------.
6730     | yyerrorlab -- error raised explicitly by YYERROR. |
6731     `---------------------------------------------------*/
6732     yyerrorlab:
6733    
6734     /* Pacify compilers like GCC when the user code never invokes
6735     YYERROR and the label yyerrorlab therefore never appears in user
6736     code. */
6737     if (/*CONSTCOND*/ 0)
6738     goto yyerrorlab;
6739    
6740     /* Do not reclaim the symbols of the rule which action triggered
6741     this YYERROR. */
6742     YYPOPSTACK (yylen);
6743     yylen = 0;
6744     YY_STACK_PRINT (yyss, yyssp);
6745     yystate = *yyssp;
6746     goto yyerrlab1;
6747    
6748    
6749     /*-------------------------------------------------------------.
6750     | yyerrlab1 -- common code for both syntax error and YYERROR. |
6751     `-------------------------------------------------------------*/
6752     yyerrlab1:
6753     yyerrstatus = 3; /* Each real token shifted decrements this. */
6754    
6755     for (;;)
6756     {
6757     yyn = yypact[yystate];
6758 michael 1133 if (!yypact_value_is_default (yyn))
6759 michael 913 {
6760     yyn += YYTERROR;
6761     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6762     {
6763     yyn = yytable[yyn];
6764     if (0 < yyn)
6765     break;
6766     }
6767     }
6768    
6769     /* Pop the current state because it cannot handle the error token. */
6770     if (yyssp == yyss)
6771     YYABORT;
6772    
6773    
6774     yydestruct ("Error: popping",
6775     yystos[yystate], yyvsp);
6776     YYPOPSTACK (1);
6777     yystate = *yyssp;
6778     YY_STACK_PRINT (yyss, yyssp);
6779     }
6780    
6781 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6782 michael 913 *++yyvsp = yylval;
6783 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_END
6784 michael 913
6785    
6786     /* Shift the error token. */
6787     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6788    
6789     yystate = yyn;
6790     goto yynewstate;
6791    
6792    
6793     /*-------------------------------------.
6794     | yyacceptlab -- YYACCEPT comes here. |
6795     `-------------------------------------*/
6796     yyacceptlab:
6797     yyresult = 0;
6798     goto yyreturn;
6799    
6800     /*-----------------------------------.
6801     | yyabortlab -- YYABORT comes here. |
6802     `-----------------------------------*/
6803     yyabortlab:
6804     yyresult = 1;
6805     goto yyreturn;
6806    
6807 michael 1425 #if !defined yyoverflow || YYERROR_VERBOSE
6808 michael 913 /*-------------------------------------------------.
6809     | yyexhaustedlab -- memory exhaustion comes here. |
6810     `-------------------------------------------------*/
6811     yyexhaustedlab:
6812     yyerror (YY_("memory exhausted"));
6813     yyresult = 2;
6814     /* Fall through. */
6815     #endif
6816    
6817     yyreturn:
6818 michael 967 if (yychar != YYEMPTY)
6819 michael 1133 {
6820     /* Make sure we have latest lookahead translation. See comments at
6821     user semantic actions for why this is necessary. */
6822     yytoken = YYTRANSLATE (yychar);
6823     yydestruct ("Cleanup: discarding lookahead",
6824     yytoken, &yylval);
6825     }
6826 michael 913 /* Do not reclaim the symbols of the rule which action triggered
6827     this YYABORT or YYACCEPT. */
6828     YYPOPSTACK (yylen);
6829     YY_STACK_PRINT (yyss, yyssp);
6830     while (yyssp != yyss)
6831     {
6832     yydestruct ("Cleanup: popping",
6833     yystos[*yyssp], yyvsp);
6834     YYPOPSTACK (1);
6835     }
6836     #ifndef yyoverflow
6837     if (yyss != yyssa)
6838     YYSTACK_FREE (yyss);
6839     #endif
6840     #if YYERROR_VERBOSE
6841     if (yymsg != yymsgbuf)
6842     YYSTACK_FREE (yymsg);
6843     #endif
6844     /* Make sure YYID is used. */
6845     return YYID (yyresult);
6846     }
6847    
6848    

Properties

Name Value
svn:eol-style native