ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 5936
Committed: Wed May 6 18:33:02 2015 UTC (10 years, 3 months ago) by michael
Content type: text/x-csrc
File size: 221834 byte(s)
Log Message:
- Recreate parser/lexer files

File Contents

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

Properties

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