ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 3877
Committed: Fri Jun 6 15:49:13 2014 UTC (11 years, 2 months ago) by michael
Content type: text/x-csrc
File size: 221261 byte(s)
Log Message:
- Added general::throttle_count idea from p4

File Contents

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

Properties

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