ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1377
Committed: Mon Apr 30 19:35:16 2012 UTC (13 years, 3 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 235541 byte(s)
Log Message:
- Remove all Class related #defines like MaxTotal, MaxSendq, etc.
  All they do is lead to confusion.

File Contents

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

Properties

Name Value
svn:eol-style native