ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1785
Committed: Sat Jan 26 22:40:55 2013 UTC (13 years, 8 months ago) by michael
Content type: text/x-csrc
File size: 223876 byte(s)
Log Message:
- Forward-port -r1784 [Fix bug where idle time sometimes is 0 even if the
  client didn't send any private message]

File Contents

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

Properties

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