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

Properties

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