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

Properties

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