ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4499
Committed: Sat Aug 16 18:29:23 2014 UTC (12 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 222677 byte(s)
Log Message:
- conf_parser.y: removed useless tests on ConfigServerInfo.server_ctx

File Contents

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

Properties

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