ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 9110
Committed: Sat Jan 4 15:17:42 2020 UTC (5 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 217643 byte(s)
Log Message:
- Rename several functions in conf.c as follows:
    set_default_conf -> conf_set_defaults
    read_conf -> conf_read
    validate_conf -> conf_validate
    lookup_confhost -> conf_resolve_host
    check_client -> conf_check_client
    read_conf_files -> conf_read_files
    clear_out_old_conf -> conf_clear

File Contents

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

Properties

Name Value
svn:eol-style native