ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1650
Committed: Sat Nov 10 20:57:51 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 218529 byte(s)
Log Message:
- Fixed few bugs that have been introduced with config rewrite
- Set some reasonable default values right after a class has been created

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 michael 1650 898, 978, 978, 979, 979, 979, 980, 980, 980, 981,
1253     981, 981, 983, 989, 995, 1001, 1012, 1018, 1025, 1024,
1254     1030, 1030, 1031, 1035, 1039, 1043, 1047, 1051, 1055, 1059,
1255     1063, 1067, 1071, 1075, 1079, 1083, 1087, 1091, 1095, 1099,
1256     1103, 1107, 1114, 1113, 1119, 1119, 1120, 1124, 1128, 1132,
1257     1136, 1140, 1144, 1148, 1152, 1156, 1160, 1164, 1168, 1172,
1258     1176, 1180, 1184, 1188, 1192, 1203, 1202, 1244, 1244, 1245,
1259     1246, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254,
1260     1255, 1255, 1256, 1258, 1264, 1270, 1276, 1282, 1288, 1294,
1261     1300, 1306, 1312, 1319, 1325, 1331, 1341, 1340, 1347, 1346,
1262     1351, 1351, 1352, 1356, 1360, 1366, 1366, 1367, 1367, 1367,
1263     1367, 1367, 1369, 1369, 1371, 1371, 1373, 1387, 1407, 1413,
1264     1423, 1422, 1464, 1464, 1465, 1465, 1465, 1465, 1466, 1466,
1265     1466, 1467, 1467, 1469, 1475, 1481, 1487, 1499, 1498, 1504,
1266     1504, 1505, 1509, 1513, 1517, 1521, 1525, 1529, 1533, 1537,
1267     1543, 1557, 1566, 1580, 1579, 1588, 1588, 1589, 1589, 1589,
1268     1589, 1591, 1597, 1606, 1615, 1617, 1617, 1618, 1618, 1620,
1269     1636, 1635, 1660, 1660, 1661, 1661, 1661, 1661, 1663, 1669,
1270     1689, 1688, 1694, 1694, 1695, 1699, 1703, 1707, 1711, 1715,
1271     1719, 1723, 1727, 1731, 1741, 1740, 1761, 1761, 1762, 1762,
1272     1762, 1764, 1771, 1770, 1776, 1776, 1777, 1781, 1785, 1789,
1273     1793, 1797, 1801, 1805, 1809, 1813, 1823, 1822, 1888, 1888,
1274     1889, 1889, 1889, 1890, 1890, 1891, 1891, 1891, 1892, 1892,
1275     1892, 1893, 1893, 1894, 1896, 1902, 1908, 1914, 1927, 1940,
1276     1946, 1950, 1959, 1958, 1963, 1963, 1964, 1968, 1974, 1985,
1277     1991, 1997, 2003, 2019, 2018, 2081, 2080, 2086, 2086, 2087,
1278     2093, 2093, 2094, 2094, 2094, 2094, 2096, 2116, 2126, 2125,
1279     2152, 2152, 2153, 2153, 2153, 2155, 2161, 2170, 2172, 2172,
1280     2173, 2173, 2175, 2193, 2192, 2238, 2237, 2243, 2243, 2244,
1281     2250, 2250, 2251, 2251, 2251, 2251, 2253, 2259, 2268, 2271,
1282     2271, 2272, 2272, 2273, 2273, 2274, 2274, 2275, 2275, 2276,
1283     2276, 2277, 2278, 2279, 2279, 2280, 2280, 2281, 2281, 2282,
1284     2282, 2283, 2283, 2284, 2284, 2285, 2286, 2286, 2287, 2287,
1285     2288, 2288, 2289, 2289, 2290, 2290, 2291, 2292, 2292, 2293,
1286     2294, 2295, 2295, 2296, 2296, 2297, 2298, 2299, 2300, 2300,
1287     2301, 2304, 2309, 2315, 2321, 2327, 2332, 2337, 2342, 2347,
1288     2352, 2357, 2362, 2367, 2372, 2377, 2382, 2387, 2392, 2397,
1289     2403, 2414, 2419, 2424, 2429, 2434, 2439, 2442, 2447, 2450,
1290     2455, 2460, 2465, 2470, 2475, 2480, 2485, 2490, 2495, 2506,
1291     2511, 2516, 2521, 2530, 2539, 2544, 2549, 2555, 2554, 2559,
1292     2559, 2560, 2563, 2566, 2569, 2572, 2575, 2578, 2581, 2584,
1293     2587, 2590, 2593, 2596, 2599, 2602, 2605, 2608, 2611, 2614,
1294     2617, 2623, 2622, 2627, 2627, 2628, 2631, 2634, 2637, 2640,
1295     2643, 2646, 2649, 2652, 2655, 2658, 2661, 2664, 2667, 2670,
1296     2673, 2676, 2679, 2682, 2685, 2690, 2695, 2700, 2709, 2712,
1297     2712, 2713, 2714, 2714, 2715, 2715, 2716, 2716, 2717, 2718,
1298     2718, 2719, 2720, 2720, 2721, 2721, 2723, 2728, 2733, 2738,
1299     2743, 2748, 2753, 2758, 2763, 2768, 2773, 2778, 2783, 2788,
1300     2796, 2799, 2799, 2800, 2800, 2801, 2802, 2802, 2803, 2804,
1301     2806, 2812, 2818, 2827, 2841, 2847
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 1650 conf->name = xstrdup(block_state.name.buf);
3841 michael 1647 conf->user = xstrdup(block_state.user.buf);
3842     conf->host = xstrdup(block_state.host.buf);
3843 michael 1285
3844 michael 1647 if (block_state.rpass.buf[0])
3845     conf->passwd = xstrdup(block_state.rpass.buf);
3846 michael 1285
3847 michael 1646 conf->flags = block_state.flags.value;
3848     conf->modes = block_state.modes.value;
3849     conf->port = block_state.port.value;
3850     conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3851 michael 913
3852 michael 1646 conf_add_class_to_conf(conf, block_state.class.buf);
3853    
3854 michael 913 #ifdef HAVE_LIBCRYPTO
3855 michael 1646 if (block_state.file.buf[0])
3856     {
3857     BIO *file = NULL;
3858     RSA *pkey = NULL;
3859    
3860     if ((file = BIO_new_file(block_state.file.buf, "r")) == NULL)
3861 michael 913 {
3862 michael 1646 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
3863     break;
3864 michael 913 }
3865    
3866 michael 1646 if ((pkey = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL)) == NULL)
3867 michael 913 {
3868 michael 1646 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3869     break;
3870 michael 913 }
3871    
3872 michael 1646 conf->rsa_public_key = pkey;
3873     BIO_set_close(file, BIO_CLOSE);
3874     BIO_free(file);
3875 michael 913 }
3876 michael 1646 #endif /* HAVE_LIBCRYPTO */
3877 michael 913 }
3878     }
3879     break;
3880    
3881 michael 1459 case 142:
3882 michael 1619 /* Line 1813 of yacc.c */
3883 michael 1650 #line 984 "conf_parser.y"
3884 michael 913 {
3885 michael 967 if (conf_parser_ctx.pass == 2)
3886 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3887 michael 913 }
3888     break;
3889    
3890 michael 1459 case 143:
3891 michael 1619 /* Line 1813 of yacc.c */
3892 michael 1650 #line 990 "conf_parser.y"
3893 michael 913 {
3894 michael 967 if (conf_parser_ctx.pass == 2)
3895 michael 1646 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3896 michael 913 }
3897     break;
3898    
3899 michael 1459 case 144:
3900 michael 1619 /* Line 1813 of yacc.c */
3901 michael 1650 #line 996 "conf_parser.y"
3902 michael 913 {
3903 michael 967 if (conf_parser_ctx.pass == 2)
3904 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3905 michael 913 }
3906     break;
3907    
3908 michael 1459 case 145:
3909 michael 1619 /* Line 1813 of yacc.c */
3910 michael 1650 #line 1002 "conf_parser.y"
3911 michael 913 {
3912 michael 967 if (conf_parser_ctx.pass == 2)
3913 michael 913 {
3914     if (yylval.number)
3915 michael 1646 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3916 michael 913 else
3917 michael 1646 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3918 michael 913 }
3919     }
3920     break;
3921    
3922 michael 1459 case 146:
3923 michael 1619 /* Line 1813 of yacc.c */
3924 michael 1650 #line 1013 "conf_parser.y"
3925 michael 913 {
3926 michael 967 if (conf_parser_ctx.pass == 2)
3927 michael 1646 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3928 michael 913 }
3929     break;
3930    
3931 michael 1459 case 147:
3932 michael 1619 /* Line 1813 of yacc.c */
3933 michael 1650 #line 1019 "conf_parser.y"
3934 michael 913 {
3935 michael 967 if (conf_parser_ctx.pass == 2)
3936 michael 1646 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3937 michael 913 }
3938     break;
3939    
3940 michael 1459 case 148:
3941 michael 1619 /* Line 1813 of yacc.c */
3942 michael 1650 #line 1025 "conf_parser.y"
3943 michael 913 {
3944 michael 967 if (conf_parser_ctx.pass == 2)
3945 michael 1646 block_state.modes.value = 0;
3946 michael 913 }
3947     break;
3948    
3949 michael 1459 case 152:
3950 michael 1619 /* Line 1813 of yacc.c */
3951 michael 1650 #line 1032 "conf_parser.y"
3952 michael 913 {
3953 michael 967 if (conf_parser_ctx.pass == 2)
3954 michael 1646 block_state.modes.value |= UMODE_BOTS;
3955 michael 913 }
3956     break;
3957    
3958 michael 1459 case 153:
3959 michael 1619 /* Line 1813 of yacc.c */
3960 michael 1650 #line 1036 "conf_parser.y"
3961 michael 913 {
3962 michael 967 if (conf_parser_ctx.pass == 2)
3963 michael 1646 block_state.modes.value |= UMODE_CCONN;
3964 michael 913 }
3965     break;
3966    
3967 michael 1459 case 154:
3968 michael 1619 /* Line 1813 of yacc.c */
3969 michael 1650 #line 1040 "conf_parser.y"
3970 michael 913 {
3971 michael 967 if (conf_parser_ctx.pass == 2)
3972 michael 1646 block_state.modes.value |= UMODE_CCONN_FULL;
3973 michael 913 }
3974     break;
3975    
3976 michael 1459 case 155:
3977 michael 1619 /* Line 1813 of yacc.c */
3978 michael 1650 #line 1044 "conf_parser.y"
3979 michael 913 {
3980 michael 967 if (conf_parser_ctx.pass == 2)
3981 michael 1646 block_state.modes.value |= UMODE_DEAF;
3982 michael 913 }
3983     break;
3984    
3985 michael 1459 case 156:
3986 michael 1619 /* Line 1813 of yacc.c */
3987 michael 1650 #line 1048 "conf_parser.y"
3988 michael 913 {
3989 michael 967 if (conf_parser_ctx.pass == 2)
3990 michael 1646 block_state.modes.value |= UMODE_DEBUG;
3991 michael 913 }
3992     break;
3993    
3994 michael 1459 case 157:
3995 michael 1619 /* Line 1813 of yacc.c */
3996 michael 1650 #line 1052 "conf_parser.y"
3997 michael 913 {
3998 michael 967 if (conf_parser_ctx.pass == 2)
3999 michael 1646 block_state.modes.value |= UMODE_FULL;
4000 michael 913 }
4001     break;
4002    
4003 michael 1459 case 158:
4004 michael 1619 /* Line 1813 of yacc.c */
4005 michael 1650 #line 1056 "conf_parser.y"
4006 michael 913 {
4007 michael 967 if (conf_parser_ctx.pass == 2)
4008 michael 1646 block_state.modes.value |= UMODE_HIDDEN;
4009 michael 913 }
4010     break;
4011    
4012 michael 1459 case 159:
4013 michael 1619 /* Line 1813 of yacc.c */
4014 michael 1650 #line 1060 "conf_parser.y"
4015 michael 913 {
4016 michael 967 if (conf_parser_ctx.pass == 2)
4017 michael 1646 block_state.modes.value |= UMODE_SKILL;
4018 michael 913 }
4019     break;
4020    
4021 michael 1459 case 160:
4022 michael 1619 /* Line 1813 of yacc.c */
4023 michael 1650 #line 1064 "conf_parser.y"
4024 michael 913 {
4025 michael 967 if (conf_parser_ctx.pass == 2)
4026 michael 1646 block_state.modes.value |= UMODE_NCHANGE;
4027 michael 913 }
4028     break;
4029    
4030 michael 1459 case 161:
4031 michael 1619 /* Line 1813 of yacc.c */
4032 michael 1650 #line 1068 "conf_parser.y"
4033 michael 913 {
4034 michael 967 if (conf_parser_ctx.pass == 2)
4035 michael 1646 block_state.modes.value |= UMODE_REJ;
4036 michael 913 }
4037     break;
4038    
4039 michael 1459 case 162:
4040 michael 1619 /* Line 1813 of yacc.c */
4041 michael 1650 #line 1072 "conf_parser.y"
4042 michael 913 {
4043 michael 967 if (conf_parser_ctx.pass == 2)
4044 michael 1646 block_state.modes.value |= UMODE_UNAUTH;
4045 michael 913 }
4046     break;
4047    
4048 michael 1459 case 163:
4049 michael 1619 /* Line 1813 of yacc.c */
4050 michael 1650 #line 1076 "conf_parser.y"
4051 michael 913 {
4052 michael 967 if (conf_parser_ctx.pass == 2)
4053 michael 1646 block_state.modes.value |= UMODE_SPY;
4054 michael 913 }
4055     break;
4056    
4057 michael 1459 case 164:
4058 michael 1619 /* Line 1813 of yacc.c */
4059 michael 1650 #line 1080 "conf_parser.y"
4060 michael 913 {
4061 michael 967 if (conf_parser_ctx.pass == 2)
4062 michael 1646 block_state.modes.value |= UMODE_EXTERNAL;
4063 michael 913 }
4064     break;
4065    
4066 michael 1459 case 165:
4067 michael 1619 /* Line 1813 of yacc.c */
4068 michael 1650 #line 1084 "conf_parser.y"
4069 michael 913 {
4070 michael 967 if (conf_parser_ctx.pass == 2)
4071 michael 1646 block_state.modes.value |= UMODE_OPERWALL;
4072 michael 913 }
4073     break;
4074    
4075 michael 1459 case 166:
4076 michael 1619 /* Line 1813 of yacc.c */
4077 michael 1650 #line 1088 "conf_parser.y"
4078 michael 913 {
4079 michael 967 if (conf_parser_ctx.pass == 2)
4080 michael 1646 block_state.modes.value |= UMODE_SERVNOTICE;
4081 michael 913 }
4082     break;
4083    
4084 michael 1459 case 167:
4085 michael 1619 /* Line 1813 of yacc.c */
4086 michael 1650 #line 1092 "conf_parser.y"
4087 michael 913 {
4088 michael 967 if (conf_parser_ctx.pass == 2)
4089 michael 1646 block_state.modes.value |= UMODE_INVISIBLE;
4090 michael 913 }
4091     break;
4092    
4093 michael 1459 case 168:
4094 michael 1619 /* Line 1813 of yacc.c */
4095 michael 1650 #line 1096 "conf_parser.y"
4096 michael 913 {
4097 michael 967 if (conf_parser_ctx.pass == 2)
4098 michael 1646 block_state.modes.value |= UMODE_WALLOP;
4099 michael 913 }
4100     break;
4101    
4102 michael 1459 case 169:
4103 michael 1619 /* Line 1813 of yacc.c */
4104 michael 1650 #line 1100 "conf_parser.y"
4105 michael 913 {
4106 michael 967 if (conf_parser_ctx.pass == 2)
4107 michael 1646 block_state.modes.value |= UMODE_SOFTCALLERID;
4108 michael 913 }
4109     break;
4110    
4111 michael 1459 case 170:
4112 michael 1619 /* Line 1813 of yacc.c */
4113 michael 1650 #line 1104 "conf_parser.y"
4114 michael 913 {
4115 michael 1228 if (conf_parser_ctx.pass == 2)
4116 michael 1646 block_state.modes.value |= UMODE_CALLERID;
4117 michael 913 }
4118     break;
4119    
4120 michael 1459 case 171:
4121 michael 1619 /* Line 1813 of yacc.c */
4122 michael 1650 #line 1108 "conf_parser.y"
4123 michael 1228 {
4124     if (conf_parser_ctx.pass == 2)
4125 michael 1646 block_state.modes.value |= UMODE_LOCOPS;
4126 michael 1228 }
4127 michael 913 break;
4128    
4129 michael 1459 case 172:
4130 michael 1619 /* Line 1813 of yacc.c */
4131 michael 1650 #line 1114 "conf_parser.y"
4132 michael 913 {
4133 michael 967 if (conf_parser_ctx.pass == 2)
4134 michael 1646 block_state.port.value = 0;
4135 michael 913 }
4136     break;
4137    
4138 michael 1459 case 176:
4139 michael 1619 /* Line 1813 of yacc.c */
4140 michael 1650 #line 1121 "conf_parser.y"
4141 michael 913 {
4142 michael 967 if (conf_parser_ctx.pass == 2)
4143 michael 1646 block_state.port.value |= OPER_FLAG_GLOBAL_KILL;
4144 michael 913 }
4145     break;
4146    
4147 michael 1459 case 177:
4148 michael 1619 /* Line 1813 of yacc.c */
4149 michael 1650 #line 1125 "conf_parser.y"
4150 michael 913 {
4151 michael 967 if (conf_parser_ctx.pass == 2)
4152 michael 1646 block_state.port.value |= OPER_FLAG_REMOTE;
4153 michael 913 }
4154     break;
4155    
4156 michael 1459 case 178:
4157 michael 1619 /* Line 1813 of yacc.c */
4158 michael 1650 #line 1129 "conf_parser.y"
4159 michael 913 {
4160 michael 967 if (conf_parser_ctx.pass == 2)
4161 michael 1646 block_state.port.value |= OPER_FLAG_K;
4162 michael 913 }
4163     break;
4164    
4165 michael 1459 case 179:
4166 michael 1619 /* Line 1813 of yacc.c */
4167 michael 1650 #line 1133 "conf_parser.y"
4168 michael 913 {
4169 michael 967 if (conf_parser_ctx.pass == 2)
4170 michael 1646 block_state.port.value |= OPER_FLAG_UNKLINE;
4171 michael 913 }
4172     break;
4173    
4174 michael 1459 case 180:
4175 michael 1619 /* Line 1813 of yacc.c */
4176 michael 1650 #line 1137 "conf_parser.y"
4177 michael 913 {
4178 michael 967 if (conf_parser_ctx.pass == 2)
4179 michael 1646 block_state.port.value |= OPER_FLAG_DLINE;
4180 michael 913 }
4181     break;
4182    
4183 michael 1459 case 181:
4184 michael 1619 /* Line 1813 of yacc.c */
4185 michael 1650 #line 1141 "conf_parser.y"
4186 michael 913 {
4187 michael 967 if (conf_parser_ctx.pass == 2)
4188 michael 1646 block_state.port.value |= OPER_FLAG_UNDLINE;
4189 michael 913 }
4190     break;
4191    
4192 michael 1459 case 182:
4193 michael 1619 /* Line 1813 of yacc.c */
4194 michael 1650 #line 1145 "conf_parser.y"
4195 michael 913 {
4196 michael 967 if (conf_parser_ctx.pass == 2)
4197 michael 1646 block_state.port.value |= OPER_FLAG_X;
4198 michael 913 }
4199     break;
4200    
4201 michael 1459 case 183:
4202 michael 1619 /* Line 1813 of yacc.c */
4203 michael 1650 #line 1149 "conf_parser.y"
4204 michael 913 {
4205 michael 967 if (conf_parser_ctx.pass == 2)
4206 michael 1646 block_state.port.value |= OPER_FLAG_GLINE;
4207 michael 913 }
4208     break;
4209    
4210 michael 1459 case 184:
4211 michael 1619 /* Line 1813 of yacc.c */
4212 michael 1650 #line 1153 "conf_parser.y"
4213 michael 913 {
4214 michael 967 if (conf_parser_ctx.pass == 2)
4215 michael 1646 block_state.port.value |= OPER_FLAG_DIE;
4216 michael 913 }
4217     break;
4218    
4219 michael 1459 case 185:
4220 michael 1619 /* Line 1813 of yacc.c */
4221 michael 1650 #line 1157 "conf_parser.y"
4222 michael 913 {
4223 michael 967 if (conf_parser_ctx.pass == 2)
4224 michael 1646 block_state.port.value |= OPER_FLAG_RESTART;
4225 michael 913 }
4226     break;
4227    
4228 michael 1459 case 186:
4229 michael 1619 /* Line 1813 of yacc.c */
4230 michael 1650 #line 1161 "conf_parser.y"
4231 michael 913 {
4232 michael 967 if (conf_parser_ctx.pass == 2)
4233 michael 1646 block_state.port.value |= OPER_FLAG_REHASH;
4234 michael 913 }
4235     break;
4236    
4237 michael 1459 case 187:
4238 michael 1619 /* Line 1813 of yacc.c */
4239 michael 1650 #line 1165 "conf_parser.y"
4240 michael 913 {
4241 michael 967 if (conf_parser_ctx.pass == 2)
4242 michael 1646 block_state.port.value |= OPER_FLAG_ADMIN;
4243 michael 1216 }
4244     break;
4245    
4246 michael 1459 case 188:
4247 michael 1619 /* Line 1813 of yacc.c */
4248 michael 1650 #line 1169 "conf_parser.y"
4249 michael 1216 {
4250     if (conf_parser_ctx.pass == 2)
4251 michael 1646 block_state.port.value |= OPER_FLAG_N;
4252 michael 913 }
4253     break;
4254    
4255 michael 1459 case 189:
4256 michael 1619 /* Line 1813 of yacc.c */
4257 michael 1650 #line 1173 "conf_parser.y"
4258 michael 913 {
4259 michael 967 if (conf_parser_ctx.pass == 2)
4260 michael 1646 block_state.port.value |= OPER_FLAG_OPERWALL;
4261 michael 913 }
4262     break;
4263    
4264 michael 1459 case 190:
4265 michael 1619 /* Line 1813 of yacc.c */
4266 michael 1650 #line 1177 "conf_parser.y"
4267 michael 913 {
4268 michael 967 if (conf_parser_ctx.pass == 2)
4269 michael 1646 block_state.port.value |= OPER_FLAG_GLOBOPS;
4270 michael 913 }
4271     break;
4272    
4273 michael 1459 case 191:
4274 michael 1619 /* Line 1813 of yacc.c */
4275 michael 1650 #line 1181 "conf_parser.y"
4276 michael 913 {
4277 michael 967 if (conf_parser_ctx.pass == 2)
4278 michael 1646 block_state.port.value |= OPER_FLAG_OPER_SPY;
4279 michael 913 }
4280     break;
4281    
4282 michael 1459 case 192:
4283 michael 1619 /* Line 1813 of yacc.c */
4284 michael 1650 #line 1185 "conf_parser.y"
4285 michael 913 {
4286 michael 1301 if (conf_parser_ctx.pass == 2)
4287 michael 1646 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4288 michael 1301 }
4289     break;
4290    
4291 michael 1459 case 193:
4292 michael 1619 /* Line 1813 of yacc.c */
4293 michael 1650 #line 1189 "conf_parser.y"
4294 michael 1301 {
4295     if (conf_parser_ctx.pass == 2)
4296 michael 1646 block_state.port.value |= OPER_FLAG_SET;
4297 michael 1301 }
4298     break;
4299    
4300 michael 1459 case 194:
4301 michael 1619 /* Line 1813 of yacc.c */
4302 michael 1650 #line 1193 "conf_parser.y"
4303 michael 1301 {
4304 michael 1460 if (conf_parser_ctx.pass == 2)
4305 michael 1646 block_state.port.value |= OPER_FLAG_MODULE;
4306 michael 1460 }
4307     break;
4308    
4309     case 195:
4310 michael 1619 /* Line 1813 of yacc.c */
4311 michael 1650 #line 1203 "conf_parser.y"
4312 michael 1460 {
4313 michael 967 if (conf_parser_ctx.pass == 1)
4314 michael 1647 reset_block_state();
4315 michael 913 }
4316     break;
4317    
4318 michael 1460 case 196:
4319 michael 1619 /* Line 1813 of yacc.c */
4320 michael 1650 #line 1207 "conf_parser.y"
4321 michael 913 {
4322 michael 1647 struct ClassItem *class = NULL;
4323 michael 913
4324 michael 1647 if (conf_parser_ctx.pass != 1)
4325     break;
4326 michael 913
4327 michael 1647 if (!block_state.class.buf[0])
4328     break;
4329 michael 913
4330 michael 1647 if (!(class = class_find(block_state.class.buf, 0)))
4331     class = class_make();
4332 michael 913
4333 michael 1647 class->active = 1;
4334     MyFree(class->name);
4335     class->name = xstrdup(block_state.class.buf);
4336     class->ping_freq = block_state.ping_freq.value;
4337     class->max_perip = block_state.max_perip.value;
4338     class->con_freq = block_state.con_freq.value;
4339     class->max_total = block_state.max_total.value;
4340     class->max_global = block_state.max_global.value;
4341     class->max_local = block_state.max_local.value;
4342     class->max_ident = block_state.max_ident.value;
4343     class->max_sendq = block_state.max_sendq.value;
4344     class->max_recvq = block_state.max_recvq.value;
4345 michael 913
4346 michael 1647 if (class->number_per_cidr && block_state.number_per_cidr.value)
4347     if ((class->cidr_bitlen_ipv4 && block_state.cidr_bitlen_ipv4.value) ||
4348     (class->cidr_bitlen_ipv6 && block_state.cidr_bitlen_ipv6.value))
4349     if ((class->cidr_bitlen_ipv4 != block_state.cidr_bitlen_ipv4.value) ||
4350     (class->cidr_bitlen_ipv6 != block_state.cidr_bitlen_ipv6.value))
4351     rebuild_cidr_list(class);
4352 michael 913
4353 michael 1647 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4354     class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4355     class->number_per_cidr = block_state.number_per_cidr.value;
4356 michael 913 }
4357     break;
4358    
4359 michael 1644 case 213:
4360 michael 1619 /* Line 1813 of yacc.c */
4361 michael 1650 #line 1259 "conf_parser.y"
4362 michael 913 {
4363 michael 967 if (conf_parser_ctx.pass == 1)
4364 michael 1647 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4365 michael 913 }
4366     break;
4367    
4368 michael 1644 case 214:
4369 michael 1619 /* Line 1813 of yacc.c */
4370 michael 1650 #line 1265 "conf_parser.y"
4371 michael 1294 {
4372     if (conf_parser_ctx.pass == 1)
4373 michael 1647 block_state.ping_freq.value = (yyvsp[(3) - (4)].number);
4374 michael 1294 }
4375     break;
4376    
4377 michael 1644 case 215:
4378 michael 1619 /* Line 1813 of yacc.c */
4379 michael 1650 #line 1271 "conf_parser.y"
4380 michael 913 {
4381 michael 967 if (conf_parser_ctx.pass == 1)
4382 michael 1647 block_state.max_perip.value = (yyvsp[(3) - (4)].number);
4383 michael 913 }
4384     break;
4385    
4386 michael 1644 case 216:
4387 michael 1619 /* Line 1813 of yacc.c */
4388 michael 1650 #line 1277 "conf_parser.y"
4389 michael 913 {
4390 michael 967 if (conf_parser_ctx.pass == 1)
4391 michael 1647 block_state.con_freq.value = (yyvsp[(3) - (4)].number);
4392 michael 913 }
4393     break;
4394    
4395 michael 1644 case 217:
4396 michael 1619 /* Line 1813 of yacc.c */
4397 michael 1650 #line 1283 "conf_parser.y"
4398 michael 913 {
4399 michael 967 if (conf_parser_ctx.pass == 1)
4400 michael 1647 block_state.max_total.value = (yyvsp[(3) - (4)].number);
4401 michael 913 }
4402     break;
4403    
4404 michael 1644 case 218:
4405 michael 1619 /* Line 1813 of yacc.c */
4406 michael 1650 #line 1289 "conf_parser.y"
4407 michael 913 {
4408 michael 967 if (conf_parser_ctx.pass == 1)
4409 michael 1647 block_state.max_global.value = (yyvsp[(3) - (4)].number);
4410 michael 913 }
4411     break;
4412    
4413 michael 1644 case 219:
4414 michael 1619 /* Line 1813 of yacc.c */
4415 michael 1650 #line 1295 "conf_parser.y"
4416 michael 913 {
4417 michael 967 if (conf_parser_ctx.pass == 1)
4418 michael 1647 block_state.max_local.value = (yyvsp[(3) - (4)].number);
4419 michael 913 }
4420     break;
4421    
4422 michael 1644 case 220:
4423 michael 1619 /* Line 1813 of yacc.c */
4424 michael 1650 #line 1301 "conf_parser.y"
4425 michael 913 {
4426 michael 967 if (conf_parser_ctx.pass == 1)
4427 michael 1647 block_state.max_ident.value = (yyvsp[(3) - (4)].number);
4428 michael 913 }
4429     break;
4430    
4431 michael 1644 case 221:
4432 michael 1619 /* Line 1813 of yacc.c */
4433 michael 1650 #line 1307 "conf_parser.y"
4434 michael 913 {
4435 michael 967 if (conf_parser_ctx.pass == 1)
4436 michael 1647 block_state.max_sendq.value = (yyvsp[(3) - (4)].number);
4437 michael 913 }
4438     break;
4439    
4440 michael 1644 case 222:
4441 michael 1619 /* Line 1813 of yacc.c */
4442 michael 1650 #line 1313 "conf_parser.y"
4443 michael 913 {
4444 michael 967 if (conf_parser_ctx.pass == 1)
4445 michael 1516 if ((yyvsp[(3) - (4)].number) >= CLIENT_FLOOD_MIN && (yyvsp[(3) - (4)].number) <= CLIENT_FLOOD_MAX)
4446 michael 1647 block_state.max_recvq.value = (yyvsp[(3) - (4)].number);
4447 michael 1516 }
4448     break;
4449    
4450 michael 1644 case 223:
4451 michael 1619 /* Line 1813 of yacc.c */
4452 michael 1650 #line 1320 "conf_parser.y"
4453 michael 1516 {
4454     if (conf_parser_ctx.pass == 1)
4455 michael 1647 block_state.cidr_bitlen_ipv4.value = (yyvsp[(3) - (4)].number) > 32 ? 32 : (yyvsp[(3) - (4)].number);
4456 michael 913 }
4457     break;
4458    
4459 michael 1644 case 224:
4460 michael 1619 /* Line 1813 of yacc.c */
4461 michael 1650 #line 1326 "conf_parser.y"
4462 michael 913 {
4463 michael 967 if (conf_parser_ctx.pass == 1)
4464 michael 1647 block_state.cidr_bitlen_ipv6.value = (yyvsp[(3) - (4)].number) > 128 ? 128 : (yyvsp[(3) - (4)].number);
4465 michael 913 }
4466     break;
4467    
4468 michael 1644 case 225:
4469 michael 1619 /* Line 1813 of yacc.c */
4470 michael 1650 #line 1332 "conf_parser.y"
4471 michael 913 {
4472 michael 967 if (conf_parser_ctx.pass == 1)
4473 michael 1647 block_state.number_per_cidr.value = (yyvsp[(3) - (4)].number);
4474 michael 913 }
4475     break;
4476    
4477 michael 1644 case 226:
4478 michael 1619 /* Line 1813 of yacc.c */
4479 michael 1650 #line 1341 "conf_parser.y"
4480 michael 913 {
4481 michael 967 if (conf_parser_ctx.pass == 2)
4482 michael 1646 reset_block_state();
4483 michael 913 }
4484     break;
4485    
4486 michael 1644 case 228:
4487 michael 1619 /* Line 1813 of yacc.c */
4488 michael 1650 #line 1347 "conf_parser.y"
4489 michael 913 {
4490 michael 1646 block_state.flags.value = 0;
4491 michael 913 }
4492     break;
4493    
4494 michael 1644 case 232:
4495 michael 1619 /* Line 1813 of yacc.c */
4496 michael 1650 #line 1353 "conf_parser.y"
4497 michael 913 {
4498 michael 967 if (conf_parser_ctx.pass == 2)
4499 michael 1646 block_state.flags.value |= LISTENER_SSL;
4500 michael 913 }
4501     break;
4502    
4503 michael 1644 case 233:
4504 michael 1619 /* Line 1813 of yacc.c */
4505 michael 1650 #line 1357 "conf_parser.y"
4506 michael 913 {
4507 michael 967 if (conf_parser_ctx.pass == 2)
4508 michael 1647 block_state.flags.value |= LISTENER_HIDDEN;
4509 michael 913 }
4510     break;
4511    
4512 michael 1644 case 234:
4513 michael 1619 /* Line 1813 of yacc.c */
4514 michael 1650 #line 1361 "conf_parser.y"
4515 michael 913 {
4516 michael 967 if (conf_parser_ctx.pass == 2)
4517 michael 1647 block_state.flags.value |= LISTENER_SERVER;
4518 michael 913 }
4519     break;
4520    
4521 michael 1644 case 242:
4522 michael 1619 /* Line 1813 of yacc.c */
4523 michael 1650 #line 1369 "conf_parser.y"
4524 michael 1648 { block_state.flags.value = 0; }
4525 michael 913 break;
4526    
4527 michael 1644 case 246:
4528 michael 1619 /* Line 1813 of yacc.c */
4529 michael 1650 #line 1374 "conf_parser.y"
4530 michael 913 {
4531 michael 967 if (conf_parser_ctx.pass == 2)
4532 michael 913 {
4533 michael 1646 if (block_state.flags.value & LISTENER_SSL)
4534 michael 913 #ifdef HAVE_LIBCRYPTO
4535 michael 967 if (!ServerInfo.server_ctx)
4536 michael 913 #endif
4537     {
4538     yyerror("SSL not available - port closed");
4539     break;
4540     }
4541 michael 1646 add_listener((yyvsp[(1) - (1)].number), block_state.addr.buf, block_state.flags.value);
4542 michael 913 }
4543     }
4544     break;
4545    
4546 michael 1644 case 247:
4547 michael 1619 /* Line 1813 of yacc.c */
4548 michael 1650 #line 1388 "conf_parser.y"
4549 michael 913 {
4550 michael 967 if (conf_parser_ctx.pass == 2)
4551 michael 913 {
4552     int i;
4553    
4554 michael 1646 if (block_state.flags.value & LISTENER_SSL)
4555 michael 913 #ifdef HAVE_LIBCRYPTO
4556 michael 967 if (!ServerInfo.server_ctx)
4557 michael 913 #endif
4558     {
4559     yyerror("SSL not available - port closed");
4560     break;
4561     }
4562    
4563     for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4564 michael 1646 add_listener(i, block_state.addr.buf, block_state.flags.value);
4565 michael 913 }
4566     }
4567     break;
4568    
4569 michael 1644 case 248:
4570 michael 1619 /* Line 1813 of yacc.c */
4571 michael 1650 #line 1408 "conf_parser.y"
4572 michael 913 {
4573 michael 967 if (conf_parser_ctx.pass == 2)
4574 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4575 michael 913 }
4576     break;
4577    
4578 michael 1644 case 249:
4579 michael 1619 /* Line 1813 of yacc.c */
4580 michael 1650 #line 1414 "conf_parser.y"
4581 michael 913 {
4582 michael 967 if (conf_parser_ctx.pass == 2)
4583 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4584 michael 913 }
4585     break;
4586    
4587 michael 1644 case 250:
4588 michael 1619 /* Line 1813 of yacc.c */
4589 michael 1650 #line 1423 "conf_parser.y"
4590 michael 913 {
4591 michael 967 if (conf_parser_ctx.pass == 2)
4592 michael 1646 reset_block_state();
4593 michael 913 }
4594     break;
4595    
4596 michael 1644 case 251:
4597 michael 1619 /* Line 1813 of yacc.c */
4598 michael 1650 #line 1427 "conf_parser.y"
4599 michael 913 {
4600 michael 1646 dlink_node *ptr = NULL;
4601 michael 913
4602 michael 1646 if (conf_parser_ctx.pass != 2)
4603 michael 913 break;
4604    
4605 michael 1646 DLINK_FOREACH(ptr, block_state.mask.list.head)
4606 michael 913 {
4607 michael 1646 struct MaskItem *conf = NULL;
4608 michael 913 struct split_nuh_item nuh;
4609    
4610 michael 1646 nuh.nuhmask = ptr->data;
4611 michael 913 nuh.nickptr = NULL;
4612 michael 1647 nuh.userptr = block_state.user.buf;
4613     nuh.hostptr = block_state.host.buf;
4614 michael 913 nuh.nicksize = 0;
4615 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
4616     nuh.hostsize = sizeof(block_state.host.buf);
4617 michael 913 split_nuh(&nuh);
4618    
4619 michael 1646 conf = conf_make(CONF_CLIENT);
4620 michael 1647 conf->user = xstrdup(collapse(block_state.user.buf));
4621     conf->host = xstrdup(collapse(block_state.host.buf));
4622 michael 913
4623 michael 1647 if (block_state.rpass.buf[0])
4624     conf->passwd = xstrdup(block_state.rpass.buf);
4625 michael 1646 if (block_state.name.buf[0])
4626     conf->passwd = xstrdup(block_state.name.buf);
4627 michael 913
4628 michael 1646 conf->flags = block_state.flags.value;
4629     conf->port = block_state.port.value;
4630    
4631     conf_add_class_to_conf(conf, block_state.class.buf);
4632     add_conf_by_address(CONF_CLIENT, conf);
4633 michael 913 }
4634     }
4635     break;
4636    
4637 michael 1646 case 263:
4638     /* Line 1813 of yacc.c */
4639 michael 1650 #line 1470 "conf_parser.y"
4640 michael 1646 {
4641     if (conf_parser_ctx.pass == 2)
4642     dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4643     }
4644     break;
4645    
4646 michael 1644 case 264:
4647 michael 1619 /* Line 1813 of yacc.c */
4648 michael 1650 #line 1476 "conf_parser.y"
4649 michael 913 {
4650 michael 967 if (conf_parser_ctx.pass == 2)
4651 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4652 michael 913 }
4653     break;
4654    
4655 michael 1644 case 265:
4656 michael 1619 /* Line 1813 of yacc.c */
4657 michael 1650 #line 1482 "conf_parser.y"
4658 michael 913 {
4659 michael 967 if (conf_parser_ctx.pass == 2)
4660 michael 1646 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4661 michael 913 }
4662     break;
4663    
4664 michael 1644 case 266:
4665 michael 1619 /* Line 1813 of yacc.c */
4666 michael 1650 #line 1488 "conf_parser.y"
4667 michael 913 {
4668 michael 967 if (conf_parser_ctx.pass == 2)
4669 michael 913 {
4670     if (yylval.number)
4671 michael 1646 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4672 michael 913 else
4673 michael 1646 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4674 michael 913 }
4675     }
4676     break;
4677    
4678 michael 1644 case 267:
4679 michael 1619 /* Line 1813 of yacc.c */
4680 michael 1650 #line 1499 "conf_parser.y"
4681 michael 913 {
4682 michael 1646 if (conf_parser_ctx.pass == 2)
4683 michael 1648 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
4684 michael 913 }
4685     break;
4686    
4687 michael 1644 case 271:
4688 michael 1619 /* Line 1813 of yacc.c */
4689 michael 1650 #line 1506 "conf_parser.y"
4690 michael 913 {
4691 michael 967 if (conf_parser_ctx.pass == 2)
4692 michael 1646 block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4693 michael 913 }
4694     break;
4695    
4696 michael 1644 case 272:
4697 michael 1619 /* Line 1813 of yacc.c */
4698 michael 1650 #line 1510 "conf_parser.y"
4699 michael 913 {
4700 michael 967 if (conf_parser_ctx.pass == 2)
4701 michael 1646 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4702 michael 913 }
4703     break;
4704    
4705 michael 1644 case 273:
4706 michael 1619 /* Line 1813 of yacc.c */
4707 michael 1650 #line 1514 "conf_parser.y"
4708 michael 913 {
4709 michael 967 if (conf_parser_ctx.pass == 2)
4710 michael 1646 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4711 michael 913 }
4712     break;
4713    
4714 michael 1644 case 274:
4715 michael 1619 /* Line 1813 of yacc.c */
4716 michael 1650 #line 1518 "conf_parser.y"
4717 michael 913 {
4718 michael 967 if (conf_parser_ctx.pass == 2)
4719 michael 1646 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4720 michael 913 }
4721     break;
4722    
4723 michael 1644 case 275:
4724 michael 1619 /* Line 1813 of yacc.c */
4725 michael 1650 #line 1522 "conf_parser.y"
4726 michael 913 {
4727 michael 967 if (conf_parser_ctx.pass == 2)
4728 michael 1646 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4729 michael 913 }
4730     break;
4731    
4732 michael 1644 case 276:
4733 michael 1619 /* Line 1813 of yacc.c */
4734 michael 1650 #line 1526 "conf_parser.y"
4735 michael 913 {
4736 michael 967 if (conf_parser_ctx.pass == 2)
4737 michael 1646 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4738 michael 913 }
4739     break;
4740    
4741 michael 1644 case 277:
4742 michael 1619 /* Line 1813 of yacc.c */
4743 michael 1650 #line 1530 "conf_parser.y"
4744 michael 913 {
4745 michael 967 if (conf_parser_ctx.pass == 2)
4746 michael 1646 block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
4747 michael 913 }
4748     break;
4749    
4750 michael 1644 case 278:
4751 michael 1619 /* Line 1813 of yacc.c */
4752 michael 1650 #line 1534 "conf_parser.y"
4753 michael 913 {
4754 michael 967 if (conf_parser_ctx.pass == 2)
4755 michael 1646 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4756 michael 913 }
4757     break;
4758    
4759 michael 1644 case 279:
4760 michael 1619 /* Line 1813 of yacc.c */
4761 michael 1650 #line 1538 "conf_parser.y"
4762 michael 913 {
4763 michael 967 if (conf_parser_ctx.pass == 2)
4764 michael 1646 block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4765 michael 1250 }
4766     break;
4767    
4768 michael 1644 case 280:
4769 michael 1619 /* Line 1813 of yacc.c */
4770 michael 1650 #line 1544 "conf_parser.y"
4771 michael 1250 {
4772 michael 1646 if (conf_parser_ctx.pass != 2)
4773     break;
4774    
4775     if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
4776 michael 913 {
4777 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4778     block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4779 michael 913 }
4780 michael 1646 else
4781     ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4782 michael 913 }
4783     break;
4784    
4785 michael 1644 case 281:
4786 michael 1619 /* Line 1813 of yacc.c */
4787 michael 1650 #line 1558 "conf_parser.y"
4788 michael 913 {
4789 michael 1646 if (conf_parser_ctx.pass != 2)
4790     break;
4791    
4792     strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4793     block_state.flags.value |= CONF_FLAGS_REDIR;
4794 michael 913 }
4795     break;
4796    
4797 michael 1644 case 282:
4798 michael 1619 /* Line 1813 of yacc.c */
4799 michael 1650 #line 1567 "conf_parser.y"
4800 michael 913 {
4801 michael 1646 if (conf_parser_ctx.pass != 2)
4802     break;
4803 michael 1647
4804 michael 1646 block_state.flags.value |= CONF_FLAGS_REDIR;
4805     block_state.port.value = (yyvsp[(3) - (4)].number);
4806 michael 913 }
4807     break;
4808    
4809 michael 1644 case 283:
4810 michael 1619 /* Line 1813 of yacc.c */
4811 michael 1650 #line 1580 "conf_parser.y"
4812 michael 913 {
4813 michael 1647 if (conf_parser_ctx.pass != 2)
4814 michael 913 break;
4815    
4816 michael 1647 reset_block_state();
4817     strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4818 michael 913 }
4819     break;
4820    
4821 michael 1644 case 291:
4822 michael 1619 /* Line 1813 of yacc.c */
4823 michael 1650 #line 1592 "conf_parser.y"
4824 michael 913 {
4825 michael 967 if (conf_parser_ctx.pass == 2)
4826 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4827 michael 913 }
4828     break;
4829    
4830 michael 1644 case 292:
4831 michael 1619 /* Line 1813 of yacc.c */
4832 michael 1650 #line 1598 "conf_parser.y"
4833 michael 913 {
4834 michael 1647 if (conf_parser_ctx.pass != 2)
4835     break;
4836 michael 913
4837 michael 1647 if (IsChanPrefix(*yylval.string))
4838     create_channel_resv(yylval.string, block_state.rpass.buf, 1);
4839 michael 913 }
4840     break;
4841    
4842 michael 1644 case 293:
4843 michael 1619 /* Line 1813 of yacc.c */
4844 michael 1650 #line 1607 "conf_parser.y"
4845 michael 913 {
4846 michael 967 if (conf_parser_ctx.pass == 2)
4847 michael 1647 create_nick_resv(yylval.string, block_state.rpass.buf, 1);
4848 michael 913 }
4849     break;
4850    
4851 michael 1644 case 299:
4852 michael 1619 /* Line 1813 of yacc.c */
4853 michael 1650 #line 1621 "conf_parser.y"
4854 michael 913 {
4855 michael 967 if (conf_parser_ctx.pass == 2)
4856 michael 913 {
4857 michael 1157 if (valid_servname(yylval.string))
4858     {
4859 michael 1647 struct MaskItem *conf = conf_make(CONF_SERVICE);
4860     conf->name = xstrdup(yylval.string);
4861 michael 1157 }
4862     }
4863     }
4864     break;
4865    
4866 michael 1644 case 300:
4867 michael 1619 /* Line 1813 of yacc.c */
4868 michael 1650 #line 1636 "conf_parser.y"
4869 michael 1157 {
4870 michael 1647 if (conf_parser_ctx.pass != 2)
4871     break;
4872    
4873     reset_block_state();
4874    
4875     strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4876     strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4877     strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4878     block_state.flags.value = SHARED_ALL;
4879 michael 913 }
4880     break;
4881    
4882 michael 1644 case 301:
4883 michael 1619 /* Line 1813 of yacc.c */
4884 michael 1650 #line 1647 "conf_parser.y"
4885 michael 913 {
4886 michael 1647 struct MaskItem *conf = NULL;
4887    
4888     if (conf_parser_ctx.pass != 2)
4889     break;
4890    
4891     conf = conf_make(CONF_ULINE);
4892     conf->flags = block_state.flags.value;
4893     conf->name = xstrdup(block_state.name.buf);
4894     conf->user = xstrdup(block_state.user.buf);
4895     conf->user = xstrdup(block_state.host.buf);
4896 michael 913 }
4897     break;
4898    
4899 michael 1644 case 308:
4900 michael 1619 /* Line 1813 of yacc.c */
4901 michael 1650 #line 1664 "conf_parser.y"
4902 michael 913 {
4903 michael 967 if (conf_parser_ctx.pass == 2)
4904 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4905 michael 913 }
4906     break;
4907    
4908 michael 1644 case 309:
4909 michael 1619 /* Line 1813 of yacc.c */
4910 michael 1650 #line 1670 "conf_parser.y"
4911 michael 913 {
4912 michael 967 if (conf_parser_ctx.pass == 2)
4913 michael 913 {
4914     struct split_nuh_item nuh;
4915    
4916     nuh.nuhmask = yylval.string;
4917     nuh.nickptr = NULL;
4918 michael 1647 nuh.userptr = block_state.user.buf;
4919     nuh.hostptr = block_state.host.buf;
4920 michael 913
4921     nuh.nicksize = 0;
4922 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
4923     nuh.hostsize = sizeof(block_state.host.buf);
4924 michael 913
4925     split_nuh(&nuh);
4926     }
4927     }
4928     break;
4929    
4930 michael 1644 case 310:
4931 michael 1619 /* Line 1813 of yacc.c */
4932 michael 1650 #line 1689 "conf_parser.y"
4933 michael 913 {
4934 michael 967 if (conf_parser_ctx.pass == 2)
4935 michael 1647 block_state.flags.value = 0;
4936 michael 913 }
4937     break;
4938    
4939 michael 1644 case 314:
4940     /* Line 1813 of yacc.c */
4941 michael 1650 #line 1696 "conf_parser.y"
4942 michael 1644 {
4943     if (conf_parser_ctx.pass == 2)
4944 michael 1647 block_state.flags.value |= SHARED_KLINE;
4945 michael 1644 }
4946     break;
4947    
4948     case 315:
4949     /* Line 1813 of yacc.c */
4950 michael 1650 #line 1700 "conf_parser.y"
4951 michael 1644 {
4952     if (conf_parser_ctx.pass == 2)
4953 michael 1647 block_state.flags.value |= SHARED_UNKLINE;
4954 michael 1644 }
4955     break;
4956    
4957 michael 1516 case 316:
4958 michael 1619 /* Line 1813 of yacc.c */
4959 michael 1650 #line 1704 "conf_parser.y"
4960 michael 913 {
4961 michael 967 if (conf_parser_ctx.pass == 2)
4962 michael 1647 block_state.flags.value |= SHARED_DLINE;
4963 michael 913 }
4964     break;
4965    
4966 michael 1516 case 317:
4967 michael 1619 /* Line 1813 of yacc.c */
4968 michael 1650 #line 1708 "conf_parser.y"
4969 michael 913 {
4970 michael 967 if (conf_parser_ctx.pass == 2)
4971 michael 1647 block_state.flags.value |= SHARED_UNDLINE;
4972 michael 913 }
4973     break;
4974    
4975 michael 1516 case 318:
4976 michael 1619 /* Line 1813 of yacc.c */
4977 michael 1650 #line 1712 "conf_parser.y"
4978 michael 913 {
4979 michael 967 if (conf_parser_ctx.pass == 2)
4980 michael 1647 block_state.flags.value |= SHARED_XLINE;
4981 michael 913 }
4982     break;
4983    
4984 michael 1516 case 319:
4985 michael 1619 /* Line 1813 of yacc.c */
4986 michael 1650 #line 1716 "conf_parser.y"
4987 michael 913 {
4988 michael 967 if (conf_parser_ctx.pass == 2)
4989 michael 1647 block_state.flags.value |= SHARED_UNXLINE;
4990 michael 913 }
4991     break;
4992    
4993 michael 1516 case 320:
4994 michael 1619 /* Line 1813 of yacc.c */
4995 michael 1650 #line 1720 "conf_parser.y"
4996 michael 913 {
4997 michael 967 if (conf_parser_ctx.pass == 2)
4998 michael 1647 block_state.flags.value |= SHARED_RESV;
4999 michael 913 }
5000     break;
5001    
5002 michael 1516 case 321:
5003 michael 1619 /* Line 1813 of yacc.c */
5004 michael 1650 #line 1724 "conf_parser.y"
5005 michael 913 {
5006 michael 967 if (conf_parser_ctx.pass == 2)
5007 michael 1647 block_state.flags.value |= SHARED_UNRESV;
5008 michael 913 }
5009     break;
5010    
5011 michael 1516 case 322:
5012 michael 1619 /* Line 1813 of yacc.c */
5013 michael 1650 #line 1728 "conf_parser.y"
5014 michael 913 {
5015 michael 967 if (conf_parser_ctx.pass == 2)
5016 michael 1647 block_state.flags.value |= SHARED_LOCOPS;
5017 michael 913 }
5018     break;
5019    
5020 michael 1516 case 323:
5021 michael 1619 /* Line 1813 of yacc.c */
5022 michael 1650 #line 1732 "conf_parser.y"
5023 michael 913 {
5024 michael 967 if (conf_parser_ctx.pass == 2)
5025 michael 1647 block_state.flags.value = SHARED_ALL;
5026 michael 913 }
5027     break;
5028    
5029 michael 1516 case 324:
5030 michael 1619 /* Line 1813 of yacc.c */
5031 michael 1650 #line 1741 "conf_parser.y"
5032 michael 913 {
5033 michael 1647 if (conf_parser_ctx.pass != 2)
5034     break;
5035    
5036     reset_block_state();
5037    
5038     strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5039     block_state.flags.value = SHARED_ALL;
5040 michael 913 }
5041     break;
5042    
5043 michael 1644 case 325:
5044 michael 1619 /* Line 1813 of yacc.c */
5045 michael 1650 #line 1750 "conf_parser.y"
5046 michael 913 {
5047 michael 1647 struct MaskItem *conf = NULL;
5048    
5049     if (conf_parser_ctx.pass != 2)
5050     break;
5051    
5052     conf = conf_make(CONF_CLUSTER);
5053     conf->flags = block_state.flags.value;
5054     conf->name = xstrdup(block_state.name.buf);
5055 michael 913 }
5056     break;
5057    
5058 michael 1644 case 331:
5059 michael 1619 /* Line 1813 of yacc.c */
5060 michael 1650 #line 1765 "conf_parser.y"
5061 michael 913 {
5062 michael 967 if (conf_parser_ctx.pass == 2)
5063 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5064 michael 913 }
5065     break;
5066    
5067 michael 1644 case 332:
5068 michael 1619 /* Line 1813 of yacc.c */
5069 michael 1650 #line 1771 "conf_parser.y"
5070 michael 913 {
5071 michael 967 if (conf_parser_ctx.pass == 2)
5072 michael 1647 block_state.flags.value = 0;
5073 michael 913 }
5074     break;
5075    
5076 michael 1644 case 336:
5077 michael 1619 /* Line 1813 of yacc.c */
5078 michael 1650 #line 1778 "conf_parser.y"
5079 michael 913 {
5080 michael 967 if (conf_parser_ctx.pass == 2)
5081 michael 1647 block_state.flags.value |= SHARED_KLINE;
5082 michael 913 }
5083     break;
5084    
5085 michael 1644 case 337:
5086 michael 1619 /* Line 1813 of yacc.c */
5087 michael 1650 #line 1782 "conf_parser.y"
5088 michael 913 {
5089 michael 967 if (conf_parser_ctx.pass == 2)
5090 michael 1647 block_state.flags.value |= SHARED_UNKLINE;
5091 michael 913 }
5092     break;
5093    
5094 michael 1644 case 338:
5095 michael 1619 /* Line 1813 of yacc.c */
5096 michael 1650 #line 1786 "conf_parser.y"
5097 michael 913 {
5098 michael 967 if (conf_parser_ctx.pass == 2)
5099 michael 1647 block_state.flags.value |= SHARED_DLINE;
5100 michael 913 }
5101     break;
5102    
5103 michael 1644 case 339:
5104 michael 1619 /* Line 1813 of yacc.c */
5105 michael 1650 #line 1790 "conf_parser.y"
5106 michael 913 {
5107 michael 967 if (conf_parser_ctx.pass == 2)
5108 michael 1647 block_state.flags.value |= SHARED_UNDLINE;
5109 michael 913 }
5110     break;
5111    
5112 michael 1644 case 340:
5113 michael 1619 /* Line 1813 of yacc.c */
5114 michael 1650 #line 1794 "conf_parser.y"
5115 michael 913 {
5116 michael 967 if (conf_parser_ctx.pass == 2)
5117 michael 1647 block_state.flags.value |= SHARED_XLINE;
5118 michael 913 }
5119     break;
5120    
5121 michael 1644 case 341:
5122 michael 1619 /* Line 1813 of yacc.c */
5123 michael 1650 #line 1798 "conf_parser.y"
5124 michael 913 {
5125 michael 967 if (conf_parser_ctx.pass == 2)
5126 michael 1647 block_state.flags.value |= SHARED_UNXLINE;
5127 michael 913 }
5128     break;
5129    
5130 michael 1644 case 342:
5131 michael 1619 /* Line 1813 of yacc.c */
5132 michael 1650 #line 1802 "conf_parser.y"
5133 michael 913 {
5134 michael 967 if (conf_parser_ctx.pass == 2)
5135 michael 1647 block_state.flags.value |= SHARED_RESV;
5136 michael 913 }
5137     break;
5138    
5139 michael 1644 case 343:
5140 michael 1619 /* Line 1813 of yacc.c */
5141 michael 1650 #line 1806 "conf_parser.y"
5142 michael 913 {
5143 michael 967 if (conf_parser_ctx.pass == 2)
5144 michael 1647 block_state.flags.value |= SHARED_UNRESV;
5145 michael 913 }
5146     break;
5147    
5148 michael 1644 case 344:
5149 michael 1619 /* Line 1813 of yacc.c */
5150 michael 1650 #line 1810 "conf_parser.y"
5151 michael 913 {
5152 michael 967 if (conf_parser_ctx.pass == 2)
5153 michael 1647 block_state.flags.value |= SHARED_LOCOPS;
5154 michael 913 }
5155     break;
5156    
5157 michael 1644 case 345:
5158 michael 1619 /* Line 1813 of yacc.c */
5159 michael 1650 #line 1814 "conf_parser.y"
5160 michael 913 {
5161 michael 967 if (conf_parser_ctx.pass == 2)
5162 michael 1647 block_state.flags.value = SHARED_ALL;
5163 michael 1250 }
5164     break;
5165    
5166 michael 1644 case 346:
5167 michael 1619 /* Line 1813 of yacc.c */
5168 michael 1650 #line 1823 "conf_parser.y"
5169 michael 1250 {
5170 michael 1285
5171 michael 1647 if (conf_parser_ctx.pass != 2)
5172     break;
5173    
5174     reset_block_state();
5175     block_state.port.value = PORTNUM;
5176 michael 913 }
5177     break;
5178    
5179 michael 1644 case 347:
5180 michael 1619 /* Line 1813 of yacc.c */
5181 michael 1650 #line 1831 "conf_parser.y"
5182 michael 913 {
5183 michael 1647 struct MaskItem *conf = NULL;
5184     struct addrinfo hints, *res;
5185    
5186     if (conf_parser_ctx.pass != 2)
5187     break;
5188    
5189 michael 1648 if (!block_state.name.buf[0] ||
5190     !block_state.host.buf[0])
5191 michael 1647 break;
5192    
5193     if (!(block_state.rpass.buf[0] ||
5194     block_state.spass.buf[0]))
5195     break;
5196    
5197     if (has_wildcards(block_state.name.buf) ||
5198     has_wildcards(block_state.host.buf))
5199     break;
5200    
5201     conf = conf_make(CONF_SERVER);
5202     conf->port = block_state.port.value;
5203     conf->flags = block_state.flags.value;
5204     conf->aftype = block_state.aftype.value;
5205     conf->host = xstrdup(block_state.host.buf);
5206     conf->name = xstrdup(block_state.name.buf);
5207     conf->passwd = xstrdup(block_state.rpass.buf);
5208     conf->spasswd = xstrdup(block_state.spass.buf);
5209     conf->cipher_list = xstrdup(block_state.ciph.buf);
5210    
5211     dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5212     dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5213    
5214     if (block_state.bind.buf[0])
5215 michael 913 {
5216 michael 1647 memset(&hints, 0, sizeof(hints));
5217    
5218     hints.ai_family = AF_UNSPEC;
5219     hints.ai_socktype = SOCK_STREAM;
5220     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5221    
5222     if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5223     ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5224 michael 1302 else
5225     {
5226 michael 1647 assert(res != NULL);
5227 michael 913
5228 michael 1647 memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5229     conf->bind.ss.ss_family = res->ai_family;
5230     conf->bind.ss_len = res->ai_addrlen;
5231     freeaddrinfo(res);
5232 michael 1302 }
5233 michael 1647 }
5234 michael 913
5235 michael 1647 conf_add_class_to_conf(conf, block_state.class.buf);
5236     lookup_confhost(conf);
5237 michael 913 }
5238     break;
5239    
5240 michael 1644 case 364:
5241 michael 1619 /* Line 1813 of yacc.c */
5242 michael 1650 #line 1897 "conf_parser.y"
5243 michael 913 {
5244 michael 967 if (conf_parser_ctx.pass == 2)
5245 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5246 michael 913 }
5247     break;
5248    
5249 michael 1644 case 365:
5250 michael 1619 /* Line 1813 of yacc.c */
5251 michael 1650 #line 1903 "conf_parser.y"
5252 michael 913 {
5253 michael 967 if (conf_parser_ctx.pass == 2)
5254 michael 1647 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5255 michael 913 }
5256     break;
5257    
5258 michael 1644 case 366:
5259 michael 1619 /* Line 1813 of yacc.c */
5260 michael 1650 #line 1909 "conf_parser.y"
5261 michael 913 {
5262 michael 967 if (conf_parser_ctx.pass == 2)
5263 michael 1647 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5264 michael 913 }
5265     break;
5266    
5267 michael 1644 case 367:
5268 michael 1619 /* Line 1813 of yacc.c */
5269 michael 1650 #line 1915 "conf_parser.y"
5270 michael 913 {
5271 michael 1647 if (conf_parser_ctx.pass != 2)
5272     break;
5273 michael 913
5274 michael 1647 if ((yyvsp[(3) - (4)].string)[0] == ':')
5275     yyerror("Server passwords cannot begin with a colon");
5276     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5277     yyerror("Server passwords cannot contain spaces");
5278     else
5279     strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5280 michael 913 }
5281     break;
5282    
5283 michael 1644 case 368:
5284 michael 1619 /* Line 1813 of yacc.c */
5285 michael 1650 #line 1928 "conf_parser.y"
5286 michael 913 {
5287 michael 1647 if (conf_parser_ctx.pass != 2)
5288     break;
5289 michael 913
5290 michael 1647 if ((yyvsp[(3) - (4)].string)[0] == ':')
5291     yyerror("Server passwords cannot begin with a colon");
5292     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5293     yyerror("Server passwords cannot contain spaces");
5294     else
5295     strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5296 michael 913 }
5297     break;
5298    
5299 michael 1644 case 369:
5300 michael 1619 /* Line 1813 of yacc.c */
5301 michael 1650 #line 1941 "conf_parser.y"
5302 michael 913 {
5303 michael 967 if (conf_parser_ctx.pass == 2)
5304 michael 1647 block_state.port.value = (yyvsp[(3) - (4)].number);
5305 michael 913 }
5306     break;
5307    
5308 michael 1644 case 370:
5309 michael 1619 /* Line 1813 of yacc.c */
5310 michael 1650 #line 1947 "conf_parser.y"
5311 michael 913 {
5312 michael 967 if (conf_parser_ctx.pass == 2)
5313 michael 1647 block_state.aftype.value = AF_INET;
5314 michael 913 }
5315     break;
5316    
5317 michael 1644 case 371:
5318 michael 1619 /* Line 1813 of yacc.c */
5319 michael 1650 #line 1951 "conf_parser.y"
5320 michael 913 {
5321     #ifdef IPV6
5322 michael 967 if (conf_parser_ctx.pass == 2)
5323 michael 1647 block_state.aftype.value = AF_INET6;
5324 michael 913 #endif
5325     }
5326     break;
5327    
5328 michael 1644 case 372:
5329 michael 1619 /* Line 1813 of yacc.c */
5330 michael 1650 #line 1959 "conf_parser.y"
5331 michael 913 {
5332 michael 1648 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5333 michael 913 }
5334     break;
5335    
5336 michael 1644 case 376:
5337 michael 1619 /* Line 1813 of yacc.c */
5338 michael 1650 #line 1965 "conf_parser.y"
5339 michael 913 {
5340 michael 967 if (conf_parser_ctx.pass == 2)
5341 michael 1647 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5342 michael 913 }
5343     break;
5344    
5345 michael 1644 case 377:
5346 michael 1619 /* Line 1813 of yacc.c */
5347 michael 1650 #line 1969 "conf_parser.y"
5348 michael 913 {
5349 michael 967 if (conf_parser_ctx.pass == 2)
5350 michael 1647 block_state.flags.value |= CONF_FLAGS_SSL;
5351 michael 913 }
5352     break;
5353    
5354 michael 1644 case 378:
5355 michael 1619 /* Line 1813 of yacc.c */
5356 michael 1650 #line 1975 "conf_parser.y"
5357 michael 913 {
5358 michael 967 if (conf_parser_ctx.pass == 2)
5359 michael 913 {
5360     if (yylval.number)
5361 michael 1647 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5362 michael 913 else
5363 michael 1647 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5364 michael 913 }
5365     }
5366     break;
5367    
5368 michael 1644 case 379:
5369 michael 1619 /* Line 1813 of yacc.c */
5370 michael 1650 #line 1986 "conf_parser.y"
5371 michael 913 {
5372 michael 967 if (conf_parser_ctx.pass == 2)
5373 michael 1647 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5374 michael 913 }
5375     break;
5376    
5377 michael 1644 case 380:
5378 michael 1619 /* Line 1813 of yacc.c */
5379 michael 1650 #line 1992 "conf_parser.y"
5380 michael 913 {
5381 michael 967 if (conf_parser_ctx.pass == 2)
5382 michael 1647 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5383 michael 913 }
5384     break;
5385    
5386 michael 1644 case 381:
5387 michael 1619 /* Line 1813 of yacc.c */
5388 michael 1650 #line 1998 "conf_parser.y"
5389 michael 913 {
5390 michael 967 if (conf_parser_ctx.pass == 2)
5391 michael 1647 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5392 michael 913 }
5393     break;
5394    
5395 michael 1644 case 382:
5396 michael 1619 /* Line 1813 of yacc.c */
5397 michael 1650 #line 2004 "conf_parser.y"
5398 michael 913 {
5399 michael 1306 #ifdef HAVE_LIBCRYPTO
5400 michael 967 if (conf_parser_ctx.pass == 2)
5401 michael 1647 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5402 michael 1306 #else
5403     if (conf_parser_ctx.pass == 2)
5404     yyerror("Ignoring connect::ciphers -- no OpenSSL support");
5405     #endif
5406     }
5407     break;
5408    
5409 michael 1644 case 383:
5410 michael 1619 /* Line 1813 of yacc.c */
5411 michael 1650 #line 2019 "conf_parser.y"
5412 michael 1306 {
5413     if (conf_parser_ctx.pass == 2)
5414 michael 1647 reset_block_state();
5415 michael 913 }
5416     break;
5417    
5418 michael 1644 case 384:
5419 michael 1619 /* Line 1813 of yacc.c */
5420 michael 1650 #line 2023 "conf_parser.y"
5421 michael 913 {
5422 michael 1647 struct MaskItem *conf = NULL;
5423    
5424     if (conf_parser_ctx.pass != 2)
5425     break;
5426    
5427     if (!block_state.user.buf[0] ||
5428     !block_state.host.buf[0])
5429     break;
5430    
5431    
5432     if (block_state.port.value == 1)
5433 michael 913 {
5434 michael 1647 #ifdef HAVE_LIBPCRE
5435     void *exp_user = NULL;
5436     void *exp_host = NULL;
5437     const char *errptr = NULL;
5438    
5439     if (!(exp_user = ircd_pcre_compile(block_state.user.buf, &errptr)) ||
5440     !(exp_host = ircd_pcre_compile(block_state.host.buf, &errptr)))
5441 michael 913 {
5442 michael 1647 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
5443     errptr);
5444     break;
5445     }
5446 michael 913
5447 michael 1647 conf = conf_make(CONF_RKLINE);
5448     conf->regexuser = exp_user;
5449     conf->regexhost = exp_host;
5450 michael 913
5451 michael 1647 conf->user = xstrdup(block_state.user.buf);
5452     conf->host = xstrdup(block_state.host.buf);
5453 michael 913
5454 michael 1647 if (block_state.rpass.buf[0])
5455     conf->reason = xstrdup(block_state.rpass.buf);
5456     else
5457     conf->reason = xstrdup(CONF_NOREASON);
5458 michael 1009 #else
5459 michael 1647 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
5460     break;
5461 michael 1009 #endif
5462 michael 1647 }
5463     else
5464     {
5465     conf = conf_make(CONF_KLINE);
5466 michael 913
5467 michael 1647 conf->user = xstrdup(block_state.user.buf);
5468     conf->host = xstrdup(block_state.host.buf);
5469 michael 913
5470 michael 1647 if (block_state.rpass.buf[0])
5471     conf->reason = xstrdup(block_state.rpass.buf);
5472     else
5473     conf->reason = xstrdup(CONF_NOREASON);
5474     add_conf_by_address(CONF_KLINE, conf);
5475 michael 913 }
5476     }
5477     break;
5478    
5479 michael 1644 case 385:
5480 michael 1619 /* Line 1813 of yacc.c */
5481 michael 1650 #line 2081 "conf_parser.y"
5482 michael 913 {
5483 michael 1647 if (conf_parser_ctx.pass == 2)
5484     block_state.port.value = 0;
5485 michael 913 }
5486     break;
5487    
5488 michael 1644 case 389:
5489 michael 1619 /* Line 1813 of yacc.c */
5490 michael 1650 #line 2088 "conf_parser.y"
5491 michael 913 {
5492 michael 967 if (conf_parser_ctx.pass == 2)
5493 michael 1647 block_state.port.value = 1;
5494 michael 913 }
5495     break;
5496    
5497 michael 1644 case 396:
5498 michael 1619 /* Line 1813 of yacc.c */
5499 michael 1650 #line 2097 "conf_parser.y"
5500 michael 913 {
5501 michael 1647
5502 michael 967 if (conf_parser_ctx.pass == 2)
5503 michael 913 {
5504     struct split_nuh_item nuh;
5505    
5506     nuh.nuhmask = yylval.string;
5507     nuh.nickptr = NULL;
5508 michael 1647 nuh.userptr = block_state.user.buf;
5509     nuh.hostptr = block_state.host.buf;
5510 michael 913
5511     nuh.nicksize = 0;
5512 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
5513     nuh.hostsize = sizeof(block_state.host.buf);
5514 michael 913
5515     split_nuh(&nuh);
5516     }
5517     }
5518     break;
5519    
5520 michael 1644 case 397:
5521 michael 1619 /* Line 1813 of yacc.c */
5522 michael 1650 #line 2117 "conf_parser.y"
5523 michael 913 {
5524 michael 967 if (conf_parser_ctx.pass == 2)
5525 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5526 michael 913 }
5527     break;
5528    
5529 michael 1644 case 398:
5530 michael 1619 /* Line 1813 of yacc.c */
5531 michael 1650 #line 2126 "conf_parser.y"
5532 michael 913 {
5533 michael 967 if (conf_parser_ctx.pass == 2)
5534 michael 1646 reset_block_state();
5535 michael 913 }
5536     break;
5537    
5538 michael 1644 case 399:
5539 michael 1619 /* Line 1813 of yacc.c */
5540 michael 1650 #line 2130 "conf_parser.y"
5541 michael 913 {
5542 michael 1646 struct MaskItem *conf = NULL;
5543    
5544     if (conf_parser_ctx.pass != 2)
5545     break;
5546    
5547     if (!block_state.addr.buf[0])
5548     break;
5549    
5550     if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5551 michael 913 {
5552 michael 1646 conf = conf_make(CONF_DLINE);
5553     conf->host = xstrdup(block_state.addr.buf);
5554 michael 1005
5555 michael 1647 if (block_state.rpass.buf[0])
5556     conf->reason = xstrdup(block_state.rpass.buf);
5557 michael 1646 else
5558     conf->reason = xstrdup(CONF_NOREASON);
5559     add_conf_by_address(CONF_DLINE, conf);
5560 michael 913 }
5561     }
5562     break;
5563    
5564 michael 1644 case 405:
5565 michael 1619 /* Line 1813 of yacc.c */
5566 michael 1650 #line 2156 "conf_parser.y"
5567 michael 913 {
5568 michael 967 if (conf_parser_ctx.pass == 2)
5569 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5570 michael 913 }
5571     break;
5572    
5573 michael 1644 case 406:
5574 michael 1619 /* Line 1813 of yacc.c */
5575 michael 1650 #line 2162 "conf_parser.y"
5576 michael 913 {
5577 michael 967 if (conf_parser_ctx.pass == 2)
5578 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5579 michael 913 }
5580     break;
5581    
5582 michael 1644 case 412:
5583 michael 1619 /* Line 1813 of yacc.c */
5584 michael 1650 #line 2176 "conf_parser.y"
5585 michael 913 {
5586 michael 967 if (conf_parser_ctx.pass == 2)
5587 michael 913 {
5588     if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5589     {
5590 michael 1646 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5591     conf->host = xstrdup(yylval.string);
5592 michael 913
5593 michael 1646 add_conf_by_address(CONF_EXEMPT, conf);
5594 michael 913 }
5595     }
5596     }
5597     break;
5598    
5599 michael 1644 case 413:
5600 michael 1619 /* Line 1813 of yacc.c */
5601 michael 1650 #line 2193 "conf_parser.y"
5602 michael 913 {
5603 michael 967 if (conf_parser_ctx.pass == 2)
5604 michael 1646 reset_block_state();
5605 michael 913 }
5606     break;
5607    
5608 michael 1644 case 414:
5609 michael 1619 /* Line 1813 of yacc.c */
5610 michael 1650 #line 2197 "conf_parser.y"
5611 michael 913 {
5612 michael 1646 struct MaskItem *conf = NULL;
5613    
5614     if (conf_parser_ctx.pass != 2)
5615     break;
5616    
5617     if (!block_state.name.buf[0])
5618     break;
5619    
5620     if (block_state.port.value == 1)
5621 michael 913 {
5622 michael 1009 #ifdef HAVE_LIBPCRE
5623 michael 1646 void *exp_p = NULL;
5624     const char *errptr = NULL;
5625 michael 913
5626 michael 1646 if (!(exp_p = ircd_pcre_compile(block_state.name.buf, &errptr)))
5627     {
5628     ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
5629     errptr);
5630     break;
5631     }
5632 michael 913
5633 michael 1646 conf = conf_make(CONF_RXLINE);
5634     conf->regexuser = exp_p;
5635 michael 1009 #else
5636 michael 1646 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
5637     break;
5638 michael 1009 #endif
5639 michael 1646 }
5640     else
5641     conf = conf_make(CONF_XLINE);
5642 michael 913
5643 michael 1646 conf->name = xstrdup(block_state.name.buf);
5644 michael 913
5645 michael 1647 if (block_state.rpass.buf[0])
5646     conf->reason = xstrdup(block_state.rpass.buf);
5647 michael 1646 else
5648     conf->reason = xstrdup(CONF_NOREASON);
5649 michael 913 }
5650     break;
5651    
5652 michael 1644 case 415:
5653 michael 1619 /* Line 1813 of yacc.c */
5654 michael 1650 #line 2238 "conf_parser.y"
5655 michael 913 {
5656 michael 1646 if (conf_parser_ctx.pass == 2)
5657     block_state.port.value = 0;
5658 michael 913 }
5659     break;
5660    
5661 michael 1644 case 419:
5662 michael 1619 /* Line 1813 of yacc.c */
5663 michael 1650 #line 2245 "conf_parser.y"
5664 michael 913 {
5665 michael 967 if (conf_parser_ctx.pass == 2)
5666 michael 1646 block_state.port.value = 1;
5667 michael 913 }
5668     break;
5669    
5670 michael 1644 case 426:
5671 michael 1619 /* Line 1813 of yacc.c */
5672 michael 1650 #line 2254 "conf_parser.y"
5673 michael 913 {
5674 michael 967 if (conf_parser_ctx.pass == 2)
5675 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5676 michael 913 }
5677     break;
5678    
5679 michael 1644 case 427:
5680 michael 1619 /* Line 1813 of yacc.c */
5681 michael 1650 #line 2260 "conf_parser.y"
5682 michael 913 {
5683 michael 967 if (conf_parser_ctx.pass == 2)
5684 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5685 michael 913 }
5686     break;
5687    
5688 michael 1644 case 481:
5689 michael 1619 /* Line 1813 of yacc.c */
5690 michael 1650 #line 2305 "conf_parser.y"
5691 michael 1118 {
5692     ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
5693     }
5694     break;
5695    
5696 michael 1644 case 482:
5697 michael 1619 /* Line 1813 of yacc.c */
5698 michael 1650 #line 2310 "conf_parser.y"
5699 michael 1118 {
5700 michael 1459 if (conf_parser_ctx.pass == 2)
5701     ConfigFileEntry.glines = yylval.number;
5702     }
5703     break;
5704    
5705 michael 1644 case 483:
5706 michael 1619 /* Line 1813 of yacc.c */
5707 michael 1650 #line 2316 "conf_parser.y"
5708 michael 1459 {
5709     if (conf_parser_ctx.pass == 2)
5710     ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
5711     }
5712     break;
5713    
5714 michael 1644 case 484:
5715 michael 1619 /* Line 1813 of yacc.c */
5716 michael 1650 #line 2322 "conf_parser.y"
5717 michael 1459 {
5718     if (conf_parser_ctx.pass == 2)
5719     ConfigFileEntry.gline_request_time = (yyvsp[(3) - (4)].number);
5720     }
5721     break;
5722    
5723 michael 1644 case 485:
5724 michael 1619 /* Line 1813 of yacc.c */
5725 michael 1650 #line 2328 "conf_parser.y"
5726 michael 1519 {
5727     ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
5728     }
5729     break;
5730    
5731 michael 1644 case 486:
5732 michael 1619 /* Line 1813 of yacc.c */
5733 michael 1650 #line 2333 "conf_parser.y"
5734 michael 1519 {
5735     ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
5736     }
5737     break;
5738    
5739 michael 1644 case 487:
5740 michael 1619 /* Line 1813 of yacc.c */
5741 michael 1650 #line 2338 "conf_parser.y"
5742 michael 913 {
5743 michael 1519 ConfigFileEntry.tkline_expire_notices = yylval.number;
5744 michael 913 }
5745     break;
5746    
5747 michael 1644 case 488:
5748 michael 1619 /* Line 1813 of yacc.c */
5749 michael 1650 #line 2343 "conf_parser.y"
5750 michael 913 {
5751 michael 1519 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
5752 michael 913 }
5753     break;
5754    
5755 michael 1644 case 489:
5756 michael 1619 /* Line 1813 of yacc.c */
5757 michael 1650 #line 2348 "conf_parser.y"
5758 michael 913 {
5759 michael 1519 ConfigFileEntry.hide_spoof_ips = yylval.number;
5760 michael 913 }
5761     break;
5762    
5763 michael 1644 case 490:
5764 michael 1619 /* Line 1813 of yacc.c */
5765 michael 1650 #line 2353 "conf_parser.y"
5766 michael 913 {
5767 michael 1519 ConfigFileEntry.ignore_bogus_ts = yylval.number;
5768 michael 913 }
5769     break;
5770    
5771 michael 1644 case 491:
5772 michael 1619 /* Line 1813 of yacc.c */
5773 michael 1650 #line 2358 "conf_parser.y"
5774 michael 913 {
5775 michael 1519 ConfigFileEntry.disable_remote = yylval.number;
5776 michael 913 }
5777     break;
5778    
5779 michael 1644 case 492:
5780 michael 1619 /* Line 1813 of yacc.c */
5781 michael 1650 #line 2363 "conf_parser.y"
5782 michael 913 {
5783 michael 1519 ConfigFileEntry.failed_oper_notice = yylval.number;
5784 michael 913 }
5785     break;
5786    
5787 michael 1644 case 493:
5788 michael 1619 /* Line 1813 of yacc.c */
5789 michael 1650 #line 2368 "conf_parser.y"
5790 michael 913 {
5791 michael 1519 ConfigFileEntry.anti_nick_flood = yylval.number;
5792 michael 913 }
5793     break;
5794    
5795 michael 1644 case 494:
5796 michael 1619 /* Line 1813 of yacc.c */
5797 michael 1650 #line 2373 "conf_parser.y"
5798 michael 913 {
5799 michael 1519 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
5800 michael 913 }
5801     break;
5802    
5803 michael 1644 case 495:
5804 michael 1619 /* Line 1813 of yacc.c */
5805 michael 1650 #line 2378 "conf_parser.y"
5806 michael 913 {
5807 michael 1519 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
5808 michael 913 }
5809     break;
5810    
5811 michael 1644 case 496:
5812 michael 1619 /* Line 1813 of yacc.c */
5813 michael 1650 #line 2383 "conf_parser.y"
5814 michael 913 {
5815 michael 1519 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
5816 michael 913 }
5817     break;
5818    
5819 michael 1644 case 497:
5820 michael 1619 /* Line 1813 of yacc.c */
5821 michael 1650 #line 2388 "conf_parser.y"
5822 michael 913 {
5823 michael 1519 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
5824 michael 913 }
5825     break;
5826    
5827 michael 1644 case 498:
5828 michael 1619 /* Line 1813 of yacc.c */
5829 michael 1650 #line 2393 "conf_parser.y"
5830 michael 913 {
5831 michael 1519 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
5832 michael 913 }
5833     break;
5834    
5835 michael 1644 case 499:
5836 michael 1619 /* Line 1813 of yacc.c */
5837 michael 1650 #line 2398 "conf_parser.y"
5838 michael 913 {
5839 michael 1519 if (conf_parser_ctx.pass == 2)
5840     ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
5841 michael 913 }
5842     break;
5843    
5844 michael 1644 case 500:
5845 michael 1619 /* Line 1813 of yacc.c */
5846 michael 1650 #line 2404 "conf_parser.y"
5847 michael 913 {
5848 michael 1519 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
5849     {
5850     ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
5851     ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
5852     ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
5853     exit(0);
5854     }
5855 michael 1460 }
5856     break;
5857    
5858 michael 1644 case 501:
5859 michael 1619 /* Line 1813 of yacc.c */
5860 michael 1650 #line 2415 "conf_parser.y"
5861 michael 1460 {
5862 michael 1519 ConfigFileEntry.invisible_on_connect = yylval.number;
5863 michael 913 }
5864     break;
5865    
5866 michael 1644 case 502:
5867 michael 1619 /* Line 1813 of yacc.c */
5868 michael 1650 #line 2420 "conf_parser.y"
5869 michael 913 {
5870 michael 1519 ConfigFileEntry.warn_no_nline = yylval.number;
5871 michael 913 }
5872     break;
5873    
5874 michael 1644 case 503:
5875 michael 1619 /* Line 1813 of yacc.c */
5876 michael 1650 #line 2425 "conf_parser.y"
5877 michael 913 {
5878 michael 1519 ConfigFileEntry.stats_e_disabled = yylval.number;
5879 michael 913 }
5880     break;
5881    
5882 michael 1644 case 504:
5883 michael 1619 /* Line 1813 of yacc.c */
5884 michael 1650 #line 2430 "conf_parser.y"
5885 michael 913 {
5886 michael 1519 ConfigFileEntry.stats_o_oper_only = yylval.number;
5887 michael 913 }
5888     break;
5889    
5890 michael 1644 case 505:
5891 michael 1619 /* Line 1813 of yacc.c */
5892 michael 1650 #line 2435 "conf_parser.y"
5893 michael 913 {
5894 michael 1519 ConfigFileEntry.stats_P_oper_only = yylval.number;
5895 michael 913 }
5896     break;
5897    
5898 michael 1644 case 506:
5899 michael 1619 /* Line 1813 of yacc.c */
5900 michael 1650 #line 2440 "conf_parser.y"
5901 michael 913 {
5902 michael 1519 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5903 michael 913 }
5904     break;
5905    
5906 michael 1644 case 507:
5907 michael 1619 /* Line 1813 of yacc.c */
5908 michael 1650 #line 2443 "conf_parser.y"
5909 michael 913 {
5910 michael 1519 ConfigFileEntry.stats_k_oper_only = 1;
5911 michael 913 }
5912     break;
5913    
5914 michael 1644 case 508:
5915 michael 1619 /* Line 1813 of yacc.c */
5916 michael 1650 #line 2448 "conf_parser.y"
5917 michael 913 {
5918 michael 1519 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5919 michael 913 }
5920     break;
5921    
5922 michael 1644 case 509:
5923 michael 1619 /* Line 1813 of yacc.c */
5924 michael 1650 #line 2451 "conf_parser.y"
5925 michael 913 {
5926 michael 1519 ConfigFileEntry.stats_i_oper_only = 1;
5927 michael 913 }
5928     break;
5929    
5930 michael 1644 case 510:
5931 michael 1619 /* Line 1813 of yacc.c */
5932 michael 1650 #line 2456 "conf_parser.y"
5933 michael 913 {
5934 michael 1519 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
5935 michael 913 }
5936     break;
5937    
5938 michael 1644 case 511:
5939 michael 1619 /* Line 1813 of yacc.c */
5940 michael 1650 #line 2461 "conf_parser.y"
5941 michael 913 {
5942 michael 1519 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
5943 michael 913 }
5944     break;
5945    
5946 michael 1644 case 512:
5947 michael 1619 /* Line 1813 of yacc.c */
5948 michael 1650 #line 2466 "conf_parser.y"
5949 michael 913 {
5950 michael 1519 ConfigFileEntry.opers_bypass_callerid = yylval.number;
5951 michael 913 }
5952     break;
5953    
5954 michael 1644 case 513:
5955 michael 1619 /* Line 1813 of yacc.c */
5956 michael 1650 #line 2471 "conf_parser.y"
5957 michael 913 {
5958 michael 1519 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
5959 michael 913 }
5960     break;
5961    
5962 michael 1644 case 514:
5963 michael 1619 /* Line 1813 of yacc.c */
5964 michael 1650 #line 2476 "conf_parser.y"
5965 michael 913 {
5966 michael 1519 ConfigFileEntry.short_motd = yylval.number;
5967 michael 913 }
5968     break;
5969    
5970 michael 1644 case 515:
5971 michael 1619 /* Line 1813 of yacc.c */
5972 michael 1650 #line 2481 "conf_parser.y"
5973 michael 913 {
5974 michael 1519 ConfigFileEntry.no_oper_flood = yylval.number;
5975 michael 913 }
5976     break;
5977    
5978 michael 1644 case 516:
5979 michael 1619 /* Line 1813 of yacc.c */
5980 michael 1650 #line 2486 "conf_parser.y"
5981 michael 913 {
5982 michael 1519 ConfigFileEntry.true_no_oper_flood = yylval.number;
5983 michael 913 }
5984     break;
5985    
5986 michael 1644 case 517:
5987 michael 1619 /* Line 1813 of yacc.c */
5988 michael 1650 #line 2491 "conf_parser.y"
5989 michael 913 {
5990 michael 1519 ConfigFileEntry.oper_pass_resv = yylval.number;
5991 michael 913 }
5992     break;
5993    
5994 michael 1644 case 518:
5995 michael 1619 /* Line 1813 of yacc.c */
5996 michael 1650 #line 2496 "conf_parser.y"
5997 michael 913 {
5998 michael 967 if (conf_parser_ctx.pass == 2)
5999 michael 913 {
6000     if (strlen(yylval.string) > LOCALE_LENGTH-2)
6001     yylval.string[LOCALE_LENGTH-1] = '\0';
6002    
6003     set_locale(yylval.string);
6004     }
6005     }
6006     break;
6007    
6008 michael 1644 case 519:
6009 michael 1619 /* Line 1813 of yacc.c */
6010 michael 1650 #line 2507 "conf_parser.y"
6011 michael 913 {
6012     ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
6013     }
6014     break;
6015    
6016 michael 1644 case 520:
6017 michael 1619 /* Line 1813 of yacc.c */
6018 michael 1650 #line 2512 "conf_parser.y"
6019 michael 913 {
6020     ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
6021     }
6022     break;
6023    
6024 michael 1644 case 521:
6025 michael 1619 /* Line 1813 of yacc.c */
6026 michael 1650 #line 2517 "conf_parser.y"
6027 michael 913 {
6028     ConfigFileEntry.use_egd = yylval.number;
6029     }
6030     break;
6031    
6032 michael 1644 case 522:
6033 michael 1619 /* Line 1813 of yacc.c */
6034 michael 1650 #line 2522 "conf_parser.y"
6035 michael 913 {
6036 michael 967 if (conf_parser_ctx.pass == 2)
6037 michael 913 {
6038     MyFree(ConfigFileEntry.egdpool_path);
6039 michael 1646 ConfigFileEntry.egdpool_path = xstrdup(yylval.string);
6040 michael 913 }
6041     }
6042     break;
6043    
6044 michael 1644 case 523:
6045 michael 1619 /* Line 1813 of yacc.c */
6046 michael 1650 #line 2531 "conf_parser.y"
6047 michael 913 {
6048 michael 1176 if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
6049 michael 1157 {
6050     MyFree(ConfigFileEntry.service_name);
6051 michael 1646 ConfigFileEntry.service_name = xstrdup(yylval.string);
6052 michael 1157 }
6053     }
6054     break;
6055    
6056 michael 1644 case 524:
6057 michael 1619 /* Line 1813 of yacc.c */
6058 michael 1650 #line 2540 "conf_parser.y"
6059 michael 1157 {
6060 michael 913 ConfigFileEntry.ping_cookie = yylval.number;
6061     }
6062     break;
6063    
6064 michael 1644 case 525:
6065 michael 1619 /* Line 1813 of yacc.c */
6066 michael 1650 #line 2545 "conf_parser.y"
6067 michael 913 {
6068     ConfigFileEntry.disable_auth = yylval.number;
6069     }
6070     break;
6071    
6072 michael 1644 case 526:
6073 michael 1619 /* Line 1813 of yacc.c */
6074 michael 1650 #line 2550 "conf_parser.y"
6075 michael 913 {
6076     ConfigFileEntry.throttle_time = yylval.number;
6077     }
6078     break;
6079    
6080 michael 1644 case 527:
6081 michael 1619 /* Line 1813 of yacc.c */
6082 michael 1650 #line 2555 "conf_parser.y"
6083 michael 913 {
6084     ConfigFileEntry.oper_umodes = 0;
6085     }
6086     break;
6087    
6088 michael 1644 case 531:
6089 michael 1619 /* Line 1813 of yacc.c */
6090 michael 1650 #line 2561 "conf_parser.y"
6091 michael 1547 {
6092     ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6093     }
6094     break;
6095    
6096 michael 1644 case 532:
6097 michael 1619 /* Line 1813 of yacc.c */
6098 michael 1650 #line 2564 "conf_parser.y"
6099 michael 1547 {
6100     ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6101     }
6102     break;
6103    
6104 michael 1644 case 533:
6105 michael 1619 /* Line 1813 of yacc.c */
6106 michael 1650 #line 2567 "conf_parser.y"
6107 michael 913 {
6108 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6109 michael 913 }
6110     break;
6111    
6112 michael 1644 case 534:
6113 michael 1619 /* Line 1813 of yacc.c */
6114 michael 1650 #line 2570 "conf_parser.y"
6115 michael 913 {
6116 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6117 michael 913 }
6118     break;
6119    
6120 michael 1644 case 535:
6121 michael 1619 /* Line 1813 of yacc.c */
6122 michael 1650 #line 2573 "conf_parser.y"
6123 michael 913 {
6124 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6125 michael 913 }
6126     break;
6127    
6128 michael 1644 case 536:
6129 michael 1619 /* Line 1813 of yacc.c */
6130 michael 1650 #line 2576 "conf_parser.y"
6131 michael 913 {
6132 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_FULL;
6133 michael 913 }
6134     break;
6135    
6136 michael 1644 case 537:
6137 michael 1619 /* Line 1813 of yacc.c */
6138 michael 1650 #line 2579 "conf_parser.y"
6139 michael 913 {
6140 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6141 michael 913 }
6142     break;
6143    
6144 michael 1644 case 538:
6145 michael 1619 /* Line 1813 of yacc.c */
6146 michael 1650 #line 2582 "conf_parser.y"
6147 michael 913 {
6148 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6149 michael 913 }
6150     break;
6151    
6152 michael 1644 case 539:
6153 michael 1619 /* Line 1813 of yacc.c */
6154 michael 1650 #line 2585 "conf_parser.y"
6155 michael 1294 {
6156 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6157 michael 1294 }
6158     break;
6159    
6160 michael 1644 case 540:
6161 michael 1619 /* Line 1813 of yacc.c */
6162 michael 1650 #line 2588 "conf_parser.y"
6163 michael 913 {
6164 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_REJ;
6165 michael 913 }
6166     break;
6167    
6168 michael 1644 case 541:
6169 michael 1619 /* Line 1813 of yacc.c */
6170 michael 1650 #line 2591 "conf_parser.y"
6171 michael 913 {
6172 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6173 michael 913 }
6174     break;
6175    
6176 michael 1644 case 542:
6177 michael 1619 /* Line 1813 of yacc.c */
6178 michael 1650 #line 2594 "conf_parser.y"
6179 michael 913 {
6180 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_SPY;
6181 michael 913 }
6182     break;
6183    
6184 michael 1644 case 543:
6185 michael 1619 /* Line 1813 of yacc.c */
6186 michael 1650 #line 2597 "conf_parser.y"
6187 michael 913 {
6188 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6189 michael 913 }
6190     break;
6191    
6192 michael 1644 case 544:
6193 michael 1619 /* Line 1813 of yacc.c */
6194 michael 1650 #line 2600 "conf_parser.y"
6195 michael 913 {
6196 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6197 michael 913 }
6198     break;
6199    
6200 michael 1644 case 545:
6201 michael 1619 /* Line 1813 of yacc.c */
6202 michael 1650 #line 2603 "conf_parser.y"
6203 michael 913 {
6204 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6205 michael 913 }
6206     break;
6207    
6208 michael 1644 case 546:
6209 michael 1619 /* Line 1813 of yacc.c */
6210 michael 1650 #line 2606 "conf_parser.y"
6211 michael 913 {
6212 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6213 michael 913 }
6214     break;
6215    
6216 michael 1644 case 547:
6217 michael 1619 /* Line 1813 of yacc.c */
6218 michael 1650 #line 2609 "conf_parser.y"
6219 michael 913 {
6220 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6221 michael 913 }
6222     break;
6223    
6224 michael 1644 case 548:
6225 michael 1619 /* Line 1813 of yacc.c */
6226 michael 1650 #line 2612 "conf_parser.y"
6227 michael 913 {
6228 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6229 michael 913 }
6230     break;
6231    
6232 michael 1644 case 549:
6233 michael 1619 /* Line 1813 of yacc.c */
6234 michael 1650 #line 2615 "conf_parser.y"
6235 michael 913 {
6236 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6237 michael 913 }
6238     break;
6239    
6240 michael 1644 case 550:
6241 michael 1619 /* Line 1813 of yacc.c */
6242 michael 1650 #line 2618 "conf_parser.y"
6243 michael 913 {
6244 michael 1547 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6245 michael 913 }
6246     break;
6247    
6248 michael 1644 case 551:
6249 michael 1619 /* Line 1813 of yacc.c */
6250 michael 1650 #line 2623 "conf_parser.y"
6251 michael 913 {
6252 michael 1547 ConfigFileEntry.oper_only_umodes = 0;
6253 michael 913 }
6254     break;
6255    
6256 michael 1644 case 555:
6257 michael 1619 /* Line 1813 of yacc.c */
6258 michael 1650 #line 2629 "conf_parser.y"
6259 michael 913 {
6260 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6261 michael 913 }
6262     break;
6263    
6264 michael 1644 case 556:
6265 michael 1619 /* Line 1813 of yacc.c */
6266 michael 1650 #line 2632 "conf_parser.y"
6267 michael 913 {
6268 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6269 michael 913 }
6270     break;
6271    
6272 michael 1644 case 557:
6273 michael 1619 /* Line 1813 of yacc.c */
6274 michael 1650 #line 2635 "conf_parser.y"
6275 michael 913 {
6276 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
6277 michael 913 }
6278     break;
6279    
6280 michael 1644 case 558:
6281 michael 1619 /* Line 1813 of yacc.c */
6282 michael 1650 #line 2638 "conf_parser.y"
6283 michael 913 {
6284 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6285 michael 913 }
6286     break;
6287    
6288 michael 1644 case 559:
6289 michael 1619 /* Line 1813 of yacc.c */
6290 michael 1650 #line 2641 "conf_parser.y"
6291 michael 913 {
6292 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6293 michael 913 }
6294     break;
6295    
6296 michael 1644 case 560:
6297 michael 1619 /* Line 1813 of yacc.c */
6298 michael 1650 #line 2644 "conf_parser.y"
6299 michael 1547 {
6300     ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6301 michael 913 }
6302     break;
6303    
6304 michael 1644 case 561:
6305 michael 1619 /* Line 1813 of yacc.c */
6306 michael 1650 #line 2647 "conf_parser.y"
6307 michael 913 {
6308 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6309 michael 913 }
6310     break;
6311    
6312 michael 1644 case 562:
6313 michael 1619 /* Line 1813 of yacc.c */
6314 michael 1650 #line 2650 "conf_parser.y"
6315 michael 1547 {
6316     ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6317 michael 913 }
6318     break;
6319    
6320 michael 1644 case 563:
6321 michael 1619 /* Line 1813 of yacc.c */
6322 michael 1650 #line 2653 "conf_parser.y"
6323 michael 913 {
6324 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6325 michael 913 }
6326     break;
6327    
6328 michael 1644 case 564:
6329 michael 1619 /* Line 1813 of yacc.c */
6330 michael 1650 #line 2656 "conf_parser.y"
6331 michael 1294 {
6332 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6333 michael 1294 }
6334     break;
6335    
6336 michael 1644 case 565:
6337 michael 1619 /* Line 1813 of yacc.c */
6338 michael 1650 #line 2659 "conf_parser.y"
6339 michael 913 {
6340 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6341 michael 913 }
6342     break;
6343    
6344 michael 1644 case 566:
6345 michael 1619 /* Line 1813 of yacc.c */
6346 michael 1650 #line 2662 "conf_parser.y"
6347 michael 913 {
6348 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6349 michael 913 }
6350     break;
6351    
6352 michael 1644 case 567:
6353 michael 1619 /* Line 1813 of yacc.c */
6354 michael 1650 #line 2665 "conf_parser.y"
6355 michael 913 {
6356 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6357 michael 913 }
6358     break;
6359    
6360 michael 1644 case 568:
6361 michael 1619 /* Line 1813 of yacc.c */
6362 michael 1650 #line 2668 "conf_parser.y"
6363 michael 913 {
6364 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
6365 michael 913 }
6366     break;
6367    
6368 michael 1644 case 569:
6369 michael 1619 /* Line 1813 of yacc.c */
6370 michael 1650 #line 2671 "conf_parser.y"
6371 michael 913 {
6372 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6373 michael 913 }
6374     break;
6375    
6376 michael 1644 case 570:
6377 michael 1619 /* Line 1813 of yacc.c */
6378 michael 1650 #line 2674 "conf_parser.y"
6379 michael 913 {
6380 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6381 michael 913 }
6382     break;
6383    
6384 michael 1644 case 571:
6385 michael 1619 /* Line 1813 of yacc.c */
6386 michael 1650 #line 2677 "conf_parser.y"
6387 michael 913 {
6388 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6389 michael 913 }
6390     break;
6391    
6392 michael 1644 case 572:
6393 michael 1619 /* Line 1813 of yacc.c */
6394 michael 1650 #line 2680 "conf_parser.y"
6395 michael 913 {
6396 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6397 michael 913 }
6398     break;
6399    
6400 michael 1644 case 573:
6401 michael 1619 /* Line 1813 of yacc.c */
6402 michael 1650 #line 2683 "conf_parser.y"
6403 michael 913 {
6404 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6405 michael 913 }
6406     break;
6407    
6408 michael 1644 case 574:
6409 michael 1619 /* Line 1813 of yacc.c */
6410 michael 1650 #line 2686 "conf_parser.y"
6411 michael 913 {
6412 michael 1547 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6413 michael 913 }
6414     break;
6415    
6416 michael 1644 case 575:
6417 michael 1619 /* Line 1813 of yacc.c */
6418 michael 1650 #line 2691 "conf_parser.y"
6419 michael 913 {
6420 michael 1547 ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
6421 michael 913 }
6422     break;
6423    
6424 michael 1644 case 576:
6425 michael 1619 /* Line 1813 of yacc.c */
6426 michael 1650 #line 2696 "conf_parser.y"
6427 michael 913 {
6428 michael 1547 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
6429 michael 913 }
6430     break;
6431    
6432 michael 1644 case 577:
6433 michael 1619 /* Line 1813 of yacc.c */
6434 michael 1650 #line 2701 "conf_parser.y"
6435 michael 913 {
6436 michael 1460 ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
6437 michael 913 }
6438     break;
6439    
6440 michael 1644 case 596:
6441 michael 1619 /* Line 1813 of yacc.c */
6442 michael 1650 #line 2724 "conf_parser.y"
6443 michael 1519 {
6444     ConfigChannel.disable_fake_channels = yylval.number;
6445     }
6446     break;
6447    
6448 michael 1644 case 597:
6449 michael 1619 /* Line 1813 of yacc.c */
6450 michael 1650 #line 2729 "conf_parser.y"
6451 michael 1519 {
6452     ConfigChannel.restrict_channels = yylval.number;
6453     }
6454     break;
6455    
6456 michael 1644 case 598:
6457 michael 1619 /* Line 1813 of yacc.c */
6458 michael 1650 #line 2734 "conf_parser.y"
6459 michael 1118 {
6460 michael 1519 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
6461 michael 1118 }
6462     break;
6463    
6464 michael 1644 case 599:
6465 michael 1619 /* Line 1813 of yacc.c */
6466 michael 1650 #line 2739 "conf_parser.y"
6467 michael 913 {
6468 michael 1519 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
6469 michael 913 }
6470     break;
6471    
6472 michael 1644 case 600:
6473 michael 1619 /* Line 1813 of yacc.c */
6474 michael 1650 #line 2744 "conf_parser.y"
6475 michael 913 {
6476 michael 1519 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
6477 michael 913 }
6478     break;
6479    
6480 michael 1644 case 601:
6481 michael 1619 /* Line 1813 of yacc.c */
6482 michael 1650 #line 2749 "conf_parser.y"
6483 michael 913 {
6484 michael 1519 ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
6485 michael 913 }
6486     break;
6487    
6488 michael 1644 case 602:
6489 michael 1619 /* Line 1813 of yacc.c */
6490 michael 1650 #line 2754 "conf_parser.y"
6491 michael 913 {
6492 michael 1519 ConfigChannel.quiet_on_ban = yylval.number;
6493 michael 1432 }
6494     break;
6495    
6496 michael 1644 case 603:
6497 michael 1619 /* Line 1813 of yacc.c */
6498 michael 1650 #line 2759 "conf_parser.y"
6499 michael 1432 {
6500 michael 1519 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
6501 michael 913 }
6502     break;
6503    
6504 michael 1644 case 604:
6505 michael 1619 /* Line 1813 of yacc.c */
6506 michael 1650 #line 2764 "conf_parser.y"
6507 michael 913 {
6508 michael 1519 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
6509 michael 913 }
6510     break;
6511    
6512 michael 1644 case 605:
6513 michael 1619 /* Line 1813 of yacc.c */
6514 michael 1650 #line 2769 "conf_parser.y"
6515 michael 913 {
6516 michael 1519 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
6517 michael 913 }
6518     break;
6519    
6520 michael 1644 case 606:
6521 michael 1619 /* Line 1813 of yacc.c */
6522 michael 1650 #line 2774 "conf_parser.y"
6523 michael 913 {
6524 michael 1519 ConfigChannel.no_create_on_split = yylval.number;
6525 michael 913 }
6526     break;
6527    
6528 michael 1644 case 607:
6529 michael 1619 /* Line 1813 of yacc.c */
6530 michael 1650 #line 2779 "conf_parser.y"
6531 michael 913 {
6532 michael 1519 ConfigChannel.no_join_on_split = yylval.number;
6533 michael 913 }
6534     break;
6535    
6536 michael 1644 case 608:
6537 michael 1619 /* Line 1813 of yacc.c */
6538 michael 1650 #line 2784 "conf_parser.y"
6539 michael 913 {
6540 michael 1519 GlobalSetOptions.joinfloodcount = yylval.number;
6541 michael 913 }
6542     break;
6543    
6544 michael 1644 case 609:
6545 michael 1619 /* Line 1813 of yacc.c */
6546 michael 1650 #line 2789 "conf_parser.y"
6547 michael 913 {
6548     GlobalSetOptions.joinfloodtime = yylval.number;
6549     }
6550     break;
6551    
6552 michael 1644 case 620:
6553 michael 1619 /* Line 1813 of yacc.c */
6554 michael 1650 #line 2807 "conf_parser.y"
6555 michael 913 {
6556 michael 967 if (conf_parser_ctx.pass == 2)
6557 michael 913 ConfigServerHide.flatten_links = yylval.number;
6558     }
6559     break;
6560    
6561 michael 1644 case 621:
6562 michael 1619 /* Line 1813 of yacc.c */
6563 michael 1650 #line 2813 "conf_parser.y"
6564 michael 913 {
6565 michael 967 if (conf_parser_ctx.pass == 2)
6566 michael 913 ConfigServerHide.hide_servers = yylval.number;
6567     }
6568     break;
6569    
6570 michael 1644 case 622:
6571 michael 1619 /* Line 1813 of yacc.c */
6572 michael 1650 #line 2819 "conf_parser.y"
6573 michael 913 {
6574 michael 967 if (conf_parser_ctx.pass == 2)
6575 michael 913 {
6576     MyFree(ConfigServerHide.hidden_name);
6577 michael 1646 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6578 michael 913 }
6579     }
6580     break;
6581    
6582 michael 1644 case 623:
6583 michael 1619 /* Line 1813 of yacc.c */
6584 michael 1650 #line 2828 "conf_parser.y"
6585 michael 913 {
6586 michael 967 if (conf_parser_ctx.pass == 2)
6587 michael 913 {
6588     if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
6589     {
6590     eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
6591     ConfigServerHide.links_disabled = 0;
6592     }
6593    
6594     ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
6595     }
6596     }
6597     break;
6598    
6599 michael 1644 case 624:
6600 michael 1619 /* Line 1813 of yacc.c */
6601 michael 1650 #line 2842 "conf_parser.y"
6602 michael 913 {
6603 michael 967 if (conf_parser_ctx.pass == 2)
6604 michael 913 ConfigServerHide.hidden = yylval.number;
6605     }
6606     break;
6607    
6608 michael 1644 case 625:
6609 michael 1619 /* Line 1813 of yacc.c */
6610 michael 1650 #line 2848 "conf_parser.y"
6611 michael 913 {
6612 michael 967 if (conf_parser_ctx.pass == 2)
6613 michael 913 ConfigServerHide.hide_server_ips = yylval.number;
6614     }
6615     break;
6616    
6617    
6618 michael 1619 /* Line 1813 of yacc.c */
6619 michael 1650 #line 6620 "conf_parser.c"
6620 michael 913 default: break;
6621     }
6622 michael 1133 /* User semantic actions sometimes alter yychar, and that requires
6623     that yytoken be updated with the new translation. We take the
6624     approach of translating immediately before every use of yytoken.
6625     One alternative is translating here after every semantic action,
6626     but that translation would be missed if the semantic action invokes
6627     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6628     if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6629     incorrect destructor might then be invoked immediately. In the
6630     case of YYERROR or YYBACKUP, subsequent parser actions might lead
6631     to an incorrect destructor call or verbose syntax error message
6632     before the lookahead is translated. */
6633 michael 913 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6634    
6635     YYPOPSTACK (yylen);
6636     yylen = 0;
6637     YY_STACK_PRINT (yyss, yyssp);
6638    
6639     *++yyvsp = yyval;
6640    
6641     /* Now `shift' the result of the reduction. Determine what state
6642     that goes to, based on the state we popped back to and the rule
6643     number reduced by. */
6644    
6645     yyn = yyr1[yyn];
6646    
6647     yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6648     if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6649     yystate = yytable[yystate];
6650     else
6651     yystate = yydefgoto[yyn - YYNTOKENS];
6652    
6653     goto yynewstate;
6654    
6655    
6656     /*------------------------------------.
6657     | yyerrlab -- here on detecting error |
6658     `------------------------------------*/
6659     yyerrlab:
6660 michael 1133 /* Make sure we have latest lookahead translation. See comments at
6661     user semantic actions for why this is necessary. */
6662     yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6663    
6664 michael 913 /* If not already recovering from an error, report this error. */
6665     if (!yyerrstatus)
6666     {
6667     ++yynerrs;
6668     #if ! YYERROR_VERBOSE
6669     yyerror (YY_("syntax error"));
6670     #else
6671 michael 1133 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6672     yyssp, yytoken)
6673 michael 913 {
6674 michael 1133 char const *yymsgp = YY_("syntax error");
6675     int yysyntax_error_status;
6676     yysyntax_error_status = YYSYNTAX_ERROR;
6677     if (yysyntax_error_status == 0)
6678     yymsgp = yymsg;
6679     else if (yysyntax_error_status == 1)
6680     {
6681     if (yymsg != yymsgbuf)
6682     YYSTACK_FREE (yymsg);
6683     yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6684     if (!yymsg)
6685     {
6686     yymsg = yymsgbuf;
6687     yymsg_alloc = sizeof yymsgbuf;
6688     yysyntax_error_status = 2;
6689     }
6690     else
6691     {
6692     yysyntax_error_status = YYSYNTAX_ERROR;
6693     yymsgp = yymsg;
6694     }
6695     }
6696     yyerror (yymsgp);
6697     if (yysyntax_error_status == 2)
6698     goto yyexhaustedlab;
6699 michael 913 }
6700 michael 1133 # undef YYSYNTAX_ERROR
6701 michael 913 #endif
6702     }
6703    
6704    
6705    
6706     if (yyerrstatus == 3)
6707     {
6708 michael 967 /* If just tried and failed to reuse lookahead token after an
6709 michael 913 error, discard it. */
6710    
6711     if (yychar <= YYEOF)
6712     {
6713     /* Return failure if at end of input. */
6714     if (yychar == YYEOF)
6715     YYABORT;
6716     }
6717     else
6718     {
6719     yydestruct ("Error: discarding",
6720     yytoken, &yylval);
6721     yychar = YYEMPTY;
6722     }
6723     }
6724    
6725 michael 967 /* Else will try to reuse lookahead token after shifting the error
6726 michael 913 token. */
6727     goto yyerrlab1;
6728    
6729    
6730     /*---------------------------------------------------.
6731     | yyerrorlab -- error raised explicitly by YYERROR. |
6732     `---------------------------------------------------*/
6733     yyerrorlab:
6734    
6735     /* Pacify compilers like GCC when the user code never invokes
6736     YYERROR and the label yyerrorlab therefore never appears in user
6737     code. */
6738     if (/*CONSTCOND*/ 0)
6739     goto yyerrorlab;
6740    
6741     /* Do not reclaim the symbols of the rule which action triggered
6742     this YYERROR. */
6743     YYPOPSTACK (yylen);
6744     yylen = 0;
6745     YY_STACK_PRINT (yyss, yyssp);
6746     yystate = *yyssp;
6747     goto yyerrlab1;
6748    
6749    
6750     /*-------------------------------------------------------------.
6751     | yyerrlab1 -- common code for both syntax error and YYERROR. |
6752     `-------------------------------------------------------------*/
6753     yyerrlab1:
6754     yyerrstatus = 3; /* Each real token shifted decrements this. */
6755    
6756     for (;;)
6757     {
6758     yyn = yypact[yystate];
6759 michael 1133 if (!yypact_value_is_default (yyn))
6760 michael 913 {
6761     yyn += YYTERROR;
6762     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6763     {
6764     yyn = yytable[yyn];
6765     if (0 < yyn)
6766     break;
6767     }
6768     }
6769    
6770     /* Pop the current state because it cannot handle the error token. */
6771     if (yyssp == yyss)
6772     YYABORT;
6773    
6774    
6775     yydestruct ("Error: popping",
6776     yystos[yystate], yyvsp);
6777     YYPOPSTACK (1);
6778     yystate = *yyssp;
6779     YY_STACK_PRINT (yyss, yyssp);
6780     }
6781    
6782 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6783 michael 913 *++yyvsp = yylval;
6784 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_END
6785 michael 913
6786    
6787     /* Shift the error token. */
6788     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6789    
6790     yystate = yyn;
6791     goto yynewstate;
6792    
6793    
6794     /*-------------------------------------.
6795     | yyacceptlab -- YYACCEPT comes here. |
6796     `-------------------------------------*/
6797     yyacceptlab:
6798     yyresult = 0;
6799     goto yyreturn;
6800    
6801     /*-----------------------------------.
6802     | yyabortlab -- YYABORT comes here. |
6803     `-----------------------------------*/
6804     yyabortlab:
6805     yyresult = 1;
6806     goto yyreturn;
6807    
6808 michael 1425 #if !defined yyoverflow || YYERROR_VERBOSE
6809 michael 913 /*-------------------------------------------------.
6810     | yyexhaustedlab -- memory exhaustion comes here. |
6811     `-------------------------------------------------*/
6812     yyexhaustedlab:
6813     yyerror (YY_("memory exhausted"));
6814     yyresult = 2;
6815     /* Fall through. */
6816     #endif
6817    
6818     yyreturn:
6819 michael 967 if (yychar != YYEMPTY)
6820 michael 1133 {
6821     /* Make sure we have latest lookahead translation. See comments at
6822     user semantic actions for why this is necessary. */
6823     yytoken = YYTRANSLATE (yychar);
6824     yydestruct ("Cleanup: discarding lookahead",
6825     yytoken, &yylval);
6826     }
6827 michael 913 /* Do not reclaim the symbols of the rule which action triggered
6828     this YYABORT or YYACCEPT. */
6829     YYPOPSTACK (yylen);
6830     YY_STACK_PRINT (yyss, yyssp);
6831     while (yyssp != yyss)
6832     {
6833     yydestruct ("Cleanup: popping",
6834     yystos[*yyssp], yyvsp);
6835     YYPOPSTACK (1);
6836     }
6837     #ifndef yyoverflow
6838     if (yyss != yyssa)
6839     YYSTACK_FREE (yyss);
6840     #endif
6841     #if YYERROR_VERBOSE
6842     if (yymsg != yymsgbuf)
6843     YYSTACK_FREE (yymsg);
6844     #endif
6845     /* Make sure YYID is used. */
6846     return YYID (yyresult);
6847     }
6848    
6849    

Properties

Name Value
svn:eol-style native