ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 3513
Committed: Mon May 12 16:28:29 2014 UTC (11 years, 3 months ago) by michael
Content type: text/x-csrc
File size: 220043 byte(s)
Log Message:
- Added usermode +p which hides channel list in WHOIS

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

Properties

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