ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 5417
Committed: Sun Jan 25 17:43:21 2015 UTC (10 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 225509 byte(s)
Log Message:
- Re-create autogenerated parser/lexer files

File Contents

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

Properties

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