ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1324
Committed: Fri Mar 30 21:40:38 2012 UTC (13 years, 5 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 235296 byte(s)
Log Message:
- Remove log::timestamp configuration directive. Timestamps are now enabled by default.
- Timestamps are iso8601 now

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

Properties

Name Value
svn:eol-style native