ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 2570
Committed: Mon Nov 18 19:14:02 2013 UTC (11 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 218770 byte(s)
Log Message:
- bison 3.0.1

File Contents

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

Properties

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