ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1378
Committed: Mon Apr 30 19:43:34 2012 UTC (11 years, 11 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 235454 byte(s)
Log Message:
- Get rid of OPERNICKLEN. Oper login IDs are no longer limited to NICKLEN*2

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 michael 1378 1019, 1019, 1019, 1021, 1030, 1067, 1079, 1090, 1132, 1142,
1309     1141, 1147, 1147, 1148, 1152, 1156, 1160, 1164, 1168, 1172,
1310     1176, 1180, 1184, 1188, 1192, 1196, 1200, 1204, 1208, 1212,
1311     1216, 1220, 1224, 1231, 1230, 1236, 1236, 1237, 1241, 1245,
1312     1249, 1253, 1257, 1261, 1265, 1269, 1273, 1277, 1281, 1285,
1313     1289, 1293, 1297, 1301, 1305, 1316, 1315, 1365, 1365, 1366,
1314     1367, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375,
1315     1376, 1377, 1378, 1380, 1389, 1395, 1401, 1407, 1413, 1419,
1316     1425, 1431, 1437, 1443, 1449, 1455, 1465, 1464, 1481, 1480,
1317     1485, 1485, 1486, 1490, 1494, 1502, 1502, 1503, 1503, 1503,
1318     1503, 1503, 1505, 1505, 1507, 1507, 1509, 1523, 1543, 1552,
1319     1565, 1564, 1633, 1633, 1634, 1634, 1634, 1634, 1635, 1635,
1320     1635, 1636, 1636, 1638, 1675, 1688, 1697, 1709, 1708, 1712,
1321     1712, 1713, 1717, 1721, 1725, 1729, 1733, 1737, 1741, 1745,
1322     1752, 1771, 1781, 1795, 1794, 1810, 1810, 1811, 1811, 1811,
1323     1811, 1813, 1822, 1837, 1850, 1852, 1852, 1853, 1853, 1855,
1324     1871, 1870, 1886, 1886, 1887, 1887, 1887, 1887, 1889, 1898,
1325     1921, 1920, 1926, 1926, 1927, 1931, 1935, 1939, 1943, 1947,
1326     1951, 1955, 1959, 1963, 1973, 1972, 1989, 1989, 1990, 1990,
1327     1990, 1992, 1999, 1998, 2004, 2004, 2005, 2009, 2013, 2017,
1328     2021, 2025, 2029, 2033, 2037, 2041, 2051, 2050, 2179, 2179,
1329     2180, 2180, 2180, 2181, 2181, 2182, 2182, 2182, 2183, 2183,
1330     2183, 2184, 2184, 2185, 2187, 2196, 2205, 2231, 2249, 2267,
1331     2273, 2277, 2286, 2285, 2289, 2289, 2290, 2294, 2298, 2302,
1332     2308, 2319, 2332, 2345, 2354, 2373, 2372, 2438, 2437, 2441,
1333     2441, 2442, 2448, 2448, 2449, 2449, 2449, 2449, 2451, 2470,
1334     2480, 2479, 2504, 2504, 2505, 2505, 2505, 2507, 2513, 2522,
1335     2524, 2524, 2525, 2525, 2527, 2546, 2545, 2593, 2592, 2596,
1336     2596, 2597, 2603, 2603, 2604, 2604, 2604, 2604, 2606, 2612,
1337     2621, 2624, 2624, 2625, 2625, 2626, 2626, 2627, 2627, 2628,
1338     2628, 2629, 2629, 2630, 2630, 2631, 2631, 2632, 2632, 2633,
1339     2633, 2634, 2634, 2635, 2635, 2636, 2636, 2637, 2637, 2638,
1340     2639, 2639, 2640, 2640, 2641, 2641, 2642, 2642, 2643, 2643,
1341     2644, 2645, 2646, 2646, 2647, 2648, 2649, 2649, 2650, 2650,
1342     2651, 2651, 2652, 2652, 2653, 2656, 2661, 2666, 2671, 2676,
1343     2681, 2686, 2691, 2696, 2701, 2706, 2711, 2716, 2721, 2726,
1344     2731, 2736, 2741, 2747, 2758, 2763, 2772, 2777, 2782, 2787,
1345     2792, 2797, 2800, 2805, 2808, 2813, 2818, 2823, 2828, 2833,
1346     2838, 2843, 2848, 2853, 2864, 2869, 2874, 2879, 2888, 2897,
1347     2902, 2907, 2913, 2912, 2917, 2917, 2918, 2921, 2924, 2927,
1348     2930, 2933, 2936, 2939, 2942, 2945, 2948, 2951, 2954, 2957,
1349     2960, 2963, 2966, 2969, 2972, 2975, 2981, 2980, 2985, 2985,
1350     2986, 2989, 2992, 2995, 2998, 3001, 3004, 3007, 3010, 3013,
1351     3016, 3019, 3022, 3025, 3028, 3031, 3034, 3037, 3040, 3043,
1352     3048, 3053, 3058, 3063, 3073, 3072, 3096, 3096, 3097, 3098,
1353     3099, 3100, 3101, 3102, 3103, 3105, 3111, 3118, 3117, 3122,
1354     3122, 3123, 3127, 3133, 3167, 3177, 3176, 3226, 3226, 3227,
1355     3231, 3240, 3243, 3243, 3244, 3244, 3245, 3245, 3246, 3246,
1356     3247, 3247, 3248, 3248, 3249, 3250, 3250, 3251, 3251, 3252,
1357     3252, 3253, 3253, 3255, 3260, 3265, 3270, 3275, 3280, 3285,
1358     3290, 3295, 3300, 3305, 3310, 3315, 3320, 3325, 3330, 3335,
1359     3340, 3348, 3351, 3351, 3352, 3352, 3353, 3354, 3355, 3355,
1360     3356, 3357, 3359, 3365, 3371, 3380, 3394, 3400, 3406
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     MyFree(yy_conf->name);
4078     DupString(yy_conf->name, yylval.string);
4079     }
4080     }
4081     break;
4082    
4083 michael 1324 case 144:
4084 michael 967
4085 michael 1133 /* Line 1806 of yacc.c */
4086 michael 1378 #line 1031 "conf_parser.y"
4087 michael 913 {
4088 michael 967 if (conf_parser_ctx.pass == 2)
4089 michael 913 {
4090     struct split_nuh_item nuh;
4091    
4092     nuh.nuhmask = yylval.string;
4093     nuh.nickptr = NULL;
4094     nuh.userptr = userbuf;
4095     nuh.hostptr = hostbuf;
4096    
4097     nuh.nicksize = 0;
4098     nuh.usersize = sizeof(userbuf);
4099     nuh.hostsize = sizeof(hostbuf);
4100    
4101     split_nuh(&nuh);
4102    
4103     if (yy_aconf->user == NULL)
4104     {
4105     DupString(yy_aconf->user, userbuf);
4106     DupString(yy_aconf->host, hostbuf);
4107 michael 1285
4108     yy_aconf->type = parse_netmask(yy_aconf->host, &yy_aconf->ipnum,
4109     &yy_aconf->bits);
4110 michael 913 }
4111     else
4112     {
4113     struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
4114    
4115     DupString(yy_tmp->user, userbuf);
4116     DupString(yy_tmp->host, hostbuf);
4117    
4118     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4119     }
4120     }
4121     }
4122     break;
4123    
4124 michael 1324 case 145:
4125 michael 967
4126 michael 1133 /* Line 1806 of yacc.c */
4127 michael 1378 #line 1068 "conf_parser.y"
4128 michael 913 {
4129 michael 967 if (conf_parser_ctx.pass == 2)
4130 michael 913 {
4131     if (yy_aconf->passwd != NULL)
4132     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4133    
4134     MyFree(yy_aconf->passwd);
4135     DupString(yy_aconf->passwd, yylval.string);
4136     }
4137     }
4138     break;
4139    
4140 michael 1324 case 146:
4141 michael 967
4142 michael 1133 /* Line 1806 of yacc.c */
4143 michael 1378 #line 1080 "conf_parser.y"
4144 michael 913 {
4145 michael 967 if (conf_parser_ctx.pass == 2)
4146 michael 913 {
4147     if (yylval.number)
4148     SetConfEncrypted(yy_aconf);
4149     else
4150     ClearConfEncrypted(yy_aconf);
4151     }
4152     }
4153     break;
4154    
4155 michael 1324 case 147:
4156 michael 967
4157 michael 1133 /* Line 1806 of yacc.c */
4158 michael 1378 #line 1091 "conf_parser.y"
4159 michael 913 {
4160     #ifdef HAVE_LIBCRYPTO
4161 michael 967 if (conf_parser_ctx.pass == 2)
4162 michael 913 {
4163     BIO *file;
4164    
4165     if (yy_aconf->rsa_public_key != NULL)
4166     {
4167     RSA_free(yy_aconf->rsa_public_key);
4168     yy_aconf->rsa_public_key = NULL;
4169     }
4170    
4171     if (yy_aconf->rsa_public_key_file != NULL)
4172     {
4173     MyFree(yy_aconf->rsa_public_key_file);
4174     yy_aconf->rsa_public_key_file = NULL;
4175     }
4176    
4177     DupString(yy_aconf->rsa_public_key_file, yylval.string);
4178     file = BIO_new_file(yylval.string, "r");
4179    
4180     if (file == NULL)
4181     {
4182     yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
4183     break;
4184     }
4185    
4186     yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
4187    
4188     if (yy_aconf->rsa_public_key == NULL)
4189     {
4190     yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4191     break;
4192     }
4193    
4194     BIO_set_close(file, BIO_CLOSE);
4195     BIO_free(file);
4196     }
4197     #endif /* HAVE_LIBCRYPTO */
4198     }
4199     break;
4200    
4201 michael 1324 case 148:
4202 michael 967
4203 michael 1133 /* Line 1806 of yacc.c */
4204 michael 1378 #line 1133 "conf_parser.y"
4205 michael 913 {
4206 michael 967 if (conf_parser_ctx.pass == 2)
4207 michael 913 {
4208     MyFree(class_name);
4209     DupString(class_name, yylval.string);
4210     }
4211     }
4212     break;
4213    
4214 michael 1324 case 149:
4215 michael 967
4216 michael 1133 /* Line 1806 of yacc.c */
4217 michael 1378 #line 1142 "conf_parser.y"
4218 michael 913 {
4219 michael 967 if (conf_parser_ctx.pass == 2)
4220 michael 913 yy_aconf->modes = 0;
4221     }
4222     break;
4223    
4224 michael 1324 case 153:
4225 michael 967
4226 michael 1133 /* Line 1806 of yacc.c */
4227 michael 1378 #line 1149 "conf_parser.y"
4228 michael 913 {
4229 michael 967 if (conf_parser_ctx.pass == 2)
4230 michael 1250 yy_aconf->modes |= UMODE_BOTS;
4231 michael 913 }
4232     break;
4233    
4234 michael 1324 case 154:
4235 michael 967
4236 michael 1133 /* Line 1806 of yacc.c */
4237 michael 1378 #line 1153 "conf_parser.y"
4238 michael 913 {
4239 michael 967 if (conf_parser_ctx.pass == 2)
4240 michael 1250 yy_aconf->modes |= UMODE_CCONN;
4241 michael 913 }
4242     break;
4243    
4244 michael 1324 case 155:
4245 michael 967
4246 michael 1133 /* Line 1806 of yacc.c */
4247 michael 1378 #line 1157 "conf_parser.y"
4248 michael 913 {
4249 michael 967 if (conf_parser_ctx.pass == 2)
4250 michael 1250 yy_aconf->modes |= UMODE_CCONN_FULL;
4251 michael 913 }
4252     break;
4253    
4254 michael 1324 case 156:
4255 michael 967
4256 michael 1133 /* Line 1806 of yacc.c */
4257 michael 1378 #line 1161 "conf_parser.y"
4258 michael 913 {
4259 michael 967 if (conf_parser_ctx.pass == 2)
4260 michael 1250 yy_aconf->modes |= UMODE_DEAF;
4261 michael 913 }
4262     break;
4263    
4264 michael 1324 case 157:
4265 michael 967
4266 michael 1133 /* Line 1806 of yacc.c */
4267 michael 1378 #line 1165 "conf_parser.y"
4268 michael 913 {
4269 michael 967 if (conf_parser_ctx.pass == 2)
4270 michael 1250 yy_aconf->modes |= UMODE_DEBUG;
4271 michael 913 }
4272     break;
4273    
4274 michael 1324 case 158:
4275 michael 967
4276 michael 1133 /* Line 1806 of yacc.c */
4277 michael 1378 #line 1169 "conf_parser.y"
4278 michael 913 {
4279 michael 967 if (conf_parser_ctx.pass == 2)
4280 michael 1250 yy_aconf->modes |= UMODE_FULL;
4281 michael 913 }
4282     break;
4283    
4284 michael 1324 case 159:
4285 michael 967
4286 michael 1133 /* Line 1806 of yacc.c */
4287 michael 1378 #line 1173 "conf_parser.y"
4288 michael 913 {
4289 michael 967 if (conf_parser_ctx.pass == 2)
4290 michael 1294 yy_aconf->modes |= UMODE_HIDDEN;
4291 michael 913 }
4292     break;
4293    
4294 michael 1324 case 160:
4295 michael 967
4296 michael 1133 /* Line 1806 of yacc.c */
4297 michael 1378 #line 1177 "conf_parser.y"
4298 michael 913 {
4299 michael 967 if (conf_parser_ctx.pass == 2)
4300 michael 1294 yy_aconf->modes |= UMODE_SKILL;
4301 michael 913 }
4302     break;
4303    
4304 michael 1324 case 161:
4305 michael 967
4306 michael 1133 /* Line 1806 of yacc.c */
4307 michael 1378 #line 1181 "conf_parser.y"
4308 michael 913 {
4309 michael 967 if (conf_parser_ctx.pass == 2)
4310 michael 1294 yy_aconf->modes |= UMODE_NCHANGE;
4311 michael 913 }
4312     break;
4313    
4314 michael 1324 case 162:
4315 michael 967
4316 michael 1133 /* Line 1806 of yacc.c */
4317 michael 1378 #line 1185 "conf_parser.y"
4318 michael 913 {
4319 michael 967 if (conf_parser_ctx.pass == 2)
4320 michael 1294 yy_aconf->modes |= UMODE_REJ;
4321 michael 913 }
4322     break;
4323    
4324 michael 1324 case 163:
4325 michael 967
4326 michael 1133 /* Line 1806 of yacc.c */
4327 michael 1378 #line 1189 "conf_parser.y"
4328 michael 913 {
4329 michael 967 if (conf_parser_ctx.pass == 2)
4330 michael 1294 yy_aconf->modes |= UMODE_UNAUTH;
4331 michael 913 }
4332     break;
4333    
4334 michael 1324 case 164:
4335 michael 967
4336 michael 1133 /* Line 1806 of yacc.c */
4337 michael 1378 #line 1193 "conf_parser.y"
4338 michael 913 {
4339 michael 967 if (conf_parser_ctx.pass == 2)
4340 michael 1294 yy_aconf->modes |= UMODE_SPY;
4341 michael 913 }
4342     break;
4343    
4344 michael 1324 case 165:
4345 michael 967
4346 michael 1133 /* Line 1806 of yacc.c */
4347 michael 1378 #line 1197 "conf_parser.y"
4348 michael 913 {
4349 michael 967 if (conf_parser_ctx.pass == 2)
4350 michael 1294 yy_aconf->modes |= UMODE_EXTERNAL;
4351 michael 913 }
4352     break;
4353    
4354 michael 1324 case 166:
4355 michael 967
4356 michael 1133 /* Line 1806 of yacc.c */
4357 michael 1378 #line 1201 "conf_parser.y"
4358 michael 913 {
4359 michael 967 if (conf_parser_ctx.pass == 2)
4360 michael 1294 yy_aconf->modes |= UMODE_OPERWALL;
4361 michael 913 }
4362     break;
4363    
4364 michael 1324 case 167:
4365 michael 967
4366 michael 1133 /* Line 1806 of yacc.c */
4367 michael 1378 #line 1205 "conf_parser.y"
4368 michael 913 {
4369 michael 967 if (conf_parser_ctx.pass == 2)
4370 michael 1294 yy_aconf->modes |= UMODE_SERVNOTICE;
4371 michael 913 }
4372     break;
4373    
4374 michael 1324 case 168:
4375 michael 967
4376 michael 1133 /* Line 1806 of yacc.c */
4377 michael 1378 #line 1209 "conf_parser.y"
4378 michael 913 {
4379 michael 967 if (conf_parser_ctx.pass == 2)
4380 michael 1294 yy_aconf->modes |= UMODE_INVISIBLE;
4381 michael 913 }
4382     break;
4383    
4384 michael 1324 case 169:
4385 michael 967
4386 michael 1133 /* Line 1806 of yacc.c */
4387 michael 1378 #line 1213 "conf_parser.y"
4388 michael 913 {
4389 michael 967 if (conf_parser_ctx.pass == 2)
4390 michael 1294 yy_aconf->modes |= UMODE_WALLOP;
4391 michael 913 }
4392     break;
4393    
4394 michael 1324 case 170:
4395 michael 967
4396 michael 1133 /* Line 1806 of yacc.c */
4397 michael 1378 #line 1217 "conf_parser.y"
4398 michael 913 {
4399 michael 967 if (conf_parser_ctx.pass == 2)
4400 michael 1294 yy_aconf->modes |= UMODE_SOFTCALLERID;
4401 michael 913 }
4402     break;
4403    
4404 michael 1324 case 171:
4405 michael 967
4406 michael 1133 /* Line 1806 of yacc.c */
4407 michael 1378 #line 1221 "conf_parser.y"
4408 michael 913 {
4409 michael 1228 if (conf_parser_ctx.pass == 2)
4410 michael 1294 yy_aconf->modes |= UMODE_CALLERID;
4411 michael 913 }
4412     break;
4413    
4414 michael 1324 case 172:
4415 michael 967
4416 michael 1133 /* Line 1806 of yacc.c */
4417 michael 1378 #line 1225 "conf_parser.y"
4418 michael 1228 {
4419     if (conf_parser_ctx.pass == 2)
4420 michael 1294 yy_aconf->modes |= UMODE_LOCOPS;
4421 michael 1228 }
4422 michael 913 break;
4423    
4424 michael 1324 case 173:
4425 michael 967
4426 michael 1133 /* Line 1806 of yacc.c */
4427 michael 1378 #line 1231 "conf_parser.y"
4428 michael 913 {
4429 michael 967 if (conf_parser_ctx.pass == 2)
4430 michael 1294 yy_aconf->port = 0;
4431 michael 913 }
4432     break;
4433    
4434 michael 1324 case 177:
4435 michael 967
4436 michael 1133 /* Line 1806 of yacc.c */
4437 michael 1378 #line 1238 "conf_parser.y"
4438 michael 913 {
4439 michael 967 if (conf_parser_ctx.pass == 2)
4440 michael 1294 yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4441 michael 913 }
4442     break;
4443    
4444 michael 1324 case 178:
4445 michael 967
4446 michael 1133 /* Line 1806 of yacc.c */
4447 michael 1378 #line 1242 "conf_parser.y"
4448 michael 913 {
4449 michael 967 if (conf_parser_ctx.pass == 2)
4450 michael 1294 yy_aconf->port |= OPER_FLAG_REMOTE;
4451 michael 913 }
4452     break;
4453    
4454 michael 1324 case 179:
4455 michael 967
4456 michael 1133 /* Line 1806 of yacc.c */
4457 michael 1378 #line 1246 "conf_parser.y"
4458 michael 913 {
4459 michael 967 if (conf_parser_ctx.pass == 2)
4460 michael 1294 yy_aconf->port |= OPER_FLAG_K;
4461 michael 913 }
4462     break;
4463    
4464 michael 1324 case 180:
4465 michael 967
4466 michael 1133 /* Line 1806 of yacc.c */
4467 michael 1378 #line 1250 "conf_parser.y"
4468 michael 913 {
4469 michael 967 if (conf_parser_ctx.pass == 2)
4470 michael 1294 yy_aconf->port |= OPER_FLAG_UNKLINE;
4471 michael 913 }
4472     break;
4473    
4474 michael 1324 case 181:
4475 michael 967
4476 michael 1133 /* Line 1806 of yacc.c */
4477 michael 1378 #line 1254 "conf_parser.y"
4478 michael 913 {
4479 michael 967 if (conf_parser_ctx.pass == 2)
4480 michael 1301 yy_aconf->port |= OPER_FLAG_DLINE;
4481 michael 913 }
4482     break;
4483    
4484 michael 1324 case 182:
4485 michael 967
4486 michael 1133 /* Line 1806 of yacc.c */
4487 michael 1378 #line 1258 "conf_parser.y"
4488 michael 913 {
4489 michael 967 if (conf_parser_ctx.pass == 2)
4490 michael 1301 yy_aconf->port |= OPER_FLAG_UNDLINE;
4491 michael 913 }
4492     break;
4493    
4494 michael 1324 case 183:
4495 michael 967
4496 michael 1133 /* Line 1806 of yacc.c */
4497 michael 1378 #line 1262 "conf_parser.y"
4498 michael 913 {
4499 michael 967 if (conf_parser_ctx.pass == 2)
4500 michael 1301 yy_aconf->port |= OPER_FLAG_X;
4501 michael 913 }
4502     break;
4503    
4504 michael 1324 case 184:
4505 michael 967
4506 michael 1133 /* Line 1806 of yacc.c */
4507 michael 1378 #line 1266 "conf_parser.y"
4508 michael 913 {
4509 michael 967 if (conf_parser_ctx.pass == 2)
4510 michael 1301 yy_aconf->port |= OPER_FLAG_GLINE;
4511 michael 913 }
4512     break;
4513    
4514 michael 1324 case 185:
4515 michael 967
4516 michael 1133 /* Line 1806 of yacc.c */
4517 michael 1378 #line 1270 "conf_parser.y"
4518 michael 913 {
4519 michael 967 if (conf_parser_ctx.pass == 2)
4520 michael 1301 yy_aconf->port |= OPER_FLAG_DIE;
4521 michael 913 }
4522     break;
4523    
4524 michael 1324 case 186:
4525 michael 967
4526 michael 1133 /* Line 1806 of yacc.c */
4527 michael 1378 #line 1274 "conf_parser.y"
4528 michael 913 {
4529 michael 967 if (conf_parser_ctx.pass == 2)
4530 michael 1301 yy_aconf->port |= OPER_FLAG_RESTART;
4531 michael 913 }
4532     break;
4533    
4534 michael 1324 case 187:
4535 michael 967
4536 michael 1133 /* Line 1806 of yacc.c */
4537 michael 1378 #line 1278 "conf_parser.y"
4538 michael 913 {
4539 michael 967 if (conf_parser_ctx.pass == 2)
4540 michael 1301 yy_aconf->port |= OPER_FLAG_REHASH;
4541 michael 913 }
4542     break;
4543    
4544 michael 1324 case 188:
4545 michael 967
4546 michael 1133 /* Line 1806 of yacc.c */
4547 michael 1378 #line 1282 "conf_parser.y"
4548 michael 913 {
4549 michael 967 if (conf_parser_ctx.pass == 2)
4550 michael 1301 yy_aconf->port |= OPER_FLAG_ADMIN;
4551 michael 1216 }
4552     break;
4553    
4554 michael 1324 case 189:
4555 michael 1216
4556     /* Line 1806 of yacc.c */
4557 michael 1378 #line 1286 "conf_parser.y"
4558 michael 1216 {
4559     if (conf_parser_ctx.pass == 2)
4560 michael 1301 yy_aconf->port |= OPER_FLAG_N;
4561 michael 913 }
4562     break;
4563    
4564 michael 1324 case 190:
4565 michael 967
4566 michael 1133 /* Line 1806 of yacc.c */
4567 michael 1378 #line 1290 "conf_parser.y"
4568 michael 913 {
4569 michael 967 if (conf_parser_ctx.pass == 2)
4570 michael 1301 yy_aconf->port |= OPER_FLAG_OPERWALL;
4571 michael 913 }
4572     break;
4573    
4574 michael 1324 case 191:
4575 michael 967
4576 michael 1133 /* Line 1806 of yacc.c */
4577 michael 1378 #line 1294 "conf_parser.y"
4578 michael 913 {
4579 michael 967 if (conf_parser_ctx.pass == 2)
4580 michael 1301 yy_aconf->port |= OPER_FLAG_GLOBOPS;
4581 michael 913 }
4582     break;
4583    
4584 michael 1324 case 192:
4585 michael 967
4586 michael 1133 /* Line 1806 of yacc.c */
4587 michael 1378 #line 1298 "conf_parser.y"
4588 michael 913 {
4589 michael 967 if (conf_parser_ctx.pass == 2)
4590 michael 1301 yy_aconf->port |= OPER_FLAG_OPER_SPY;
4591 michael 913 }
4592     break;
4593    
4594 michael 1324 case 193:
4595 michael 967
4596 michael 1133 /* Line 1806 of yacc.c */
4597 michael 1378 #line 1302 "conf_parser.y"
4598 michael 913 {
4599 michael 1301 if (conf_parser_ctx.pass == 2)
4600     yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4601     }
4602     break;
4603    
4604 michael 1324 case 194:
4605 michael 1301
4606     /* Line 1806 of yacc.c */
4607 michael 1378 #line 1306 "conf_parser.y"
4608 michael 1301 {
4609     if (conf_parser_ctx.pass == 2)
4610     yy_aconf->port |= OPER_FLAG_MODULE;
4611     }
4612     break;
4613    
4614 michael 1324 case 195:
4615 michael 1301
4616     /* Line 1806 of yacc.c */
4617 michael 1378 #line 1316 "conf_parser.y"
4618 michael 1301 {
4619 michael 967 if (conf_parser_ctx.pass == 1)
4620 michael 913 {
4621     yy_conf = make_conf_item(CLASS_TYPE);
4622     yy_class = map_to_conf(yy_conf);
4623     }
4624     }
4625     break;
4626    
4627 michael 1324 case 196:
4628 michael 967
4629 michael 1133 /* Line 1806 of yacc.c */
4630 michael 1378 #line 1323 "conf_parser.y"
4631 michael 913 {
4632 michael 967 if (conf_parser_ctx.pass == 1)
4633 michael 913 {
4634     struct ConfItem *cconf = NULL;
4635     struct ClassItem *class = NULL;
4636    
4637     if (yy_class_name == NULL)
4638     delete_conf_item(yy_conf);
4639     else
4640     {
4641 michael 1285 cconf = find_exact_name_conf(CLASS_TYPE, NULL, yy_class_name, NULL, NULL);
4642 michael 913
4643     if (cconf != NULL) /* The class existed already */
4644     {
4645     int user_count = 0;
4646    
4647     rebuild_cidr_class(cconf, yy_class);
4648    
4649     class = map_to_conf(cconf);
4650    
4651     user_count = class->curr_user_count;
4652     memcpy(class, yy_class, sizeof(*class));
4653     class->curr_user_count = user_count;
4654     class->active = 1;
4655    
4656     delete_conf_item(yy_conf);
4657    
4658     MyFree(cconf->name); /* Allows case change of class name */
4659     cconf->name = yy_class_name;
4660     }
4661     else /* Brand new class */
4662     {
4663     MyFree(yy_conf->name); /* just in case it was allocated */
4664     yy_conf->name = yy_class_name;
4665     yy_class->active = 1;
4666     }
4667     }
4668    
4669     yy_class_name = NULL;
4670     }
4671     }
4672     break;
4673    
4674 michael 1324 case 213:
4675 michael 967
4676 michael 1133 /* Line 1806 of yacc.c */
4677 michael 1378 #line 1381 "conf_parser.y"
4678 michael 913 {
4679 michael 967 if (conf_parser_ctx.pass == 1)
4680 michael 913 {
4681     MyFree(yy_class_name);
4682     DupString(yy_class_name, yylval.string);
4683     }
4684     }
4685     break;
4686    
4687 michael 1324 case 214:
4688 michael 1294
4689     /* Line 1806 of yacc.c */
4690 michael 1378 #line 1390 "conf_parser.y"
4691 michael 1294 {
4692     if (conf_parser_ctx.pass == 1)
4693 michael 1377 yy_class->ping_freq = (yyvsp[(3) - (4)].number);
4694 michael 1294 }
4695     break;
4696    
4697 michael 1324 case 215:
4698 michael 967
4699 michael 1133 /* Line 1806 of yacc.c */
4700 michael 1378 #line 1396 "conf_parser.y"
4701 michael 913 {
4702 michael 967 if (conf_parser_ctx.pass == 1)
4703 michael 1377 yy_class->ping_warning = (yyvsp[(3) - (4)].number);
4704 michael 913 }
4705     break;
4706    
4707 michael 1324 case 216:
4708 michael 967
4709 michael 1133 /* Line 1806 of yacc.c */
4710 michael 1378 #line 1402 "conf_parser.y"
4711 michael 913 {
4712 michael 967 if (conf_parser_ctx.pass == 1)
4713 michael 1377 yy_class->max_perip = (yyvsp[(3) - (4)].number);
4714 michael 913 }
4715     break;
4716    
4717 michael 1324 case 217:
4718 michael 967
4719 michael 1133 /* Line 1806 of yacc.c */
4720 michael 1378 #line 1408 "conf_parser.y"
4721 michael 913 {
4722 michael 967 if (conf_parser_ctx.pass == 1)
4723 michael 1377 yy_class->con_freq = (yyvsp[(3) - (4)].number);
4724 michael 913 }
4725     break;
4726    
4727 michael 1324 case 218:
4728 michael 967
4729 michael 1133 /* Line 1806 of yacc.c */
4730 michael 1378 #line 1414 "conf_parser.y"
4731 michael 913 {
4732 michael 967 if (conf_parser_ctx.pass == 1)
4733 michael 1377 yy_class->max_total = (yyvsp[(3) - (4)].number);
4734 michael 913 }
4735     break;
4736    
4737 michael 1324 case 219:
4738 michael 967
4739 michael 1133 /* Line 1806 of yacc.c */
4740 michael 1378 #line 1420 "conf_parser.y"
4741 michael 913 {
4742 michael 967 if (conf_parser_ctx.pass == 1)
4743 michael 1377 yy_class->max_global = (yyvsp[(3) - (4)].number);
4744 michael 913 }
4745     break;
4746    
4747 michael 1324 case 220:
4748 michael 967
4749 michael 1133 /* Line 1806 of yacc.c */
4750 michael 1378 #line 1426 "conf_parser.y"
4751 michael 913 {
4752 michael 967 if (conf_parser_ctx.pass == 1)
4753 michael 1377 yy_class->max_local = (yyvsp[(3) - (4)].number);
4754 michael 913 }
4755     break;
4756    
4757 michael 1324 case 221:
4758 michael 967
4759 michael 1133 /* Line 1806 of yacc.c */
4760 michael 1378 #line 1432 "conf_parser.y"
4761 michael 913 {
4762 michael 967 if (conf_parser_ctx.pass == 1)
4763 michael 1377 yy_class->max_ident = (yyvsp[(3) - (4)].number);
4764 michael 913 }
4765     break;
4766    
4767 michael 1324 case 222:
4768 michael 967
4769 michael 1133 /* Line 1806 of yacc.c */
4770 michael 1378 #line 1438 "conf_parser.y"
4771 michael 913 {
4772 michael 967 if (conf_parser_ctx.pass == 1)
4773 michael 1377 yy_class->max_sendq = (yyvsp[(3) - (4)].number);
4774 michael 913 }
4775     break;
4776    
4777 michael 1324 case 223:
4778 michael 967
4779 michael 1133 /* Line 1806 of yacc.c */
4780 michael 1378 #line 1444 "conf_parser.y"
4781 michael 913 {
4782 michael 967 if (conf_parser_ctx.pass == 1)
4783 michael 1377 yy_class->cidr_bitlen_ipv4 = (yyvsp[(3) - (4)].number);
4784 michael 913 }
4785     break;
4786    
4787 michael 1324 case 224:
4788 michael 967
4789 michael 1133 /* Line 1806 of yacc.c */
4790 michael 1378 #line 1450 "conf_parser.y"
4791 michael 913 {
4792 michael 967 if (conf_parser_ctx.pass == 1)
4793 michael 1377 yy_class->cidr_bitlen_ipv6 = (yyvsp[(3) - (4)].number);
4794 michael 913 }
4795     break;
4796    
4797 michael 1324 case 225:
4798 michael 967
4799 michael 1133 /* Line 1806 of yacc.c */
4800 michael 1378 #line 1456 "conf_parser.y"
4801 michael 913 {
4802 michael 967 if (conf_parser_ctx.pass == 1)
4803 michael 1377 yy_class->number_per_cidr = (yyvsp[(3) - (4)].number);
4804 michael 913 }
4805     break;
4806    
4807 michael 1324 case 226:
4808 michael 967
4809 michael 1133 /* Line 1806 of yacc.c */
4810 michael 1378 #line 1465 "conf_parser.y"
4811 michael 913 {
4812 michael 967 if (conf_parser_ctx.pass == 2)
4813 michael 913 {
4814     listener_address = NULL;
4815     listener_flags = 0;
4816     }
4817     }
4818     break;
4819    
4820 michael 1324 case 227:
4821 michael 967
4822 michael 1133 /* Line 1806 of yacc.c */
4823 michael 1378 #line 1472 "conf_parser.y"
4824 michael 913 {
4825 michael 967 if (conf_parser_ctx.pass == 2)
4826 michael 913 {
4827     MyFree(listener_address);
4828     listener_address = NULL;
4829     }
4830     }
4831     break;
4832    
4833 michael 1324 case 228:
4834 michael 967
4835 michael 1133 /* Line 1806 of yacc.c */
4836 michael 1378 #line 1481 "conf_parser.y"
4837 michael 913 {
4838     listener_flags = 0;
4839     }
4840     break;
4841    
4842 michael 1324 case 232:
4843 michael 967
4844 michael 1133 /* Line 1806 of yacc.c */
4845 michael 1378 #line 1487 "conf_parser.y"
4846 michael 913 {
4847 michael 967 if (conf_parser_ctx.pass == 2)
4848 michael 913 listener_flags |= LISTENER_SSL;
4849     }
4850     break;
4851    
4852 michael 1324 case 233:
4853 michael 967
4854 michael 1133 /* Line 1806 of yacc.c */
4855 michael 1378 #line 1491 "conf_parser.y"
4856 michael 913 {
4857 michael 967 if (conf_parser_ctx.pass == 2)
4858 michael 913 listener_flags |= LISTENER_HIDDEN;
4859     }
4860     break;
4861    
4862 michael 1324 case 234:
4863 michael 967
4864 michael 1133 /* Line 1806 of yacc.c */
4865 michael 1378 #line 1495 "conf_parser.y"
4866 michael 913 {
4867 michael 967 if (conf_parser_ctx.pass == 2)
4868 michael 913 listener_flags |= LISTENER_SERVER;
4869     }
4870     break;
4871    
4872 michael 1324 case 242:
4873 michael 967
4874 michael 1133 /* Line 1806 of yacc.c */
4875 michael 1378 #line 1505 "conf_parser.y"
4876 michael 913 { listener_flags = 0; }
4877     break;
4878    
4879 michael 1324 case 246:
4880 michael 967
4881 michael 1133 /* Line 1806 of yacc.c */
4882 michael 1378 #line 1510 "conf_parser.y"
4883 michael 913 {
4884 michael 967 if (conf_parser_ctx.pass == 2)
4885 michael 913 {
4886     if ((listener_flags & LISTENER_SSL))
4887     #ifdef HAVE_LIBCRYPTO
4888 michael 967 if (!ServerInfo.server_ctx)
4889 michael 913 #endif
4890     {
4891     yyerror("SSL not available - port closed");
4892     break;
4893     }
4894     add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
4895     }
4896     }
4897     break;
4898    
4899 michael 1324 case 247:
4900 michael 967
4901 michael 1133 /* Line 1806 of yacc.c */
4902 michael 1378 #line 1524 "conf_parser.y"
4903 michael 913 {
4904 michael 967 if (conf_parser_ctx.pass == 2)
4905 michael 913 {
4906     int i;
4907    
4908     if ((listener_flags & LISTENER_SSL))
4909     #ifdef HAVE_LIBCRYPTO
4910 michael 967 if (!ServerInfo.server_ctx)
4911 michael 913 #endif
4912     {
4913     yyerror("SSL not available - port closed");
4914     break;
4915     }
4916    
4917     for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4918     add_listener(i, listener_address, listener_flags);
4919     }
4920     }
4921     break;
4922    
4923 michael 1324 case 248:
4924 michael 967
4925 michael 1133 /* Line 1806 of yacc.c */
4926 michael 1378 #line 1544 "conf_parser.y"
4927 michael 913 {
4928 michael 967 if (conf_parser_ctx.pass == 2)
4929 michael 913 {
4930     MyFree(listener_address);
4931     DupString(listener_address, yylval.string);
4932     }
4933     }
4934     break;
4935    
4936 michael 1324 case 249:
4937 michael 967
4938 michael 1133 /* Line 1806 of yacc.c */
4939 michael 1378 #line 1553 "conf_parser.y"
4940 michael 913 {
4941 michael 967 if (conf_parser_ctx.pass == 2)
4942 michael 913 {
4943     MyFree(listener_address);
4944     DupString(listener_address, yylval.string);
4945     }
4946     }
4947     break;
4948    
4949 michael 1324 case 250:
4950 michael 967
4951 michael 1133 /* Line 1806 of yacc.c */
4952 michael 1378 #line 1565 "conf_parser.y"
4953 michael 913 {
4954 michael 967 if (conf_parser_ctx.pass == 2)
4955 michael 913 {
4956     yy_conf = make_conf_item(CLIENT_TYPE);
4957     yy_aconf = map_to_conf(yy_conf);
4958     }
4959     else
4960     {
4961     MyFree(class_name);
4962     class_name = NULL;
4963     }
4964     }
4965     break;
4966    
4967 michael 1324 case 251:
4968 michael 967
4969 michael 1133 /* Line 1806 of yacc.c */
4970 michael 1378 #line 1577 "conf_parser.y"
4971 michael 913 {
4972 michael 967 if (conf_parser_ctx.pass == 2)
4973 michael 913 {
4974     struct CollectItem *yy_tmp = NULL;
4975     dlink_node *ptr = NULL, *next_ptr = NULL;
4976    
4977     if (yy_aconf->user && yy_aconf->host)
4978     {
4979     conf_add_class_to_conf(yy_conf, class_name);
4980     add_conf_by_address(CONF_CLIENT, yy_aconf);
4981     }
4982     else
4983     delete_conf_item(yy_conf);
4984    
4985     /* copy over settings from first struct */
4986     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4987     {
4988     struct AccessItem *new_aconf;
4989     struct ConfItem *new_conf;
4990    
4991     new_conf = make_conf_item(CLIENT_TYPE);
4992     new_aconf = map_to_conf(new_conf);
4993    
4994     yy_tmp = ptr->data;
4995    
4996     assert(yy_tmp->user && yy_tmp->host);
4997    
4998     if (yy_aconf->passwd != NULL)
4999     DupString(new_aconf->passwd, yy_aconf->passwd);
5000     if (yy_conf->name != NULL)
5001     DupString(new_conf->name, yy_conf->name);
5002     if (yy_aconf->passwd != NULL)
5003     DupString(new_aconf->passwd, yy_aconf->passwd);
5004    
5005     new_aconf->flags = yy_aconf->flags;
5006     new_aconf->port = yy_aconf->port;
5007    
5008     DupString(new_aconf->user, yy_tmp->user);
5009     collapse(new_aconf->user);
5010    
5011     DupString(new_aconf->host, yy_tmp->host);
5012     collapse(new_aconf->host);
5013    
5014     conf_add_class_to_conf(new_conf, class_name);
5015     add_conf_by_address(CONF_CLIENT, new_aconf);
5016     dlinkDelete(&yy_tmp->node, &col_conf_list);
5017     free_collect_item(yy_tmp);
5018     }
5019    
5020     MyFree(class_name);
5021     class_name = NULL;
5022     yy_conf = NULL;
5023     yy_aconf = NULL;
5024     }
5025     }
5026     break;
5027    
5028 michael 1324 case 263:
5029 michael 967
5030 michael 1133 /* Line 1806 of yacc.c */
5031 michael 1378 #line 1639 "conf_parser.y"
5032 michael 913 {
5033 michael 967 if (conf_parser_ctx.pass == 2)
5034 michael 913 {
5035     struct CollectItem *yy_tmp = NULL;
5036     struct split_nuh_item nuh;
5037    
5038     nuh.nuhmask = yylval.string;
5039     nuh.nickptr = NULL;
5040     nuh.userptr = userbuf;
5041     nuh.hostptr = hostbuf;
5042    
5043     nuh.nicksize = 0;
5044     nuh.usersize = sizeof(userbuf);
5045     nuh.hostsize = sizeof(hostbuf);
5046    
5047     split_nuh(&nuh);
5048    
5049     if (yy_aconf->user == NULL)
5050     {
5051     DupString(yy_aconf->user, userbuf);
5052     DupString(yy_aconf->host, hostbuf);
5053     }
5054     else
5055     {
5056     yy_tmp = MyMalloc(sizeof(struct CollectItem));
5057    
5058     DupString(yy_tmp->user, userbuf);
5059     DupString(yy_tmp->host, hostbuf);
5060    
5061     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
5062     }
5063     }
5064     }
5065     break;
5066    
5067 michael 1324 case 264:
5068 michael 967
5069 michael 1133 /* Line 1806 of yacc.c */
5070 michael 1378 #line 1676 "conf_parser.y"
5071 michael 913 {
5072 michael 967 if (conf_parser_ctx.pass == 2)
5073 michael 913 {
5074     /* be paranoid */
5075     if (yy_aconf->passwd != NULL)
5076     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5077    
5078     MyFree(yy_aconf->passwd);
5079     DupString(yy_aconf->passwd, yylval.string);
5080     }
5081     }
5082     break;
5083    
5084 michael 1324 case 265:
5085 michael 967
5086 michael 1133 /* Line 1806 of yacc.c */
5087 michael 1378 #line 1689 "conf_parser.y"
5088 michael 913 {
5089 michael 967 if (conf_parser_ctx.pass == 2)
5090 michael 913 {
5091     MyFree(class_name);
5092     DupString(class_name, yylval.string);
5093     }
5094     }
5095     break;
5096    
5097 michael 1324 case 266:
5098 michael 967
5099 michael 1133 /* Line 1806 of yacc.c */
5100 michael 1378 #line 1698 "conf_parser.y"
5101 michael 913 {
5102 michael 967 if (conf_parser_ctx.pass == 2)
5103 michael 913 {
5104     if (yylval.number)
5105     SetConfEncrypted(yy_aconf);
5106     else
5107     ClearConfEncrypted(yy_aconf);
5108     }
5109     }
5110     break;
5111    
5112 michael 1324 case 267:
5113 michael 967
5114 michael 1133 /* Line 1806 of yacc.c */
5115 michael 1378 #line 1709 "conf_parser.y"
5116 michael 913 {
5117     }
5118     break;
5119    
5120 michael 1324 case 271:
5121 michael 967
5122 michael 1133 /* Line 1806 of yacc.c */
5123 michael 1378 #line 1714 "conf_parser.y"
5124 michael 913 {
5125 michael 967 if (conf_parser_ctx.pass == 2)
5126 michael 1250 yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5127 michael 913 }
5128     break;
5129    
5130 michael 1324 case 272:
5131 michael 967
5132 michael 1133 /* Line 1806 of yacc.c */
5133 michael 1378 #line 1718 "conf_parser.y"
5134 michael 913 {
5135 michael 967 if (conf_parser_ctx.pass == 2)
5136 michael 1250 yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5137 michael 913 }
5138     break;
5139    
5140 michael 1324 case 273:
5141 michael 967
5142 michael 1133 /* Line 1806 of yacc.c */
5143 michael 1378 #line 1722 "conf_parser.y"
5144 michael 913 {
5145 michael 967 if (conf_parser_ctx.pass == 2)
5146 michael 1250 yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5147 michael 913 }
5148     break;
5149    
5150 michael 1324 case 274:
5151 michael 967
5152 michael 1133 /* Line 1806 of yacc.c */
5153 michael 1378 #line 1726 "conf_parser.y"
5154 michael 913 {
5155 michael 967 if (conf_parser_ctx.pass == 2)
5156 michael 1250 yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5157 michael 913 }
5158     break;
5159    
5160 michael 1324 case 275:
5161 michael 967
5162 michael 1133 /* Line 1806 of yacc.c */
5163 michael 1378 #line 1730 "conf_parser.y"
5164 michael 913 {
5165 michael 967 if (conf_parser_ctx.pass == 2)
5166 michael 1250 yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5167 michael 913 }
5168     break;
5169    
5170 michael 1324 case 276:
5171 michael 967
5172 michael 1133 /* Line 1806 of yacc.c */
5173 michael 1378 #line 1734 "conf_parser.y"
5174 michael 913 {
5175 michael 967 if (conf_parser_ctx.pass == 2)
5176 michael 1250 yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5177 michael 913 }
5178     break;
5179    
5180 michael 1324 case 277:
5181 michael 967
5182 michael 1133 /* Line 1806 of yacc.c */
5183 michael 1378 #line 1738 "conf_parser.y"
5184 michael 913 {
5185 michael 967 if (conf_parser_ctx.pass == 2)
5186 michael 1250 yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5187 michael 913 }
5188     break;
5189    
5190 michael 1324 case 278:
5191 michael 967
5192 michael 1133 /* Line 1806 of yacc.c */
5193 michael 1378 #line 1742 "conf_parser.y"
5194 michael 913 {
5195 michael 967 if (conf_parser_ctx.pass == 2)
5196 michael 1250 yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5197 michael 913 }
5198     break;
5199    
5200 michael 1324 case 279:
5201 michael 967
5202 michael 1133 /* Line 1806 of yacc.c */
5203 michael 1378 #line 1746 "conf_parser.y"
5204 michael 913 {
5205 michael 967 if (conf_parser_ctx.pass == 2)
5206 michael 1250 yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5207     }
5208     break;
5209    
5210 michael 1324 case 280:
5211 michael 1250
5212     /* Line 1806 of yacc.c */
5213 michael 1378 #line 1753 "conf_parser.y"
5214 michael 1250 {
5215     if (conf_parser_ctx.pass == 2)
5216 michael 913 {
5217     MyFree(yy_conf->name);
5218    
5219     if (strlen(yylval.string) < HOSTLEN)
5220     {
5221     DupString(yy_conf->name, yylval.string);
5222     yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5223     }
5224     else
5225     {
5226 michael 1247 ilog(LOG_TYPE_IRCD, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5227 michael 913 yy_conf->name = NULL;
5228     }
5229     }
5230     }
5231     break;
5232    
5233 michael 1324 case 281:
5234 michael 967
5235 michael 1133 /* Line 1806 of yacc.c */
5236 michael 1378 #line 1772 "conf_parser.y"
5237 michael 913 {
5238 michael 967 if (conf_parser_ctx.pass == 2)
5239 michael 913 {
5240     yy_aconf->flags |= CONF_FLAGS_REDIR;
5241     MyFree(yy_conf->name);
5242     DupString(yy_conf->name, yylval.string);
5243     }
5244     }
5245     break;
5246    
5247 michael 1324 case 282:
5248 michael 967
5249 michael 1133 /* Line 1806 of yacc.c */
5250 michael 1378 #line 1782 "conf_parser.y"
5251 michael 913 {
5252 michael 967 if (conf_parser_ctx.pass == 2)
5253 michael 913 {
5254     yy_aconf->flags |= CONF_FLAGS_REDIR;
5255     yy_aconf->port = (yyvsp[(3) - (4)].number);
5256     }
5257     }
5258     break;
5259    
5260 michael 1324 case 283:
5261 michael 967
5262 michael 1133 /* Line 1806 of yacc.c */
5263 michael 1378 #line 1795 "conf_parser.y"
5264 michael 913 {
5265 michael 967 if (conf_parser_ctx.pass == 2)
5266 michael 913 {
5267     MyFree(resv_reason);
5268     resv_reason = NULL;
5269     }
5270     }
5271     break;
5272    
5273 michael 1324 case 284:
5274 michael 967
5275 michael 1133 /* Line 1806 of yacc.c */
5276 michael 1378 #line 1802 "conf_parser.y"
5277 michael 913 {
5278 michael 967 if (conf_parser_ctx.pass == 2)
5279 michael 913 {
5280     MyFree(resv_reason);
5281     resv_reason = NULL;
5282     }
5283     }
5284     break;
5285    
5286 michael 1324 case 291:
5287 michael 967
5288 michael 1133 /* Line 1806 of yacc.c */
5289 michael 1378 #line 1814 "conf_parser.y"
5290 michael 913 {
5291 michael 967 if (conf_parser_ctx.pass == 2)
5292 michael 913 {
5293     MyFree(resv_reason);
5294     DupString(resv_reason, yylval.string);
5295     }
5296     }
5297     break;
5298    
5299 michael 1324 case 292:
5300 michael 967
5301 michael 1133 /* Line 1806 of yacc.c */
5302 michael 1378 #line 1823 "conf_parser.y"
5303 michael 913 {
5304 michael 967 if (conf_parser_ctx.pass == 2)
5305 michael 913 {
5306     if (IsChanPrefix(*yylval.string))
5307     {
5308     char def_reason[] = "No reason";
5309    
5310     create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5311     }
5312     }
5313     /* ignore it for now.. but we really should make a warning if
5314     * its an erroneous name --fl_ */
5315     }
5316     break;
5317    
5318 michael 1324 case 293:
5319 michael 967
5320 michael 1133 /* Line 1806 of yacc.c */
5321 michael 1378 #line 1838 "conf_parser.y"
5322 michael 913 {
5323 michael 967 if (conf_parser_ctx.pass == 2)
5324 michael 913 {
5325     char def_reason[] = "No reason";
5326    
5327     create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5328     }
5329     }
5330     break;
5331    
5332 michael 1324 case 299:
5333 michael 967
5334 michael 1133 /* Line 1806 of yacc.c */
5335 michael 1378 #line 1856 "conf_parser.y"
5336 michael 913 {
5337 michael 967 if (conf_parser_ctx.pass == 2)
5338 michael 913 {
5339 michael 1157 if (valid_servname(yylval.string))
5340     {
5341     yy_conf = make_conf_item(SERVICE_TYPE);
5342     DupString(yy_conf->name, yylval.string);
5343     }
5344     }
5345     }
5346     break;
5347    
5348 michael 1324 case 300:
5349 michael 1157
5350     /* Line 1806 of yacc.c */
5351 michael 1378 #line 1871 "conf_parser.y"
5352 michael 1157 {
5353     if (conf_parser_ctx.pass == 2)
5354     {
5355 michael 913 yy_conf = make_conf_item(ULINE_TYPE);
5356     yy_match_item = map_to_conf(yy_conf);
5357     yy_match_item->action = SHARED_ALL;
5358     }
5359     }
5360     break;
5361    
5362 michael 1324 case 301:
5363 michael 967
5364 michael 1133 /* Line 1806 of yacc.c */
5365 michael 1378 #line 1879 "conf_parser.y"
5366 michael 913 {
5367 michael 967 if (conf_parser_ctx.pass == 2)
5368 michael 913 {
5369     yy_conf = NULL;
5370     }
5371     }
5372     break;
5373    
5374 michael 1324 case 308:
5375 michael 967
5376 michael 1133 /* Line 1806 of yacc.c */
5377 michael 1378 #line 1890 "conf_parser.y"
5378 michael 913 {
5379 michael 967 if (conf_parser_ctx.pass == 2)
5380 michael 913 {
5381     MyFree(yy_conf->name);
5382     DupString(yy_conf->name, yylval.string);
5383     }
5384     }
5385     break;
5386    
5387 michael 1324 case 309:
5388 michael 967
5389 michael 1133 /* Line 1806 of yacc.c */
5390 michael 1378 #line 1899 "conf_parser.y"
5391 michael 913 {
5392 michael 967 if (conf_parser_ctx.pass == 2)
5393 michael 913 {
5394     struct split_nuh_item nuh;
5395    
5396     nuh.nuhmask = yylval.string;
5397     nuh.nickptr = NULL;
5398     nuh.userptr = userbuf;
5399     nuh.hostptr = hostbuf;
5400    
5401     nuh.nicksize = 0;
5402     nuh.usersize = sizeof(userbuf);
5403     nuh.hostsize = sizeof(hostbuf);
5404    
5405     split_nuh(&nuh);
5406    
5407     DupString(yy_match_item->user, userbuf);
5408     DupString(yy_match_item->host, hostbuf);
5409     }
5410     }
5411     break;
5412    
5413 michael 1324 case 310:
5414 michael 967
5415 michael 1133 /* Line 1806 of yacc.c */
5416 michael 1378 #line 1921 "conf_parser.y"
5417 michael 913 {
5418 michael 967 if (conf_parser_ctx.pass == 2)
5419 michael 913 yy_match_item->action = 0;
5420     }
5421     break;
5422    
5423 michael 1324 case 314:
5424 michael 967
5425 michael 1133 /* Line 1806 of yacc.c */
5426 michael 1378 #line 1928 "conf_parser.y"
5427 michael 913 {
5428 michael 967 if (conf_parser_ctx.pass == 2)
5429 michael 1250 yy_match_item->action |= SHARED_KLINE;
5430 michael 913 }
5431     break;
5432    
5433 michael 1324 case 315:
5434 michael 967
5435 michael 1133 /* Line 1806 of yacc.c */
5436 michael 1378 #line 1932 "conf_parser.y"
5437 michael 913 {
5438 michael 967 if (conf_parser_ctx.pass == 2)
5439 michael 1301 yy_match_item->action |= SHARED_UNKLINE;
5440 michael 913 }
5441     break;
5442    
5443 michael 1324 case 316:
5444 michael 967
5445 michael 1133 /* Line 1806 of yacc.c */
5446 michael 1378 #line 1936 "conf_parser.y"
5447 michael 913 {
5448 michael 967 if (conf_parser_ctx.pass == 2)
5449 michael 1301 yy_match_item->action |= SHARED_DLINE;
5450 michael 913 }
5451     break;
5452    
5453 michael 1324 case 317:
5454 michael 967
5455 michael 1133 /* Line 1806 of yacc.c */
5456 michael 1378 #line 1940 "conf_parser.y"
5457 michael 913 {
5458 michael 967 if (conf_parser_ctx.pass == 2)
5459 michael 1301 yy_match_item->action |= SHARED_UNDLINE;
5460 michael 913 }
5461     break;
5462    
5463 michael 1324 case 318:
5464 michael 967
5465 michael 1133 /* Line 1806 of yacc.c */
5466 michael 1378 #line 1944 "conf_parser.y"
5467 michael 913 {
5468 michael 967 if (conf_parser_ctx.pass == 2)
5469 michael 1301 yy_match_item->action |= SHARED_XLINE;
5470 michael 913 }
5471     break;
5472    
5473 michael 1324 case 319:
5474 michael 967
5475 michael 1133 /* Line 1806 of yacc.c */
5476 michael 1378 #line 1948 "conf_parser.y"
5477 michael 913 {
5478 michael 967 if (conf_parser_ctx.pass == 2)
5479 michael 1250 yy_match_item->action |= SHARED_UNXLINE;
5480 michael 913 }
5481     break;
5482    
5483 michael 1324 case 320:
5484 michael 967
5485 michael 1133 /* Line 1806 of yacc.c */
5486 michael 1378 #line 1952 "conf_parser.y"
5487 michael 913 {
5488 michael 967 if (conf_parser_ctx.pass == 2)
5489 michael 1250 yy_match_item->action |= SHARED_RESV;
5490 michael 913 }
5491     break;
5492    
5493 michael 1324 case 321:
5494 michael 967
5495 michael 1133 /* Line 1806 of yacc.c */
5496 michael 1378 #line 1956 "conf_parser.y"
5497 michael 913 {
5498 michael 967 if (conf_parser_ctx.pass == 2)
5499 michael 1250 yy_match_item->action |= SHARED_UNRESV;
5500 michael 913 }
5501     break;
5502    
5503 michael 1324 case 322:
5504 michael 967
5505 michael 1133 /* Line 1806 of yacc.c */
5506 michael 1378 #line 1960 "conf_parser.y"
5507 michael 913 {
5508 michael 967 if (conf_parser_ctx.pass == 2)
5509 michael 1250 yy_match_item->action |= SHARED_LOCOPS;
5510 michael 913 }
5511     break;
5512    
5513 michael 1324 case 323:
5514 michael 967
5515 michael 1133 /* Line 1806 of yacc.c */
5516 michael 1378 #line 1964 "conf_parser.y"
5517 michael 913 {
5518 michael 967 if (conf_parser_ctx.pass == 2)
5519 michael 1250 yy_match_item->action = SHARED_ALL;
5520     }
5521     break;
5522    
5523 michael 1324 case 324:
5524 michael 1250
5525     /* Line 1806 of yacc.c */
5526 michael 1378 #line 1973 "conf_parser.y"
5527 michael 1250 {
5528     if (conf_parser_ctx.pass == 2)
5529 michael 913 {
5530     yy_conf = make_conf_item(CLUSTER_TYPE);
5531     yy_conf->flags = SHARED_ALL;
5532     }
5533     }
5534     break;
5535    
5536 michael 1324 case 325:
5537 michael 967
5538 michael 1133 /* Line 1806 of yacc.c */
5539 michael 1378 #line 1980 "conf_parser.y"
5540 michael 913 {
5541 michael 967 if (conf_parser_ctx.pass == 2)
5542 michael 913 {
5543     if (yy_conf->name == NULL)
5544     DupString(yy_conf->name, "*");
5545     yy_conf = NULL;
5546     }
5547     }
5548     break;
5549    
5550 michael 1324 case 331:
5551 michael 967
5552 michael 1133 /* Line 1806 of yacc.c */
5553 michael 1378 #line 1993 "conf_parser.y"
5554 michael 913 {
5555 michael 967 if (conf_parser_ctx.pass == 2)
5556 michael 913 DupString(yy_conf->name, yylval.string);
5557     }
5558     break;
5559    
5560 michael 1324 case 332:
5561 michael 967
5562 michael 1133 /* Line 1806 of yacc.c */
5563 michael 1378 #line 1999 "conf_parser.y"
5564 michael 913 {
5565 michael 967 if (conf_parser_ctx.pass == 2)
5566 michael 913 yy_conf->flags = 0;
5567     }
5568     break;
5569    
5570 michael 1324 case 336:
5571 michael 967
5572 michael 1133 /* Line 1806 of yacc.c */
5573 michael 1378 #line 2006 "conf_parser.y"
5574 michael 913 {
5575 michael 967 if (conf_parser_ctx.pass == 2)
5576 michael 1250 yy_conf->flags |= SHARED_KLINE;
5577 michael 913 }
5578     break;
5579    
5580 michael 1324 case 337:
5581 michael 967
5582 michael 1133 /* Line 1806 of yacc.c */
5583 michael 1378 #line 2010 "conf_parser.y"
5584 michael 913 {
5585 michael 967 if (conf_parser_ctx.pass == 2)
5586 michael 1250 yy_conf->flags |= SHARED_UNKLINE;
5587 michael 913 }
5588     break;
5589    
5590 michael 1324 case 338:
5591 michael 967
5592 michael 1133 /* Line 1806 of yacc.c */
5593 michael 1378 #line 2014 "conf_parser.y"
5594 michael 913 {
5595 michael 967 if (conf_parser_ctx.pass == 2)
5596 michael 1301 yy_conf->flags |= SHARED_DLINE;
5597 michael 913 }
5598     break;
5599    
5600 michael 1324 case 339:
5601 michael 967
5602 michael 1133 /* Line 1806 of yacc.c */
5603 michael 1378 #line 2018 "conf_parser.y"
5604 michael 913 {
5605 michael 967 if (conf_parser_ctx.pass == 2)
5606 michael 1301 yy_conf->flags |= SHARED_UNDLINE;
5607 michael 913 }
5608     break;
5609    
5610 michael 1324 case 340:
5611 michael 967
5612 michael 1133 /* Line 1806 of yacc.c */
5613 michael 1378 #line 2022 "conf_parser.y"
5614 michael 913 {
5615 michael 967 if (conf_parser_ctx.pass == 2)
5616 michael 1301 yy_conf->flags |= SHARED_XLINE;
5617 michael 913 }
5618     break;
5619    
5620 michael 1324 case 341:
5621 michael 967
5622 michael 1133 /* Line 1806 of yacc.c */
5623 michael 1378 #line 2026 "conf_parser.y"
5624 michael 913 {
5625 michael 967 if (conf_parser_ctx.pass == 2)
5626 michael 1301 yy_conf->flags |= SHARED_UNXLINE;
5627 michael 913 }
5628     break;
5629    
5630 michael 1324 case 342:
5631 michael 967
5632 michael 1133 /* Line 1806 of yacc.c */
5633 michael 1378 #line 2030 "conf_parser.y"
5634 michael 913 {
5635 michael 967 if (conf_parser_ctx.pass == 2)
5636 michael 1301 yy_conf->flags |= SHARED_RESV;
5637 michael 913 }
5638     break;
5639    
5640 michael 1324 case 343:
5641 michael 967
5642 michael 1133 /* Line 1806 of yacc.c */
5643 michael 1378 #line 2034 "conf_parser.y"
5644 michael 913 {
5645 michael 967 if (conf_parser_ctx.pass == 2)
5646 michael 1250 yy_conf->flags |= SHARED_UNRESV;
5647 michael 913 }
5648     break;
5649    
5650 michael 1324 case 344:
5651 michael 967
5652 michael 1133 /* Line 1806 of yacc.c */
5653 michael 1378 #line 2038 "conf_parser.y"
5654 michael 913 {
5655 michael 967 if (conf_parser_ctx.pass == 2)
5656 michael 1250 yy_conf->flags |= SHARED_LOCOPS;
5657 michael 913 }
5658     break;
5659    
5660 michael 1324 case 345:
5661 michael 967
5662 michael 1133 /* Line 1806 of yacc.c */
5663 michael 1378 #line 2042 "conf_parser.y"
5664 michael 913 {
5665 michael 967 if (conf_parser_ctx.pass == 2)
5666 michael 1250 yy_conf->flags = SHARED_ALL;
5667     }
5668     break;
5669    
5670 michael 1324 case 346:
5671 michael 1250
5672     /* Line 1806 of yacc.c */
5673 michael 1378 #line 2051 "conf_parser.y"
5674 michael 1250 {
5675     if (conf_parser_ctx.pass == 2)
5676 michael 913 {
5677     yy_conf = make_conf_item(SERVER_TYPE);
5678 michael 1285 yy_aconf = map_to_conf(yy_conf);
5679    
5680 michael 913 /* defaults */
5681     yy_aconf->port = PORTNUM;
5682     }
5683     else
5684     {
5685     MyFree(class_name);
5686     class_name = NULL;
5687     }
5688     }
5689     break;
5690    
5691 michael 1324 case 347:
5692 michael 967
5693 michael 1133 /* Line 1806 of yacc.c */
5694 michael 1378 #line 2066 "conf_parser.y"
5695 michael 913 {
5696 michael 967 if (conf_parser_ctx.pass == 2)
5697 michael 913 {
5698     struct CollectItem *yy_hconf=NULL;
5699     struct CollectItem *yy_lconf=NULL;
5700 michael 1302 dlink_node *ptr = NULL, *next_ptr = NULL;
5701    
5702 michael 913 if (yy_aconf->host &&
5703 michael 1302 yy_aconf->passwd && yy_aconf->spasswd)
5704     {
5705     if (conf_add_server(yy_conf, class_name) == -1)
5706     {
5707     delete_conf_item(yy_conf);
5708     yy_conf = NULL;
5709     yy_aconf = NULL;
5710     }
5711     }
5712     else
5713     {
5714     /* Even if yy_conf ->name is NULL
5715     * should still unhook any hub/leaf confs still pending
5716     */
5717     unhook_hub_leaf_confs();
5718 michael 913
5719 michael 1302 if (yy_conf->name != NULL)
5720     {
5721     if (yy_aconf->host == NULL)
5722     yyerror("Ignoring connect block -- missing host");
5723     else if (!yy_aconf->passwd || !yy_aconf->spasswd)
5724     yyerror("Ignoring connect block -- missing password");
5725     }
5726 michael 913
5727    
5728 michael 1302 /* XXX
5729     * This fixes a try_connections() core (caused by invalid class_ptr
5730     * pointers) reported by metalrock. That's an ugly fix, but there
5731     * is currently no better way. The entire config subsystem needs an
5732     * rewrite ASAP. make_conf_item() shouldn't really add things onto
5733     * a doubly linked list immediately without any sanity checks! -Michael
5734     */
5735     delete_conf_item(yy_conf);
5736 michael 913
5737 michael 1302 yy_aconf = NULL;
5738     yy_conf = NULL;
5739     }
5740 michael 913
5741     /*
5742     * yy_conf is still pointing at the server that is having
5743     * a connect block built for it. This means, y_aconf->name
5744     * points to the actual irc name this server will be known as.
5745     * Now this new server has a set or even just one hub_mask (or leaf_mask)
5746     * given in the link list at yy_hconf. Fill in the HUB confs
5747     * from this link list now.
5748     */
5749     DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
5750     {
5751     struct ConfItem *new_hub_conf;
5752     struct MatchItem *match_item;
5753    
5754     yy_hconf = ptr->data;
5755    
5756     /* yy_conf == NULL is a fatal error for this connect block! */
5757     if ((yy_conf != NULL) && (yy_conf->name != NULL))
5758     {
5759     new_hub_conf = make_conf_item(HUB_TYPE);
5760     match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
5761     DupString(new_hub_conf->name, yy_conf->name);
5762     if (yy_hconf->user != NULL)
5763     DupString(match_item->user, yy_hconf->user);
5764     else
5765     DupString(match_item->user, "*");
5766     if (yy_hconf->host != NULL)
5767     DupString(match_item->host, yy_hconf->host);
5768     else
5769     DupString(match_item->host, "*");
5770     }
5771     dlinkDelete(&yy_hconf->node, &hub_conf_list);
5772     free_collect_item(yy_hconf);
5773     }
5774    
5775     /* Ditto for the LEAF confs */
5776    
5777     DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
5778     {
5779     struct ConfItem *new_leaf_conf;
5780     struct MatchItem *match_item;
5781    
5782     yy_lconf = ptr->data;
5783    
5784     if ((yy_conf != NULL) && (yy_conf->name != NULL))
5785     {
5786     new_leaf_conf = make_conf_item(LEAF_TYPE);
5787     match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
5788     DupString(new_leaf_conf->name, yy_conf->name);
5789     if (yy_lconf->user != NULL)
5790     DupString(match_item->user, yy_lconf->user);
5791     else
5792     DupString(match_item->user, "*");
5793     if (yy_lconf->host != NULL)
5794     DupString(match_item->host, yy_lconf->host);
5795     else
5796     DupString(match_item->host, "*");
5797     }
5798     dlinkDelete(&yy_lconf->node, &leaf_conf_list);
5799     free_collect_item(yy_lconf);
5800     }
5801     MyFree(class_name);
5802     class_name = NULL;
5803     yy_conf = NULL;
5804     yy_aconf = NULL;
5805     }
5806     }
5807     break;
5808    
5809 michael 1324 case 364:
5810 michael 967
5811 michael 1133 /* Line 1806 of yacc.c */
5812 michael 1378 #line 2188 "conf_parser.y"
5813 michael 913 {
5814 michael 967 if (conf_parser_ctx.pass == 2)
5815 michael 913 {
5816     MyFree(yy_conf->name);
5817     DupString(yy_conf->name, yylval.string);
5818     }
5819     }
5820     break;
5821    
5822 michael 1324 case 365:
5823 michael 967
5824 michael 1133 /* Line 1806 of yacc.c */
5825 michael 1378 #line 2197 "conf_parser.y"
5826 michael 913 {
5827 michael 967 if (conf_parser_ctx.pass == 2)
5828 michael 913 {
5829     MyFree(yy_aconf->host);
5830     DupString(yy_aconf->host, yylval.string);
5831     }
5832     }
5833     break;
5834    
5835 michael 1324 case 366:
5836 michael 967
5837 michael 1133 /* Line 1806 of yacc.c */
5838 michael 1378 #line 2206 "conf_parser.y"
5839 michael 913 {
5840 michael 967 if (conf_parser_ctx.pass == 2)
5841 michael 913 {
5842     struct addrinfo hints, *res;
5843    
5844     memset(&hints, 0, sizeof(hints));
5845    
5846     hints.ai_family = AF_UNSPEC;
5847     hints.ai_socktype = SOCK_STREAM;
5848     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5849    
5850 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
5851 michael 1247 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
5852 michael 913 else
5853     {
5854     assert(res != NULL);
5855    
5856     memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
5857     yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
5858     yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
5859 michael 1123 freeaddrinfo(res);
5860 michael 913 }
5861     }
5862     }
5863     break;
5864    
5865 michael 1324 case 367:
5866 michael 967
5867 michael 1133 /* Line 1806 of yacc.c */
5868 michael 1378 #line 2232 "conf_parser.y"
5869 michael 913 {
5870 michael 967 if (conf_parser_ctx.pass == 2)
5871 michael 913 {
5872     if ((yyvsp[(3) - (4)].string)[0] == ':')
5873     yyerror("Server passwords cannot begin with a colon");
5874     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5875     yyerror("Server passwords cannot contain spaces");
5876     else {
5877     if (yy_aconf->spasswd != NULL)
5878     memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
5879    
5880     MyFree(yy_aconf->spasswd);
5881     DupString(yy_aconf->spasswd, yylval.string);
5882     }
5883     }
5884     }
5885     break;
5886    
5887 michael 1324 case 368:
5888 michael 967
5889 michael 1133 /* Line 1806 of yacc.c */
5890 michael 1378 #line 2250 "conf_parser.y"
5891 michael 913 {
5892 michael 967 if (conf_parser_ctx.pass == 2)
5893 michael 913 {
5894     if ((yyvsp[(3) - (4)].string)[0] == ':')
5895     yyerror("Server passwords cannot begin with a colon");
5896     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5897     yyerror("Server passwords cannot contain spaces");
5898     else {
5899     if (yy_aconf->passwd != NULL)
5900     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5901    
5902     MyFree(yy_aconf->passwd);
5903     DupString(yy_aconf->passwd, yylval.string);
5904     }
5905     }
5906     }
5907     break;
5908    
5909 michael 1324 case 369:
5910 michael 967
5911 michael 1133 /* Line 1806 of yacc.c */
5912 michael 1378 #line 2268 "conf_parser.y"
5913 michael 913 {
5914 michael 967 if (conf_parser_ctx.pass == 2)
5915 michael 913 yy_aconf->port = (yyvsp[(3) - (4)].number);
5916     }
5917     break;
5918    
5919 michael 1324 case 370:
5920 michael 967
5921 michael 1133 /* Line 1806 of yacc.c */
5922 michael 1378 #line 2274 "conf_parser.y"
5923 michael 913 {
5924 michael 967 if (conf_parser_ctx.pass == 2)
5925 michael 913 yy_aconf->aftype = AF_INET;
5926     }
5927     break;
5928    
5929 michael 1324 case 371:
5930 michael 967
5931 michael 1133 /* Line 1806 of yacc.c */
5932 michael 1378 #line 2278 "conf_parser.y"
5933 michael 913 {
5934     #ifdef IPV6
5935 michael 967 if (conf_parser_ctx.pass == 2)
5936 michael 913 yy_aconf->aftype = AF_INET6;
5937     #endif
5938     }
5939     break;
5940    
5941 michael 1324 case 372:
5942 michael 967
5943 michael 1133 /* Line 1806 of yacc.c */
5944 michael 1378 #line 2286 "conf_parser.y"
5945 michael 913 {
5946     }
5947     break;
5948    
5949 michael 1324 case 376:
5950 michael 967
5951 michael 1133 /* Line 1806 of yacc.c */
5952 michael 1378 #line 2291 "conf_parser.y"
5953 michael 913 {
5954 michael 967 if (conf_parser_ctx.pass == 2)
5955 michael 1228 SetConfAllowAutoConn(yy_aconf);
5956 michael 913 }
5957     break;
5958    
5959 michael 1324 case 377:
5960 michael 967
5961 michael 1133 /* Line 1806 of yacc.c */
5962 michael 1378 #line 2295 "conf_parser.y"
5963 michael 913 {
5964 michael 967 if (conf_parser_ctx.pass == 2)
5965 michael 1228 SetConfAwayBurst(yy_aconf);
5966 michael 913 }
5967     break;
5968    
5969 michael 1324 case 378:
5970 michael 967
5971 michael 1133 /* Line 1806 of yacc.c */
5972 michael 1378 #line 2299 "conf_parser.y"
5973 michael 913 {
5974 michael 967 if (conf_parser_ctx.pass == 2)
5975 michael 1228 SetConfTopicBurst(yy_aconf);
5976 michael 913 }
5977     break;
5978    
5979 michael 1324 case 379:
5980 michael 967
5981 michael 1133 /* Line 1806 of yacc.c */
5982 michael 1378 #line 2303 "conf_parser.y"
5983 michael 913 {
5984 michael 967 if (conf_parser_ctx.pass == 2)
5985 michael 1303 SetConfSSL(yy_aconf);
5986     }
5987     break;
5988    
5989 michael 1324 case 380:
5990 michael 1303
5991     /* Line 1806 of yacc.c */
5992 michael 1378 #line 2309 "conf_parser.y"
5993 michael 1303 {
5994     if (conf_parser_ctx.pass == 2)
5995 michael 913 {
5996     if (yylval.number)
5997     yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
5998     else
5999     yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
6000     }
6001     }
6002     break;
6003    
6004 michael 1324 case 381:
6005 michael 967
6006 michael 1133 /* Line 1806 of yacc.c */
6007 michael 1378 #line 2320 "conf_parser.y"
6008 michael 913 {
6009 michael 967 if (conf_parser_ctx.pass == 2)
6010 michael 913 {
6011     struct CollectItem *yy_tmp;
6012    
6013     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6014     DupString(yy_tmp->host, yylval.string);
6015     DupString(yy_tmp->user, "*");
6016     dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6017     }
6018     }
6019     break;
6020    
6021 michael 1324 case 382:
6022 michael 967
6023 michael 1133 /* Line 1806 of yacc.c */
6024 michael 1378 #line 2333 "conf_parser.y"
6025 michael 913 {
6026 michael 967 if (conf_parser_ctx.pass == 2)
6027 michael 913 {
6028     struct CollectItem *yy_tmp;
6029    
6030     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6031     DupString(yy_tmp->host, yylval.string);
6032     DupString(yy_tmp->user, "*");
6033     dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6034     }
6035     }
6036     break;
6037    
6038 michael 1324 case 383:
6039 michael 967
6040 michael 1133 /* Line 1806 of yacc.c */
6041 michael 1378 #line 2346 "conf_parser.y"
6042 michael 913 {
6043 michael 967 if (conf_parser_ctx.pass == 2)
6044 michael 913 {
6045     MyFree(class_name);
6046     DupString(class_name, yylval.string);
6047     }
6048     }
6049     break;
6050    
6051 michael 1324 case 384:
6052 michael 967
6053 michael 1133 /* Line 1806 of yacc.c */
6054 michael 1378 #line 2355 "conf_parser.y"
6055 michael 913 {
6056 michael 1306 #ifdef HAVE_LIBCRYPTO
6057 michael 967 if (conf_parser_ctx.pass == 2)
6058 michael 913 {
6059 michael 1306 MyFree(yy_aconf->cipher_list);
6060     DupString(yy_aconf->cipher_list, yylval.string);
6061     }
6062     #else
6063     if (conf_parser_ctx.pass == 2)
6064     yyerror("Ignoring connect::ciphers -- no OpenSSL support");
6065     #endif
6066     }
6067     break;
6068    
6069 michael 1324 case 385:
6070 michael 1306
6071     /* Line 1806 of yacc.c */
6072 michael 1378 #line 2373 "conf_parser.y"
6073 michael 1306 {
6074     if (conf_parser_ctx.pass == 2)
6075     {
6076 michael 913 userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6077     regex_ban = 0;
6078     }
6079     }
6080     break;
6081    
6082 michael 1324 case 386:
6083 michael 967
6084 michael 1133 /* Line 1806 of yacc.c */
6085 michael 1378 #line 2380 "conf_parser.y"
6086 michael 913 {
6087 michael 967 if (conf_parser_ctx.pass == 2)
6088 michael 913 {
6089     if (userbuf[0] && hostbuf[0])
6090     {
6091     if (regex_ban)
6092     {
6093 michael 1009 #ifdef HAVE_LIBPCRE
6094 michael 1011 void *exp_user = NULL;
6095     void *exp_host = NULL;
6096 michael 913 const char *errptr = NULL;
6097    
6098     if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6099     !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6100     {
6101 michael 1247 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
6102 michael 913 errptr);
6103     break;
6104     }
6105    
6106 michael 1005 yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6107 michael 913 yy_aconf->regexuser = exp_user;
6108     yy_aconf->regexhost = exp_host;
6109    
6110     DupString(yy_aconf->user, userbuf);
6111     DupString(yy_aconf->host, hostbuf);
6112    
6113     if (reasonbuf[0])
6114     DupString(yy_aconf->reason, reasonbuf);
6115     else
6116     DupString(yy_aconf->reason, "No reason");
6117 michael 1009 #else
6118 michael 1247 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
6119 michael 1009 break;
6120     #endif
6121 michael 913 }
6122     else
6123     {
6124 michael 1369 find_and_delete_temporary(userbuf, hostbuf, CONF_KLINE);
6125    
6126 michael 1005 yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6127 michael 913
6128     DupString(yy_aconf->user, userbuf);
6129     DupString(yy_aconf->host, hostbuf);
6130    
6131     if (reasonbuf[0])
6132     DupString(yy_aconf->reason, reasonbuf);
6133     else
6134     DupString(yy_aconf->reason, "No reason");
6135 michael 1369 add_conf_by_address(CONF_KLINE, yy_aconf);
6136 michael 913 }
6137     }
6138    
6139     yy_aconf = NULL;
6140     }
6141     }
6142     break;
6143    
6144 michael 1324 case 387:
6145 michael 967
6146 michael 1133 /* Line 1806 of yacc.c */
6147 michael 1378 #line 2438 "conf_parser.y"
6148 michael 913 {
6149     }
6150     break;
6151    
6152 michael 1324 case 391:
6153 michael 967
6154 michael 1133 /* Line 1806 of yacc.c */
6155 michael 1378 #line 2443 "conf_parser.y"
6156 michael 913 {
6157 michael 967 if (conf_parser_ctx.pass == 2)
6158 michael 913 regex_ban = 1;
6159     }
6160     break;
6161    
6162 michael 1324 case 398:
6163 michael 967
6164 michael 1133 /* Line 1806 of yacc.c */
6165 michael 1378 #line 2452 "conf_parser.y"
6166 michael 913 {
6167 michael 967 if (conf_parser_ctx.pass == 2)
6168 michael 913 {
6169     struct split_nuh_item nuh;
6170    
6171     nuh.nuhmask = yylval.string;
6172     nuh.nickptr = NULL;
6173     nuh.userptr = userbuf;
6174     nuh.hostptr = hostbuf;
6175    
6176     nuh.nicksize = 0;
6177     nuh.usersize = sizeof(userbuf);
6178     nuh.hostsize = sizeof(hostbuf);
6179    
6180     split_nuh(&nuh);
6181     }
6182     }
6183     break;
6184    
6185 michael 1324 case 399:
6186 michael 967
6187 michael 1133 /* Line 1806 of yacc.c */
6188 michael 1378 #line 2471 "conf_parser.y"
6189 michael 913 {
6190 michael 967 if (conf_parser_ctx.pass == 2)
6191 michael 913 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6192     }
6193     break;
6194    
6195 michael 1324 case 400:
6196 michael 967
6197 michael 1133 /* Line 1806 of yacc.c */
6198 michael 1378 #line 2480 "conf_parser.y"
6199 michael 913 {
6200 michael 967 if (conf_parser_ctx.pass == 2)
6201 michael 1005 hostbuf[0] = reasonbuf[0] = '\0';
6202 michael 913 }
6203     break;
6204    
6205 michael 1324 case 401:
6206 michael 967
6207 michael 1133 /* Line 1806 of yacc.c */
6208 michael 1378 #line 2484 "conf_parser.y"
6209 michael 913 {
6210 michael 967 if (conf_parser_ctx.pass == 2)
6211 michael 913 {
6212 michael 1005 if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
6213     {
6214 michael 1369 find_and_delete_temporary(NULL, hostbuf, CONF_DLINE);
6215    
6216 michael 1005 yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
6217     DupString(yy_aconf->host, hostbuf);
6218    
6219     if (reasonbuf[0])
6220     DupString(yy_aconf->reason, reasonbuf);
6221     else
6222     DupString(yy_aconf->reason, "No reason");
6223 michael 913 add_conf_by_address(CONF_DLINE, yy_aconf);
6224 michael 1005 yy_aconf = NULL;
6225     }
6226 michael 913 }
6227     }
6228     break;
6229    
6230 michael 1324 case 407:
6231 michael 967
6232 michael 1133 /* Line 1806 of yacc.c */
6233 michael 1378 #line 2508 "conf_parser.y"
6234 michael 913 {
6235 michael 967 if (conf_parser_ctx.pass == 2)
6236 michael 1005 strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
6237 michael 913 }
6238     break;
6239    
6240 michael 1324 case 408:
6241 michael 967
6242 michael 1133 /* Line 1806 of yacc.c */
6243 michael 1378 #line 2514 "conf_parser.y"
6244 michael 913 {
6245 michael 967 if (conf_parser_ctx.pass == 2)
6246 michael 1005 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6247 michael 913 }
6248     break;
6249    
6250 michael 1324 case 414:
6251 michael 967
6252 michael 1133 /* Line 1806 of yacc.c */
6253 michael 1378 #line 2528 "conf_parser.y"
6254 michael 913 {
6255 michael 967 if (conf_parser_ctx.pass == 2)
6256 michael 913 {
6257     if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
6258     {
6259 michael 1005 yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
6260 michael 913 DupString(yy_aconf->host, yylval.string);
6261    
6262     add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
6263     yy_aconf = NULL;
6264     }
6265     }
6266     }
6267     break;
6268    
6269 michael 1324 case 415:
6270 michael 967
6271 michael 1133 /* Line 1806 of yacc.c */
6272 michael 1378 #line 2546 "conf_parser.y"
6273 michael 913 {
6274 michael 967 if (conf_parser_ctx.pass == 2)
6275 michael 913 {
6276     regex_ban = 0;
6277     reasonbuf[0] = gecos_name[0] = '\0';
6278     }
6279     }
6280     break;
6281    
6282 michael 1324 case 416:
6283 michael 967
6284 michael 1133 /* Line 1806 of yacc.c */
6285 michael 1378 #line 2553 "conf_parser.y"
6286 michael 913 {
6287 michael 967 if (conf_parser_ctx.pass == 2)
6288 michael 913 {
6289     if (gecos_name[0])
6290     {
6291     if (regex_ban)
6292     {
6293 michael 1009 #ifdef HAVE_LIBPCRE
6294 michael 1011 void *exp_p = NULL;
6295 michael 913 const char *errptr = NULL;
6296    
6297     if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
6298     {
6299 michael 1247 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
6300 michael 913 errptr);
6301     break;
6302     }
6303    
6304     yy_conf = make_conf_item(RXLINE_TYPE);
6305     yy_conf->regexpname = exp_p;
6306 michael 1009 #else
6307 michael 1247 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
6308 michael 1009 break;
6309     #endif
6310 michael 913 }
6311     else
6312     yy_conf = make_conf_item(XLINE_TYPE);
6313    
6314     yy_match_item = map_to_conf(yy_conf);
6315     DupString(yy_conf->name, gecos_name);
6316    
6317     if (reasonbuf[0])
6318     DupString(yy_match_item->reason, reasonbuf);
6319     else
6320     DupString(yy_match_item->reason, "No reason");
6321     }
6322     }
6323     }
6324     break;
6325    
6326 michael 1324 case 417:
6327 michael 967
6328 michael 1133 /* Line 1806 of yacc.c */
6329 michael 1378 #line 2593 "conf_parser.y"
6330 michael 913 {
6331     }
6332     break;
6333    
6334 michael 1324 case 421:
6335 michael 967
6336 michael 1133 /* Line 1806 of yacc.c */
6337 michael 1378 #line 2598 "conf_parser.y"
6338 michael 913 {
6339 michael 967 if (conf_parser_ctx.pass == 2)
6340 michael 913 regex_ban = 1;
6341     }
6342     break;
6343    
6344 michael 1324 case 428:
6345 michael 967
6346 michael 1133 /* Line 1806 of yacc.c */
6347 michael 1378 #line 2607 "conf_parser.y"
6348 michael 913 {
6349 michael 967 if (conf_parser_ctx.pass == 2)
6350 michael 913 strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
6351     }
6352     break;
6353    
6354 michael 1324 case 429:
6355 michael 967
6356 michael 1133 /* Line 1806 of yacc.c */
6357 michael 1378 #line 2613 "conf_parser.y"
6358 michael 913 {
6359 michael 967 if (conf_parser_ctx.pass == 2)
6360 michael 913 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6361     }
6362     break;
6363    
6364 michael 1324 case 485:
6365 michael 1118
6366 michael 1133 /* Line 1806 of yacc.c */
6367 michael 1378 #line 2657 "conf_parser.y"
6368 michael 1118 {
6369     ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
6370     }
6371     break;
6372    
6373 michael 1324 case 486:
6374 michael 1118
6375 michael 1133 /* Line 1806 of yacc.c */
6376 michael 1378 #line 2662 "conf_parser.y"
6377 michael 1118 {
6378     ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
6379     }
6380     break;
6381    
6382 michael 1324 case 487:
6383 michael 967
6384 michael 1133 /* Line 1806 of yacc.c */
6385 michael 1378 #line 2667 "conf_parser.y"
6386 michael 913 {
6387 michael 1118 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
6388 michael 913 }
6389     break;
6390    
6391 michael 1324 case 488:
6392 michael 967
6393 michael 1133 /* Line 1806 of yacc.c */
6394 michael 1378 #line 2672 "conf_parser.y"
6395 michael 913 {
6396 michael 1118 ConfigFileEntry.use_whois_actually = yylval.number;
6397 michael 913 }
6398     break;
6399    
6400 michael 1324 case 489:
6401 michael 967
6402 michael 1133 /* Line 1806 of yacc.c */
6403 michael 1378 #line 2677 "conf_parser.y"
6404 michael 913 {
6405 michael 1118 GlobalSetOptions.rejecttime = yylval.number;
6406 michael 913 }
6407     break;
6408    
6409 michael 1324 case 490:
6410 michael 967
6411 michael 1133 /* Line 1806 of yacc.c */
6412 michael 1378 #line 2682 "conf_parser.y"
6413 michael 913 {
6414 michael 1118 ConfigFileEntry.tkline_expire_notices = yylval.number;
6415 michael 913 }
6416     break;
6417    
6418 michael 1324 case 491:
6419 michael 967
6420 michael 1133 /* Line 1806 of yacc.c */
6421 michael 1378 #line 2687 "conf_parser.y"
6422 michael 913 {
6423 michael 1118 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
6424 michael 913 }
6425     break;
6426    
6427 michael 1324 case 492:
6428 michael 967
6429 michael 1133 /* Line 1806 of yacc.c */
6430 michael 1378 #line 2692 "conf_parser.y"
6431 michael 913 {
6432 michael 1118 ConfigFileEntry.hide_spoof_ips = yylval.number;
6433 michael 913 }
6434     break;
6435    
6436 michael 1324 case 493:
6437 michael 967
6438 michael 1133 /* Line 1806 of yacc.c */
6439 michael 1378 #line 2697 "conf_parser.y"
6440 michael 913 {
6441 michael 1118 ConfigFileEntry.ignore_bogus_ts = yylval.number;
6442 michael 913 }
6443     break;
6444    
6445 michael 1324 case 494:
6446 michael 967
6447 michael 1133 /* Line 1806 of yacc.c */
6448 michael 1378 #line 2702 "conf_parser.y"
6449 michael 913 {
6450 michael 1118 ConfigFileEntry.disable_remote = yylval.number;
6451 michael 913 }
6452     break;
6453    
6454 michael 1324 case 495:
6455 michael 967
6456 michael 1133 /* Line 1806 of yacc.c */
6457 michael 1378 #line 2707 "conf_parser.y"
6458 michael 913 {
6459 michael 1118 ConfigFileEntry.failed_oper_notice = yylval.number;
6460 michael 913 }
6461     break;
6462    
6463 michael 1324 case 496:
6464 michael 967
6465 michael 1133 /* Line 1806 of yacc.c */
6466 michael 1378 #line 2712 "conf_parser.y"
6467 michael 913 {
6468 michael 1118 ConfigFileEntry.anti_nick_flood = yylval.number;
6469 michael 913 }
6470     break;
6471    
6472 michael 1324 case 497:
6473 michael 967
6474 michael 1133 /* Line 1806 of yacc.c */
6475 michael 1378 #line 2717 "conf_parser.y"
6476 michael 913 {
6477 michael 1118 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
6478 michael 913 }
6479     break;
6480    
6481 michael 1324 case 498:
6482 michael 967
6483 michael 1133 /* Line 1806 of yacc.c */
6484 michael 1378 #line 2722 "conf_parser.y"
6485 michael 913 {
6486 michael 1118 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
6487 michael 913 }
6488     break;
6489    
6490 michael 1324 case 499:
6491 michael 967
6492 michael 1133 /* Line 1806 of yacc.c */
6493 michael 1378 #line 2727 "conf_parser.y"
6494 michael 913 {
6495 michael 1118 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
6496 michael 913 }
6497     break;
6498    
6499 michael 1324 case 500:
6500 michael 967
6501 michael 1133 /* Line 1806 of yacc.c */
6502 michael 1378 #line 2732 "conf_parser.y"
6503 michael 913 {
6504 michael 1118 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
6505 michael 913 }
6506     break;
6507    
6508 michael 1324 case 501:
6509 michael 967
6510 michael 1133 /* Line 1806 of yacc.c */
6511 michael 1378 #line 2737 "conf_parser.y"
6512 michael 913 {
6513 michael 1118 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
6514 michael 913 }
6515     break;
6516    
6517 michael 1324 case 502:
6518 michael 967
6519 michael 1133 /* Line 1806 of yacc.c */
6520 michael 1378 #line 2742 "conf_parser.y"
6521 michael 913 {
6522 michael 1118 if (conf_parser_ctx.pass == 2)
6523     ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
6524 michael 913 }
6525     break;
6526    
6527 michael 1324 case 503:
6528 michael 967
6529 michael 1133 /* Line 1806 of yacc.c */
6530 michael 1378 #line 2748 "conf_parser.y"
6531 michael 913 {
6532 michael 1118 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
6533     {
6534 michael 1247 ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
6535     ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
6536     ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
6537 michael 1118 exit(0);
6538     }
6539 michael 913 }
6540     break;
6541    
6542 michael 1324 case 504:
6543 michael 967
6544 michael 1133 /* Line 1806 of yacc.c */
6545 michael 1378 #line 2759 "conf_parser.y"
6546 michael 913 {
6547 michael 1118 ConfigFileEntry.kline_with_reason = yylval.number;
6548 michael 913 }
6549     break;
6550    
6551 michael 1324 case 505:
6552 michael 967
6553 michael 1133 /* Line 1806 of yacc.c */
6554 michael 1378 #line 2764 "conf_parser.y"
6555 michael 913 {
6556 michael 1118 if (conf_parser_ctx.pass == 2)
6557 michael 913 {
6558 michael 1118 MyFree(ConfigFileEntry.kline_reason);
6559     DupString(ConfigFileEntry.kline_reason, yylval.string);
6560 michael 913 }
6561     }
6562     break;
6563    
6564 michael 1324 case 506:
6565 michael 967
6566 michael 1133 /* Line 1806 of yacc.c */
6567 michael 1378 #line 2773 "conf_parser.y"
6568 michael 913 {
6569 michael 1118 ConfigFileEntry.invisible_on_connect = yylval.number;
6570 michael 913 }
6571     break;
6572    
6573 michael 1324 case 507:
6574 michael 967
6575 michael 1133 /* Line 1806 of yacc.c */
6576 michael 1378 #line 2778 "conf_parser.y"
6577 michael 913 {
6578 michael 1118 ConfigFileEntry.warn_no_nline = yylval.number;
6579 michael 913 }
6580     break;
6581    
6582 michael 1324 case 508:
6583 michael 967
6584 michael 1133 /* Line 1806 of yacc.c */
6585 michael 1378 #line 2783 "conf_parser.y"
6586 michael 913 {
6587 michael 1118 ConfigFileEntry.stats_e_disabled = yylval.number;
6588 michael 913 }
6589     break;
6590    
6591 michael 1324 case 509:
6592 michael 967
6593 michael 1133 /* Line 1806 of yacc.c */
6594 michael 1378 #line 2788 "conf_parser.y"
6595 michael 913 {
6596 michael 1118 ConfigFileEntry.stats_o_oper_only = yylval.number;
6597 michael 913 }
6598     break;
6599    
6600 michael 1324 case 510:
6601 michael 967
6602 michael 1133 /* Line 1806 of yacc.c */
6603 michael 1378 #line 2793 "conf_parser.y"
6604 michael 913 {
6605 michael 1118 ConfigFileEntry.stats_P_oper_only = yylval.number;
6606 michael 913 }
6607     break;
6608    
6609 michael 1324 case 511:
6610 michael 967
6611 michael 1133 /* Line 1806 of yacc.c */
6612 michael 1378 #line 2798 "conf_parser.y"
6613 michael 913 {
6614 michael 1118 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
6615 michael 913 }
6616     break;
6617    
6618 michael 1324 case 512:
6619 michael 967
6620 michael 1133 /* Line 1806 of yacc.c */
6621 michael 1378 #line 2801 "conf_parser.y"
6622 michael 913 {
6623 michael 1118 ConfigFileEntry.stats_k_oper_only = 1;
6624 michael 913 }
6625     break;
6626    
6627 michael 1324 case 513:
6628 michael 967
6629 michael 1133 /* Line 1806 of yacc.c */
6630 michael 1378 #line 2806 "conf_parser.y"
6631 michael 913 {
6632 michael 1118 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
6633 michael 913 }
6634     break;
6635    
6636 michael 1324 case 514:
6637 michael 967
6638 michael 1133 /* Line 1806 of yacc.c */
6639 michael 1378 #line 2809 "conf_parser.y"
6640 michael 913 {
6641 michael 1118 ConfigFileEntry.stats_i_oper_only = 1;
6642 michael 913 }
6643     break;
6644    
6645 michael 1324 case 515:
6646 michael 967
6647 michael 1133 /* Line 1806 of yacc.c */
6648 michael 1378 #line 2814 "conf_parser.y"
6649 michael 913 {
6650 michael 1118 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
6651 michael 913 }
6652     break;
6653    
6654 michael 1324 case 516:
6655 michael 967
6656 michael 1133 /* Line 1806 of yacc.c */
6657 michael 1378 #line 2819 "conf_parser.y"
6658 michael 913 {
6659 michael 1118 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
6660 michael 913 }
6661     break;
6662    
6663 michael 1324 case 517:
6664 michael 967
6665 michael 1133 /* Line 1806 of yacc.c */
6666 michael 1378 #line 2824 "conf_parser.y"
6667 michael 913 {
6668 michael 1118 ConfigFileEntry.opers_bypass_callerid = yylval.number;
6669 michael 913 }
6670     break;
6671    
6672 michael 1324 case 518:
6673 michael 967
6674 michael 1133 /* Line 1806 of yacc.c */
6675 michael 1378 #line 2829 "conf_parser.y"
6676 michael 913 {
6677 michael 1118 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
6678 michael 913 }
6679     break;
6680    
6681 michael 1324 case 519:
6682 michael 967
6683 michael 1133 /* Line 1806 of yacc.c */
6684 michael 1378 #line 2834 "conf_parser.y"
6685 michael 913 {
6686 michael 1118 ConfigFileEntry.short_motd = yylval.number;
6687 michael 913 }
6688     break;
6689    
6690 michael 1324 case 520:
6691 michael 967
6692 michael 1133 /* Line 1806 of yacc.c */
6693 michael 1378 #line 2839 "conf_parser.y"
6694 michael 913 {
6695 michael 1118 ConfigFileEntry.no_oper_flood = yylval.number;
6696 michael 913 }
6697     break;
6698    
6699 michael 1324 case 521:
6700 michael 967
6701 michael 1133 /* Line 1806 of yacc.c */
6702 michael 1378 #line 2844 "conf_parser.y"
6703 michael 913 {
6704 michael 1118 ConfigFileEntry.true_no_oper_flood = yylval.number;
6705 michael 913 }
6706     break;
6707    
6708 michael 1324 case 522:
6709 michael 967
6710 michael 1133 /* Line 1806 of yacc.c */
6711 michael 1378 #line 2849 "conf_parser.y"
6712 michael 913 {
6713 michael 1118 ConfigFileEntry.oper_pass_resv = yylval.number;
6714 michael 913 }
6715     break;
6716    
6717 michael 1324 case 523:
6718 michael 967
6719 michael 1133 /* Line 1806 of yacc.c */
6720 michael 1378 #line 2854 "conf_parser.y"
6721 michael 913 {
6722 michael 967 if (conf_parser_ctx.pass == 2)
6723 michael 913 {
6724     if (strlen(yylval.string) > LOCALE_LENGTH-2)
6725     yylval.string[LOCALE_LENGTH-1] = '\0';
6726    
6727     set_locale(yylval.string);
6728     }
6729     }
6730     break;
6731    
6732 michael 1324 case 524:
6733 michael 967
6734 michael 1133 /* Line 1806 of yacc.c */
6735 michael 1378 #line 2865 "conf_parser.y"
6736 michael 913 {
6737     ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
6738     }
6739     break;
6740    
6741 michael 1324 case 525:
6742 michael 967
6743 michael 1133 /* Line 1806 of yacc.c */
6744 michael 1378 #line 2870 "conf_parser.y"
6745 michael 913 {
6746     ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
6747     }
6748     break;
6749    
6750 michael 1324 case 526:
6751 michael 967
6752 michael 1133 /* Line 1806 of yacc.c */
6753 michael 1378 #line 2875 "conf_parser.y"
6754 michael 913 {
6755     ConfigFileEntry.use_egd = yylval.number;
6756     }
6757     break;
6758    
6759 michael 1324 case 527:
6760 michael 967
6761 michael 1133 /* Line 1806 of yacc.c */
6762 michael 1378 #line 2880 "conf_parser.y"
6763 michael 913 {
6764 michael 967 if (conf_parser_ctx.pass == 2)
6765 michael 913 {
6766     MyFree(ConfigFileEntry.egdpool_path);
6767     DupString(ConfigFileEntry.egdpool_path, yylval.string);
6768     }
6769     }
6770     break;
6771    
6772 michael 1324 case 528:
6773 michael 967
6774 michael 1133 /* Line 1806 of yacc.c */
6775 michael 1378 #line 2889 "conf_parser.y"
6776 michael 913 {
6777 michael 1176 if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
6778 michael 1157 {
6779     MyFree(ConfigFileEntry.service_name);
6780     DupString(ConfigFileEntry.service_name, yylval.string);
6781     }
6782     }
6783     break;
6784    
6785 michael 1324 case 529:
6786 michael 1157
6787     /* Line 1806 of yacc.c */
6788 michael 1378 #line 2898 "conf_parser.y"
6789 michael 1157 {
6790 michael 913 ConfigFileEntry.ping_cookie = yylval.number;
6791     }
6792     break;
6793    
6794 michael 1324 case 530:
6795 michael 967
6796 michael 1133 /* Line 1806 of yacc.c */
6797 michael 1378 #line 2903 "conf_parser.y"
6798 michael 913 {
6799     ConfigFileEntry.disable_auth = yylval.number;
6800     }
6801     break;
6802    
6803 michael 1324 case 531:
6804 michael 967
6805 michael 1133 /* Line 1806 of yacc.c */
6806 michael 1378 #line 2908 "conf_parser.y"
6807 michael 913 {
6808     ConfigFileEntry.throttle_time = yylval.number;
6809     }
6810     break;
6811    
6812 michael 1324 case 532:
6813 michael 967
6814 michael 1133 /* Line 1806 of yacc.c */
6815 michael 1378 #line 2913 "conf_parser.y"
6816 michael 913 {
6817     ConfigFileEntry.oper_umodes = 0;
6818     }
6819     break;
6820    
6821 michael 1324 case 536:
6822 michael 967
6823 michael 1133 /* Line 1806 of yacc.c */
6824 michael 1378 #line 2919 "conf_parser.y"
6825 michael 913 {
6826     ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6827     }
6828     break;
6829    
6830 michael 1324 case 537:
6831 michael 967
6832 michael 1133 /* Line 1806 of yacc.c */
6833 michael 1378 #line 2922 "conf_parser.y"
6834 michael 913 {
6835     ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6836     }
6837     break;
6838    
6839 michael 1324 case 538:
6840 michael 967
6841 michael 1133 /* Line 1806 of yacc.c */
6842 michael 1378 #line 2925 "conf_parser.y"
6843 michael 913 {
6844     ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6845     }
6846     break;
6847    
6848 michael 1324 case 539:
6849 michael 967
6850 michael 1133 /* Line 1806 of yacc.c */
6851 michael 1378 #line 2928 "conf_parser.y"
6852 michael 913 {
6853     ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6854     }
6855     break;
6856    
6857 michael 1324 case 540:
6858 michael 967
6859 michael 1133 /* Line 1806 of yacc.c */
6860 michael 1378 #line 2931 "conf_parser.y"
6861 michael 913 {
6862     ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6863     }
6864     break;
6865    
6866 michael 1324 case 541:
6867 michael 967
6868 michael 1133 /* Line 1806 of yacc.c */
6869 michael 1378 #line 2934 "conf_parser.y"
6870 michael 913 {
6871     ConfigFileEntry.oper_umodes |= UMODE_FULL;
6872     }
6873     break;
6874    
6875 michael 1324 case 542:
6876 michael 1294
6877     /* Line 1806 of yacc.c */
6878 michael 1378 #line 2937 "conf_parser.y"
6879 michael 1294 {
6880     ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6881     }
6882     break;
6883    
6884 michael 1324 case 543:
6885 michael 967
6886 michael 1133 /* Line 1806 of yacc.c */
6887 michael 1378 #line 2940 "conf_parser.y"
6888 michael 913 {
6889     ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6890     }
6891     break;
6892    
6893 michael 1324 case 544:
6894 michael 967
6895 michael 1133 /* Line 1806 of yacc.c */
6896 michael 1378 #line 2943 "conf_parser.y"
6897 michael 913 {
6898     ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6899     }
6900     break;
6901    
6902 michael 1324 case 545:
6903 michael 967
6904 michael 1133 /* Line 1806 of yacc.c */
6905 michael 1378 #line 2946 "conf_parser.y"
6906 michael 913 {
6907     ConfigFileEntry.oper_umodes |= UMODE_REJ;
6908     }
6909     break;
6910    
6911 michael 1324 case 546:
6912 michael 967
6913 michael 1133 /* Line 1806 of yacc.c */
6914 michael 1378 #line 2949 "conf_parser.y"
6915 michael 913 {
6916     ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6917     }
6918     break;
6919    
6920 michael 1324 case 547:
6921 michael 967
6922 michael 1133 /* Line 1806 of yacc.c */
6923 michael 1378 #line 2952 "conf_parser.y"
6924 michael 913 {
6925     ConfigFileEntry.oper_umodes |= UMODE_SPY;
6926     }
6927     break;
6928    
6929 michael 1324 case 548:
6930 michael 967
6931 michael 1133 /* Line 1806 of yacc.c */
6932 michael 1378 #line 2955 "conf_parser.y"
6933 michael 913 {
6934     ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6935     }
6936     break;
6937    
6938 michael 1324 case 549:
6939 michael 967
6940 michael 1133 /* Line 1806 of yacc.c */
6941 michael 1378 #line 2958 "conf_parser.y"
6942 michael 913 {
6943     ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6944     }
6945     break;
6946    
6947 michael 1324 case 550:
6948 michael 967
6949 michael 1133 /* Line 1806 of yacc.c */
6950 michael 1378 #line 2961 "conf_parser.y"
6951 michael 913 {
6952     ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6953     }
6954     break;
6955    
6956 michael 1324 case 551:
6957 michael 967
6958 michael 1133 /* Line 1806 of yacc.c */
6959 michael 1378 #line 2964 "conf_parser.y"
6960 michael 913 {
6961     ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6962     }
6963     break;
6964    
6965 michael 1324 case 552:
6966 michael 967
6967 michael 1133 /* Line 1806 of yacc.c */
6968 michael 1378 #line 2967 "conf_parser.y"
6969 michael 913 {
6970     ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6971     }
6972     break;
6973    
6974 michael 1324 case 553:
6975 michael 967
6976 michael 1133 /* Line 1806 of yacc.c */
6977 michael 1378 #line 2970 "conf_parser.y"
6978 michael 913 {
6979     ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6980     }
6981     break;
6982    
6983 michael 1324 case 554:
6984 michael 967
6985 michael 1133 /* Line 1806 of yacc.c */
6986 michael 1378 #line 2973 "conf_parser.y"
6987 michael 913 {
6988     ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6989     }
6990     break;
6991    
6992 michael 1324 case 555:
6993 michael 967
6994 michael 1133 /* Line 1806 of yacc.c */
6995 michael 1378 #line 2976 "conf_parser.y"
6996 michael 913 {
6997     ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6998     }
6999     break;
7000    
7001 michael 1324 case 556:
7002 michael 967
7003 michael 1133 /* Line 1806 of yacc.c */
7004 michael 1378 #line 2981 "conf_parser.y"
7005 michael 913 {
7006     ConfigFileEntry.oper_only_umodes = 0;
7007     }
7008     break;
7009    
7010 michael 1324 case 560:
7011 michael 967
7012 michael 1133 /* Line 1806 of yacc.c */
7013 michael 1378 #line 2987 "conf_parser.y"
7014 michael 913 {
7015     ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
7016     }
7017     break;
7018    
7019 michael 1324 case 561:
7020 michael 967
7021 michael 1133 /* Line 1806 of yacc.c */
7022 michael 1378 #line 2990 "conf_parser.y"
7023 michael 913 {
7024     ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
7025     }
7026     break;
7027    
7028 michael 1324 case 562:
7029 michael 967
7030 michael 1133 /* Line 1806 of yacc.c */
7031 michael 1378 #line 2993 "conf_parser.y"
7032 michael 913 {
7033     ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
7034     }
7035     break;
7036    
7037 michael 1324 case 563:
7038 michael 967
7039 michael 1133 /* Line 1806 of yacc.c */
7040 michael 1378 #line 2996 "conf_parser.y"
7041 michael 913 {
7042     ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
7043     }
7044     break;
7045    
7046 michael 1324 case 564:
7047 michael 967
7048 michael 1133 /* Line 1806 of yacc.c */
7049 michael 1378 #line 2999 "conf_parser.y"
7050 michael 913 {
7051     ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
7052     }
7053     break;
7054    
7055 michael 1324 case 565:
7056 michael 967
7057 michael 1133 /* Line 1806 of yacc.c */
7058 michael 1378 #line 3002 "conf_parser.y"
7059 michael 913 {
7060     ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
7061     }
7062     break;
7063    
7064 michael 1324 case 566:
7065 michael 967
7066 michael 1133 /* Line 1806 of yacc.c */
7067 michael 1378 #line 3005 "conf_parser.y"
7068 michael 913 {
7069     ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
7070     }
7071     break;
7072    
7073 michael 1324 case 567:
7074 michael 967
7075 michael 1133 /* Line 1806 of yacc.c */
7076 michael 1378 #line 3008 "conf_parser.y"
7077 michael 1294 {
7078     ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
7079     }
7080     break;
7081    
7082 michael 1324 case 568:
7083 michael 1294
7084     /* Line 1806 of yacc.c */
7085 michael 1378 #line 3011 "conf_parser.y"
7086 michael 913 {
7087     ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
7088     }
7089     break;
7090    
7091 michael 1324 case 569:
7092 michael 967
7093 michael 1133 /* Line 1806 of yacc.c */
7094 michael 1378 #line 3014 "conf_parser.y"
7095 michael 913 {
7096     ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
7097     }
7098     break;
7099    
7100 michael 1324 case 570:
7101 michael 967
7102 michael 1133 /* Line 1806 of yacc.c */
7103 michael 1378 #line 3017 "conf_parser.y"
7104 michael 913 {
7105     ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
7106     }
7107     break;
7108    
7109 michael 1324 case 571:
7110 michael 967
7111 michael 1133 /* Line 1806 of yacc.c */
7112 michael 1378 #line 3020 "conf_parser.y"
7113 michael 913 {
7114     ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
7115     }
7116     break;
7117    
7118 michael 1324 case 572:
7119 michael 967
7120 michael 1133 /* Line 1806 of yacc.c */
7121 michael 1378 #line 3023 "conf_parser.y"
7122 michael 913 {
7123     ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
7124     }
7125     break;
7126    
7127 michael 1324 case 573:
7128 michael 967
7129 michael 1133 /* Line 1806 of yacc.c */
7130 michael 1378 #line 3026 "conf_parser.y"
7131 michael 913 {
7132     ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
7133     }
7134     break;
7135    
7136 michael 1324 case 574:
7137 michael 967
7138 michael 1133 /* Line 1806 of yacc.c */
7139 michael 1378 #line 3029 "conf_parser.y"
7140 michael 913 {
7141     ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
7142     }
7143     break;
7144    
7145 michael 1324 case 575:
7146 michael 967
7147 michael 1133 /* Line 1806 of yacc.c */
7148 michael 1378 #line 3032 "conf_parser.y"
7149 michael 913 {
7150     ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
7151     }
7152     break;
7153    
7154 michael 1324 case 576:
7155 michael 967
7156 michael 1133 /* Line 1806 of yacc.c */
7157 michael 1378 #line 3035 "conf_parser.y"
7158 michael 913 {
7159     ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
7160     }
7161     break;
7162    
7163 michael 1324 case 577:
7164 michael 967
7165 michael 1133 /* Line 1806 of yacc.c */
7166 michael 1378 #line 3038 "conf_parser.y"
7167 michael 913 {
7168     ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
7169     }
7170     break;
7171    
7172 michael 1324 case 578:
7173 michael 967
7174 michael 1133 /* Line 1806 of yacc.c */
7175 michael 1378 #line 3041 "conf_parser.y"
7176 michael 913 {
7177     ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
7178     }
7179     break;
7180    
7181 michael 1324 case 579:
7182 michael 967
7183 michael 1133 /* Line 1806 of yacc.c */
7184 michael 1378 #line 3044 "conf_parser.y"
7185 michael 913 {
7186     ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
7187     }
7188     break;
7189    
7190 michael 1324 case 580:
7191 michael 967
7192 michael 1133 /* Line 1806 of yacc.c */
7193 michael 1378 #line 3049 "conf_parser.y"
7194 michael 913 {
7195     ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
7196     }
7197     break;
7198    
7199 michael 1324 case 581:
7200 michael 967
7201 michael 1133 /* Line 1806 of yacc.c */
7202 michael 1378 #line 3054 "conf_parser.y"
7203 michael 913 {
7204     ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
7205     }
7206     break;
7207    
7208 michael 1324 case 582:
7209 michael 967
7210 michael 1133 /* Line 1806 of yacc.c */
7211 michael 1378 #line 3059 "conf_parser.y"
7212 michael 913 {
7213     ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
7214     }
7215     break;
7216    
7217 michael 1324 case 583:
7218 michael 967
7219 michael 1133 /* Line 1806 of yacc.c */
7220 michael 1378 #line 3064 "conf_parser.y"
7221 michael 913 {
7222     ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
7223     }
7224     break;
7225    
7226 michael 1324 case 584:
7227 michael 967
7228 michael 1133 /* Line 1806 of yacc.c */
7229 michael 1378 #line 3073 "conf_parser.y"
7230 michael 913 {
7231 michael 967 if (conf_parser_ctx.pass == 2)
7232 michael 913 {
7233     yy_conf = make_conf_item(GDENY_TYPE);
7234     yy_aconf = map_to_conf(yy_conf);
7235     }
7236     }
7237     break;
7238    
7239 michael 1324 case 585:
7240 michael 967
7241 michael 1133 /* Line 1806 of yacc.c */
7242 michael 1378 #line 3080 "conf_parser.y"
7243 michael 913 {
7244 michael 967 if (conf_parser_ctx.pass == 2)
7245 michael 913 {
7246     /*
7247     * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
7248     * end we will have one extra, so we should free it.
7249     */
7250     if (yy_conf->name == NULL || yy_aconf->user == NULL)
7251     {
7252     delete_conf_item(yy_conf);
7253     yy_conf = NULL;
7254     yy_aconf = NULL;
7255     }
7256     }
7257     }
7258     break;
7259    
7260 michael 1324 case 595:
7261 michael 967
7262 michael 1133 /* Line 1806 of yacc.c */
7263 michael 1378 #line 3106 "conf_parser.y"
7264 michael 913 {
7265 michael 967 if (conf_parser_ctx.pass == 2)
7266 michael 913 ConfigFileEntry.glines = yylval.number;
7267     }
7268     break;
7269    
7270 michael 1324 case 596:
7271 michael 967
7272 michael 1133 /* Line 1806 of yacc.c */
7273 michael 1378 #line 3112 "conf_parser.y"
7274 michael 913 {
7275 michael 967 if (conf_parser_ctx.pass == 2)
7276 michael 913 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
7277     }
7278     break;
7279    
7280 michael 1324 case 597:
7281 michael 967
7282 michael 1133 /* Line 1806 of yacc.c */
7283 michael 1378 #line 3118 "conf_parser.y"
7284 michael 913 {
7285 michael 967 if (conf_parser_ctx.pass == 2)
7286 michael 913 ConfigFileEntry.gline_logging = 0;
7287     }
7288     break;
7289    
7290 michael 1324 case 601:
7291 michael 967
7292 michael 1133 /* Line 1806 of yacc.c */
7293 michael 1378 #line 3124 "conf_parser.y"
7294 michael 913 {
7295 michael 967 if (conf_parser_ctx.pass == 2)
7296 michael 913 ConfigFileEntry.gline_logging |= GDENY_REJECT;
7297     }
7298     break;
7299    
7300 michael 1324 case 602:
7301 michael 967
7302 michael 1133 /* Line 1806 of yacc.c */
7303 michael 1378 #line 3128 "conf_parser.y"
7304 michael 913 {
7305 michael 967 if (conf_parser_ctx.pass == 2)
7306 michael 913 ConfigFileEntry.gline_logging |= GDENY_BLOCK;
7307     }
7308     break;
7309    
7310 michael 1324 case 603:
7311 michael 967
7312 michael 1133 /* Line 1806 of yacc.c */
7313 michael 1378 #line 3134 "conf_parser.y"
7314 michael 913 {
7315 michael 967 if (conf_parser_ctx.pass == 2)
7316 michael 913 {
7317     struct split_nuh_item nuh;
7318    
7319     nuh.nuhmask = yylval.string;
7320     nuh.nickptr = NULL;
7321     nuh.userptr = userbuf;
7322     nuh.hostptr = hostbuf;
7323    
7324     nuh.nicksize = 0;
7325     nuh.usersize = sizeof(userbuf);
7326     nuh.hostsize = sizeof(hostbuf);
7327    
7328     split_nuh(&nuh);
7329    
7330     if (yy_aconf->user == NULL)
7331     {
7332     DupString(yy_aconf->user, userbuf);
7333     DupString(yy_aconf->host, hostbuf);
7334     }
7335     else
7336     {
7337     struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
7338    
7339     DupString(yy_tmp->user, userbuf);
7340     DupString(yy_tmp->host, hostbuf);
7341    
7342     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
7343     }
7344     }
7345     }
7346     break;
7347    
7348 michael 1324 case 604:
7349 michael 967
7350 michael 1133 /* Line 1806 of yacc.c */
7351 michael 1378 #line 3168 "conf_parser.y"
7352 michael 913 {
7353 michael 967 if (conf_parser_ctx.pass == 2)
7354 michael 913 {
7355     MyFree(yy_conf->name);
7356     DupString(yy_conf->name, yylval.string);
7357     }
7358     }
7359     break;
7360    
7361 michael 1324 case 605:
7362 michael 967
7363 michael 1133 /* Line 1806 of yacc.c */
7364 michael 1378 #line 3177 "conf_parser.y"
7365 michael 913 {
7366 michael 967 if (conf_parser_ctx.pass == 2)
7367 michael 913 yy_aconf->flags = 0;
7368     }
7369     break;
7370    
7371 michael 1324 case 606:
7372 michael 967
7373 michael 1133 /* Line 1806 of yacc.c */
7374 michael 1378 #line 3181 "conf_parser.y"
7375 michael 913 {
7376 michael 967 if (conf_parser_ctx.pass == 2)
7377 michael 913 {
7378     struct CollectItem *yy_tmp = NULL;
7379     dlink_node *ptr, *next_ptr;
7380    
7381     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
7382     {
7383     struct AccessItem *new_aconf;
7384     struct ConfItem *new_conf;
7385    
7386     yy_tmp = ptr->data;
7387     new_conf = make_conf_item(GDENY_TYPE);
7388     new_aconf = map_to_conf(new_conf);
7389    
7390     new_aconf->flags = yy_aconf->flags;
7391    
7392     if (yy_conf->name != NULL)
7393     DupString(new_conf->name, yy_conf->name);
7394     else
7395     DupString(new_conf->name, "*");
7396     if (yy_aconf->user != NULL)
7397     DupString(new_aconf->user, yy_tmp->user);
7398     else
7399     DupString(new_aconf->user, "*");
7400     if (yy_aconf->host != NULL)
7401     DupString(new_aconf->host, yy_tmp->host);
7402     else
7403     DupString(new_aconf->host, "*");
7404    
7405     dlinkDelete(&yy_tmp->node, &col_conf_list);
7406     }
7407    
7408     /*
7409     * In case someone has fed us with more than one action= after user/name
7410     * which would leak memory -Michael
7411     */
7412     if (yy_conf->name == NULL || yy_aconf->user == NULL)
7413     delete_conf_item(yy_conf);
7414    
7415     yy_conf = make_conf_item(GDENY_TYPE);
7416     yy_aconf = map_to_conf(yy_conf);
7417     }
7418     }
7419     break;
7420    
7421 michael 1324 case 609:
7422 michael 967
7423 michael 1133 /* Line 1806 of yacc.c */
7424 michael 1378 #line 3228 "conf_parser.y"
7425 michael 913 {
7426 michael 967 if (conf_parser_ctx.pass == 2)
7427 michael 913 yy_aconf->flags |= GDENY_REJECT;
7428     }
7429     break;
7430    
7431 michael 1324 case 610:
7432 michael 967
7433 michael 1133 /* Line 1806 of yacc.c */
7434 michael 1378 #line 3232 "conf_parser.y"
7435 michael 913 {
7436 michael 967 if (conf_parser_ctx.pass == 2)
7437 michael 913 yy_aconf->flags |= GDENY_BLOCK;
7438     }
7439     break;
7440    
7441 michael 1324 case 633:
7442 michael 1118
7443 michael 1133 /* Line 1806 of yacc.c */
7444 michael 1378 #line 3256 "conf_parser.y"
7445 michael 1118 {
7446     ConfigChannel.disable_fake_channels = yylval.number;
7447     }
7448     break;
7449    
7450 michael 1324 case 634:
7451 michael 1118
7452 michael 1133 /* Line 1806 of yacc.c */
7453 michael 1378 #line 3261 "conf_parser.y"
7454 michael 1118 {
7455     ConfigChannel.restrict_channels = yylval.number;
7456     }
7457     break;
7458    
7459 michael 1324 case 635:
7460 michael 967
7461 michael 1133 /* Line 1806 of yacc.c */
7462 michael 1378 #line 3266 "conf_parser.y"
7463 michael 913 {
7464 michael 1118 ConfigChannel.disable_local_channels = yylval.number;
7465 michael 913 }
7466     break;
7467    
7468 michael 1324 case 636:
7469 michael 967
7470 michael 1133 /* Line 1806 of yacc.c */
7471 michael 1378 #line 3271 "conf_parser.y"
7472 michael 913 {
7473 michael 1118 ConfigChannel.use_except = yylval.number;
7474 michael 913 }
7475     break;
7476    
7477 michael 1324 case 637:
7478 michael 967
7479 michael 1133 /* Line 1806 of yacc.c */
7480 michael 1378 #line 3276 "conf_parser.y"
7481 michael 913 {
7482 michael 1118 ConfigChannel.use_invex = yylval.number;
7483 michael 913 }
7484     break;
7485    
7486 michael 1324 case 638:
7487 michael 967
7488 michael 1133 /* Line 1806 of yacc.c */
7489 michael 1378 #line 3281 "conf_parser.y"
7490 michael 913 {
7491 michael 1118 ConfigChannel.use_knock = yylval.number;
7492 michael 913 }
7493     break;
7494    
7495 michael 1324 case 639:
7496 michael 967
7497 michael 1133 /* Line 1806 of yacc.c */
7498 michael 1378 #line 3286 "conf_parser.y"
7499 michael 913 {
7500 michael 1118 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
7501 michael 913 }
7502     break;
7503    
7504 michael 1324 case 640:
7505 michael 967
7506 michael 1133 /* Line 1806 of yacc.c */
7507 michael 1378 #line 3291 "conf_parser.y"
7508 michael 913 {
7509 michael 1118 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
7510 michael 913 }
7511     break;
7512    
7513 michael 1324 case 641:
7514 michael 967
7515 michael 1133 /* Line 1806 of yacc.c */
7516 michael 1378 #line 3296 "conf_parser.y"
7517 michael 913 {
7518 michael 1118 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
7519 michael 913 }
7520     break;
7521    
7522 michael 1324 case 642:
7523 michael 967
7524 michael 1133 /* Line 1806 of yacc.c */
7525 michael 1378 #line 3301 "conf_parser.y"
7526 michael 913 {
7527 michael 1118 ConfigChannel.quiet_on_ban = yylval.number;
7528 michael 913 }
7529     break;
7530    
7531 michael 1324 case 643:
7532 michael 967
7533 michael 1133 /* Line 1806 of yacc.c */
7534 michael 1378 #line 3306 "conf_parser.y"
7535 michael 913 {
7536 michael 1118 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
7537 michael 913 }
7538     break;
7539    
7540 michael 1324 case 644:
7541 michael 967
7542 michael 1133 /* Line 1806 of yacc.c */
7543 michael 1378 #line 3311 "conf_parser.y"
7544 michael 913 {
7545 michael 1118 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
7546 michael 913 }
7547     break;
7548    
7549 michael 1324 case 645:
7550 michael 967
7551 michael 1133 /* Line 1806 of yacc.c */
7552 michael 1378 #line 3316 "conf_parser.y"
7553 michael 913 {
7554 michael 1118 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
7555 michael 913 }
7556     break;
7557    
7558 michael 1324 case 646:
7559 michael 967
7560 michael 1133 /* Line 1806 of yacc.c */
7561 michael 1378 #line 3321 "conf_parser.y"
7562 michael 913 {
7563 michael 1118 ConfigChannel.no_create_on_split = yylval.number;
7564 michael 913 }
7565     break;
7566    
7567 michael 1324 case 647:
7568 michael 967
7569 michael 1133 /* Line 1806 of yacc.c */
7570 michael 1378 #line 3326 "conf_parser.y"
7571 michael 913 {
7572 michael 1118 ConfigChannel.no_join_on_split = yylval.number;
7573 michael 913 }
7574     break;
7575    
7576 michael 1324 case 648:
7577 michael 967
7578 michael 1133 /* Line 1806 of yacc.c */
7579 michael 1378 #line 3331 "conf_parser.y"
7580 michael 913 {
7581 michael 1118 ConfigChannel.burst_topicwho = yylval.number;
7582 michael 913 }
7583     break;
7584    
7585 michael 1324 case 649:
7586 michael 967
7587 michael 1133 /* Line 1806 of yacc.c */
7588 michael 1378 #line 3336 "conf_parser.y"
7589 michael 913 {
7590 michael 1118 GlobalSetOptions.joinfloodcount = yylval.number;
7591 michael 913 }
7592     break;
7593    
7594 michael 1324 case 650:
7595 michael 967
7596 michael 1133 /* Line 1806 of yacc.c */
7597 michael 1378 #line 3341 "conf_parser.y"
7598 michael 913 {
7599     GlobalSetOptions.joinfloodtime = yylval.number;
7600     }
7601     break;
7602    
7603 michael 1324 case 662:
7604 michael 967
7605 michael 1133 /* Line 1806 of yacc.c */
7606 michael 1378 #line 3360 "conf_parser.y"
7607 michael 913 {
7608 michael 967 if (conf_parser_ctx.pass == 2)
7609 michael 913 ConfigServerHide.flatten_links = yylval.number;
7610     }
7611     break;
7612    
7613 michael 1324 case 663:
7614 michael 967
7615 michael 1133 /* Line 1806 of yacc.c */
7616 michael 1378 #line 3366 "conf_parser.y"
7617 michael 913 {
7618 michael 967 if (conf_parser_ctx.pass == 2)
7619 michael 913 ConfigServerHide.hide_servers = yylval.number;
7620     }
7621     break;
7622    
7623 michael 1324 case 664:
7624 michael 967
7625 michael 1133 /* Line 1806 of yacc.c */
7626 michael 1378 #line 3372 "conf_parser.y"
7627 michael 913 {
7628 michael 967 if (conf_parser_ctx.pass == 2)
7629 michael 913 {
7630     MyFree(ConfigServerHide.hidden_name);
7631     DupString(ConfigServerHide.hidden_name, yylval.string);
7632     }
7633     }
7634     break;
7635    
7636 michael 1324 case 665:
7637 michael 967
7638 michael 1133 /* Line 1806 of yacc.c */
7639 michael 1378 #line 3381 "conf_parser.y"
7640 michael 913 {
7641 michael 967 if (conf_parser_ctx.pass == 2)
7642 michael 913 {
7643     if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
7644     {
7645     eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
7646     ConfigServerHide.links_disabled = 0;
7647     }
7648    
7649     ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
7650     }
7651     }
7652     break;
7653    
7654 michael 1324 case 666:
7655 michael 967
7656 michael 1133 /* Line 1806 of yacc.c */
7657 michael 1378 #line 3395 "conf_parser.y"
7658 michael 913 {
7659 michael 967 if (conf_parser_ctx.pass == 2)
7660 michael 913 ConfigServerHide.hidden = yylval.number;
7661     }
7662     break;
7663    
7664 michael 1324 case 667:
7665 michael 967
7666 michael 1133 /* Line 1806 of yacc.c */
7667 michael 1378 #line 3401 "conf_parser.y"
7668 michael 913 {
7669 michael 967 if (conf_parser_ctx.pass == 2)
7670 michael 913 ConfigServerHide.disable_hidden = yylval.number;
7671     }
7672     break;
7673    
7674 michael 1324 case 668:
7675 michael 967
7676 michael 1133 /* Line 1806 of yacc.c */
7677 michael 1378 #line 3407 "conf_parser.y"
7678 michael 913 {
7679 michael 967 if (conf_parser_ctx.pass == 2)
7680 michael 913 ConfigServerHide.hide_server_ips = yylval.number;
7681     }
7682     break;
7683    
7684    
7685 michael 967
7686 michael 1133 /* Line 1806 of yacc.c */
7687 michael 1378 #line 7688 "conf_parser.c"
7688 michael 913 default: break;
7689     }
7690 michael 1133 /* User semantic actions sometimes alter yychar, and that requires
7691     that yytoken be updated with the new translation. We take the
7692     approach of translating immediately before every use of yytoken.
7693     One alternative is translating here after every semantic action,
7694     but that translation would be missed if the semantic action invokes
7695     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
7696     if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
7697     incorrect destructor might then be invoked immediately. In the
7698     case of YYERROR or YYBACKUP, subsequent parser actions might lead
7699     to an incorrect destructor call or verbose syntax error message
7700     before the lookahead is translated. */
7701 michael 913 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
7702    
7703     YYPOPSTACK (yylen);
7704     yylen = 0;
7705     YY_STACK_PRINT (yyss, yyssp);
7706    
7707     *++yyvsp = yyval;
7708    
7709     /* Now `shift' the result of the reduction. Determine what state
7710     that goes to, based on the state we popped back to and the rule
7711     number reduced by. */
7712    
7713     yyn = yyr1[yyn];
7714    
7715     yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
7716     if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
7717     yystate = yytable[yystate];
7718     else
7719     yystate = yydefgoto[yyn - YYNTOKENS];
7720    
7721     goto yynewstate;
7722    
7723    
7724     /*------------------------------------.
7725     | yyerrlab -- here on detecting error |
7726     `------------------------------------*/
7727     yyerrlab:
7728 michael 1133 /* Make sure we have latest lookahead translation. See comments at
7729     user semantic actions for why this is necessary. */
7730     yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
7731    
7732 michael 913 /* If not already recovering from an error, report this error. */
7733     if (!yyerrstatus)
7734     {
7735     ++yynerrs;
7736     #if ! YYERROR_VERBOSE
7737     yyerror (YY_("syntax error"));
7738     #else
7739 michael 1133 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
7740     yyssp, yytoken)
7741 michael 913 {
7742 michael 1133 char const *yymsgp = YY_("syntax error");
7743     int yysyntax_error_status;
7744     yysyntax_error_status = YYSYNTAX_ERROR;
7745     if (yysyntax_error_status == 0)
7746     yymsgp = yymsg;
7747     else if (yysyntax_error_status == 1)
7748     {
7749     if (yymsg != yymsgbuf)
7750     YYSTACK_FREE (yymsg);
7751     yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
7752     if (!yymsg)
7753     {
7754     yymsg = yymsgbuf;
7755     yymsg_alloc = sizeof yymsgbuf;
7756     yysyntax_error_status = 2;
7757     }
7758     else
7759     {
7760     yysyntax_error_status = YYSYNTAX_ERROR;
7761     yymsgp = yymsg;
7762     }
7763     }
7764     yyerror (yymsgp);
7765     if (yysyntax_error_status == 2)
7766     goto yyexhaustedlab;
7767 michael 913 }
7768 michael 1133 # undef YYSYNTAX_ERROR
7769 michael 913 #endif
7770     }
7771    
7772    
7773    
7774     if (yyerrstatus == 3)
7775     {
7776 michael 967 /* If just tried and failed to reuse lookahead token after an
7777 michael 913 error, discard it. */
7778    
7779     if (yychar <= YYEOF)
7780     {
7781     /* Return failure if at end of input. */
7782     if (yychar == YYEOF)
7783     YYABORT;
7784     }
7785     else
7786     {
7787     yydestruct ("Error: discarding",
7788     yytoken, &yylval);
7789     yychar = YYEMPTY;
7790     }
7791     }
7792    
7793 michael 967 /* Else will try to reuse lookahead token after shifting the error
7794 michael 913 token. */
7795     goto yyerrlab1;
7796    
7797    
7798     /*---------------------------------------------------.
7799     | yyerrorlab -- error raised explicitly by YYERROR. |
7800     `---------------------------------------------------*/
7801     yyerrorlab:
7802    
7803     /* Pacify compilers like GCC when the user code never invokes
7804     YYERROR and the label yyerrorlab therefore never appears in user
7805     code. */
7806     if (/*CONSTCOND*/ 0)
7807     goto yyerrorlab;
7808    
7809     /* Do not reclaim the symbols of the rule which action triggered
7810     this YYERROR. */
7811     YYPOPSTACK (yylen);
7812     yylen = 0;
7813     YY_STACK_PRINT (yyss, yyssp);
7814     yystate = *yyssp;
7815     goto yyerrlab1;
7816    
7817    
7818     /*-------------------------------------------------------------.
7819     | yyerrlab1 -- common code for both syntax error and YYERROR. |
7820     `-------------------------------------------------------------*/
7821     yyerrlab1:
7822     yyerrstatus = 3; /* Each real token shifted decrements this. */
7823    
7824     for (;;)
7825     {
7826     yyn = yypact[yystate];
7827 michael 1133 if (!yypact_value_is_default (yyn))
7828 michael 913 {
7829     yyn += YYTERROR;
7830     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
7831     {
7832     yyn = yytable[yyn];
7833     if (0 < yyn)
7834     break;
7835     }
7836     }
7837    
7838     /* Pop the current state because it cannot handle the error token. */
7839     if (yyssp == yyss)
7840     YYABORT;
7841    
7842    
7843     yydestruct ("Error: popping",
7844     yystos[yystate], yyvsp);
7845     YYPOPSTACK (1);
7846     yystate = *yyssp;
7847     YY_STACK_PRINT (yyss, yyssp);
7848     }
7849    
7850     *++yyvsp = yylval;
7851    
7852    
7853     /* Shift the error token. */
7854     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
7855    
7856     yystate = yyn;
7857     goto yynewstate;
7858    
7859    
7860     /*-------------------------------------.
7861     | yyacceptlab -- YYACCEPT comes here. |
7862     `-------------------------------------*/
7863     yyacceptlab:
7864     yyresult = 0;
7865     goto yyreturn;
7866    
7867     /*-----------------------------------.
7868     | yyabortlab -- YYABORT comes here. |
7869     `-----------------------------------*/
7870     yyabortlab:
7871     yyresult = 1;
7872     goto yyreturn;
7873    
7874 michael 967 #if !defined(yyoverflow) || YYERROR_VERBOSE
7875 michael 913 /*-------------------------------------------------.
7876     | yyexhaustedlab -- memory exhaustion comes here. |
7877     `-------------------------------------------------*/
7878     yyexhaustedlab:
7879     yyerror (YY_("memory exhausted"));
7880     yyresult = 2;
7881     /* Fall through. */
7882     #endif
7883    
7884     yyreturn:
7885 michael 967 if (yychar != YYEMPTY)
7886 michael 1133 {
7887     /* Make sure we have latest lookahead translation. See comments at
7888     user semantic actions for why this is necessary. */
7889     yytoken = YYTRANSLATE (yychar);
7890     yydestruct ("Cleanup: discarding lookahead",
7891     yytoken, &yylval);
7892     }
7893 michael 913 /* Do not reclaim the symbols of the rule which action triggered
7894     this YYABORT or YYACCEPT. */
7895     YYPOPSTACK (yylen);
7896     YY_STACK_PRINT (yyss, yyssp);
7897     while (yyssp != yyss)
7898     {
7899     yydestruct ("Cleanup: popping",
7900     yystos[*yyssp], yyvsp);
7901     YYPOPSTACK (1);
7902     }
7903     #ifndef yyoverflow
7904     if (yyss != yyssa)
7905     YYSTACK_FREE (yyss);
7906     #endif
7907     #if YYERROR_VERBOSE
7908     if (yymsg != yymsgbuf)
7909     YYSTACK_FREE (yymsg);
7910     #endif
7911     /* Make sure YYID is used. */
7912     return YYID (yyresult);
7913     }
7914    
7915    
7916    

Properties

Name Value
svn:eol-style native