ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1644
Committed: Tue Nov 6 22:20:16 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 219365 byte(s)
Log Message:
- More config subsystem cleanups

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

Properties

Name Value
svn:eol-style native