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

Properties

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