ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 3506
Committed: Sun May 11 17:03:20 2014 UTC (11 years, 3 months ago) by michael
Content type: text/x-csrc
File size: 220089 byte(s)
Log Message:
- Added usermode +q which hides idle and signon time in WHOIS

File Contents

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

Properties

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