ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1366
Committed: Tue Apr 24 18:35:34 2012 UTC (11 years, 11 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 235398 byte(s)
Log Message:
- Cleanup conf_add_server(). Remove traces of obsolete username verification
  for incoming server connections.

File Contents

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

Properties

Name Value
svn:eol-style native