ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 5398
Committed: Tue Jan 20 14:49:10 2015 UTC (11 years, 8 months ago) by michael
Content type: text/x-csrc
File size: 224459 byte(s)
Log Message:
- bison 3.0.3

File Contents

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

Properties

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