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

Properties

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