ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 3860
Committed: Thu Jun 5 19:55:07 2014 UTC (11 years, 2 months ago) by michael
Content type: text/x-csrc
File size: 221825 byte(s)
Log Message:
- Made the INVITE/KNOCK throttling logic less aggressive as requested by Adam

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

Properties

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