ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4624
Committed: Sun Sep 21 08:41:22 2014 UTC (10 years, 11 months ago) by michael
Content type: text/x-csrc
File size: 224191 byte(s)
Log Message:
- conf_parser.y: use SSL_CTX_use_certificate_chain_file() instead of SSL_CTX_use_certificate_file()

File Contents

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

Properties

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