ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1352
Committed: Fri Apr 13 09:57:08 2012 UTC (13 years, 4 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 235476 byte(s)
Log Message:
- conf_parser.y: dh prime size should be at least 1024 bits

File Contents

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

Properties

Name Value
svn:eol-style native