ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4019
Committed: Fri Jun 20 16:06:42 2014 UTC (9 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 221248 byte(s)
Log Message:
- Renamed OPER_FLAG_K to OPER_FLAG_KLINE

File Contents

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

Properties

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