ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4162
Committed: Thu Jul 3 19:39:31 2014 UTC (12 years, 3 months ago) by michael
Content type: text/x-csrc
File size: 220273 byte(s)
Log Message:
- Removed ssl_server_method and ssl_client_method configuration options.
  ircd now only allows TLSv1, TLSv1.1 and TLSv1.2 protocols depending
  on the OpenSSL version.

File Contents

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

Properties

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