ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1632
Committed: Sun Nov 4 15:37:10 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 220254 byte(s)
Log Message:
- Initial rewrite of the configuration subsystem

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

Properties

Name Value
svn:eol-style native