ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 5557
Committed: Fri Feb 13 20:05:13 2015 UTC (10 years, 6 months ago) by michael
Content type: text/x-csrc
File size: 226696 byte(s)
Log Message:
- Regenerate parser/lexer files

File Contents

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

Properties

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