ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 3473
Committed: Sun May 4 15:40:26 2014 UTC (11 years, 3 months ago) by michael
Content type: text/x-csrc
File size: 218869 byte(s)
Log Message:
- Renamed general::warn_no_nline to warn_no_connect_block

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

Properties

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