ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1646
Committed: Wed Nov 7 21:02:43 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 217447 byte(s)
Log Message:
- First pass of conf parser stabilization/cleanup

File Contents

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

Properties

Name Value
svn:eol-style native