ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4114
Committed: Tue Jul 1 16:47:15 2014 UTC (11 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 224890 byte(s)
Log Message:
- Added ssl_message_digest_algorithm configuration option to serverinfo{} block.
  See doc/reference.conf for more information.

File Contents

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

Properties

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