ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.2.x/src/conf_parser.c
Revision: 5024
Committed: Fri Dec 12 15:18:29 2014 UTC (11 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 224457 byte(s)
Log Message:
- Added general::stats_m_oper_only configuration option

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

Properties

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