ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 2473
Committed: Fri Oct 11 16:44:17 2013 UTC (11 years, 10 months ago) by michael
Content type: text/x-csrc
File size: 218224 byte(s)
Log Message:
- Bison 3.0

File Contents

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

Properties

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