ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1329
Committed: Sun Apr 1 12:02:12 2012 UTC (11 years, 11 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 235314 byte(s)
Log Message:
- Remove unused configure tests
- Fixed compile warning in conf_parser.c

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     611, 635, 643, 658, 673, 682, 696, 705, 733, 763,
1303     786, 795, 797, 797, 798, 798, 799, 799, 801, 810,
1304     819, 831, 832, 832, 834, 834, 835, 837, 844, 844,
1305     854, 855, 857, 857, 858, 858, 860, 865, 868, 874,
1306     873, 879, 879, 880, 884, 888, 892, 896, 900, 904,
1307     915, 914, 1012, 1012, 1013, 1013, 1013, 1014, 1014, 1014,
1308     1015, 1015, 1015, 1017, 1029, 1066, 1078, 1089, 1131, 1141,
1309     1140, 1146, 1146, 1147, 1151, 1155, 1159, 1163, 1167, 1171,
1310     1175, 1179, 1183, 1187, 1191, 1195, 1199, 1203, 1207, 1211,
1311     1215, 1219, 1223, 1230, 1229, 1235, 1235, 1236, 1240, 1244,
1312     1248, 1252, 1256, 1260, 1264, 1268, 1272, 1276, 1280, 1284,
1313     1288, 1292, 1296, 1300, 1304, 1315, 1314, 1364, 1364, 1365,
1314     1366, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374,
1315     1375, 1376, 1377, 1379, 1388, 1394, 1400, 1406, 1412, 1418,
1316     1424, 1430, 1436, 1442, 1448, 1454, 1464, 1463, 1480, 1479,
1317     1484, 1484, 1485, 1489, 1493, 1501, 1501, 1502, 1502, 1502,
1318     1502, 1502, 1504, 1504, 1506, 1506, 1508, 1522, 1542, 1551,
1319     1564, 1563, 1632, 1632, 1633, 1633, 1633, 1633, 1634, 1634,
1320     1634, 1635, 1635, 1637, 1674, 1687, 1696, 1708, 1707, 1711,
1321     1711, 1712, 1716, 1720, 1724, 1728, 1732, 1736, 1740, 1744,
1322     1751, 1770, 1780, 1794, 1793, 1809, 1809, 1810, 1810, 1810,
1323     1810, 1812, 1821, 1836, 1849, 1851, 1851, 1852, 1852, 1854,
1324     1870, 1869, 1885, 1885, 1886, 1886, 1886, 1886, 1888, 1897,
1325     1920, 1919, 1925, 1925, 1926, 1930, 1934, 1938, 1942, 1946,
1326     1950, 1954, 1958, 1962, 1972, 1971, 1988, 1988, 1989, 1989,
1327     1989, 1991, 1998, 1997, 2003, 2003, 2004, 2008, 2012, 2016,
1328     2020, 2024, 2028, 2032, 2036, 2040, 2050, 2049, 2178, 2178,
1329     2179, 2179, 2179, 2180, 2180, 2181, 2181, 2181, 2182, 2182,
1330     2182, 2183, 2183, 2184, 2186, 2198, 2207, 2233, 2251, 2269,
1331     2275, 2279, 2288, 2287, 2291, 2291, 2292, 2296, 2300, 2304,
1332     2310, 2321, 2334, 2347, 2356, 2375, 2374, 2438, 2437, 2441,
1333     2441, 2442, 2448, 2448, 2449, 2449, 2449, 2449, 2451, 2470,
1334     2480, 2479, 2502, 2502, 2503, 2503, 2503, 2505, 2511, 2520,
1335     2522, 2522, 2523, 2523, 2525, 2544, 2543, 2591, 2590, 2594,
1336     2594, 2595, 2601, 2601, 2602, 2602, 2602, 2602, 2604, 2610,
1337     2619, 2622, 2622, 2623, 2623, 2624, 2624, 2625, 2625, 2626,
1338     2626, 2627, 2627, 2628, 2628, 2629, 2629, 2630, 2630, 2631,
1339     2631, 2632, 2632, 2633, 2633, 2634, 2634, 2635, 2635, 2636,
1340     2637, 2637, 2638, 2638, 2639, 2639, 2640, 2640, 2641, 2641,
1341     2642, 2643, 2644, 2644, 2645, 2646, 2647, 2647, 2648, 2648,
1342     2649, 2649, 2650, 2650, 2651, 2654, 2659, 2664, 2669, 2674,
1343     2679, 2684, 2689, 2694, 2699, 2704, 2709, 2714, 2719, 2724,
1344     2729, 2734, 2739, 2745, 2756, 2761, 2770, 2775, 2780, 2785,
1345     2790, 2795, 2798, 2803, 2806, 2811, 2816, 2821, 2826, 2831,
1346     2836, 2841, 2846, 2851, 2862, 2867, 2872, 2877, 2886, 2895,
1347     2900, 2905, 2911, 2910, 2915, 2915, 2916, 2919, 2922, 2925,
1348     2928, 2931, 2934, 2937, 2940, 2943, 2946, 2949, 2952, 2955,
1349     2958, 2961, 2964, 2967, 2970, 2973, 2979, 2978, 2983, 2983,
1350     2984, 2987, 2990, 2993, 2996, 2999, 3002, 3005, 3008, 3011,
1351     3014, 3017, 3020, 3023, 3026, 3029, 3032, 3035, 3038, 3041,
1352     3046, 3051, 3056, 3061, 3071, 3070, 3094, 3094, 3095, 3096,
1353     3097, 3098, 3099, 3100, 3101, 3103, 3109, 3116, 3115, 3120,
1354     3120, 3121, 3125, 3131, 3165, 3175, 3174, 3224, 3224, 3225,
1355     3229, 3238, 3241, 3241, 3242, 3242, 3243, 3243, 3244, 3244,
1356     3245, 3245, 3246, 3246, 3247, 3248, 3248, 3249, 3249, 3250,
1357     3250, 3251, 3251, 3253, 3258, 3263, 3268, 3273, 3278, 3283,
1358     3288, 3293, 3298, 3303, 3308, 3313, 3318, 3323, 3328, 3333,
1359     3338, 3346, 3349, 3349, 3350, 3350, 3351, 3352, 3353, 3353,
1360     3354, 3355, 3357, 3363, 3369, 3378, 3392, 3398, 3404
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     SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
3576     DH_free(dh);
3577     }
3578     }
3579     }
3580     #endif
3581     }
3582     break;
3583    
3584 michael 1316 case 81:
3585 michael 1306
3586     /* Line 1806 of yacc.c */
3587 michael 1329 #line 636 "conf_parser.y"
3588 michael 1306 {
3589     #ifdef HAVE_LIBCRYPTO
3590     if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3591     SSL_CTX_set_cipher_list(ServerInfo.server_ctx, yylval.string);
3592     #endif
3593     }
3594     break;
3595    
3596 michael 1316 case 82:
3597 michael 1306
3598     /* Line 1806 of yacc.c */
3599 michael 1329 #line 644 "conf_parser.y"
3600 michael 1306 {
3601 michael 913 /* this isn't rehashable */
3602 michael 1117 if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3603 michael 913 {
3604 michael 1117 if (valid_servname(yylval.string))
3605     DupString(ServerInfo.name, yylval.string);
3606     else
3607 michael 913 {
3608 michael 1247 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::name -- invalid name. Aborting.");
3609 michael 1117 exit(0);
3610 michael 913 }
3611     }
3612     }
3613     break;
3614    
3615 michael 1316 case 83:
3616 michael 967
3617 michael 1133 /* Line 1806 of yacc.c */
3618 michael 1329 #line 659 "conf_parser.y"
3619 michael 913 {
3620     /* this isn't rehashable */
3621 michael 967 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3622 michael 913 {
3623     if (valid_sid(yylval.string))
3624     DupString(ServerInfo.sid, yylval.string);
3625     else
3626     {
3627 michael 1247 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
3628 michael 913 exit(0);
3629     }
3630     }
3631     }
3632     break;
3633    
3634 michael 1316 case 84:
3635 michael 967
3636 michael 1133 /* Line 1806 of yacc.c */
3637 michael 1329 #line 674 "conf_parser.y"
3638 michael 913 {
3639 michael 967 if (conf_parser_ctx.pass == 2)
3640 michael 913 {
3641     MyFree(ServerInfo.description);
3642     DupString(ServerInfo.description,yylval.string);
3643     }
3644     }
3645     break;
3646    
3647 michael 1316 case 85:
3648 michael 967
3649 michael 1133 /* Line 1806 of yacc.c */
3650 michael 1329 #line 683 "conf_parser.y"
3651 michael 913 {
3652 michael 967 if (conf_parser_ctx.pass == 2)
3653 michael 913 {
3654     char *p;
3655    
3656     if ((p = strchr(yylval.string, ' ')) != NULL)
3657     p = '\0';
3658    
3659     MyFree(ServerInfo.network_name);
3660     DupString(ServerInfo.network_name, yylval.string);
3661     }
3662     }
3663     break;
3664    
3665 michael 1316 case 86:
3666 michael 967
3667 michael 1133 /* Line 1806 of yacc.c */
3668 michael 1329 #line 697 "conf_parser.y"
3669 michael 913 {
3670 michael 967 if (conf_parser_ctx.pass == 2)
3671 michael 913 {
3672     MyFree(ServerInfo.network_desc);
3673     DupString(ServerInfo.network_desc, yylval.string);
3674     }
3675     }
3676     break;
3677    
3678 michael 1316 case 87:
3679 michael 967
3680 michael 1133 /* Line 1806 of yacc.c */
3681 michael 1329 #line 706 "conf_parser.y"
3682 michael 913 {
3683 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3684 michael 913 {
3685     struct addrinfo hints, *res;
3686    
3687     memset(&hints, 0, sizeof(hints));
3688    
3689     hints.ai_family = AF_UNSPEC;
3690     hints.ai_socktype = SOCK_STREAM;
3691     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3692    
3693 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3694 michael 1247 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3695 michael 913 else
3696     {
3697     assert(res != NULL);
3698    
3699     memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3700     ServerInfo.ip.ss.ss_family = res->ai_family;
3701     ServerInfo.ip.ss_len = res->ai_addrlen;
3702 michael 1123 freeaddrinfo(res);
3703 michael 913
3704     ServerInfo.specific_ipv4_vhost = 1;
3705     }
3706     }
3707     }
3708     break;
3709    
3710 michael 1316 case 88:
3711 michael 967
3712 michael 1133 /* Line 1806 of yacc.c */
3713 michael 1329 #line 734 "conf_parser.y"
3714 michael 913 {
3715     #ifdef IPV6
3716 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3717 michael 913 {
3718     struct addrinfo hints, *res;
3719    
3720     memset(&hints, 0, sizeof(hints));
3721    
3722     hints.ai_family = AF_UNSPEC;
3723     hints.ai_socktype = SOCK_STREAM;
3724     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3725    
3726 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3727 michael 1247 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3728 michael 913 else
3729     {
3730     assert(res != NULL);
3731    
3732     memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3733     ServerInfo.ip6.ss.ss_family = res->ai_family;
3734     ServerInfo.ip6.ss_len = res->ai_addrlen;
3735 michael 1123 freeaddrinfo(res);
3736 michael 913
3737     ServerInfo.specific_ipv6_vhost = 1;
3738     }
3739     }
3740     #endif
3741     }
3742     break;
3743    
3744 michael 1316 case 89:
3745 michael 967
3746 michael 1133 /* Line 1806 of yacc.c */
3747 michael 1329 #line 764 "conf_parser.y"
3748 michael 913 {
3749 michael 967 if (conf_parser_ctx.pass == 2)
3750 michael 913 {
3751     recalc_fdlimit(NULL);
3752    
3753     if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3754     {
3755     char buf[IRCD_BUFSIZE];
3756     ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3757     yyerror(buf);
3758     }
3759     else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3760     {
3761     char buf[IRCD_BUFSIZE];
3762     ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3763     yyerror(buf);
3764     }
3765     else
3766     ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3767     }
3768     }
3769     break;
3770    
3771 michael 1316 case 90:
3772 michael 967
3773 michael 1133 /* Line 1806 of yacc.c */
3774 michael 1329 #line 787 "conf_parser.y"
3775 michael 913 {
3776 michael 967 if (conf_parser_ctx.pass == 2)
3777 michael 1119 ServerInfo.hub = yylval.number;
3778 michael 913 }
3779     break;
3780    
3781 michael 1316 case 98:
3782 michael 967
3783 michael 1133 /* Line 1806 of yacc.c */
3784 michael 1329 #line 802 "conf_parser.y"
3785 michael 913 {
3786 michael 967 if (conf_parser_ctx.pass == 2)
3787 michael 913 {
3788     MyFree(AdminInfo.name);
3789     DupString(AdminInfo.name, yylval.string);
3790     }
3791     }
3792     break;
3793    
3794 michael 1316 case 99:
3795 michael 967
3796 michael 1133 /* Line 1806 of yacc.c */
3797 michael 1329 #line 811 "conf_parser.y"
3798 michael 913 {
3799 michael 967 if (conf_parser_ctx.pass == 2)
3800 michael 913 {
3801     MyFree(AdminInfo.email);
3802     DupString(AdminInfo.email, yylval.string);
3803     }
3804     }
3805     break;
3806    
3807 michael 1316 case 100:
3808 michael 967
3809 michael 1133 /* Line 1806 of yacc.c */
3810 michael 1329 #line 820 "conf_parser.y"
3811 michael 913 {
3812 michael 967 if (conf_parser_ctx.pass == 2)
3813 michael 913 {
3814     MyFree(AdminInfo.description);
3815     DupString(AdminInfo.description, yylval.string);
3816     }
3817     }
3818     break;
3819    
3820 michael 1324 case 107:
3821 michael 967
3822 michael 1133 /* Line 1806 of yacc.c */
3823 michael 1329 #line 838 "conf_parser.y"
3824 michael 913 {
3825 michael 1247 if (conf_parser_ctx.pass == 2)
3826     ConfigLoggingEntry.use_logging = yylval.number;
3827     }
3828 michael 913 break;
3829    
3830 michael 1324 case 108:
3831 michael 967
3832 michael 1133 /* Line 1806 of yacc.c */
3833 michael 1329 #line 844 "conf_parser.y"
3834 michael 913 {
3835 michael 1247 lfile[0] = '\0';
3836     ltype = 0;
3837     lsize = 0;
3838 michael 913 }
3839     break;
3840    
3841 michael 1324 case 109:
3842 michael 967
3843 michael 1133 /* Line 1806 of yacc.c */
3844 michael 1329 #line 849 "conf_parser.y"
3845 michael 913 {
3846 michael 1250 if (conf_parser_ctx.pass == 2 && ltype > 0)
3847 michael 1247 log_add_file(ltype, lsize, lfile);
3848 michael 913 }
3849     break;
3850    
3851 michael 1324 case 116:
3852 michael 967
3853 michael 1133 /* Line 1806 of yacc.c */
3854 michael 1329 #line 861 "conf_parser.y"
3855 michael 913 {
3856 michael 1247 strlcpy(lfile, yylval.string, sizeof(lfile));
3857 michael 913 }
3858     break;
3859    
3860 michael 1324 case 117:
3861 michael 967
3862 michael 1133 /* Line 1806 of yacc.c */
3863 michael 1329 #line 866 "conf_parser.y"
3864 michael 913 {
3865 michael 1247 lsize = (yyvsp[(3) - (4)].number);
3866 michael 913 }
3867     break;
3868    
3869 michael 1324 case 118:
3870 michael 967
3871 michael 1133 /* Line 1806 of yacc.c */
3872 michael 1329 #line 869 "conf_parser.y"
3873 michael 913 {
3874 michael 1250 lsize = 0;
3875 michael 913 }
3876     break;
3877    
3878 michael 1324 case 119:
3879 michael 967
3880 michael 1133 /* Line 1806 of yacc.c */
3881 michael 1329 #line 874 "conf_parser.y"
3882 michael 913 {
3883 michael 967 if (conf_parser_ctx.pass == 2)
3884 michael 1250 ltype = 0;
3885 michael 913 }
3886     break;
3887    
3888 michael 1324 case 123:
3889 michael 967
3890 michael 1133 /* Line 1806 of yacc.c */
3891 michael 1329 #line 881 "conf_parser.y"
3892 michael 913 {
3893 michael 967 if (conf_parser_ctx.pass == 2)
3894 michael 1250 ltype = LOG_TYPE_USER;
3895 michael 913 }
3896     break;
3897    
3898 michael 1324 case 124:
3899 michael 967
3900 michael 1133 /* Line 1806 of yacc.c */
3901 michael 1329 #line 885 "conf_parser.y"
3902 michael 913 {
3903 michael 967 if (conf_parser_ctx.pass == 2)
3904 michael 1250 ltype = LOG_TYPE_OPER;
3905 michael 913 }
3906     break;
3907    
3908 michael 1324 case 125:
3909 michael 967
3910 michael 1133 /* Line 1806 of yacc.c */
3911 michael 1329 #line 889 "conf_parser.y"
3912 michael 1247 {
3913 michael 967 if (conf_parser_ctx.pass == 2)
3914 michael 1250 ltype = LOG_TYPE_GLINE;
3915 michael 913 }
3916     break;
3917    
3918 michael 1324 case 126:
3919 michael 967
3920 michael 1133 /* Line 1806 of yacc.c */
3921 michael 1329 #line 893 "conf_parser.y"
3922 michael 913 {
3923 michael 967 if (conf_parser_ctx.pass == 2)
3924 michael 1250 ltype = LOG_TYPE_DLINE;
3925 michael 913 }
3926     break;
3927    
3928 michael 1324 case 127:
3929 michael 967
3930 michael 1133 /* Line 1806 of yacc.c */
3931 michael 1329 #line 897 "conf_parser.y"
3932 michael 913 {
3933 michael 967 if (conf_parser_ctx.pass == 2)
3934 michael 1250 ltype = LOG_TYPE_KLINE;
3935 michael 913 }
3936     break;
3937    
3938 michael 1324 case 128:
3939 michael 967
3940 michael 1133 /* Line 1806 of yacc.c */
3941 michael 1329 #line 901 "conf_parser.y"
3942 michael 913 {
3943 michael 967 if (conf_parser_ctx.pass == 2)
3944 michael 1250 ltype = LOG_TYPE_KILL;
3945 michael 913 }
3946     break;
3947    
3948 michael 1324 case 129:
3949 michael 967
3950 michael 1133 /* Line 1806 of yacc.c */
3951 michael 1329 #line 905 "conf_parser.y"
3952 michael 913 {
3953 michael 967 if (conf_parser_ctx.pass == 2)
3954 michael 1250 ltype = LOG_TYPE_DEBUG;
3955     }
3956     break;
3957    
3958 michael 1324 case 130:
3959 michael 1250
3960     /* Line 1806 of yacc.c */
3961 michael 1329 #line 915 "conf_parser.y"
3962 michael 1250 {
3963     if (conf_parser_ctx.pass == 2)
3964 michael 913 {
3965     yy_conf = make_conf_item(OPER_TYPE);
3966     yy_aconf = map_to_conf(yy_conf);
3967     SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
3968     }
3969     else
3970     {
3971     MyFree(class_name);
3972     class_name = NULL;
3973     }
3974     }
3975     break;
3976    
3977 michael 1324 case 131:
3978 michael 967
3979 michael 1133 /* Line 1806 of yacc.c */
3980 michael 1329 #line 928 "conf_parser.y"
3981 michael 913 {
3982 michael 967 if (conf_parser_ctx.pass == 2)
3983 michael 913 {
3984     struct CollectItem *yy_tmp;
3985     dlink_node *ptr;
3986     dlink_node *next_ptr;
3987    
3988     conf_add_class_to_conf(yy_conf, class_name);
3989    
3990     /* Now, make sure there is a copy of the "base" given oper
3991     * block in each of the collected copies
3992     */
3993    
3994     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
3995     {
3996     struct AccessItem *new_aconf;
3997     struct ConfItem *new_conf;
3998     yy_tmp = ptr->data;
3999    
4000     new_conf = make_conf_item(OPER_TYPE);
4001     new_aconf = (struct AccessItem *)map_to_conf(new_conf);
4002    
4003     new_aconf->flags = yy_aconf->flags;
4004    
4005     if (yy_conf->name != NULL)
4006     DupString(new_conf->name, yy_conf->name);
4007     if (yy_tmp->user != NULL)
4008     DupString(new_aconf->user, yy_tmp->user);
4009     else
4010     DupString(new_aconf->user, "*");
4011     if (yy_tmp->host != NULL)
4012     DupString(new_aconf->host, yy_tmp->host);
4013     else
4014     DupString(new_aconf->host, "*");
4015 michael 1285
4016     new_aconf->type = parse_netmask(new_aconf->host, &new_aconf->ipnum,
4017     &new_aconf->bits);
4018    
4019 michael 913 conf_add_class_to_conf(new_conf, class_name);
4020     if (yy_aconf->passwd != NULL)
4021     DupString(new_aconf->passwd, yy_aconf->passwd);
4022    
4023     new_aconf->port = yy_aconf->port;
4024     #ifdef HAVE_LIBCRYPTO
4025     if (yy_aconf->rsa_public_key_file != NULL)
4026     {
4027     BIO *file;
4028    
4029     DupString(new_aconf->rsa_public_key_file,
4030     yy_aconf->rsa_public_key_file);
4031    
4032     file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
4033     new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
4034     NULL, 0, NULL);
4035     BIO_set_close(file, BIO_CLOSE);
4036     BIO_free(file);
4037     }
4038     #endif
4039    
4040     #ifdef HAVE_LIBCRYPTO
4041     if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
4042     && yy_tmp->host)
4043     #else
4044     if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
4045     #endif
4046     {
4047     conf_add_class_to_conf(new_conf, class_name);
4048     if (yy_tmp->name != NULL)
4049     DupString(new_conf->name, yy_tmp->name);
4050     }
4051    
4052     dlinkDelete(&yy_tmp->node, &col_conf_list);
4053     free_collect_item(yy_tmp);
4054     }
4055    
4056     yy_conf = NULL;
4057     yy_aconf = NULL;
4058    
4059    
4060     MyFree(class_name);
4061     class_name = NULL;
4062     }
4063     }
4064     break;
4065    
4066 michael 1324 case 143:
4067 michael 967
4068 michael 1133 /* Line 1806 of yacc.c */
4069 michael 1329 #line 1018 "conf_parser.y"
4070 michael 913 {
4071 michael 967 if (conf_parser_ctx.pass == 2)
4072 michael 913 {
4073     if (strlen(yylval.string) > OPERNICKLEN)
4074     yylval.string[OPERNICKLEN] = '\0';
4075    
4076     MyFree(yy_conf->name);
4077     DupString(yy_conf->name, yylval.string);
4078     }
4079     }
4080     break;
4081    
4082 michael 1324 case 144:
4083 michael 967
4084 michael 1133 /* Line 1806 of yacc.c */
4085 michael 1329 #line 1030 "conf_parser.y"
4086 michael 913 {
4087 michael 967 if (conf_parser_ctx.pass == 2)
4088 michael 913 {
4089     struct split_nuh_item nuh;
4090    
4091     nuh.nuhmask = yylval.string;
4092     nuh.nickptr = NULL;
4093     nuh.userptr = userbuf;
4094     nuh.hostptr = hostbuf;
4095    
4096     nuh.nicksize = 0;
4097     nuh.usersize = sizeof(userbuf);
4098     nuh.hostsize = sizeof(hostbuf);
4099    
4100     split_nuh(&nuh);
4101    
4102     if (yy_aconf->user == NULL)
4103     {
4104     DupString(yy_aconf->user, userbuf);
4105     DupString(yy_aconf->host, hostbuf);
4106 michael 1285
4107     yy_aconf->type = parse_netmask(yy_aconf->host, &yy_aconf->ipnum,
4108     &yy_aconf->bits);
4109 michael 913 }
4110     else
4111     {
4112     struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
4113    
4114     DupString(yy_tmp->user, userbuf);
4115     DupString(yy_tmp->host, hostbuf);
4116    
4117     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4118     }
4119     }
4120     }
4121     break;
4122    
4123 michael 1324 case 145:
4124 michael 967
4125 michael 1133 /* Line 1806 of yacc.c */
4126 michael 1329 #line 1067 "conf_parser.y"
4127 michael 913 {
4128 michael 967 if (conf_parser_ctx.pass == 2)
4129 michael 913 {
4130     if (yy_aconf->passwd != NULL)
4131     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4132    
4133     MyFree(yy_aconf->passwd);
4134     DupString(yy_aconf->passwd, yylval.string);
4135     }
4136     }
4137     break;
4138    
4139 michael 1324 case 146:
4140 michael 967
4141 michael 1133 /* Line 1806 of yacc.c */
4142 michael 1329 #line 1079 "conf_parser.y"
4143 michael 913 {
4144 michael 967 if (conf_parser_ctx.pass == 2)
4145 michael 913 {
4146     if (yylval.number)
4147     SetConfEncrypted(yy_aconf);
4148     else
4149     ClearConfEncrypted(yy_aconf);
4150     }
4151     }
4152     break;
4153    
4154 michael 1324 case 147:
4155 michael 967
4156 michael 1133 /* Line 1806 of yacc.c */
4157 michael 1329 #line 1090 "conf_parser.y"
4158 michael 913 {
4159     #ifdef HAVE_LIBCRYPTO
4160 michael 967 if (conf_parser_ctx.pass == 2)
4161 michael 913 {
4162     BIO *file;
4163    
4164     if (yy_aconf->rsa_public_key != NULL)
4165     {
4166     RSA_free(yy_aconf->rsa_public_key);
4167     yy_aconf->rsa_public_key = NULL;
4168     }
4169    
4170     if (yy_aconf->rsa_public_key_file != NULL)
4171     {
4172     MyFree(yy_aconf->rsa_public_key_file);
4173     yy_aconf->rsa_public_key_file = NULL;
4174     }
4175    
4176     DupString(yy_aconf->rsa_public_key_file, yylval.string);
4177     file = BIO_new_file(yylval.string, "r");
4178    
4179     if (file == NULL)
4180     {
4181     yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
4182     break;
4183     }
4184    
4185     yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
4186    
4187     if (yy_aconf->rsa_public_key == NULL)
4188     {
4189     yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4190     break;
4191     }
4192    
4193     BIO_set_close(file, BIO_CLOSE);
4194     BIO_free(file);
4195     }
4196     #endif /* HAVE_LIBCRYPTO */
4197     }
4198     break;
4199    
4200 michael 1324 case 148:
4201 michael 967
4202 michael 1133 /* Line 1806 of yacc.c */
4203 michael 1329 #line 1132 "conf_parser.y"
4204 michael 913 {
4205 michael 967 if (conf_parser_ctx.pass == 2)
4206 michael 913 {
4207     MyFree(class_name);
4208     DupString(class_name, yylval.string);
4209     }
4210     }
4211     break;
4212    
4213 michael 1324 case 149:
4214 michael 967
4215 michael 1133 /* Line 1806 of yacc.c */
4216 michael 1329 #line 1141 "conf_parser.y"
4217 michael 913 {
4218 michael 967 if (conf_parser_ctx.pass == 2)
4219 michael 913 yy_aconf->modes = 0;
4220     }
4221     break;
4222    
4223 michael 1324 case 153:
4224 michael 967
4225 michael 1133 /* Line 1806 of yacc.c */
4226 michael 1329 #line 1148 "conf_parser.y"
4227 michael 913 {
4228 michael 967 if (conf_parser_ctx.pass == 2)
4229 michael 1250 yy_aconf->modes |= UMODE_BOTS;
4230 michael 913 }
4231     break;
4232    
4233 michael 1324 case 154:
4234 michael 967
4235 michael 1133 /* Line 1806 of yacc.c */
4236 michael 1329 #line 1152 "conf_parser.y"
4237 michael 913 {
4238 michael 967 if (conf_parser_ctx.pass == 2)
4239 michael 1250 yy_aconf->modes |= UMODE_CCONN;
4240 michael 913 }
4241     break;
4242    
4243 michael 1324 case 155:
4244 michael 967
4245 michael 1133 /* Line 1806 of yacc.c */
4246 michael 1329 #line 1156 "conf_parser.y"
4247 michael 913 {
4248 michael 967 if (conf_parser_ctx.pass == 2)
4249 michael 1250 yy_aconf->modes |= UMODE_CCONN_FULL;
4250 michael 913 }
4251     break;
4252    
4253 michael 1324 case 156:
4254 michael 967
4255 michael 1133 /* Line 1806 of yacc.c */
4256 michael 1329 #line 1160 "conf_parser.y"
4257 michael 913 {
4258 michael 967 if (conf_parser_ctx.pass == 2)
4259 michael 1250 yy_aconf->modes |= UMODE_DEAF;
4260 michael 913 }
4261     break;
4262    
4263 michael 1324 case 157:
4264 michael 967
4265 michael 1133 /* Line 1806 of yacc.c */
4266 michael 1329 #line 1164 "conf_parser.y"
4267 michael 913 {
4268 michael 967 if (conf_parser_ctx.pass == 2)
4269 michael 1250 yy_aconf->modes |= UMODE_DEBUG;
4270 michael 913 }
4271     break;
4272    
4273 michael 1324 case 158:
4274 michael 967
4275 michael 1133 /* Line 1806 of yacc.c */
4276 michael 1329 #line 1168 "conf_parser.y"
4277 michael 913 {
4278 michael 967 if (conf_parser_ctx.pass == 2)
4279 michael 1250 yy_aconf->modes |= UMODE_FULL;
4280 michael 913 }
4281     break;
4282    
4283 michael 1324 case 159:
4284 michael 967
4285 michael 1133 /* Line 1806 of yacc.c */
4286 michael 1329 #line 1172 "conf_parser.y"
4287 michael 913 {
4288 michael 967 if (conf_parser_ctx.pass == 2)
4289 michael 1294 yy_aconf->modes |= UMODE_HIDDEN;
4290 michael 913 }
4291     break;
4292    
4293 michael 1324 case 160:
4294 michael 967
4295 michael 1133 /* Line 1806 of yacc.c */
4296 michael 1329 #line 1176 "conf_parser.y"
4297 michael 913 {
4298 michael 967 if (conf_parser_ctx.pass == 2)
4299 michael 1294 yy_aconf->modes |= UMODE_SKILL;
4300 michael 913 }
4301     break;
4302    
4303 michael 1324 case 161:
4304 michael 967
4305 michael 1133 /* Line 1806 of yacc.c */
4306 michael 1329 #line 1180 "conf_parser.y"
4307 michael 913 {
4308 michael 967 if (conf_parser_ctx.pass == 2)
4309 michael 1294 yy_aconf->modes |= UMODE_NCHANGE;
4310 michael 913 }
4311     break;
4312    
4313 michael 1324 case 162:
4314 michael 967
4315 michael 1133 /* Line 1806 of yacc.c */
4316 michael 1329 #line 1184 "conf_parser.y"
4317 michael 913 {
4318 michael 967 if (conf_parser_ctx.pass == 2)
4319 michael 1294 yy_aconf->modes |= UMODE_REJ;
4320 michael 913 }
4321     break;
4322    
4323 michael 1324 case 163:
4324 michael 967
4325 michael 1133 /* Line 1806 of yacc.c */
4326 michael 1329 #line 1188 "conf_parser.y"
4327 michael 913 {
4328 michael 967 if (conf_parser_ctx.pass == 2)
4329 michael 1294 yy_aconf->modes |= UMODE_UNAUTH;
4330 michael 913 }
4331     break;
4332    
4333 michael 1324 case 164:
4334 michael 967
4335 michael 1133 /* Line 1806 of yacc.c */
4336 michael 1329 #line 1192 "conf_parser.y"
4337 michael 913 {
4338 michael 967 if (conf_parser_ctx.pass == 2)
4339 michael 1294 yy_aconf->modes |= UMODE_SPY;
4340 michael 913 }
4341     break;
4342    
4343 michael 1324 case 165:
4344 michael 967
4345 michael 1133 /* Line 1806 of yacc.c */
4346 michael 1329 #line 1196 "conf_parser.y"
4347 michael 913 {
4348 michael 967 if (conf_parser_ctx.pass == 2)
4349 michael 1294 yy_aconf->modes |= UMODE_EXTERNAL;
4350 michael 913 }
4351     break;
4352    
4353 michael 1324 case 166:
4354 michael 967
4355 michael 1133 /* Line 1806 of yacc.c */
4356 michael 1329 #line 1200 "conf_parser.y"
4357 michael 913 {
4358 michael 967 if (conf_parser_ctx.pass == 2)
4359 michael 1294 yy_aconf->modes |= UMODE_OPERWALL;
4360 michael 913 }
4361     break;
4362    
4363 michael 1324 case 167:
4364 michael 967
4365 michael 1133 /* Line 1806 of yacc.c */
4366 michael 1329 #line 1204 "conf_parser.y"
4367 michael 913 {
4368 michael 967 if (conf_parser_ctx.pass == 2)
4369 michael 1294 yy_aconf->modes |= UMODE_SERVNOTICE;
4370 michael 913 }
4371     break;
4372    
4373 michael 1324 case 168:
4374 michael 967
4375 michael 1133 /* Line 1806 of yacc.c */
4376 michael 1329 #line 1208 "conf_parser.y"
4377 michael 913 {
4378 michael 967 if (conf_parser_ctx.pass == 2)
4379 michael 1294 yy_aconf->modes |= UMODE_INVISIBLE;
4380 michael 913 }
4381     break;
4382    
4383 michael 1324 case 169:
4384 michael 967
4385 michael 1133 /* Line 1806 of yacc.c */
4386 michael 1329 #line 1212 "conf_parser.y"
4387 michael 913 {
4388 michael 967 if (conf_parser_ctx.pass == 2)
4389 michael 1294 yy_aconf->modes |= UMODE_WALLOP;
4390 michael 913 }
4391     break;
4392    
4393 michael 1324 case 170:
4394 michael 967
4395 michael 1133 /* Line 1806 of yacc.c */
4396 michael 1329 #line 1216 "conf_parser.y"
4397 michael 913 {
4398 michael 967 if (conf_parser_ctx.pass == 2)
4399 michael 1294 yy_aconf->modes |= UMODE_SOFTCALLERID;
4400 michael 913 }
4401     break;
4402    
4403 michael 1324 case 171:
4404 michael 967
4405 michael 1133 /* Line 1806 of yacc.c */
4406 michael 1329 #line 1220 "conf_parser.y"
4407 michael 913 {
4408 michael 1228 if (conf_parser_ctx.pass == 2)
4409 michael 1294 yy_aconf->modes |= UMODE_CALLERID;
4410 michael 913 }
4411     break;
4412    
4413 michael 1324 case 172:
4414 michael 967
4415 michael 1133 /* Line 1806 of yacc.c */
4416 michael 1329 #line 1224 "conf_parser.y"
4417 michael 1228 {
4418     if (conf_parser_ctx.pass == 2)
4419 michael 1294 yy_aconf->modes |= UMODE_LOCOPS;
4420 michael 1228 }
4421 michael 913 break;
4422    
4423 michael 1324 case 173:
4424 michael 967
4425 michael 1133 /* Line 1806 of yacc.c */
4426 michael 1329 #line 1230 "conf_parser.y"
4427 michael 913 {
4428 michael 967 if (conf_parser_ctx.pass == 2)
4429 michael 1294 yy_aconf->port = 0;
4430 michael 913 }
4431     break;
4432    
4433 michael 1324 case 177:
4434 michael 967
4435 michael 1133 /* Line 1806 of yacc.c */
4436 michael 1329 #line 1237 "conf_parser.y"
4437 michael 913 {
4438 michael 967 if (conf_parser_ctx.pass == 2)
4439 michael 1294 yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4440 michael 913 }
4441     break;
4442    
4443 michael 1324 case 178:
4444 michael 967
4445 michael 1133 /* Line 1806 of yacc.c */
4446 michael 1329 #line 1241 "conf_parser.y"
4447 michael 913 {
4448 michael 967 if (conf_parser_ctx.pass == 2)
4449 michael 1294 yy_aconf->port |= OPER_FLAG_REMOTE;
4450 michael 913 }
4451     break;
4452    
4453 michael 1324 case 179:
4454 michael 967
4455 michael 1133 /* Line 1806 of yacc.c */
4456 michael 1329 #line 1245 "conf_parser.y"
4457 michael 913 {
4458 michael 967 if (conf_parser_ctx.pass == 2)
4459 michael 1294 yy_aconf->port |= OPER_FLAG_K;
4460 michael 913 }
4461     break;
4462    
4463 michael 1324 case 180:
4464 michael 967
4465 michael 1133 /* Line 1806 of yacc.c */
4466 michael 1329 #line 1249 "conf_parser.y"
4467 michael 913 {
4468 michael 967 if (conf_parser_ctx.pass == 2)
4469 michael 1294 yy_aconf->port |= OPER_FLAG_UNKLINE;
4470 michael 913 }
4471     break;
4472    
4473 michael 1324 case 181:
4474 michael 967
4475 michael 1133 /* Line 1806 of yacc.c */
4476 michael 1329 #line 1253 "conf_parser.y"
4477 michael 913 {
4478 michael 967 if (conf_parser_ctx.pass == 2)
4479 michael 1301 yy_aconf->port |= OPER_FLAG_DLINE;
4480 michael 913 }
4481     break;
4482    
4483 michael 1324 case 182:
4484 michael 967
4485 michael 1133 /* Line 1806 of yacc.c */
4486 michael 1329 #line 1257 "conf_parser.y"
4487 michael 913 {
4488 michael 967 if (conf_parser_ctx.pass == 2)
4489 michael 1301 yy_aconf->port |= OPER_FLAG_UNDLINE;
4490 michael 913 }
4491     break;
4492    
4493 michael 1324 case 183:
4494 michael 967
4495 michael 1133 /* Line 1806 of yacc.c */
4496 michael 1329 #line 1261 "conf_parser.y"
4497 michael 913 {
4498 michael 967 if (conf_parser_ctx.pass == 2)
4499 michael 1301 yy_aconf->port |= OPER_FLAG_X;
4500 michael 913 }
4501     break;
4502    
4503 michael 1324 case 184:
4504 michael 967
4505 michael 1133 /* Line 1806 of yacc.c */
4506 michael 1329 #line 1265 "conf_parser.y"
4507 michael 913 {
4508 michael 967 if (conf_parser_ctx.pass == 2)
4509 michael 1301 yy_aconf->port |= OPER_FLAG_GLINE;
4510 michael 913 }
4511     break;
4512    
4513 michael 1324 case 185:
4514 michael 967
4515 michael 1133 /* Line 1806 of yacc.c */
4516 michael 1329 #line 1269 "conf_parser.y"
4517 michael 913 {
4518 michael 967 if (conf_parser_ctx.pass == 2)
4519 michael 1301 yy_aconf->port |= OPER_FLAG_DIE;
4520 michael 913 }
4521     break;
4522    
4523 michael 1324 case 186:
4524 michael 967
4525 michael 1133 /* Line 1806 of yacc.c */
4526 michael 1329 #line 1273 "conf_parser.y"
4527 michael 913 {
4528 michael 967 if (conf_parser_ctx.pass == 2)
4529 michael 1301 yy_aconf->port |= OPER_FLAG_RESTART;
4530 michael 913 }
4531     break;
4532    
4533 michael 1324 case 187:
4534 michael 967
4535 michael 1133 /* Line 1806 of yacc.c */
4536 michael 1329 #line 1277 "conf_parser.y"
4537 michael 913 {
4538 michael 967 if (conf_parser_ctx.pass == 2)
4539 michael 1301 yy_aconf->port |= OPER_FLAG_REHASH;
4540 michael 913 }
4541     break;
4542    
4543 michael 1324 case 188:
4544 michael 967
4545 michael 1133 /* Line 1806 of yacc.c */
4546 michael 1329 #line 1281 "conf_parser.y"
4547 michael 913 {
4548 michael 967 if (conf_parser_ctx.pass == 2)
4549 michael 1301 yy_aconf->port |= OPER_FLAG_ADMIN;
4550 michael 1216 }
4551     break;
4552    
4553 michael 1324 case 189:
4554 michael 1216
4555     /* Line 1806 of yacc.c */
4556 michael 1329 #line 1285 "conf_parser.y"
4557 michael 1216 {
4558     if (conf_parser_ctx.pass == 2)
4559 michael 1301 yy_aconf->port |= OPER_FLAG_N;
4560 michael 913 }
4561     break;
4562    
4563 michael 1324 case 190:
4564 michael 967
4565 michael 1133 /* Line 1806 of yacc.c */
4566 michael 1329 #line 1289 "conf_parser.y"
4567 michael 913 {
4568 michael 967 if (conf_parser_ctx.pass == 2)
4569 michael 1301 yy_aconf->port |= OPER_FLAG_OPERWALL;
4570 michael 913 }
4571     break;
4572    
4573 michael 1324 case 191:
4574 michael 967
4575 michael 1133 /* Line 1806 of yacc.c */
4576 michael 1329 #line 1293 "conf_parser.y"
4577 michael 913 {
4578 michael 967 if (conf_parser_ctx.pass == 2)
4579 michael 1301 yy_aconf->port |= OPER_FLAG_GLOBOPS;
4580 michael 913 }
4581     break;
4582    
4583 michael 1324 case 192:
4584 michael 967
4585 michael 1133 /* Line 1806 of yacc.c */
4586 michael 1329 #line 1297 "conf_parser.y"
4587 michael 913 {
4588 michael 967 if (conf_parser_ctx.pass == 2)
4589 michael 1301 yy_aconf->port |= OPER_FLAG_OPER_SPY;
4590 michael 913 }
4591     break;
4592    
4593 michael 1324 case 193:
4594 michael 967
4595 michael 1133 /* Line 1806 of yacc.c */
4596 michael 1329 #line 1301 "conf_parser.y"
4597 michael 913 {
4598 michael 1301 if (conf_parser_ctx.pass == 2)
4599     yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4600     }
4601     break;
4602    
4603 michael 1324 case 194:
4604 michael 1301
4605     /* Line 1806 of yacc.c */
4606 michael 1329 #line 1305 "conf_parser.y"
4607 michael 1301 {
4608     if (conf_parser_ctx.pass == 2)
4609     yy_aconf->port |= OPER_FLAG_MODULE;
4610     }
4611     break;
4612    
4613 michael 1324 case 195:
4614 michael 1301
4615     /* Line 1806 of yacc.c */
4616 michael 1329 #line 1315 "conf_parser.y"
4617 michael 1301 {
4618 michael 967 if (conf_parser_ctx.pass == 1)
4619 michael 913 {
4620     yy_conf = make_conf_item(CLASS_TYPE);
4621     yy_class = map_to_conf(yy_conf);
4622     }
4623     }
4624     break;
4625    
4626 michael 1324 case 196:
4627 michael 967
4628 michael 1133 /* Line 1806 of yacc.c */
4629 michael 1329 #line 1322 "conf_parser.y"
4630 michael 913 {
4631 michael 967 if (conf_parser_ctx.pass == 1)
4632 michael 913 {
4633     struct ConfItem *cconf = NULL;
4634     struct ClassItem *class = NULL;
4635    
4636     if (yy_class_name == NULL)
4637     delete_conf_item(yy_conf);
4638     else
4639     {
4640 michael 1285 cconf = find_exact_name_conf(CLASS_TYPE, NULL, yy_class_name, NULL, NULL);
4641 michael 913
4642     if (cconf != NULL) /* The class existed already */
4643     {
4644     int user_count = 0;
4645    
4646     rebuild_cidr_class(cconf, yy_class);
4647    
4648     class = map_to_conf(cconf);
4649    
4650     user_count = class->curr_user_count;
4651     memcpy(class, yy_class, sizeof(*class));
4652     class->curr_user_count = user_count;
4653     class->active = 1;
4654    
4655     delete_conf_item(yy_conf);
4656    
4657     MyFree(cconf->name); /* Allows case change of class name */
4658     cconf->name = yy_class_name;
4659     }
4660     else /* Brand new class */
4661     {
4662     MyFree(yy_conf->name); /* just in case it was allocated */
4663     yy_conf->name = yy_class_name;
4664     yy_class->active = 1;
4665     }
4666     }
4667    
4668     yy_class_name = NULL;
4669     }
4670     }
4671     break;
4672    
4673 michael 1324 case 213:
4674 michael 967
4675 michael 1133 /* Line 1806 of yacc.c */
4676 michael 1329 #line 1380 "conf_parser.y"
4677 michael 913 {
4678 michael 967 if (conf_parser_ctx.pass == 1)
4679 michael 913 {
4680     MyFree(yy_class_name);
4681     DupString(yy_class_name, yylval.string);
4682     }
4683     }
4684     break;
4685    
4686 michael 1324 case 214:
4687 michael 1294
4688     /* Line 1806 of yacc.c */
4689 michael 1329 #line 1389 "conf_parser.y"
4690 michael 1294 {
4691     if (conf_parser_ctx.pass == 1)
4692     PingFreq(yy_class) = (yyvsp[(3) - (4)].number);
4693     }
4694     break;
4695    
4696 michael 1324 case 215:
4697 michael 967
4698 michael 1133 /* Line 1806 of yacc.c */
4699 michael 1329 #line 1395 "conf_parser.y"
4700 michael 913 {
4701 michael 967 if (conf_parser_ctx.pass == 1)
4702 michael 1294 PingWarning(yy_class) = (yyvsp[(3) - (4)].number);
4703 michael 913 }
4704     break;
4705    
4706 michael 1324 case 216:
4707 michael 967
4708 michael 1133 /* Line 1806 of yacc.c */
4709 michael 1329 #line 1401 "conf_parser.y"
4710 michael 913 {
4711 michael 967 if (conf_parser_ctx.pass == 1)
4712 michael 1294 MaxPerIp(yy_class) = (yyvsp[(3) - (4)].number);
4713 michael 913 }
4714     break;
4715    
4716 michael 1324 case 217:
4717 michael 967
4718 michael 1133 /* Line 1806 of yacc.c */
4719 michael 1329 #line 1407 "conf_parser.y"
4720 michael 913 {
4721 michael 967 if (conf_parser_ctx.pass == 1)
4722 michael 1294 ConFreq(yy_class) = (yyvsp[(3) - (4)].number);
4723 michael 913 }
4724     break;
4725    
4726 michael 1324 case 218:
4727 michael 967
4728 michael 1133 /* Line 1806 of yacc.c */
4729 michael 1329 #line 1413 "conf_parser.y"
4730 michael 913 {
4731 michael 967 if (conf_parser_ctx.pass == 1)
4732 michael 1294 MaxTotal(yy_class) = (yyvsp[(3) - (4)].number);
4733 michael 913 }
4734     break;
4735    
4736 michael 1324 case 219:
4737 michael 967
4738 michael 1133 /* Line 1806 of yacc.c */
4739 michael 1329 #line 1419 "conf_parser.y"
4740 michael 913 {
4741 michael 967 if (conf_parser_ctx.pass == 1)
4742 michael 1294 MaxGlobal(yy_class) = (yyvsp[(3) - (4)].number);
4743 michael 913 }
4744     break;
4745    
4746 michael 1324 case 220:
4747 michael 967
4748 michael 1133 /* Line 1806 of yacc.c */
4749 michael 1329 #line 1425 "conf_parser.y"
4750 michael 913 {
4751 michael 967 if (conf_parser_ctx.pass == 1)
4752 michael 1294 MaxLocal(yy_class) = (yyvsp[(3) - (4)].number);
4753 michael 913 }
4754     break;
4755    
4756 michael 1324 case 221:
4757 michael 967
4758 michael 1133 /* Line 1806 of yacc.c */
4759 michael 1329 #line 1431 "conf_parser.y"
4760 michael 913 {
4761 michael 967 if (conf_parser_ctx.pass == 1)
4762 michael 1294 MaxIdent(yy_class) = (yyvsp[(3) - (4)].number);
4763 michael 913 }
4764     break;
4765    
4766 michael 1324 case 222:
4767 michael 967
4768 michael 1133 /* Line 1806 of yacc.c */
4769 michael 1329 #line 1437 "conf_parser.y"
4770 michael 913 {
4771 michael 967 if (conf_parser_ctx.pass == 1)
4772 michael 1294 MaxSendq(yy_class) = (yyvsp[(3) - (4)].number);
4773 michael 913 }
4774     break;
4775    
4776 michael 1324 case 223:
4777 michael 967
4778 michael 1133 /* Line 1806 of yacc.c */
4779 michael 1329 #line 1443 "conf_parser.y"
4780 michael 913 {
4781 michael 967 if (conf_parser_ctx.pass == 1)
4782 michael 1294 CidrBitlenIPV4(yy_class) = (yyvsp[(3) - (4)].number);
4783 michael 913 }
4784     break;
4785    
4786 michael 1324 case 224:
4787 michael 967
4788 michael 1133 /* Line 1806 of yacc.c */
4789 michael 1329 #line 1449 "conf_parser.y"
4790 michael 913 {
4791 michael 967 if (conf_parser_ctx.pass == 1)
4792 michael 1294 CidrBitlenIPV6(yy_class) = (yyvsp[(3) - (4)].number);
4793 michael 913 }
4794     break;
4795    
4796 michael 1324 case 225:
4797 michael 967
4798 michael 1133 /* Line 1806 of yacc.c */
4799 michael 1329 #line 1455 "conf_parser.y"
4800 michael 913 {
4801 michael 967 if (conf_parser_ctx.pass == 1)
4802 michael 1294 NumberPerCidr(yy_class) = (yyvsp[(3) - (4)].number);
4803 michael 913 }
4804     break;
4805    
4806 michael 1324 case 226:
4807 michael 967
4808 michael 1133 /* Line 1806 of yacc.c */
4809 michael 1329 #line 1464 "conf_parser.y"
4810 michael 913 {
4811 michael 967 if (conf_parser_ctx.pass == 2)
4812 michael 913 {
4813     listener_address = NULL;
4814     listener_flags = 0;
4815     }
4816     }
4817     break;
4818    
4819 michael 1324 case 227:
4820 michael 967
4821 michael 1133 /* Line 1806 of yacc.c */
4822 michael 1329 #line 1471 "conf_parser.y"
4823 michael 913 {
4824 michael 967 if (conf_parser_ctx.pass == 2)
4825 michael 913 {
4826     MyFree(listener_address);
4827     listener_address = NULL;
4828     }
4829     }
4830     break;
4831    
4832 michael 1324 case 228:
4833 michael 967
4834 michael 1133 /* Line 1806 of yacc.c */
4835 michael 1329 #line 1480 "conf_parser.y"
4836 michael 913 {
4837     listener_flags = 0;
4838     }
4839     break;
4840    
4841 michael 1324 case 232:
4842 michael 967
4843 michael 1133 /* Line 1806 of yacc.c */
4844 michael 1329 #line 1486 "conf_parser.y"
4845 michael 913 {
4846 michael 967 if (conf_parser_ctx.pass == 2)
4847 michael 913 listener_flags |= LISTENER_SSL;
4848     }
4849     break;
4850    
4851 michael 1324 case 233:
4852 michael 967
4853 michael 1133 /* Line 1806 of yacc.c */
4854 michael 1329 #line 1490 "conf_parser.y"
4855 michael 913 {
4856 michael 967 if (conf_parser_ctx.pass == 2)
4857 michael 913 listener_flags |= LISTENER_HIDDEN;
4858     }
4859     break;
4860    
4861 michael 1324 case 234:
4862 michael 967
4863 michael 1133 /* Line 1806 of yacc.c */
4864 michael 1329 #line 1494 "conf_parser.y"
4865 michael 913 {
4866 michael 967 if (conf_parser_ctx.pass == 2)
4867 michael 913 listener_flags |= LISTENER_SERVER;
4868     }
4869     break;
4870    
4871 michael 1324 case 242:
4872 michael 967
4873 michael 1133 /* Line 1806 of yacc.c */
4874 michael 1329 #line 1504 "conf_parser.y"
4875 michael 913 { listener_flags = 0; }
4876     break;
4877    
4878 michael 1324 case 246:
4879 michael 967
4880 michael 1133 /* Line 1806 of yacc.c */
4881 michael 1329 #line 1509 "conf_parser.y"
4882 michael 913 {
4883 michael 967 if (conf_parser_ctx.pass == 2)
4884 michael 913 {
4885     if ((listener_flags & LISTENER_SSL))
4886     #ifdef HAVE_LIBCRYPTO
4887 michael 967 if (!ServerInfo.server_ctx)
4888 michael 913 #endif
4889     {
4890     yyerror("SSL not available - port closed");
4891     break;
4892     }
4893     add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
4894     }
4895     }
4896     break;
4897    
4898 michael 1324 case 247:
4899 michael 967
4900 michael 1133 /* Line 1806 of yacc.c */
4901 michael 1329 #line 1523 "conf_parser.y"
4902 michael 913 {
4903 michael 967 if (conf_parser_ctx.pass == 2)
4904 michael 913 {
4905     int i;
4906    
4907     if ((listener_flags & LISTENER_SSL))
4908     #ifdef HAVE_LIBCRYPTO
4909 michael 967 if (!ServerInfo.server_ctx)
4910 michael 913 #endif
4911     {
4912     yyerror("SSL not available - port closed");
4913     break;
4914     }
4915    
4916     for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4917     add_listener(i, listener_address, listener_flags);
4918     }
4919     }
4920     break;
4921    
4922 michael 1324 case 248:
4923 michael 967
4924 michael 1133 /* Line 1806 of yacc.c */
4925 michael 1329 #line 1543 "conf_parser.y"
4926 michael 913 {
4927 michael 967 if (conf_parser_ctx.pass == 2)
4928 michael 913 {
4929     MyFree(listener_address);
4930     DupString(listener_address, yylval.string);
4931     }
4932     }
4933     break;
4934    
4935 michael 1324 case 249:
4936 michael 967
4937 michael 1133 /* Line 1806 of yacc.c */
4938 michael 1329 #line 1552 "conf_parser.y"
4939 michael 913 {
4940 michael 967 if (conf_parser_ctx.pass == 2)
4941 michael 913 {
4942     MyFree(listener_address);
4943     DupString(listener_address, yylval.string);
4944     }
4945     }
4946     break;
4947    
4948 michael 1324 case 250:
4949 michael 967
4950 michael 1133 /* Line 1806 of yacc.c */
4951 michael 1329 #line 1564 "conf_parser.y"
4952 michael 913 {
4953 michael 967 if (conf_parser_ctx.pass == 2)
4954 michael 913 {
4955     yy_conf = make_conf_item(CLIENT_TYPE);
4956     yy_aconf = map_to_conf(yy_conf);
4957     }
4958     else
4959     {
4960     MyFree(class_name);
4961     class_name = NULL;
4962     }
4963     }
4964     break;
4965    
4966 michael 1324 case 251:
4967 michael 967
4968 michael 1133 /* Line 1806 of yacc.c */
4969 michael 1329 #line 1576 "conf_parser.y"
4970 michael 913 {
4971 michael 967 if (conf_parser_ctx.pass == 2)
4972 michael 913 {
4973     struct CollectItem *yy_tmp = NULL;
4974     dlink_node *ptr = NULL, *next_ptr = NULL;
4975    
4976     if (yy_aconf->user && yy_aconf->host)
4977     {
4978     conf_add_class_to_conf(yy_conf, class_name);
4979     add_conf_by_address(CONF_CLIENT, yy_aconf);
4980     }
4981     else
4982     delete_conf_item(yy_conf);
4983    
4984     /* copy over settings from first struct */
4985     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4986     {
4987     struct AccessItem *new_aconf;
4988     struct ConfItem *new_conf;
4989    
4990     new_conf = make_conf_item(CLIENT_TYPE);
4991     new_aconf = map_to_conf(new_conf);
4992    
4993     yy_tmp = ptr->data;
4994    
4995     assert(yy_tmp->user && yy_tmp->host);
4996    
4997     if (yy_aconf->passwd != NULL)
4998     DupString(new_aconf->passwd, yy_aconf->passwd);
4999     if (yy_conf->name != NULL)
5000     DupString(new_conf->name, yy_conf->name);
5001     if (yy_aconf->passwd != NULL)
5002     DupString(new_aconf->passwd, yy_aconf->passwd);
5003    
5004     new_aconf->flags = yy_aconf->flags;
5005     new_aconf->port = yy_aconf->port;
5006    
5007     DupString(new_aconf->user, yy_tmp->user);
5008     collapse(new_aconf->user);
5009    
5010     DupString(new_aconf->host, yy_tmp->host);
5011     collapse(new_aconf->host);
5012    
5013     conf_add_class_to_conf(new_conf, class_name);
5014     add_conf_by_address(CONF_CLIENT, new_aconf);
5015     dlinkDelete(&yy_tmp->node, &col_conf_list);
5016     free_collect_item(yy_tmp);
5017     }
5018    
5019     MyFree(class_name);
5020     class_name = NULL;
5021     yy_conf = NULL;
5022     yy_aconf = NULL;
5023     }
5024     }
5025     break;
5026    
5027 michael 1324 case 263:
5028 michael 967
5029 michael 1133 /* Line 1806 of yacc.c */
5030 michael 1329 #line 1638 "conf_parser.y"
5031 michael 913 {
5032 michael 967 if (conf_parser_ctx.pass == 2)
5033 michael 913 {
5034     struct CollectItem *yy_tmp = NULL;
5035     struct split_nuh_item nuh;
5036    
5037     nuh.nuhmask = yylval.string;
5038     nuh.nickptr = NULL;
5039     nuh.userptr = userbuf;
5040     nuh.hostptr = hostbuf;
5041    
5042     nuh.nicksize = 0;
5043     nuh.usersize = sizeof(userbuf);
5044     nuh.hostsize = sizeof(hostbuf);
5045    
5046     split_nuh(&nuh);
5047    
5048     if (yy_aconf->user == NULL)
5049     {
5050     DupString(yy_aconf->user, userbuf);
5051     DupString(yy_aconf->host, hostbuf);
5052     }
5053     else
5054     {
5055     yy_tmp = MyMalloc(sizeof(struct CollectItem));
5056    
5057     DupString(yy_tmp->user, userbuf);
5058     DupString(yy_tmp->host, hostbuf);
5059    
5060     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
5061     }
5062     }
5063     }
5064     break;
5065    
5066 michael 1324 case 264:
5067 michael 967
5068 michael 1133 /* Line 1806 of yacc.c */
5069 michael 1329 #line 1675 "conf_parser.y"
5070 michael 913 {
5071 michael 967 if (conf_parser_ctx.pass == 2)
5072 michael 913 {
5073     /* be paranoid */
5074     if (yy_aconf->passwd != NULL)
5075     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5076    
5077     MyFree(yy_aconf->passwd);
5078     DupString(yy_aconf->passwd, yylval.string);
5079     }
5080     }
5081     break;
5082    
5083 michael 1324 case 265:
5084 michael 967
5085 michael 1133 /* Line 1806 of yacc.c */
5086 michael 1329 #line 1688 "conf_parser.y"
5087 michael 913 {
5088 michael 967 if (conf_parser_ctx.pass == 2)
5089 michael 913 {
5090     MyFree(class_name);
5091     DupString(class_name, yylval.string);
5092     }
5093     }
5094     break;
5095    
5096 michael 1324 case 266:
5097 michael 967
5098 michael 1133 /* Line 1806 of yacc.c */
5099 michael 1329 #line 1697 "conf_parser.y"
5100 michael 913 {
5101 michael 967 if (conf_parser_ctx.pass == 2)
5102 michael 913 {
5103     if (yylval.number)
5104     SetConfEncrypted(yy_aconf);
5105     else
5106     ClearConfEncrypted(yy_aconf);
5107     }
5108     }
5109     break;
5110    
5111 michael 1324 case 267:
5112 michael 967
5113 michael 1133 /* Line 1806 of yacc.c */
5114 michael 1329 #line 1708 "conf_parser.y"
5115 michael 913 {
5116     }
5117     break;
5118    
5119 michael 1324 case 271:
5120 michael 967
5121 michael 1133 /* Line 1806 of yacc.c */
5122 michael 1329 #line 1713 "conf_parser.y"
5123 michael 913 {
5124 michael 967 if (conf_parser_ctx.pass == 2)
5125 michael 1250 yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5126 michael 913 }
5127     break;
5128    
5129 michael 1324 case 272:
5130 michael 967
5131 michael 1133 /* Line 1806 of yacc.c */
5132 michael 1329 #line 1717 "conf_parser.y"
5133 michael 913 {
5134 michael 967 if (conf_parser_ctx.pass == 2)
5135 michael 1250 yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5136 michael 913 }
5137     break;
5138    
5139 michael 1324 case 273:
5140 michael 967
5141 michael 1133 /* Line 1806 of yacc.c */
5142 michael 1329 #line 1721 "conf_parser.y"
5143 michael 913 {
5144 michael 967 if (conf_parser_ctx.pass == 2)
5145 michael 1250 yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5146 michael 913 }
5147     break;
5148    
5149 michael 1324 case 274:
5150 michael 967
5151 michael 1133 /* Line 1806 of yacc.c */
5152 michael 1329 #line 1725 "conf_parser.y"
5153 michael 913 {
5154 michael 967 if (conf_parser_ctx.pass == 2)
5155 michael 1250 yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5156 michael 913 }
5157     break;
5158    
5159 michael 1324 case 275:
5160 michael 967
5161 michael 1133 /* Line 1806 of yacc.c */
5162 michael 1329 #line 1729 "conf_parser.y"
5163 michael 913 {
5164 michael 967 if (conf_parser_ctx.pass == 2)
5165 michael 1250 yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5166 michael 913 }
5167     break;
5168    
5169 michael 1324 case 276:
5170 michael 967
5171 michael 1133 /* Line 1806 of yacc.c */
5172 michael 1329 #line 1733 "conf_parser.y"
5173 michael 913 {
5174 michael 967 if (conf_parser_ctx.pass == 2)
5175 michael 1250 yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5176 michael 913 }
5177     break;
5178    
5179 michael 1324 case 277:
5180 michael 967
5181 michael 1133 /* Line 1806 of yacc.c */
5182 michael 1329 #line 1737 "conf_parser.y"
5183 michael 913 {
5184 michael 967 if (conf_parser_ctx.pass == 2)
5185 michael 1250 yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5186 michael 913 }
5187     break;
5188    
5189 michael 1324 case 278:
5190 michael 967
5191 michael 1133 /* Line 1806 of yacc.c */
5192 michael 1329 #line 1741 "conf_parser.y"
5193 michael 913 {
5194 michael 967 if (conf_parser_ctx.pass == 2)
5195 michael 1250 yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5196 michael 913 }
5197     break;
5198    
5199 michael 1324 case 279:
5200 michael 967
5201 michael 1133 /* Line 1806 of yacc.c */
5202 michael 1329 #line 1745 "conf_parser.y"
5203 michael 913 {
5204 michael 967 if (conf_parser_ctx.pass == 2)
5205 michael 1250 yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5206     }
5207     break;
5208    
5209 michael 1324 case 280:
5210 michael 1250
5211     /* Line 1806 of yacc.c */
5212 michael 1329 #line 1752 "conf_parser.y"
5213 michael 1250 {
5214     if (conf_parser_ctx.pass == 2)
5215 michael 913 {
5216     MyFree(yy_conf->name);
5217    
5218     if (strlen(yylval.string) < HOSTLEN)
5219     {
5220     DupString(yy_conf->name, yylval.string);
5221     yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5222     }
5223     else
5224     {
5225 michael 1247 ilog(LOG_TYPE_IRCD, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5226 michael 913 yy_conf->name = NULL;
5227     }
5228     }
5229     }
5230     break;
5231    
5232 michael 1324 case 281:
5233 michael 967
5234 michael 1133 /* Line 1806 of yacc.c */
5235 michael 1329 #line 1771 "conf_parser.y"
5236 michael 913 {
5237 michael 967 if (conf_parser_ctx.pass == 2)
5238 michael 913 {
5239     yy_aconf->flags |= CONF_FLAGS_REDIR;
5240     MyFree(yy_conf->name);
5241     DupString(yy_conf->name, yylval.string);
5242     }
5243     }
5244     break;
5245    
5246 michael 1324 case 282:
5247 michael 967
5248 michael 1133 /* Line 1806 of yacc.c */
5249 michael 1329 #line 1781 "conf_parser.y"
5250 michael 913 {
5251 michael 967 if (conf_parser_ctx.pass == 2)
5252 michael 913 {
5253     yy_aconf->flags |= CONF_FLAGS_REDIR;
5254     yy_aconf->port = (yyvsp[(3) - (4)].number);
5255     }
5256     }
5257     break;
5258    
5259 michael 1324 case 283:
5260 michael 967
5261 michael 1133 /* Line 1806 of yacc.c */
5262 michael 1329 #line 1794 "conf_parser.y"
5263 michael 913 {
5264 michael 967 if (conf_parser_ctx.pass == 2)
5265 michael 913 {
5266     MyFree(resv_reason);
5267     resv_reason = NULL;
5268     }
5269     }
5270     break;
5271    
5272 michael 1324 case 284:
5273 michael 967
5274 michael 1133 /* Line 1806 of yacc.c */
5275 michael 1329 #line 1801 "conf_parser.y"
5276 michael 913 {
5277 michael 967 if (conf_parser_ctx.pass == 2)
5278 michael 913 {
5279     MyFree(resv_reason);
5280     resv_reason = NULL;
5281     }
5282     }
5283     break;
5284    
5285 michael 1324 case 291:
5286 michael 967
5287 michael 1133 /* Line 1806 of yacc.c */
5288 michael 1329 #line 1813 "conf_parser.y"
5289 michael 913 {
5290 michael 967 if (conf_parser_ctx.pass == 2)
5291 michael 913 {
5292     MyFree(resv_reason);
5293     DupString(resv_reason, yylval.string);
5294     }
5295     }
5296     break;
5297    
5298 michael 1324 case 292:
5299 michael 967
5300 michael 1133 /* Line 1806 of yacc.c */
5301 michael 1329 #line 1822 "conf_parser.y"
5302 michael 913 {
5303 michael 967 if (conf_parser_ctx.pass == 2)
5304 michael 913 {
5305     if (IsChanPrefix(*yylval.string))
5306     {
5307     char def_reason[] = "No reason";
5308    
5309     create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5310     }
5311     }
5312     /* ignore it for now.. but we really should make a warning if
5313     * its an erroneous name --fl_ */
5314     }
5315     break;
5316    
5317 michael 1324 case 293:
5318 michael 967
5319 michael 1133 /* Line 1806 of yacc.c */
5320 michael 1329 #line 1837 "conf_parser.y"
5321 michael 913 {
5322 michael 967 if (conf_parser_ctx.pass == 2)
5323 michael 913 {
5324     char def_reason[] = "No reason";
5325    
5326     create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5327     }
5328     }
5329     break;
5330    
5331 michael 1324 case 299:
5332 michael 967
5333 michael 1133 /* Line 1806 of yacc.c */
5334 michael 1329 #line 1855 "conf_parser.y"
5335 michael 913 {
5336 michael 967 if (conf_parser_ctx.pass == 2)
5337 michael 913 {
5338 michael 1157 if (valid_servname(yylval.string))
5339     {
5340     yy_conf = make_conf_item(SERVICE_TYPE);
5341     DupString(yy_conf->name, yylval.string);
5342     }
5343     }
5344     }
5345     break;
5346    
5347 michael 1324 case 300:
5348 michael 1157
5349     /* Line 1806 of yacc.c */
5350 michael 1329 #line 1870 "conf_parser.y"
5351 michael 1157 {
5352     if (conf_parser_ctx.pass == 2)
5353     {
5354 michael 913 yy_conf = make_conf_item(ULINE_TYPE);
5355     yy_match_item = map_to_conf(yy_conf);
5356     yy_match_item->action = SHARED_ALL;
5357     }
5358     }
5359     break;
5360    
5361 michael 1324 case 301:
5362 michael 967
5363 michael 1133 /* Line 1806 of yacc.c */
5364 michael 1329 #line 1878 "conf_parser.y"
5365 michael 913 {
5366 michael 967 if (conf_parser_ctx.pass == 2)
5367 michael 913 {
5368     yy_conf = NULL;
5369     }
5370     }
5371     break;
5372    
5373 michael 1324 case 308:
5374 michael 967
5375 michael 1133 /* Line 1806 of yacc.c */
5376 michael 1329 #line 1889 "conf_parser.y"
5377 michael 913 {
5378 michael 967 if (conf_parser_ctx.pass == 2)
5379 michael 913 {
5380     MyFree(yy_conf->name);
5381     DupString(yy_conf->name, yylval.string);
5382     }
5383     }
5384     break;
5385    
5386 michael 1324 case 309:
5387 michael 967
5388 michael 1133 /* Line 1806 of yacc.c */
5389 michael 1329 #line 1898 "conf_parser.y"
5390 michael 913 {
5391 michael 967 if (conf_parser_ctx.pass == 2)
5392 michael 913 {
5393     struct split_nuh_item nuh;
5394    
5395     nuh.nuhmask = yylval.string;
5396     nuh.nickptr = NULL;
5397     nuh.userptr = userbuf;
5398     nuh.hostptr = hostbuf;
5399    
5400     nuh.nicksize = 0;
5401     nuh.usersize = sizeof(userbuf);
5402     nuh.hostsize = sizeof(hostbuf);
5403    
5404     split_nuh(&nuh);
5405    
5406     DupString(yy_match_item->user, userbuf);
5407     DupString(yy_match_item->host, hostbuf);
5408     }
5409     }
5410     break;
5411    
5412 michael 1324 case 310:
5413 michael 967
5414 michael 1133 /* Line 1806 of yacc.c */
5415 michael 1329 #line 1920 "conf_parser.y"
5416 michael 913 {
5417 michael 967 if (conf_parser_ctx.pass == 2)
5418 michael 913 yy_match_item->action = 0;
5419     }
5420     break;
5421    
5422 michael 1324 case 314:
5423 michael 967
5424 michael 1133 /* Line 1806 of yacc.c */
5425 michael 1329 #line 1927 "conf_parser.y"
5426 michael 913 {
5427 michael 967 if (conf_parser_ctx.pass == 2)
5428 michael 1250 yy_match_item->action |= SHARED_KLINE;
5429 michael 913 }
5430     break;
5431    
5432 michael 1324 case 315:
5433 michael 967
5434 michael 1133 /* Line 1806 of yacc.c */
5435 michael 1329 #line 1931 "conf_parser.y"
5436 michael 913 {
5437 michael 967 if (conf_parser_ctx.pass == 2)
5438 michael 1301 yy_match_item->action |= SHARED_UNKLINE;
5439 michael 913 }
5440     break;
5441    
5442 michael 1324 case 316:
5443 michael 967
5444 michael 1133 /* Line 1806 of yacc.c */
5445 michael 1329 #line 1935 "conf_parser.y"
5446 michael 913 {
5447 michael 967 if (conf_parser_ctx.pass == 2)
5448 michael 1301 yy_match_item->action |= SHARED_DLINE;
5449 michael 913 }
5450     break;
5451    
5452 michael 1324 case 317:
5453 michael 967
5454 michael 1133 /* Line 1806 of yacc.c */
5455 michael 1329 #line 1939 "conf_parser.y"
5456 michael 913 {
5457 michael 967 if (conf_parser_ctx.pass == 2)
5458 michael 1301 yy_match_item->action |= SHARED_UNDLINE;
5459 michael 913 }
5460     break;
5461    
5462 michael 1324 case 318:
5463 michael 967
5464 michael 1133 /* Line 1806 of yacc.c */
5465 michael 1329 #line 1943 "conf_parser.y"
5466 michael 913 {
5467 michael 967 if (conf_parser_ctx.pass == 2)
5468 michael 1301 yy_match_item->action |= SHARED_XLINE;
5469 michael 913 }
5470     break;
5471    
5472 michael 1324 case 319:
5473 michael 967
5474 michael 1133 /* Line 1806 of yacc.c */
5475 michael 1329 #line 1947 "conf_parser.y"
5476 michael 913 {
5477 michael 967 if (conf_parser_ctx.pass == 2)
5478 michael 1250 yy_match_item->action |= SHARED_UNXLINE;
5479 michael 913 }
5480     break;
5481    
5482 michael 1324 case 320:
5483 michael 967
5484 michael 1133 /* Line 1806 of yacc.c */
5485 michael 1329 #line 1951 "conf_parser.y"
5486 michael 913 {
5487 michael 967 if (conf_parser_ctx.pass == 2)
5488 michael 1250 yy_match_item->action |= SHARED_RESV;
5489 michael 913 }
5490     break;
5491    
5492 michael 1324 case 321:
5493 michael 967
5494 michael 1133 /* Line 1806 of yacc.c */
5495 michael 1329 #line 1955 "conf_parser.y"
5496 michael 913 {
5497 michael 967 if (conf_parser_ctx.pass == 2)
5498 michael 1250 yy_match_item->action |= SHARED_UNRESV;
5499 michael 913 }
5500     break;
5501    
5502 michael 1324 case 322:
5503 michael 967
5504 michael 1133 /* Line 1806 of yacc.c */
5505 michael 1329 #line 1959 "conf_parser.y"
5506 michael 913 {
5507 michael 967 if (conf_parser_ctx.pass == 2)
5508 michael 1250 yy_match_item->action |= SHARED_LOCOPS;
5509 michael 913 }
5510     break;
5511    
5512 michael 1324 case 323:
5513 michael 967
5514 michael 1133 /* Line 1806 of yacc.c */
5515 michael 1329 #line 1963 "conf_parser.y"
5516 michael 913 {
5517 michael 967 if (conf_parser_ctx.pass == 2)
5518 michael 1250 yy_match_item->action = SHARED_ALL;
5519     }
5520     break;
5521    
5522 michael 1324 case 324:
5523 michael 1250
5524     /* Line 1806 of yacc.c */
5525 michael 1329 #line 1972 "conf_parser.y"
5526 michael 1250 {
5527     if (conf_parser_ctx.pass == 2)
5528 michael 913 {
5529     yy_conf = make_conf_item(CLUSTER_TYPE);
5530     yy_conf->flags = SHARED_ALL;
5531     }
5532     }
5533     break;
5534    
5535 michael 1324 case 325:
5536 michael 967
5537 michael 1133 /* Line 1806 of yacc.c */
5538 michael 1329 #line 1979 "conf_parser.y"
5539 michael 913 {
5540 michael 967 if (conf_parser_ctx.pass == 2)
5541 michael 913 {
5542     if (yy_conf->name == NULL)
5543     DupString(yy_conf->name, "*");
5544     yy_conf = NULL;
5545     }
5546     }
5547     break;
5548    
5549 michael 1324 case 331:
5550 michael 967
5551 michael 1133 /* Line 1806 of yacc.c */
5552 michael 1329 #line 1992 "conf_parser.y"
5553 michael 913 {
5554 michael 967 if (conf_parser_ctx.pass == 2)
5555 michael 913 DupString(yy_conf->name, yylval.string);
5556     }
5557     break;
5558    
5559 michael 1324 case 332:
5560 michael 967
5561 michael 1133 /* Line 1806 of yacc.c */
5562 michael 1329 #line 1998 "conf_parser.y"
5563 michael 913 {
5564 michael 967 if (conf_parser_ctx.pass == 2)
5565 michael 913 yy_conf->flags = 0;
5566     }
5567     break;
5568    
5569 michael 1324 case 336:
5570 michael 967
5571 michael 1133 /* Line 1806 of yacc.c */
5572 michael 1329 #line 2005 "conf_parser.y"
5573 michael 913 {
5574 michael 967 if (conf_parser_ctx.pass == 2)
5575 michael 1250 yy_conf->flags |= SHARED_KLINE;
5576 michael 913 }
5577     break;
5578    
5579 michael 1324 case 337:
5580 michael 967
5581 michael 1133 /* Line 1806 of yacc.c */
5582 michael 1329 #line 2009 "conf_parser.y"
5583 michael 913 {
5584 michael 967 if (conf_parser_ctx.pass == 2)
5585 michael 1250 yy_conf->flags |= SHARED_UNKLINE;
5586 michael 913 }
5587     break;
5588    
5589 michael 1324 case 338:
5590 michael 967
5591 michael 1133 /* Line 1806 of yacc.c */
5592 michael 1329 #line 2013 "conf_parser.y"
5593 michael 913 {
5594 michael 967 if (conf_parser_ctx.pass == 2)
5595 michael 1301 yy_conf->flags |= SHARED_DLINE;
5596 michael 913 }
5597     break;
5598    
5599 michael 1324 case 339:
5600 michael 967
5601 michael 1133 /* Line 1806 of yacc.c */
5602 michael 1329 #line 2017 "conf_parser.y"
5603 michael 913 {
5604 michael 967 if (conf_parser_ctx.pass == 2)
5605 michael 1301 yy_conf->flags |= SHARED_UNDLINE;
5606 michael 913 }
5607     break;
5608    
5609 michael 1324 case 340:
5610 michael 967
5611 michael 1133 /* Line 1806 of yacc.c */
5612 michael 1329 #line 2021 "conf_parser.y"
5613 michael 913 {
5614 michael 967 if (conf_parser_ctx.pass == 2)
5615 michael 1301 yy_conf->flags |= SHARED_XLINE;
5616 michael 913 }
5617     break;
5618    
5619 michael 1324 case 341:
5620 michael 967
5621 michael 1133 /* Line 1806 of yacc.c */
5622 michael 1329 #line 2025 "conf_parser.y"
5623 michael 913 {
5624 michael 967 if (conf_parser_ctx.pass == 2)
5625 michael 1301 yy_conf->flags |= SHARED_UNXLINE;
5626 michael 913 }
5627     break;
5628    
5629 michael 1324 case 342:
5630 michael 967
5631 michael 1133 /* Line 1806 of yacc.c */
5632 michael 1329 #line 2029 "conf_parser.y"
5633 michael 913 {
5634 michael 967 if (conf_parser_ctx.pass == 2)
5635 michael 1301 yy_conf->flags |= SHARED_RESV;
5636 michael 913 }
5637     break;
5638    
5639 michael 1324 case 343:
5640 michael 967
5641 michael 1133 /* Line 1806 of yacc.c */
5642 michael 1329 #line 2033 "conf_parser.y"
5643 michael 913 {
5644 michael 967 if (conf_parser_ctx.pass == 2)
5645 michael 1250 yy_conf->flags |= SHARED_UNRESV;
5646 michael 913 }
5647     break;
5648    
5649 michael 1324 case 344:
5650 michael 967
5651 michael 1133 /* Line 1806 of yacc.c */
5652 michael 1329 #line 2037 "conf_parser.y"
5653 michael 913 {
5654 michael 967 if (conf_parser_ctx.pass == 2)
5655 michael 1250 yy_conf->flags |= SHARED_LOCOPS;
5656 michael 913 }
5657     break;
5658    
5659 michael 1324 case 345:
5660 michael 967
5661 michael 1133 /* Line 1806 of yacc.c */
5662 michael 1329 #line 2041 "conf_parser.y"
5663 michael 913 {
5664 michael 967 if (conf_parser_ctx.pass == 2)
5665 michael 1250 yy_conf->flags = SHARED_ALL;
5666     }
5667     break;
5668    
5669 michael 1324 case 346:
5670 michael 1250
5671     /* Line 1806 of yacc.c */
5672 michael 1329 #line 2050 "conf_parser.y"
5673 michael 1250 {
5674     if (conf_parser_ctx.pass == 2)
5675 michael 913 {
5676     yy_conf = make_conf_item(SERVER_TYPE);
5677 michael 1285 yy_aconf = map_to_conf(yy_conf);
5678    
5679 michael 913 /* defaults */
5680     yy_aconf->port = PORTNUM;
5681     }
5682     else
5683     {
5684     MyFree(class_name);
5685     class_name = NULL;
5686     }
5687     }
5688     break;
5689    
5690 michael 1324 case 347:
5691 michael 967
5692 michael 1133 /* Line 1806 of yacc.c */
5693 michael 1329 #line 2065 "conf_parser.y"
5694 michael 913 {
5695 michael 967 if (conf_parser_ctx.pass == 2)
5696 michael 913 {
5697     struct CollectItem *yy_hconf=NULL;
5698     struct CollectItem *yy_lconf=NULL;
5699 michael 1302 dlink_node *ptr = NULL, *next_ptr = NULL;
5700    
5701 michael 913 if (yy_aconf->host &&
5702 michael 1302 yy_aconf->passwd && yy_aconf->spasswd)
5703     {
5704     if (conf_add_server(yy_conf, class_name) == -1)
5705     {
5706     delete_conf_item(yy_conf);
5707     yy_conf = NULL;
5708     yy_aconf = NULL;
5709     }
5710     }
5711     else
5712     {
5713     /* Even if yy_conf ->name is NULL
5714     * should still unhook any hub/leaf confs still pending
5715     */
5716     unhook_hub_leaf_confs();
5717 michael 913
5718 michael 1302 if (yy_conf->name != NULL)
5719     {
5720     if (yy_aconf->host == NULL)
5721     yyerror("Ignoring connect block -- missing host");
5722     else if (!yy_aconf->passwd || !yy_aconf->spasswd)
5723     yyerror("Ignoring connect block -- missing password");
5724     }
5725 michael 913
5726    
5727 michael 1302 /* XXX
5728     * This fixes a try_connections() core (caused by invalid class_ptr
5729     * pointers) reported by metalrock. That's an ugly fix, but there
5730     * is currently no better way. The entire config subsystem needs an
5731     * rewrite ASAP. make_conf_item() shouldn't really add things onto
5732     * a doubly linked list immediately without any sanity checks! -Michael
5733     */
5734     delete_conf_item(yy_conf);
5735 michael 913
5736 michael 1302 yy_aconf = NULL;
5737     yy_conf = NULL;
5738     }
5739 michael 913
5740     /*
5741     * yy_conf is still pointing at the server that is having
5742     * a connect block built for it. This means, y_aconf->name
5743     * points to the actual irc name this server will be known as.
5744     * Now this new server has a set or even just one hub_mask (or leaf_mask)
5745     * given in the link list at yy_hconf. Fill in the HUB confs
5746     * from this link list now.
5747     */
5748     DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
5749     {
5750     struct ConfItem *new_hub_conf;
5751     struct MatchItem *match_item;
5752    
5753     yy_hconf = ptr->data;
5754    
5755     /* yy_conf == NULL is a fatal error for this connect block! */
5756     if ((yy_conf != NULL) && (yy_conf->name != NULL))
5757     {
5758     new_hub_conf = make_conf_item(HUB_TYPE);
5759     match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
5760     DupString(new_hub_conf->name, yy_conf->name);
5761     if (yy_hconf->user != NULL)
5762     DupString(match_item->user, yy_hconf->user);
5763     else
5764     DupString(match_item->user, "*");
5765     if (yy_hconf->host != NULL)
5766     DupString(match_item->host, yy_hconf->host);
5767     else
5768     DupString(match_item->host, "*");
5769     }
5770     dlinkDelete(&yy_hconf->node, &hub_conf_list);
5771     free_collect_item(yy_hconf);
5772     }
5773    
5774     /* Ditto for the LEAF confs */
5775    
5776     DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
5777     {
5778     struct ConfItem *new_leaf_conf;
5779     struct MatchItem *match_item;
5780    
5781     yy_lconf = ptr->data;
5782    
5783     if ((yy_conf != NULL) && (yy_conf->name != NULL))
5784     {
5785     new_leaf_conf = make_conf_item(LEAF_TYPE);
5786     match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
5787     DupString(new_leaf_conf->name, yy_conf->name);
5788     if (yy_lconf->user != NULL)
5789     DupString(match_item->user, yy_lconf->user);
5790     else
5791     DupString(match_item->user, "*");
5792     if (yy_lconf->host != NULL)
5793     DupString(match_item->host, yy_lconf->host);
5794     else
5795     DupString(match_item->host, "*");
5796     }
5797     dlinkDelete(&yy_lconf->node, &leaf_conf_list);
5798     free_collect_item(yy_lconf);
5799     }
5800     MyFree(class_name);
5801     class_name = NULL;
5802     yy_conf = NULL;
5803     yy_aconf = NULL;
5804     }
5805     }
5806     break;
5807    
5808 michael 1324 case 364:
5809 michael 967
5810 michael 1133 /* Line 1806 of yacc.c */
5811 michael 1329 #line 2187 "conf_parser.y"
5812 michael 913 {
5813 michael 967 if (conf_parser_ctx.pass == 2)
5814 michael 913 {
5815     if (yy_conf->name != NULL)
5816     yyerror("Multiple connect name entry");
5817    
5818     MyFree(yy_conf->name);
5819     DupString(yy_conf->name, yylval.string);
5820     }
5821     }
5822     break;
5823    
5824 michael 1324 case 365:
5825 michael 967
5826 michael 1133 /* Line 1806 of yacc.c */
5827 michael 1329 #line 2199 "conf_parser.y"
5828 michael 913 {
5829 michael 967 if (conf_parser_ctx.pass == 2)
5830 michael 913 {
5831     MyFree(yy_aconf->host);
5832     DupString(yy_aconf->host, yylval.string);
5833     }
5834     }
5835     break;
5836    
5837 michael 1324 case 366:
5838 michael 967
5839 michael 1133 /* Line 1806 of yacc.c */
5840 michael 1329 #line 2208 "conf_parser.y"
5841 michael 913 {
5842 michael 967 if (conf_parser_ctx.pass == 2)
5843 michael 913 {
5844     struct addrinfo hints, *res;
5845    
5846     memset(&hints, 0, sizeof(hints));
5847    
5848     hints.ai_family = AF_UNSPEC;
5849     hints.ai_socktype = SOCK_STREAM;
5850     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5851    
5852 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
5853 michael 1247 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
5854 michael 913 else
5855     {
5856     assert(res != NULL);
5857    
5858     memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
5859     yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
5860     yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
5861 michael 1123 freeaddrinfo(res);
5862 michael 913 }
5863     }
5864     }
5865     break;
5866    
5867 michael 1324 case 367:
5868 michael 967
5869 michael 1133 /* Line 1806 of yacc.c */
5870 michael 1329 #line 2234 "conf_parser.y"
5871 michael 913 {
5872 michael 967 if (conf_parser_ctx.pass == 2)
5873 michael 913 {
5874     if ((yyvsp[(3) - (4)].string)[0] == ':')
5875     yyerror("Server passwords cannot begin with a colon");
5876     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5877     yyerror("Server passwords cannot contain spaces");
5878     else {
5879     if (yy_aconf->spasswd != NULL)
5880     memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
5881    
5882     MyFree(yy_aconf->spasswd);
5883     DupString(yy_aconf->spasswd, yylval.string);
5884     }
5885     }
5886     }
5887     break;
5888    
5889 michael 1324 case 368:
5890 michael 967
5891 michael 1133 /* Line 1806 of yacc.c */
5892 michael 1329 #line 2252 "conf_parser.y"
5893 michael 913 {
5894 michael 967 if (conf_parser_ctx.pass == 2)
5895 michael 913 {
5896     if ((yyvsp[(3) - (4)].string)[0] == ':')
5897     yyerror("Server passwords cannot begin with a colon");
5898     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5899     yyerror("Server passwords cannot contain spaces");
5900     else {
5901     if (yy_aconf->passwd != NULL)
5902     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5903    
5904     MyFree(yy_aconf->passwd);
5905     DupString(yy_aconf->passwd, yylval.string);
5906     }
5907     }
5908     }
5909     break;
5910    
5911 michael 1324 case 369:
5912 michael 967
5913 michael 1133 /* Line 1806 of yacc.c */
5914 michael 1329 #line 2270 "conf_parser.y"
5915 michael 913 {
5916 michael 967 if (conf_parser_ctx.pass == 2)
5917 michael 913 yy_aconf->port = (yyvsp[(3) - (4)].number);
5918     }
5919     break;
5920    
5921 michael 1324 case 370:
5922 michael 967
5923 michael 1133 /* Line 1806 of yacc.c */
5924 michael 1329 #line 2276 "conf_parser.y"
5925 michael 913 {
5926 michael 967 if (conf_parser_ctx.pass == 2)
5927 michael 913 yy_aconf->aftype = AF_INET;
5928     }
5929     break;
5930    
5931 michael 1324 case 371:
5932 michael 967
5933 michael 1133 /* Line 1806 of yacc.c */
5934 michael 1329 #line 2280 "conf_parser.y"
5935 michael 913 {
5936     #ifdef IPV6
5937 michael 967 if (conf_parser_ctx.pass == 2)
5938 michael 913 yy_aconf->aftype = AF_INET6;
5939     #endif
5940     }
5941     break;
5942    
5943 michael 1324 case 372:
5944 michael 967
5945 michael 1133 /* Line 1806 of yacc.c */
5946 michael 1329 #line 2288 "conf_parser.y"
5947 michael 913 {
5948     }
5949     break;
5950    
5951 michael 1324 case 376:
5952 michael 967
5953 michael 1133 /* Line 1806 of yacc.c */
5954 michael 1329 #line 2293 "conf_parser.y"
5955 michael 913 {
5956 michael 967 if (conf_parser_ctx.pass == 2)
5957 michael 1228 SetConfAllowAutoConn(yy_aconf);
5958 michael 913 }
5959     break;
5960    
5961 michael 1324 case 377:
5962 michael 967
5963 michael 1133 /* Line 1806 of yacc.c */
5964 michael 1329 #line 2297 "conf_parser.y"
5965 michael 913 {
5966 michael 967 if (conf_parser_ctx.pass == 2)
5967 michael 1228 SetConfAwayBurst(yy_aconf);
5968 michael 913 }
5969     break;
5970    
5971 michael 1324 case 378:
5972 michael 967
5973 michael 1133 /* Line 1806 of yacc.c */
5974 michael 1329 #line 2301 "conf_parser.y"
5975 michael 913 {
5976 michael 967 if (conf_parser_ctx.pass == 2)
5977 michael 1228 SetConfTopicBurst(yy_aconf);
5978 michael 913 }
5979     break;
5980    
5981 michael 1324 case 379:
5982 michael 967
5983 michael 1133 /* Line 1806 of yacc.c */
5984 michael 1329 #line 2305 "conf_parser.y"
5985 michael 913 {
5986 michael 967 if (conf_parser_ctx.pass == 2)
5987 michael 1303 SetConfSSL(yy_aconf);
5988     }
5989     break;
5990    
5991 michael 1324 case 380:
5992 michael 1303
5993     /* Line 1806 of yacc.c */
5994 michael 1329 #line 2311 "conf_parser.y"
5995 michael 1303 {
5996     if (conf_parser_ctx.pass == 2)
5997 michael 913 {
5998     if (yylval.number)
5999     yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
6000     else
6001     yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
6002     }
6003     }
6004     break;
6005    
6006 michael 1324 case 381:
6007 michael 967
6008 michael 1133 /* Line 1806 of yacc.c */
6009 michael 1329 #line 2322 "conf_parser.y"
6010 michael 913 {
6011 michael 967 if (conf_parser_ctx.pass == 2)
6012 michael 913 {
6013     struct CollectItem *yy_tmp;
6014    
6015     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6016     DupString(yy_tmp->host, yylval.string);
6017     DupString(yy_tmp->user, "*");
6018     dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6019     }
6020     }
6021     break;
6022    
6023 michael 1324 case 382:
6024 michael 967
6025 michael 1133 /* Line 1806 of yacc.c */
6026 michael 1329 #line 2335 "conf_parser.y"
6027 michael 913 {
6028 michael 967 if (conf_parser_ctx.pass == 2)
6029 michael 913 {
6030     struct CollectItem *yy_tmp;
6031    
6032     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6033     DupString(yy_tmp->host, yylval.string);
6034     DupString(yy_tmp->user, "*");
6035     dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6036     }
6037     }
6038     break;
6039    
6040 michael 1324 case 383:
6041 michael 967
6042 michael 1133 /* Line 1806 of yacc.c */
6043 michael 1329 #line 2348 "conf_parser.y"
6044 michael 913 {
6045 michael 967 if (conf_parser_ctx.pass == 2)
6046 michael 913 {
6047     MyFree(class_name);
6048     DupString(class_name, yylval.string);
6049     }
6050     }
6051     break;
6052    
6053 michael 1324 case 384:
6054 michael 967
6055 michael 1133 /* Line 1806 of yacc.c */
6056 michael 1329 #line 2357 "conf_parser.y"
6057 michael 913 {
6058 michael 1306 #ifdef HAVE_LIBCRYPTO
6059 michael 967 if (conf_parser_ctx.pass == 2)
6060 michael 913 {
6061 michael 1306 MyFree(yy_aconf->cipher_list);
6062     DupString(yy_aconf->cipher_list, yylval.string);
6063     }
6064     #else
6065     if (conf_parser_ctx.pass == 2)
6066     yyerror("Ignoring connect::ciphers -- no OpenSSL support");
6067     #endif
6068     }
6069     break;
6070    
6071 michael 1324 case 385:
6072 michael 1306
6073     /* Line 1806 of yacc.c */
6074 michael 1329 #line 2375 "conf_parser.y"
6075 michael 1306 {
6076     if (conf_parser_ctx.pass == 2)
6077     {
6078 michael 913 userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6079     regex_ban = 0;
6080     }
6081     }
6082     break;
6083    
6084 michael 1324 case 386:
6085 michael 967
6086 michael 1133 /* Line 1806 of yacc.c */
6087 michael 1329 #line 2382 "conf_parser.y"
6088 michael 913 {
6089 michael 967 if (conf_parser_ctx.pass == 2)
6090 michael 913 {
6091     if (userbuf[0] && hostbuf[0])
6092     {
6093     if (regex_ban)
6094     {
6095 michael 1009 #ifdef HAVE_LIBPCRE
6096 michael 1011 void *exp_user = NULL;
6097     void *exp_host = NULL;
6098 michael 913 const char *errptr = NULL;
6099    
6100     if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6101     !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6102     {
6103 michael 1247 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
6104 michael 913 errptr);
6105     break;
6106     }
6107    
6108 michael 1005 yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6109 michael 913 yy_aconf->regexuser = exp_user;
6110     yy_aconf->regexhost = exp_host;
6111    
6112     DupString(yy_aconf->user, userbuf);
6113     DupString(yy_aconf->host, hostbuf);
6114    
6115     if (reasonbuf[0])
6116     DupString(yy_aconf->reason, reasonbuf);
6117     else
6118     DupString(yy_aconf->reason, "No reason");
6119 michael 1009 #else
6120 michael 1247 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
6121 michael 1009 break;
6122     #endif
6123 michael 913 }
6124     else
6125     {
6126 michael 1005 yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6127 michael 913
6128     DupString(yy_aconf->user, userbuf);
6129     DupString(yy_aconf->host, hostbuf);
6130    
6131     if (reasonbuf[0])
6132     DupString(yy_aconf->reason, reasonbuf);
6133     else
6134     DupString(yy_aconf->reason, "No reason");
6135     add_conf_by_address(CONF_KILL, yy_aconf);
6136     }
6137     }
6138    
6139     yy_aconf = NULL;
6140     }
6141     }
6142     break;
6143    
6144 michael 1324 case 387:
6145 michael 967
6146 michael 1133 /* Line 1806 of yacc.c */
6147 michael 1329 #line 2438 "conf_parser.y"
6148 michael 913 {
6149     }
6150     break;
6151    
6152 michael 1324 case 391:
6153 michael 967
6154 michael 1133 /* Line 1806 of yacc.c */
6155 michael 1329 #line 2443 "conf_parser.y"
6156 michael 913 {
6157 michael 967 if (conf_parser_ctx.pass == 2)
6158 michael 913 regex_ban = 1;
6159     }
6160     break;
6161    
6162 michael 1324 case 398:
6163 michael 967
6164 michael 1133 /* Line 1806 of yacc.c */
6165 michael 1329 #line 2452 "conf_parser.y"
6166 michael 913 {
6167 michael 967 if (conf_parser_ctx.pass == 2)
6168 michael 913 {
6169     struct split_nuh_item nuh;
6170    
6171     nuh.nuhmask = yylval.string;
6172     nuh.nickptr = NULL;
6173     nuh.userptr = userbuf;
6174     nuh.hostptr = hostbuf;
6175    
6176     nuh.nicksize = 0;
6177     nuh.usersize = sizeof(userbuf);
6178     nuh.hostsize = sizeof(hostbuf);
6179    
6180     split_nuh(&nuh);
6181     }
6182     }
6183     break;
6184    
6185 michael 1324 case 399:
6186 michael 967
6187 michael 1133 /* Line 1806 of yacc.c */
6188 michael 1329 #line 2471 "conf_parser.y"
6189 michael 913 {
6190 michael 967 if (conf_parser_ctx.pass == 2)
6191 michael 913 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6192     }
6193     break;
6194    
6195 michael 1324 case 400:
6196 michael 967
6197 michael 1133 /* Line 1806 of yacc.c */
6198 michael 1329 #line 2480 "conf_parser.y"
6199 michael 913 {
6200 michael 967 if (conf_parser_ctx.pass == 2)
6201 michael 1005 hostbuf[0] = reasonbuf[0] = '\0';
6202 michael 913 }
6203     break;
6204    
6205 michael 1324 case 401:
6206 michael 967
6207 michael 1133 /* Line 1806 of yacc.c */
6208 michael 1329 #line 2484 "conf_parser.y"
6209 michael 913 {
6210 michael 967 if (conf_parser_ctx.pass == 2)
6211 michael 913 {
6212 michael 1005 if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
6213     {
6214     yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
6215     DupString(yy_aconf->host, hostbuf);
6216    
6217     if (reasonbuf[0])
6218     DupString(yy_aconf->reason, reasonbuf);
6219     else
6220     DupString(yy_aconf->reason, "No reason");
6221 michael 913 add_conf_by_address(CONF_DLINE, yy_aconf);
6222 michael 1005 yy_aconf = NULL;
6223     }
6224 michael 913 }
6225     }
6226     break;
6227    
6228 michael 1324 case 407:
6229 michael 967
6230 michael 1133 /* Line 1806 of yacc.c */
6231 michael 1329 #line 2506 "conf_parser.y"
6232 michael 913 {
6233 michael 967 if (conf_parser_ctx.pass == 2)
6234 michael 1005 strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
6235 michael 913 }
6236     break;
6237    
6238 michael 1324 case 408:
6239 michael 967
6240 michael 1133 /* Line 1806 of yacc.c */
6241 michael 1329 #line 2512 "conf_parser.y"
6242 michael 913 {
6243 michael 967 if (conf_parser_ctx.pass == 2)
6244 michael 1005 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6245 michael 913 }
6246     break;
6247    
6248 michael 1324 case 414:
6249 michael 967
6250 michael 1133 /* Line 1806 of yacc.c */
6251 michael 1329 #line 2526 "conf_parser.y"
6252 michael 913 {
6253 michael 967 if (conf_parser_ctx.pass == 2)
6254 michael 913 {
6255     if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
6256     {
6257 michael 1005 yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
6258 michael 913 DupString(yy_aconf->host, yylval.string);
6259    
6260     add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
6261     yy_aconf = NULL;
6262     }
6263     }
6264     }
6265     break;
6266    
6267 michael 1324 case 415:
6268 michael 967
6269 michael 1133 /* Line 1806 of yacc.c */
6270 michael 1329 #line 2544 "conf_parser.y"
6271 michael 913 {
6272 michael 967 if (conf_parser_ctx.pass == 2)
6273 michael 913 {
6274     regex_ban = 0;
6275     reasonbuf[0] = gecos_name[0] = '\0';
6276     }
6277     }
6278     break;
6279    
6280 michael 1324 case 416:
6281 michael 967
6282 michael 1133 /* Line 1806 of yacc.c */
6283 michael 1329 #line 2551 "conf_parser.y"
6284 michael 913 {
6285 michael 967 if (conf_parser_ctx.pass == 2)
6286 michael 913 {
6287     if (gecos_name[0])
6288     {
6289     if (regex_ban)
6290     {
6291 michael 1009 #ifdef HAVE_LIBPCRE
6292 michael 1011 void *exp_p = NULL;
6293 michael 913 const char *errptr = NULL;
6294    
6295     if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
6296     {
6297 michael 1247 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
6298 michael 913 errptr);
6299     break;
6300     }
6301    
6302     yy_conf = make_conf_item(RXLINE_TYPE);
6303     yy_conf->regexpname = exp_p;
6304 michael 1009 #else
6305 michael 1247 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
6306 michael 1009 break;
6307     #endif
6308 michael 913 }
6309     else
6310     yy_conf = make_conf_item(XLINE_TYPE);
6311    
6312     yy_match_item = map_to_conf(yy_conf);
6313     DupString(yy_conf->name, gecos_name);
6314    
6315     if (reasonbuf[0])
6316     DupString(yy_match_item->reason, reasonbuf);
6317     else
6318     DupString(yy_match_item->reason, "No reason");
6319     }
6320     }
6321     }
6322     break;
6323    
6324 michael 1324 case 417:
6325 michael 967
6326 michael 1133 /* Line 1806 of yacc.c */
6327 michael 1329 #line 2591 "conf_parser.y"
6328 michael 913 {
6329     }
6330     break;
6331    
6332 michael 1324 case 421:
6333 michael 967
6334 michael 1133 /* Line 1806 of yacc.c */
6335 michael 1329 #line 2596 "conf_parser.y"
6336 michael 913 {
6337 michael 967 if (conf_parser_ctx.pass == 2)
6338 michael 913 regex_ban = 1;
6339     }
6340     break;
6341    
6342 michael 1324 case 428:
6343 michael 967
6344 michael 1133 /* Line 1806 of yacc.c */
6345 michael 1329 #line 2605 "conf_parser.y"
6346 michael 913 {
6347 michael 967 if (conf_parser_ctx.pass == 2)
6348 michael 913 strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
6349     }
6350     break;
6351    
6352 michael 1324 case 429:
6353 michael 967
6354 michael 1133 /* Line 1806 of yacc.c */
6355 michael 1329 #line 2611 "conf_parser.y"
6356 michael 913 {
6357 michael 967 if (conf_parser_ctx.pass == 2)
6358 michael 913 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6359     }
6360     break;
6361    
6362 michael 1324 case 485:
6363 michael 1118
6364 michael 1133 /* Line 1806 of yacc.c */
6365 michael 1329 #line 2655 "conf_parser.y"
6366 michael 1118 {
6367     ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
6368     }
6369     break;
6370    
6371 michael 1324 case 486:
6372 michael 1118
6373 michael 1133 /* Line 1806 of yacc.c */
6374 michael 1329 #line 2660 "conf_parser.y"
6375 michael 1118 {
6376     ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
6377     }
6378     break;
6379    
6380 michael 1324 case 487:
6381 michael 967
6382 michael 1133 /* Line 1806 of yacc.c */
6383 michael 1329 #line 2665 "conf_parser.y"
6384 michael 913 {
6385 michael 1118 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
6386 michael 913 }
6387     break;
6388    
6389 michael 1324 case 488:
6390 michael 967
6391 michael 1133 /* Line 1806 of yacc.c */
6392 michael 1329 #line 2670 "conf_parser.y"
6393 michael 913 {
6394 michael 1118 ConfigFileEntry.use_whois_actually = yylval.number;
6395 michael 913 }
6396     break;
6397    
6398 michael 1324 case 489:
6399 michael 967
6400 michael 1133 /* Line 1806 of yacc.c */
6401 michael 1329 #line 2675 "conf_parser.y"
6402 michael 913 {
6403 michael 1118 GlobalSetOptions.rejecttime = yylval.number;
6404 michael 913 }
6405     break;
6406    
6407 michael 1324 case 490:
6408 michael 967
6409 michael 1133 /* Line 1806 of yacc.c */
6410 michael 1329 #line 2680 "conf_parser.y"
6411 michael 913 {
6412 michael 1118 ConfigFileEntry.tkline_expire_notices = yylval.number;
6413 michael 913 }
6414     break;
6415    
6416 michael 1324 case 491:
6417 michael 967
6418 michael 1133 /* Line 1806 of yacc.c */
6419 michael 1329 #line 2685 "conf_parser.y"
6420 michael 913 {
6421 michael 1118 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
6422 michael 913 }
6423     break;
6424    
6425 michael 1324 case 492:
6426 michael 967
6427 michael 1133 /* Line 1806 of yacc.c */
6428 michael 1329 #line 2690 "conf_parser.y"
6429 michael 913 {
6430 michael 1118 ConfigFileEntry.hide_spoof_ips = yylval.number;
6431 michael 913 }
6432     break;
6433    
6434 michael 1324 case 493:
6435 michael 967
6436 michael 1133 /* Line 1806 of yacc.c */
6437 michael 1329 #line 2695 "conf_parser.y"
6438 michael 913 {
6439 michael 1118 ConfigFileEntry.ignore_bogus_ts = yylval.number;
6440 michael 913 }
6441     break;
6442    
6443 michael 1324 case 494:
6444 michael 967
6445 michael 1133 /* Line 1806 of yacc.c */
6446 michael 1329 #line 2700 "conf_parser.y"
6447 michael 913 {
6448 michael 1118 ConfigFileEntry.disable_remote = yylval.number;
6449 michael 913 }
6450     break;
6451    
6452 michael 1324 case 495:
6453 michael 967
6454 michael 1133 /* Line 1806 of yacc.c */
6455 michael 1329 #line 2705 "conf_parser.y"
6456 michael 913 {
6457 michael 1118 ConfigFileEntry.failed_oper_notice = yylval.number;
6458 michael 913 }
6459     break;
6460    
6461 michael 1324 case 496:
6462 michael 967
6463 michael 1133 /* Line 1806 of yacc.c */
6464 michael 1329 #line 2710 "conf_parser.y"
6465 michael 913 {
6466 michael 1118 ConfigFileEntry.anti_nick_flood = yylval.number;
6467 michael 913 }
6468     break;
6469    
6470 michael 1324 case 497:
6471 michael 967
6472 michael 1133 /* Line 1806 of yacc.c */
6473 michael 1329 #line 2715 "conf_parser.y"
6474 michael 913 {
6475 michael 1118 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
6476 michael 913 }
6477     break;
6478    
6479 michael 1324 case 498:
6480 michael 967
6481 michael 1133 /* Line 1806 of yacc.c */
6482 michael 1329 #line 2720 "conf_parser.y"
6483 michael 913 {
6484 michael 1118 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
6485 michael 913 }
6486     break;
6487    
6488 michael 1324 case 499:
6489 michael 967
6490 michael 1133 /* Line 1806 of yacc.c */
6491 michael 1329 #line 2725 "conf_parser.y"
6492 michael 913 {
6493 michael 1118 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
6494 michael 913 }
6495     break;
6496    
6497 michael 1324 case 500:
6498 michael 967
6499 michael 1133 /* Line 1806 of yacc.c */
6500 michael 1329 #line 2730 "conf_parser.y"
6501 michael 913 {
6502 michael 1118 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
6503 michael 913 }
6504     break;
6505    
6506 michael 1324 case 501:
6507 michael 967
6508 michael 1133 /* Line 1806 of yacc.c */
6509 michael 1329 #line 2735 "conf_parser.y"
6510 michael 913 {
6511 michael 1118 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
6512 michael 913 }
6513     break;
6514    
6515 michael 1324 case 502:
6516 michael 967
6517 michael 1133 /* Line 1806 of yacc.c */
6518 michael 1329 #line 2740 "conf_parser.y"
6519 michael 913 {
6520 michael 1118 if (conf_parser_ctx.pass == 2)
6521     ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
6522 michael 913 }
6523     break;
6524    
6525 michael 1324 case 503:
6526 michael 967
6527 michael 1133 /* Line 1806 of yacc.c */
6528 michael 1329 #line 2746 "conf_parser.y"
6529 michael 913 {
6530 michael 1118 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
6531     {
6532 michael 1247 ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
6533     ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
6534     ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
6535 michael 1118 exit(0);
6536     }
6537 michael 913 }
6538     break;
6539    
6540 michael 1324 case 504:
6541 michael 967
6542 michael 1133 /* Line 1806 of yacc.c */
6543 michael 1329 #line 2757 "conf_parser.y"
6544 michael 913 {
6545 michael 1118 ConfigFileEntry.kline_with_reason = yylval.number;
6546 michael 913 }
6547     break;
6548    
6549 michael 1324 case 505:
6550 michael 967
6551 michael 1133 /* Line 1806 of yacc.c */
6552 michael 1329 #line 2762 "conf_parser.y"
6553 michael 913 {
6554 michael 1118 if (conf_parser_ctx.pass == 2)
6555 michael 913 {
6556 michael 1118 MyFree(ConfigFileEntry.kline_reason);
6557     DupString(ConfigFileEntry.kline_reason, yylval.string);
6558 michael 913 }
6559     }
6560     break;
6561    
6562 michael 1324 case 506:
6563 michael 967
6564 michael 1133 /* Line 1806 of yacc.c */
6565 michael 1329 #line 2771 "conf_parser.y"
6566 michael 913 {
6567 michael 1118 ConfigFileEntry.invisible_on_connect = yylval.number;
6568 michael 913 }
6569     break;
6570    
6571 michael 1324 case 507:
6572 michael 967
6573 michael 1133 /* Line 1806 of yacc.c */
6574 michael 1329 #line 2776 "conf_parser.y"
6575 michael 913 {
6576 michael 1118 ConfigFileEntry.warn_no_nline = yylval.number;
6577 michael 913 }
6578     break;
6579    
6580 michael 1324 case 508:
6581 michael 967
6582 michael 1133 /* Line 1806 of yacc.c */
6583 michael 1329 #line 2781 "conf_parser.y"
6584 michael 913 {
6585 michael 1118 ConfigFileEntry.stats_e_disabled = yylval.number;
6586 michael 913 }
6587     break;
6588    
6589 michael 1324 case 509:
6590 michael 967
6591 michael 1133 /* Line 1806 of yacc.c */
6592 michael 1329 #line 2786 "conf_parser.y"
6593 michael 913 {
6594 michael 1118 ConfigFileEntry.stats_o_oper_only = yylval.number;
6595 michael 913 }
6596     break;
6597    
6598 michael 1324 case 510:
6599 michael 967
6600 michael 1133 /* Line 1806 of yacc.c */
6601 michael 1329 #line 2791 "conf_parser.y"
6602 michael 913 {
6603 michael 1118 ConfigFileEntry.stats_P_oper_only = yylval.number;
6604 michael 913 }
6605     break;
6606    
6607 michael 1324 case 511:
6608 michael 967
6609 michael 1133 /* Line 1806 of yacc.c */
6610 michael 1329 #line 2796 "conf_parser.y"
6611 michael 913 {
6612 michael 1118 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
6613 michael 913 }
6614     break;
6615    
6616 michael 1324 case 512:
6617 michael 967
6618 michael 1133 /* Line 1806 of yacc.c */
6619 michael 1329 #line 2799 "conf_parser.y"
6620 michael 913 {
6621 michael 1118 ConfigFileEntry.stats_k_oper_only = 1;
6622 michael 913 }
6623     break;
6624    
6625 michael 1324 case 513:
6626 michael 967
6627 michael 1133 /* Line 1806 of yacc.c */
6628 michael 1329 #line 2804 "conf_parser.y"
6629 michael 913 {
6630 michael 1118 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
6631 michael 913 }
6632     break;
6633    
6634 michael 1324 case 514:
6635 michael 967
6636 michael 1133 /* Line 1806 of yacc.c */
6637 michael 1329 #line 2807 "conf_parser.y"
6638 michael 913 {
6639 michael 1118 ConfigFileEntry.stats_i_oper_only = 1;
6640 michael 913 }
6641     break;
6642    
6643 michael 1324 case 515:
6644 michael 967
6645 michael 1133 /* Line 1806 of yacc.c */
6646 michael 1329 #line 2812 "conf_parser.y"
6647 michael 913 {
6648 michael 1118 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
6649 michael 913 }
6650     break;
6651    
6652 michael 1324 case 516:
6653 michael 967
6654 michael 1133 /* Line 1806 of yacc.c */
6655 michael 1329 #line 2817 "conf_parser.y"
6656 michael 913 {
6657 michael 1118 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
6658 michael 913 }
6659     break;
6660    
6661 michael 1324 case 517:
6662 michael 967
6663 michael 1133 /* Line 1806 of yacc.c */
6664 michael 1329 #line 2822 "conf_parser.y"
6665 michael 913 {
6666 michael 1118 ConfigFileEntry.opers_bypass_callerid = yylval.number;
6667 michael 913 }
6668     break;
6669    
6670 michael 1324 case 518:
6671 michael 967
6672 michael 1133 /* Line 1806 of yacc.c */
6673 michael 1329 #line 2827 "conf_parser.y"
6674 michael 913 {
6675 michael 1118 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
6676 michael 913 }
6677     break;
6678    
6679 michael 1324 case 519:
6680 michael 967
6681 michael 1133 /* Line 1806 of yacc.c */
6682 michael 1329 #line 2832 "conf_parser.y"
6683 michael 913 {
6684 michael 1118 ConfigFileEntry.short_motd = yylval.number;
6685 michael 913 }
6686     break;
6687    
6688 michael 1324 case 520:
6689 michael 967
6690 michael 1133 /* Line 1806 of yacc.c */
6691 michael 1329 #line 2837 "conf_parser.y"
6692 michael 913 {
6693 michael 1118 ConfigFileEntry.no_oper_flood = yylval.number;
6694 michael 913 }
6695     break;
6696    
6697 michael 1324 case 521:
6698 michael 967
6699 michael 1133 /* Line 1806 of yacc.c */
6700 michael 1329 #line 2842 "conf_parser.y"
6701 michael 913 {
6702 michael 1118 ConfigFileEntry.true_no_oper_flood = yylval.number;
6703 michael 913 }
6704     break;
6705    
6706 michael 1324 case 522:
6707 michael 967
6708 michael 1133 /* Line 1806 of yacc.c */
6709 michael 1329 #line 2847 "conf_parser.y"
6710 michael 913 {
6711 michael 1118 ConfigFileEntry.oper_pass_resv = yylval.number;
6712 michael 913 }
6713     break;
6714    
6715 michael 1324 case 523:
6716 michael 967
6717 michael 1133 /* Line 1806 of yacc.c */
6718 michael 1329 #line 2852 "conf_parser.y"
6719 michael 913 {
6720 michael 967 if (conf_parser_ctx.pass == 2)
6721 michael 913 {
6722     if (strlen(yylval.string) > LOCALE_LENGTH-2)
6723     yylval.string[LOCALE_LENGTH-1] = '\0';
6724    
6725     set_locale(yylval.string);
6726     }
6727     }
6728     break;
6729    
6730 michael 1324 case 524:
6731 michael 967
6732 michael 1133 /* Line 1806 of yacc.c */
6733 michael 1329 #line 2863 "conf_parser.y"
6734 michael 913 {
6735     ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
6736     }
6737     break;
6738    
6739 michael 1324 case 525:
6740 michael 967
6741 michael 1133 /* Line 1806 of yacc.c */
6742 michael 1329 #line 2868 "conf_parser.y"
6743 michael 913 {
6744     ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
6745     }
6746     break;
6747    
6748 michael 1324 case 526:
6749 michael 967
6750 michael 1133 /* Line 1806 of yacc.c */
6751 michael 1329 #line 2873 "conf_parser.y"
6752 michael 913 {
6753     ConfigFileEntry.use_egd = yylval.number;
6754     }
6755     break;
6756    
6757 michael 1324 case 527:
6758 michael 967
6759 michael 1133 /* Line 1806 of yacc.c */
6760 michael 1329 #line 2878 "conf_parser.y"
6761 michael 913 {
6762 michael 967 if (conf_parser_ctx.pass == 2)
6763 michael 913 {
6764     MyFree(ConfigFileEntry.egdpool_path);
6765     DupString(ConfigFileEntry.egdpool_path, yylval.string);
6766     }
6767     }
6768     break;
6769    
6770 michael 1324 case 528:
6771 michael 967
6772 michael 1133 /* Line 1806 of yacc.c */
6773 michael 1329 #line 2887 "conf_parser.y"
6774 michael 913 {
6775 michael 1176 if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
6776 michael 1157 {
6777     MyFree(ConfigFileEntry.service_name);
6778     DupString(ConfigFileEntry.service_name, yylval.string);
6779     }
6780     }
6781     break;
6782    
6783 michael 1324 case 529:
6784 michael 1157
6785     /* Line 1806 of yacc.c */
6786 michael 1329 #line 2896 "conf_parser.y"
6787 michael 1157 {
6788 michael 913 ConfigFileEntry.ping_cookie = yylval.number;
6789     }
6790     break;
6791    
6792 michael 1324 case 530:
6793 michael 967
6794 michael 1133 /* Line 1806 of yacc.c */
6795 michael 1329 #line 2901 "conf_parser.y"
6796 michael 913 {
6797     ConfigFileEntry.disable_auth = yylval.number;
6798     }
6799     break;
6800    
6801 michael 1324 case 531:
6802 michael 967
6803 michael 1133 /* Line 1806 of yacc.c */
6804 michael 1329 #line 2906 "conf_parser.y"
6805 michael 913 {
6806     ConfigFileEntry.throttle_time = yylval.number;
6807     }
6808     break;
6809    
6810 michael 1324 case 532:
6811 michael 967
6812 michael 1133 /* Line 1806 of yacc.c */
6813 michael 1329 #line 2911 "conf_parser.y"
6814 michael 913 {
6815     ConfigFileEntry.oper_umodes = 0;
6816     }
6817     break;
6818    
6819 michael 1324 case 536:
6820 michael 967
6821 michael 1133 /* Line 1806 of yacc.c */
6822 michael 1329 #line 2917 "conf_parser.y"
6823 michael 913 {
6824     ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6825     }
6826     break;
6827    
6828 michael 1324 case 537:
6829 michael 967
6830 michael 1133 /* Line 1806 of yacc.c */
6831 michael 1329 #line 2920 "conf_parser.y"
6832 michael 913 {
6833     ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6834     }
6835     break;
6836    
6837 michael 1324 case 538:
6838 michael 967
6839 michael 1133 /* Line 1806 of yacc.c */
6840 michael 1329 #line 2923 "conf_parser.y"
6841 michael 913 {
6842     ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6843     }
6844     break;
6845    
6846 michael 1324 case 539:
6847 michael 967
6848 michael 1133 /* Line 1806 of yacc.c */
6849 michael 1329 #line 2926 "conf_parser.y"
6850 michael 913 {
6851     ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6852     }
6853     break;
6854    
6855 michael 1324 case 540:
6856 michael 967
6857 michael 1133 /* Line 1806 of yacc.c */
6858 michael 1329 #line 2929 "conf_parser.y"
6859 michael 913 {
6860     ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6861     }
6862     break;
6863    
6864 michael 1324 case 541:
6865 michael 967
6866 michael 1133 /* Line 1806 of yacc.c */
6867 michael 1329 #line 2932 "conf_parser.y"
6868 michael 913 {
6869     ConfigFileEntry.oper_umodes |= UMODE_FULL;
6870     }
6871     break;
6872    
6873 michael 1324 case 542:
6874 michael 1294
6875     /* Line 1806 of yacc.c */
6876 michael 1329 #line 2935 "conf_parser.y"
6877 michael 1294 {
6878     ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6879     }
6880     break;
6881    
6882 michael 1324 case 543:
6883 michael 967
6884 michael 1133 /* Line 1806 of yacc.c */
6885 michael 1329 #line 2938 "conf_parser.y"
6886 michael 913 {
6887     ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6888     }
6889     break;
6890    
6891 michael 1324 case 544:
6892 michael 967
6893 michael 1133 /* Line 1806 of yacc.c */
6894 michael 1329 #line 2941 "conf_parser.y"
6895 michael 913 {
6896     ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6897     }
6898     break;
6899    
6900 michael 1324 case 545:
6901 michael 967
6902 michael 1133 /* Line 1806 of yacc.c */
6903 michael 1329 #line 2944 "conf_parser.y"
6904 michael 913 {
6905     ConfigFileEntry.oper_umodes |= UMODE_REJ;
6906     }
6907     break;
6908    
6909 michael 1324 case 546:
6910 michael 967
6911 michael 1133 /* Line 1806 of yacc.c */
6912 michael 1329 #line 2947 "conf_parser.y"
6913 michael 913 {
6914     ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6915     }
6916     break;
6917    
6918 michael 1324 case 547:
6919 michael 967
6920 michael 1133 /* Line 1806 of yacc.c */
6921 michael 1329 #line 2950 "conf_parser.y"
6922 michael 913 {
6923     ConfigFileEntry.oper_umodes |= UMODE_SPY;
6924     }
6925     break;
6926    
6927 michael 1324 case 548:
6928 michael 967
6929 michael 1133 /* Line 1806 of yacc.c */
6930 michael 1329 #line 2953 "conf_parser.y"
6931 michael 913 {
6932     ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6933     }
6934     break;
6935    
6936 michael 1324 case 549:
6937 michael 967
6938 michael 1133 /* Line 1806 of yacc.c */
6939 michael 1329 #line 2956 "conf_parser.y"
6940 michael 913 {
6941     ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6942     }
6943     break;
6944    
6945 michael 1324 case 550:
6946 michael 967
6947 michael 1133 /* Line 1806 of yacc.c */
6948 michael 1329 #line 2959 "conf_parser.y"
6949 michael 913 {
6950     ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6951     }
6952     break;
6953    
6954 michael 1324 case 551:
6955 michael 967
6956 michael 1133 /* Line 1806 of yacc.c */
6957 michael 1329 #line 2962 "conf_parser.y"
6958 michael 913 {
6959     ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6960     }
6961     break;
6962    
6963 michael 1324 case 552:
6964 michael 967
6965 michael 1133 /* Line 1806 of yacc.c */
6966 michael 1329 #line 2965 "conf_parser.y"
6967 michael 913 {
6968     ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6969     }
6970     break;
6971    
6972 michael 1324 case 553:
6973 michael 967
6974 michael 1133 /* Line 1806 of yacc.c */
6975 michael 1329 #line 2968 "conf_parser.y"
6976 michael 913 {
6977     ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6978     }
6979     break;
6980    
6981 michael 1324 case 554:
6982 michael 967
6983 michael 1133 /* Line 1806 of yacc.c */
6984 michael 1329 #line 2971 "conf_parser.y"
6985 michael 913 {
6986     ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6987     }
6988     break;
6989    
6990 michael 1324 case 555:
6991 michael 967
6992 michael 1133 /* Line 1806 of yacc.c */
6993 michael 1329 #line 2974 "conf_parser.y"
6994 michael 913 {
6995     ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6996     }
6997     break;
6998    
6999 michael 1324 case 556:
7000 michael 967
7001 michael 1133 /* Line 1806 of yacc.c */
7002 michael 1329 #line 2979 "conf_parser.y"
7003 michael 913 {
7004     ConfigFileEntry.oper_only_umodes = 0;
7005     }
7006     break;
7007    
7008 michael 1324 case 560:
7009 michael 967
7010 michael 1133 /* Line 1806 of yacc.c */
7011 michael 1329 #line 2985 "conf_parser.y"
7012 michael 913 {
7013     ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
7014     }
7015     break;
7016    
7017 michael 1324 case 561:
7018 michael 967
7019 michael 1133 /* Line 1806 of yacc.c */
7020 michael 1329 #line 2988 "conf_parser.y"
7021 michael 913 {
7022     ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
7023     }
7024     break;
7025    
7026 michael 1324 case 562:
7027 michael 967
7028 michael 1133 /* Line 1806 of yacc.c */
7029 michael 1329 #line 2991 "conf_parser.y"
7030 michael 913 {
7031     ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
7032     }
7033     break;
7034    
7035 michael 1324 case 563:
7036 michael 967
7037 michael 1133 /* Line 1806 of yacc.c */
7038 michael 1329 #line 2994 "conf_parser.y"
7039 michael 913 {
7040     ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
7041     }
7042     break;
7043    
7044 michael 1324 case 564:
7045 michael 967
7046 michael 1133 /* Line 1806 of yacc.c */
7047 michael 1329 #line 2997 "conf_parser.y"
7048 michael 913 {
7049     ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
7050     }
7051     break;
7052    
7053 michael 1324 case 565:
7054 michael 967
7055 michael 1133 /* Line 1806 of yacc.c */
7056 michael 1329 #line 3000 "conf_parser.y"
7057 michael 913 {
7058     ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
7059     }
7060     break;
7061    
7062 michael 1324 case 566:
7063 michael 967
7064 michael 1133 /* Line 1806 of yacc.c */
7065 michael 1329 #line 3003 "conf_parser.y"
7066 michael 913 {
7067     ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
7068     }
7069     break;
7070    
7071 michael 1324 case 567:
7072 michael 967
7073 michael 1133 /* Line 1806 of yacc.c */
7074 michael 1329 #line 3006 "conf_parser.y"
7075 michael 1294 {
7076     ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
7077     }
7078     break;
7079    
7080 michael 1324 case 568:
7081 michael 1294
7082     /* Line 1806 of yacc.c */
7083 michael 1329 #line 3009 "conf_parser.y"
7084 michael 913 {
7085     ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
7086     }
7087     break;
7088    
7089 michael 1324 case 569:
7090 michael 967
7091 michael 1133 /* Line 1806 of yacc.c */
7092 michael 1329 #line 3012 "conf_parser.y"
7093 michael 913 {
7094     ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
7095     }
7096     break;
7097    
7098 michael 1324 case 570:
7099 michael 967
7100 michael 1133 /* Line 1806 of yacc.c */
7101 michael 1329 #line 3015 "conf_parser.y"
7102 michael 913 {
7103     ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
7104     }
7105     break;
7106    
7107 michael 1324 case 571:
7108 michael 967
7109 michael 1133 /* Line 1806 of yacc.c */
7110 michael 1329 #line 3018 "conf_parser.y"
7111 michael 913 {
7112     ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
7113     }
7114     break;
7115    
7116 michael 1324 case 572:
7117 michael 967
7118 michael 1133 /* Line 1806 of yacc.c */
7119 michael 1329 #line 3021 "conf_parser.y"
7120 michael 913 {
7121     ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
7122     }
7123     break;
7124    
7125 michael 1324 case 573:
7126 michael 967
7127 michael 1133 /* Line 1806 of yacc.c */
7128 michael 1329 #line 3024 "conf_parser.y"
7129 michael 913 {
7130     ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
7131     }
7132     break;
7133    
7134 michael 1324 case 574:
7135 michael 967
7136 michael 1133 /* Line 1806 of yacc.c */
7137 michael 1329 #line 3027 "conf_parser.y"
7138 michael 913 {
7139     ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
7140     }
7141     break;
7142    
7143 michael 1324 case 575:
7144 michael 967
7145 michael 1133 /* Line 1806 of yacc.c */
7146 michael 1329 #line 3030 "conf_parser.y"
7147 michael 913 {
7148     ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
7149     }
7150     break;
7151    
7152 michael 1324 case 576:
7153 michael 967
7154 michael 1133 /* Line 1806 of yacc.c */
7155 michael 1329 #line 3033 "conf_parser.y"
7156 michael 913 {
7157     ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
7158     }
7159     break;
7160    
7161 michael 1324 case 577:
7162 michael 967
7163 michael 1133 /* Line 1806 of yacc.c */
7164 michael 1329 #line 3036 "conf_parser.y"
7165 michael 913 {
7166     ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
7167     }
7168     break;
7169    
7170 michael 1324 case 578:
7171 michael 967
7172 michael 1133 /* Line 1806 of yacc.c */
7173 michael 1329 #line 3039 "conf_parser.y"
7174 michael 913 {
7175     ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
7176     }
7177     break;
7178    
7179 michael 1324 case 579:
7180 michael 967
7181 michael 1133 /* Line 1806 of yacc.c */
7182 michael 1329 #line 3042 "conf_parser.y"
7183 michael 913 {
7184     ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
7185     }
7186     break;
7187    
7188 michael 1324 case 580:
7189 michael 967
7190 michael 1133 /* Line 1806 of yacc.c */
7191 michael 1329 #line 3047 "conf_parser.y"
7192 michael 913 {
7193     ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
7194     }
7195     break;
7196    
7197 michael 1324 case 581:
7198 michael 967
7199 michael 1133 /* Line 1806 of yacc.c */
7200 michael 1329 #line 3052 "conf_parser.y"
7201 michael 913 {
7202     ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
7203     }
7204     break;
7205    
7206 michael 1324 case 582:
7207 michael 967
7208 michael 1133 /* Line 1806 of yacc.c */
7209 michael 1329 #line 3057 "conf_parser.y"
7210 michael 913 {
7211     ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
7212     }
7213     break;
7214    
7215 michael 1324 case 583:
7216 michael 967
7217 michael 1133 /* Line 1806 of yacc.c */
7218 michael 1329 #line 3062 "conf_parser.y"
7219 michael 913 {
7220     ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
7221     }
7222     break;
7223    
7224 michael 1324 case 584:
7225 michael 967
7226 michael 1133 /* Line 1806 of yacc.c */
7227 michael 1329 #line 3071 "conf_parser.y"
7228 michael 913 {
7229 michael 967 if (conf_parser_ctx.pass == 2)
7230 michael 913 {
7231     yy_conf = make_conf_item(GDENY_TYPE);
7232     yy_aconf = map_to_conf(yy_conf);
7233     }
7234     }
7235     break;
7236    
7237 michael 1324 case 585:
7238 michael 967
7239 michael 1133 /* Line 1806 of yacc.c */
7240 michael 1329 #line 3078 "conf_parser.y"
7241 michael 913 {
7242 michael 967 if (conf_parser_ctx.pass == 2)
7243 michael 913 {
7244     /*
7245     * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
7246     * end we will have one extra, so we should free it.
7247     */
7248     if (yy_conf->name == NULL || yy_aconf->user == NULL)
7249     {
7250     delete_conf_item(yy_conf);
7251     yy_conf = NULL;
7252     yy_aconf = NULL;
7253     }
7254     }
7255     }
7256     break;
7257    
7258 michael 1324 case 595:
7259 michael 967
7260 michael 1133 /* Line 1806 of yacc.c */
7261 michael 1329 #line 3104 "conf_parser.y"
7262 michael 913 {
7263 michael 967 if (conf_parser_ctx.pass == 2)
7264 michael 913 ConfigFileEntry.glines = yylval.number;
7265     }
7266     break;
7267    
7268 michael 1324 case 596:
7269 michael 967
7270 michael 1133 /* Line 1806 of yacc.c */
7271 michael 1329 #line 3110 "conf_parser.y"
7272 michael 913 {
7273 michael 967 if (conf_parser_ctx.pass == 2)
7274 michael 913 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
7275     }
7276     break;
7277    
7278 michael 1324 case 597:
7279 michael 967
7280 michael 1133 /* Line 1806 of yacc.c */
7281 michael 1329 #line 3116 "conf_parser.y"
7282 michael 913 {
7283 michael 967 if (conf_parser_ctx.pass == 2)
7284 michael 913 ConfigFileEntry.gline_logging = 0;
7285     }
7286     break;
7287    
7288 michael 1324 case 601:
7289 michael 967
7290 michael 1133 /* Line 1806 of yacc.c */
7291 michael 1329 #line 3122 "conf_parser.y"
7292 michael 913 {
7293 michael 967 if (conf_parser_ctx.pass == 2)
7294 michael 913 ConfigFileEntry.gline_logging |= GDENY_REJECT;
7295     }
7296     break;
7297    
7298 michael 1324 case 602:
7299 michael 967
7300 michael 1133 /* Line 1806 of yacc.c */
7301 michael 1329 #line 3126 "conf_parser.y"
7302 michael 913 {
7303 michael 967 if (conf_parser_ctx.pass == 2)
7304 michael 913 ConfigFileEntry.gline_logging |= GDENY_BLOCK;
7305     }
7306     break;
7307    
7308 michael 1324 case 603:
7309 michael 967
7310 michael 1133 /* Line 1806 of yacc.c */
7311 michael 1329 #line 3132 "conf_parser.y"
7312 michael 913 {
7313 michael 967 if (conf_parser_ctx.pass == 2)
7314 michael 913 {
7315     struct split_nuh_item nuh;
7316    
7317     nuh.nuhmask = yylval.string;
7318     nuh.nickptr = NULL;
7319     nuh.userptr = userbuf;
7320     nuh.hostptr = hostbuf;
7321    
7322     nuh.nicksize = 0;
7323     nuh.usersize = sizeof(userbuf);
7324     nuh.hostsize = sizeof(hostbuf);
7325    
7326     split_nuh(&nuh);
7327    
7328     if (yy_aconf->user == NULL)
7329     {
7330     DupString(yy_aconf->user, userbuf);
7331     DupString(yy_aconf->host, hostbuf);
7332     }
7333     else
7334     {
7335     struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
7336    
7337     DupString(yy_tmp->user, userbuf);
7338     DupString(yy_tmp->host, hostbuf);
7339    
7340     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
7341     }
7342     }
7343     }
7344     break;
7345    
7346 michael 1324 case 604:
7347 michael 967
7348 michael 1133 /* Line 1806 of yacc.c */
7349 michael 1329 #line 3166 "conf_parser.y"
7350 michael 913 {
7351 michael 967 if (conf_parser_ctx.pass == 2)
7352 michael 913 {
7353     MyFree(yy_conf->name);
7354     DupString(yy_conf->name, yylval.string);
7355     }
7356     }
7357     break;
7358    
7359 michael 1324 case 605:
7360 michael 967
7361 michael 1133 /* Line 1806 of yacc.c */
7362 michael 1329 #line 3175 "conf_parser.y"
7363 michael 913 {
7364 michael 967 if (conf_parser_ctx.pass == 2)
7365 michael 913 yy_aconf->flags = 0;
7366     }
7367     break;
7368    
7369 michael 1324 case 606:
7370 michael 967
7371 michael 1133 /* Line 1806 of yacc.c */
7372 michael 1329 #line 3179 "conf_parser.y"
7373 michael 913 {
7374 michael 967 if (conf_parser_ctx.pass == 2)
7375 michael 913 {
7376     struct CollectItem *yy_tmp = NULL;
7377     dlink_node *ptr, *next_ptr;
7378    
7379     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
7380     {
7381     struct AccessItem *new_aconf;
7382     struct ConfItem *new_conf;
7383    
7384     yy_tmp = ptr->data;
7385     new_conf = make_conf_item(GDENY_TYPE);
7386     new_aconf = map_to_conf(new_conf);
7387    
7388     new_aconf->flags = yy_aconf->flags;
7389    
7390     if (yy_conf->name != NULL)
7391     DupString(new_conf->name, yy_conf->name);
7392     else
7393     DupString(new_conf->name, "*");
7394     if (yy_aconf->user != NULL)
7395     DupString(new_aconf->user, yy_tmp->user);
7396     else
7397     DupString(new_aconf->user, "*");
7398     if (yy_aconf->host != NULL)
7399     DupString(new_aconf->host, yy_tmp->host);
7400     else
7401     DupString(new_aconf->host, "*");
7402    
7403     dlinkDelete(&yy_tmp->node, &col_conf_list);
7404     }
7405    
7406     /*
7407     * In case someone has fed us with more than one action= after user/name
7408     * which would leak memory -Michael
7409     */
7410     if (yy_conf->name == NULL || yy_aconf->user == NULL)
7411     delete_conf_item(yy_conf);
7412    
7413     yy_conf = make_conf_item(GDENY_TYPE);
7414     yy_aconf = map_to_conf(yy_conf);
7415     }
7416     }
7417     break;
7418    
7419 michael 1324 case 609:
7420 michael 967
7421 michael 1133 /* Line 1806 of yacc.c */
7422 michael 1329 #line 3226 "conf_parser.y"
7423 michael 913 {
7424 michael 967 if (conf_parser_ctx.pass == 2)
7425 michael 913 yy_aconf->flags |= GDENY_REJECT;
7426     }
7427     break;
7428    
7429 michael 1324 case 610:
7430 michael 967
7431 michael 1133 /* Line 1806 of yacc.c */
7432 michael 1329 #line 3230 "conf_parser.y"
7433 michael 913 {
7434 michael 967 if (conf_parser_ctx.pass == 2)
7435 michael 913 yy_aconf->flags |= GDENY_BLOCK;
7436     }
7437     break;
7438    
7439 michael 1324 case 633:
7440 michael 1118
7441 michael 1133 /* Line 1806 of yacc.c */
7442 michael 1329 #line 3254 "conf_parser.y"
7443 michael 1118 {
7444     ConfigChannel.disable_fake_channels = yylval.number;
7445     }
7446     break;
7447    
7448 michael 1324 case 634:
7449 michael 1118
7450 michael 1133 /* Line 1806 of yacc.c */
7451 michael 1329 #line 3259 "conf_parser.y"
7452 michael 1118 {
7453     ConfigChannel.restrict_channels = yylval.number;
7454     }
7455     break;
7456    
7457 michael 1324 case 635:
7458 michael 967
7459 michael 1133 /* Line 1806 of yacc.c */
7460 michael 1329 #line 3264 "conf_parser.y"
7461 michael 913 {
7462 michael 1118 ConfigChannel.disable_local_channels = yylval.number;
7463 michael 913 }
7464     break;
7465    
7466 michael 1324 case 636:
7467 michael 967
7468 michael 1133 /* Line 1806 of yacc.c */
7469 michael 1329 #line 3269 "conf_parser.y"
7470 michael 913 {
7471 michael 1118 ConfigChannel.use_except = yylval.number;
7472 michael 913 }
7473     break;
7474    
7475 michael 1324 case 637:
7476 michael 967
7477 michael 1133 /* Line 1806 of yacc.c */
7478 michael 1329 #line 3274 "conf_parser.y"
7479 michael 913 {
7480 michael 1118 ConfigChannel.use_invex = yylval.number;
7481 michael 913 }
7482     break;
7483    
7484 michael 1324 case 638:
7485 michael 967
7486 michael 1133 /* Line 1806 of yacc.c */
7487 michael 1329 #line 3279 "conf_parser.y"
7488 michael 913 {
7489 michael 1118 ConfigChannel.use_knock = yylval.number;
7490 michael 913 }
7491     break;
7492    
7493 michael 1324 case 639:
7494 michael 967
7495 michael 1133 /* Line 1806 of yacc.c */
7496 michael 1329 #line 3284 "conf_parser.y"
7497 michael 913 {
7498 michael 1118 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
7499 michael 913 }
7500     break;
7501    
7502 michael 1324 case 640:
7503 michael 967
7504 michael 1133 /* Line 1806 of yacc.c */
7505 michael 1329 #line 3289 "conf_parser.y"
7506 michael 913 {
7507 michael 1118 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
7508 michael 913 }
7509     break;
7510    
7511 michael 1324 case 641:
7512 michael 967
7513 michael 1133 /* Line 1806 of yacc.c */
7514 michael 1329 #line 3294 "conf_parser.y"
7515 michael 913 {
7516 michael 1118 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
7517 michael 913 }
7518     break;
7519    
7520 michael 1324 case 642:
7521 michael 967
7522 michael 1133 /* Line 1806 of yacc.c */
7523 michael 1329 #line 3299 "conf_parser.y"
7524 michael 913 {
7525 michael 1118 ConfigChannel.quiet_on_ban = yylval.number;
7526 michael 913 }
7527     break;
7528    
7529 michael 1324 case 643:
7530 michael 967
7531 michael 1133 /* Line 1806 of yacc.c */
7532 michael 1329 #line 3304 "conf_parser.y"
7533 michael 913 {
7534 michael 1118 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
7535 michael 913 }
7536     break;
7537    
7538 michael 1324 case 644:
7539 michael 967
7540 michael 1133 /* Line 1806 of yacc.c */
7541 michael 1329 #line 3309 "conf_parser.y"
7542 michael 913 {
7543 michael 1118 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
7544 michael 913 }
7545     break;
7546    
7547 michael 1324 case 645:
7548 michael 967
7549 michael 1133 /* Line 1806 of yacc.c */
7550 michael 1329 #line 3314 "conf_parser.y"
7551 michael 913 {
7552 michael 1118 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
7553 michael 913 }
7554     break;
7555    
7556 michael 1324 case 646:
7557 michael 967
7558 michael 1133 /* Line 1806 of yacc.c */
7559 michael 1329 #line 3319 "conf_parser.y"
7560 michael 913 {
7561 michael 1118 ConfigChannel.no_create_on_split = yylval.number;
7562 michael 913 }
7563     break;
7564    
7565 michael 1324 case 647:
7566 michael 967
7567 michael 1133 /* Line 1806 of yacc.c */
7568 michael 1329 #line 3324 "conf_parser.y"
7569 michael 913 {
7570 michael 1118 ConfigChannel.no_join_on_split = yylval.number;
7571 michael 913 }
7572     break;
7573    
7574 michael 1324 case 648:
7575 michael 967
7576 michael 1133 /* Line 1806 of yacc.c */
7577 michael 1329 #line 3329 "conf_parser.y"
7578 michael 913 {
7579 michael 1118 ConfigChannel.burst_topicwho = yylval.number;
7580 michael 913 }
7581     break;
7582    
7583 michael 1324 case 649:
7584 michael 967
7585 michael 1133 /* Line 1806 of yacc.c */
7586 michael 1329 #line 3334 "conf_parser.y"
7587 michael 913 {
7588 michael 1118 GlobalSetOptions.joinfloodcount = yylval.number;
7589 michael 913 }
7590     break;
7591    
7592 michael 1324 case 650:
7593 michael 967
7594 michael 1133 /* Line 1806 of yacc.c */
7595 michael 1329 #line 3339 "conf_parser.y"
7596 michael 913 {
7597     GlobalSetOptions.joinfloodtime = yylval.number;
7598     }
7599     break;
7600    
7601 michael 1324 case 662:
7602 michael 967
7603 michael 1133 /* Line 1806 of yacc.c */
7604 michael 1329 #line 3358 "conf_parser.y"
7605 michael 913 {
7606 michael 967 if (conf_parser_ctx.pass == 2)
7607 michael 913 ConfigServerHide.flatten_links = yylval.number;
7608     }
7609     break;
7610    
7611 michael 1324 case 663:
7612 michael 967
7613 michael 1133 /* Line 1806 of yacc.c */
7614 michael 1329 #line 3364 "conf_parser.y"
7615 michael 913 {
7616 michael 967 if (conf_parser_ctx.pass == 2)
7617 michael 913 ConfigServerHide.hide_servers = yylval.number;
7618     }
7619     break;
7620    
7621 michael 1324 case 664:
7622 michael 967
7623 michael 1133 /* Line 1806 of yacc.c */
7624 michael 1329 #line 3370 "conf_parser.y"
7625 michael 913 {
7626 michael 967 if (conf_parser_ctx.pass == 2)
7627 michael 913 {
7628     MyFree(ConfigServerHide.hidden_name);
7629     DupString(ConfigServerHide.hidden_name, yylval.string);
7630     }
7631     }
7632     break;
7633    
7634 michael 1324 case 665:
7635 michael 967
7636 michael 1133 /* Line 1806 of yacc.c */
7637 michael 1329 #line 3379 "conf_parser.y"
7638 michael 913 {
7639 michael 967 if (conf_parser_ctx.pass == 2)
7640 michael 913 {
7641     if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
7642     {
7643     eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
7644     ConfigServerHide.links_disabled = 0;
7645     }
7646    
7647     ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
7648     }
7649     }
7650     break;
7651    
7652 michael 1324 case 666:
7653 michael 967
7654 michael 1133 /* Line 1806 of yacc.c */
7655 michael 1329 #line 3393 "conf_parser.y"
7656 michael 913 {
7657 michael 967 if (conf_parser_ctx.pass == 2)
7658 michael 913 ConfigServerHide.hidden = yylval.number;
7659     }
7660     break;
7661    
7662 michael 1324 case 667:
7663 michael 967
7664 michael 1133 /* Line 1806 of yacc.c */
7665 michael 1329 #line 3399 "conf_parser.y"
7666 michael 913 {
7667 michael 967 if (conf_parser_ctx.pass == 2)
7668 michael 913 ConfigServerHide.disable_hidden = yylval.number;
7669     }
7670     break;
7671    
7672 michael 1324 case 668:
7673 michael 967
7674 michael 1133 /* Line 1806 of yacc.c */
7675 michael 1329 #line 3405 "conf_parser.y"
7676 michael 913 {
7677 michael 967 if (conf_parser_ctx.pass == 2)
7678 michael 913 ConfigServerHide.hide_server_ips = yylval.number;
7679     }
7680     break;
7681    
7682    
7683 michael 967
7684 michael 1133 /* Line 1806 of yacc.c */
7685 michael 1329 #line 7686 "conf_parser.c"
7686 michael 913 default: break;
7687     }
7688 michael 1133 /* User semantic actions sometimes alter yychar, and that requires
7689     that yytoken be updated with the new translation. We take the
7690     approach of translating immediately before every use of yytoken.
7691     One alternative is translating here after every semantic action,
7692     but that translation would be missed if the semantic action invokes
7693     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
7694     if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
7695     incorrect destructor might then be invoked immediately. In the
7696     case of YYERROR or YYBACKUP, subsequent parser actions might lead
7697     to an incorrect destructor call or verbose syntax error message
7698     before the lookahead is translated. */
7699 michael 913 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
7700    
7701     YYPOPSTACK (yylen);
7702     yylen = 0;
7703     YY_STACK_PRINT (yyss, yyssp);
7704    
7705     *++yyvsp = yyval;
7706    
7707     /* Now `shift' the result of the reduction. Determine what state
7708     that goes to, based on the state we popped back to and the rule
7709     number reduced by. */
7710    
7711     yyn = yyr1[yyn];
7712    
7713     yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
7714     if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
7715     yystate = yytable[yystate];
7716     else
7717     yystate = yydefgoto[yyn - YYNTOKENS];
7718    
7719     goto yynewstate;
7720    
7721    
7722     /*------------------------------------.
7723     | yyerrlab -- here on detecting error |
7724     `------------------------------------*/
7725     yyerrlab:
7726 michael 1133 /* Make sure we have latest lookahead translation. See comments at
7727     user semantic actions for why this is necessary. */
7728     yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
7729    
7730 michael 913 /* If not already recovering from an error, report this error. */
7731     if (!yyerrstatus)
7732     {
7733     ++yynerrs;
7734     #if ! YYERROR_VERBOSE
7735     yyerror (YY_("syntax error"));
7736     #else
7737 michael 1133 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
7738     yyssp, yytoken)
7739 michael 913 {
7740 michael 1133 char const *yymsgp = YY_("syntax error");
7741     int yysyntax_error_status;
7742     yysyntax_error_status = YYSYNTAX_ERROR;
7743     if (yysyntax_error_status == 0)
7744     yymsgp = yymsg;
7745     else if (yysyntax_error_status == 1)
7746     {
7747     if (yymsg != yymsgbuf)
7748     YYSTACK_FREE (yymsg);
7749     yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
7750     if (!yymsg)
7751     {
7752     yymsg = yymsgbuf;
7753     yymsg_alloc = sizeof yymsgbuf;
7754     yysyntax_error_status = 2;
7755     }
7756     else
7757     {
7758     yysyntax_error_status = YYSYNTAX_ERROR;
7759     yymsgp = yymsg;
7760     }
7761     }
7762     yyerror (yymsgp);
7763     if (yysyntax_error_status == 2)
7764     goto yyexhaustedlab;
7765 michael 913 }
7766 michael 1133 # undef YYSYNTAX_ERROR
7767 michael 913 #endif
7768     }
7769    
7770    
7771    
7772     if (yyerrstatus == 3)
7773     {
7774 michael 967 /* If just tried and failed to reuse lookahead token after an
7775 michael 913 error, discard it. */
7776    
7777     if (yychar <= YYEOF)
7778     {
7779     /* Return failure if at end of input. */
7780     if (yychar == YYEOF)
7781     YYABORT;
7782     }
7783     else
7784     {
7785     yydestruct ("Error: discarding",
7786     yytoken, &yylval);
7787     yychar = YYEMPTY;
7788     }
7789     }
7790    
7791 michael 967 /* Else will try to reuse lookahead token after shifting the error
7792 michael 913 token. */
7793     goto yyerrlab1;
7794    
7795    
7796     /*---------------------------------------------------.
7797     | yyerrorlab -- error raised explicitly by YYERROR. |
7798     `---------------------------------------------------*/
7799     yyerrorlab:
7800    
7801     /* Pacify compilers like GCC when the user code never invokes
7802     YYERROR and the label yyerrorlab therefore never appears in user
7803     code. */
7804     if (/*CONSTCOND*/ 0)
7805     goto yyerrorlab;
7806    
7807     /* Do not reclaim the symbols of the rule which action triggered
7808     this YYERROR. */
7809     YYPOPSTACK (yylen);
7810     yylen = 0;
7811     YY_STACK_PRINT (yyss, yyssp);
7812     yystate = *yyssp;
7813     goto yyerrlab1;
7814    
7815    
7816     /*-------------------------------------------------------------.
7817     | yyerrlab1 -- common code for both syntax error and YYERROR. |
7818     `-------------------------------------------------------------*/
7819     yyerrlab1:
7820     yyerrstatus = 3; /* Each real token shifted decrements this. */
7821    
7822     for (;;)
7823     {
7824     yyn = yypact[yystate];
7825 michael 1133 if (!yypact_value_is_default (yyn))
7826 michael 913 {
7827     yyn += YYTERROR;
7828     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
7829     {
7830     yyn = yytable[yyn];
7831     if (0 < yyn)
7832     break;
7833     }
7834     }
7835    
7836     /* Pop the current state because it cannot handle the error token. */
7837     if (yyssp == yyss)
7838     YYABORT;
7839    
7840    
7841     yydestruct ("Error: popping",
7842     yystos[yystate], yyvsp);
7843     YYPOPSTACK (1);
7844     yystate = *yyssp;
7845     YY_STACK_PRINT (yyss, yyssp);
7846     }
7847    
7848     *++yyvsp = yylval;
7849    
7850    
7851     /* Shift the error token. */
7852     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
7853    
7854     yystate = yyn;
7855     goto yynewstate;
7856    
7857    
7858     /*-------------------------------------.
7859     | yyacceptlab -- YYACCEPT comes here. |
7860     `-------------------------------------*/
7861     yyacceptlab:
7862     yyresult = 0;
7863     goto yyreturn;
7864    
7865     /*-----------------------------------.
7866     | yyabortlab -- YYABORT comes here. |
7867     `-----------------------------------*/
7868     yyabortlab:
7869     yyresult = 1;
7870     goto yyreturn;
7871    
7872 michael 967 #if !defined(yyoverflow) || YYERROR_VERBOSE
7873 michael 913 /*-------------------------------------------------.
7874     | yyexhaustedlab -- memory exhaustion comes here. |
7875     `-------------------------------------------------*/
7876     yyexhaustedlab:
7877     yyerror (YY_("memory exhausted"));
7878     yyresult = 2;
7879     /* Fall through. */
7880     #endif
7881    
7882     yyreturn:
7883 michael 967 if (yychar != YYEMPTY)
7884 michael 1133 {
7885     /* Make sure we have latest lookahead translation. See comments at
7886     user semantic actions for why this is necessary. */
7887     yytoken = YYTRANSLATE (yychar);
7888     yydestruct ("Cleanup: discarding lookahead",
7889     yytoken, &yylval);
7890     }
7891 michael 913 /* Do not reclaim the symbols of the rule which action triggered
7892     this YYABORT or YYACCEPT. */
7893     YYPOPSTACK (yylen);
7894     YY_STACK_PRINT (yyss, yyssp);
7895     while (yyssp != yyss)
7896     {
7897     yydestruct ("Cleanup: popping",
7898     yystos[*yyssp], yyvsp);
7899     YYPOPSTACK (1);
7900     }
7901     #ifndef yyoverflow
7902     if (yyss != yyssa)
7903     YYSTACK_FREE (yyss);
7904     #endif
7905     #if YYERROR_VERBOSE
7906     if (yymsg != yymsgbuf)
7907     YYSTACK_FREE (yymsg);
7908     #endif
7909     /* Make sure YYID is used. */
7910     return YYID (yyresult);
7911     }
7912    
7913    
7914    

Properties

Name Value
svn:eol-style native