ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 2228
Committed: Thu Jun 13 19:46:30 2013 UTC (12 years, 2 months ago) by michael
Content type: text/x-csrc
File size: 225087 byte(s)
Log Message:
- Implement certificate fingerprint validation for oper{} and connect{} blocks.
  Some code taken from oftc-hybrid. Hello, stu!

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

Properties

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