ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1316
Committed: Tue Mar 27 17:05:51 2012 UTC (12 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 235802 byte(s)
Log Message:
- Removed 'ssl_server_protocol' configuration directive and
  added 'ssl_client_method' and 'ssl_server_method' instead.

  Both of these options can now be changed at runtime.

- src/Makefile.am: swapped order of conf_parser.y and conf_lexer.l
- Update example configuration files

File Contents

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

Properties

Name Value
svn:eol-style native