ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4256
Committed: Fri Jul 18 20:37:01 2014 UTC (11 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 221634 byte(s)
Log Message:
- conf_parser.y: fixed logging of invalid private key

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

Properties

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