ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1176
Committed: Sun Aug 14 11:24:24 2011 UTC (14 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 247334 byte(s)
Log Message:
- remove idle-time klines
- rename LocalUser.last to LocalUser.last_privmsg
- m_message.c: reset source_p->last_privmsg even if a client is messaging itself


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

Properties

Name Value
svn:eol-style native