ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1228
Committed: Mon Sep 19 09:38:38 2011 UTC (12 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 243498 byte(s)
Log Message:
- add 'restart'/'module' operator flags which allows better fine tuning
  whether or not an operator may have access to RESTART/MOD* commands
- ircd_parser.y: (oper{}): ensure yy_aconf->port is set to zero, before
  setting any privilege bits. Fixes odd behaviour with multiple 'flags'
  entries.
  Also removed ability to negate operator flags with a tilde '~'. Pretty
  useless since all operator privilege flags are set to zero by default.

File Contents

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

Properties

Name Value
svn:eol-style native