ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1432
Committed: Sat Jun 9 19:40:08 2012 UTC (13 years, 2 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 233063 byte(s)
Log Message:
- Added channel::max_chans_per_oper configuration directive. The old way
  was to let ircops join three times the amount of max_chans_per_user.

  I'd rather would make this a class{} based limit, but this would require us
  to reprint the ISUPPORT buffer every time a client connects.

File Contents

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

Properties

Name Value
svn:eol-style native