ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4313
Committed: Thu Jul 31 18:50:11 2014 UTC (11 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 222741 byte(s)
Log Message:
- Improved AWAY throttling to allow for better fine-tuning

File Contents

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

Properties

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