ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 3229
Committed: Sat Mar 29 17:28:01 2014 UTC (11 years, 5 months ago) by michael
Content type: text/x-csrc
File size: 218986 byte(s)
Log Message:
- flex 2.5.39

File Contents

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

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision