ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 2397
Committed: Tue Jul 16 14:10:38 2013 UTC (12 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 227490 byte(s)
Log Message:
- Fixed bug that would prevent servers from linking together
  if connect::aftype wasn't specified

File Contents

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

Properties

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