ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1751
Committed: Wed Jan 16 18:30:52 2013 UTC (13 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 219566 byte(s)
Log Message:
- Forward-port -r1750 [IMPORTANT: nick and topic lengths are now configurable
  via ircd.conf. A max_nick_length, as well as a max_topic_length configuration
  option can now be found in the serverinfo{} block]
- OpenSSL 0.9.8s and higher is now required in order to enable ssl support

File Contents

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

Properties

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