ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4121
Committed: Tue Jul 1 17:01:33 2014 UTC (11 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 224892 byte(s)
Log Message:
- conf_parser.y: fixed stupid bug. no comment there...

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 michael 4121 497, 497, 498, 504, 512, 554, 612, 640, 648, 662,
1037     690, 705, 720, 729, 743, 752, 780, 810, 835, 857,
1038     879, 888, 890, 890, 891, 892, 893, 894, 896, 905,
1039     914, 927, 926, 944, 944, 945, 945, 945, 947, 953,
1040     962, 963, 963, 965, 965, 966, 968, 975, 975, 988,
1041     989, 991, 991, 992, 992, 994, 1002, 1005, 1011, 1010,
1042     1016, 1016, 1017, 1021, 1025, 1029, 1033, 1037, 1041, 1045,
1043     1049, 1060, 1059, 1139, 1139, 1140, 1141, 1142, 1143, 1144,
1044     1145, 1146, 1147, 1148, 1149, 1150, 1152, 1158, 1164, 1170,
1045     1181, 1187, 1193, 1204, 1211, 1210, 1216, 1216, 1217, 1221,
1046     1225, 1229, 1233, 1237, 1241, 1245, 1249, 1253, 1257, 1261,
1047     1265, 1269, 1273, 1277, 1281, 1285, 1289, 1293, 1297, 1301,
1048     1308, 1307, 1313, 1313, 1314, 1318, 1322, 1326, 1330, 1334,
1049     1338, 1342, 1346, 1350, 1354, 1358, 1362, 1366, 1370, 1374,
1050     1378, 1382, 1386, 1390, 1394, 1398, 1402, 1413, 1412, 1474,
1051     1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483,
1052     1484, 1485, 1486, 1487, 1487, 1488, 1489, 1490, 1491, 1493,
1053     1499, 1505, 1511, 1517, 1523, 1529, 1535, 1541, 1547, 1553,
1054     1560, 1566, 1572, 1578, 1587, 1597, 1596, 1602, 1602, 1603,
1055     1607, 1618, 1617, 1624, 1623, 1628, 1628, 1629, 1633, 1637,
1056     1643, 1643, 1644, 1644, 1644, 1644, 1644, 1646, 1646, 1648,
1057     1648, 1650, 1664, 1682, 1688, 1698, 1697, 1739, 1739, 1740,
1058     1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1750, 1756,
1059     1762, 1768, 1780, 1779, 1785, 1785, 1786, 1790, 1794, 1798,
1060     1802, 1806, 1810, 1814, 1818, 1822, 1828, 1842, 1851, 1865,
1061     1864, 1879, 1879, 1880, 1880, 1880, 1880, 1882, 1888, 1894,
1062     1904, 1906, 1906, 1907, 1907, 1909, 1925, 1924, 1949, 1949,
1063     1950, 1950, 1950, 1950, 1952, 1958, 1978, 1977, 1983, 1983,
1064     1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2020,
1065     2030, 2029, 2050, 2050, 2051, 2051, 2051, 2053, 2060, 2059,
1066     2065, 2065, 2066, 2070, 2074, 2078, 2082, 2086, 2090, 2094,
1067     2098, 2102, 2112, 2111, 2183, 2183, 2184, 2185, 2186, 2187,
1068     2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197,
1069     2198, 2200, 2206, 2212, 2218, 2231, 2244, 2250, 2256, 2260,
1070     2269, 2268, 2273, 2273, 2274, 2278, 2284, 2295, 2301, 2307,
1071     2313, 2329, 2328, 2354, 2354, 2355, 2355, 2355, 2357, 2377,
1072     2387, 2386, 2413, 2413, 2414, 2414, 2414, 2416, 2422, 2431,
1073     2433, 2433, 2434, 2434, 2436, 2454, 2453, 2476, 2476, 2477,
1074     2477, 2477, 2479, 2485, 2494, 2497, 2497, 2498, 2499, 2500,
1075     2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510,
1076     2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520,
1077     2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530,
1078     2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540,
1079     2541, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2551, 2556,
1080     2562, 2568, 2574, 2580, 2585, 2590, 2595, 2600, 2605, 2610,
1081     2615, 2620, 2625, 2630, 2635, 2640, 2645, 2651, 2662, 2667,
1082     2672, 2677, 2682, 2687, 2692, 2695, 2700, 2703, 2708, 2713,
1083     2718, 2723, 2728, 2733, 2738, 2743, 2748, 2753, 2758, 2763,
1084     2772, 2781, 2786, 2791, 2796, 2802, 2801, 2806, 2806, 2807,
1085     2810, 2813, 2816, 2819, 2822, 2825, 2828, 2831, 2834, 2837,
1086     2840, 2843, 2846, 2849, 2852, 2855, 2858, 2861, 2864, 2867,
1087     2870, 2876, 2875, 2880, 2880, 2881, 2884, 2887, 2890, 2893,
1088     2896, 2899, 2902, 2905, 2908, 2911, 2914, 2917, 2920, 2923,
1089     2926, 2929, 2932, 2935, 2938, 2943, 2948, 2953, 2962, 2965,
1090     2965, 2966, 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974,
1091     2975, 2976, 2977, 2978, 2979, 2980, 2982, 2987, 2992, 2997,
1092     3002, 3007, 3012, 3017, 3022, 3027, 3032, 3037, 3042, 3047,
1093     3055, 3058, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065,
1094     3066, 3067, 3069, 3075, 3081, 3087, 3093, 3102, 3117, 3123
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 michael 4121 {
3186     ServerInfo.message_digest_algorithm = EVP_sha256();
3187 michael 4114 conf_error_report("Ignoring serverinfo::ssl_message_digest_algorithm -- unknown message digest algorithm");
3188 michael 4121 }
3189 michael 4114 }
3190     #endif
3191     }
3192 michael 4121 #line 3193 "conf_parser.c" /* yacc.c:1646 */
3193 michael 4114 break;
3194    
3195     case 89:
3196 michael 4121 #line 663 "conf_parser.y" /* yacc.c:1646 */
3197 michael 4114 {
3198     #ifdef HAVE_LIBCRYPTO
3199 michael 4070 #if OPENSSL_VERSION_NUMBER >= 0x1000005FL && !defined(OPENSSL_NO_ECDH)
3200     int nid = 0;
3201     EC_KEY *key = NULL;
3202    
3203     if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3204     {
3205     if ((nid = OBJ_sn2nid(yylval.string)) == 0)
3206     {
3207     conf_error_report("Ignoring serverinfo::serverinfo_ssl_dh_elliptic_curve -- unknown curve name");
3208     break;
3209     }
3210    
3211     if ((key = EC_KEY_new_by_curve_name(nid)) == NULL)
3212     {
3213     conf_error_report("Ignoring serverinfo::serverinfo_ssl_dh_elliptic_curve -- could not create curve");
3214     break;
3215     }
3216    
3217     SSL_CTX_set_tmp_ecdh(ServerInfo.server_ctx, key);
3218     EC_KEY_free(key);
3219     }
3220     #endif
3221     #endif
3222     }
3223 michael 4121 #line 3224 "conf_parser.c" /* yacc.c:1646 */
3224 michael 4070 break;
3225    
3226 michael 4114 case 90:
3227 michael 4121 #line 691 "conf_parser.y" /* yacc.c:1646 */
3228 michael 4070 {
3229 michael 913 /* this isn't rehashable */
3230 michael 1117 if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3231 michael 913 {
3232 michael 1117 if (valid_servname(yylval.string))
3233 michael 1646 ServerInfo.name = xstrdup(yylval.string);
3234 michael 1117 else
3235 michael 913 {
3236 michael 1752 conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3237 michael 1117 exit(0);
3238 michael 913 }
3239     }
3240     }
3241 michael 4121 #line 3242 "conf_parser.c" /* yacc.c:1646 */
3242 michael 913 break;
3243    
3244 michael 4114 case 91:
3245 michael 4121 #line 706 "conf_parser.y" /* yacc.c:1646 */
3246 michael 913 {
3247     /* this isn't rehashable */
3248 michael 967 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3249 michael 913 {
3250     if (valid_sid(yylval.string))
3251 michael 1646 ServerInfo.sid = xstrdup(yylval.string);
3252 michael 913 else
3253     {
3254 michael 1752 conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3255 michael 913 exit(0);
3256     }
3257     }
3258     }
3259 michael 4121 #line 3260 "conf_parser.c" /* yacc.c:1646 */
3260 michael 913 break;
3261    
3262 michael 4114 case 92:
3263 michael 4121 #line 721 "conf_parser.y" /* yacc.c:1646 */
3264 michael 913 {
3265 michael 967 if (conf_parser_ctx.pass == 2)
3266 michael 913 {
3267     MyFree(ServerInfo.description);
3268 michael 1646 ServerInfo.description = xstrdup(yylval.string);
3269 michael 913 }
3270     }
3271 michael 4121 #line 3272 "conf_parser.c" /* yacc.c:1646 */
3272 michael 913 break;
3273    
3274 michael 4114 case 93:
3275 michael 4121 #line 730 "conf_parser.y" /* yacc.c:1646 */
3276 michael 913 {
3277 michael 967 if (conf_parser_ctx.pass == 2)
3278 michael 913 {
3279     char *p;
3280    
3281 michael 3473 if ((p = strchr(yylval.string, ' ')))
3282 michael 3892 *p = '\0';
3283 michael 913
3284     MyFree(ServerInfo.network_name);
3285 michael 1646 ServerInfo.network_name = xstrdup(yylval.string);
3286 michael 913 }
3287     }
3288 michael 4121 #line 3289 "conf_parser.c" /* yacc.c:1646 */
3289 michael 913 break;
3290    
3291 michael 4114 case 94:
3292 michael 4121 #line 744 "conf_parser.y" /* yacc.c:1646 */
3293 michael 913 {
3294 michael 2129 if (conf_parser_ctx.pass != 2)
3295     break;
3296    
3297     MyFree(ServerInfo.network_desc);
3298     ServerInfo.network_desc = xstrdup(yylval.string);
3299 michael 913 }
3300 michael 4121 #line 3301 "conf_parser.c" /* yacc.c:1646 */
3301 michael 913 break;
3302    
3303 michael 4114 case 95:
3304 michael 4121 #line 753 "conf_parser.y" /* yacc.c:1646 */
3305 michael 913 {
3306 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3307 michael 913 {
3308     struct addrinfo hints, *res;
3309    
3310     memset(&hints, 0, sizeof(hints));
3311    
3312     hints.ai_family = AF_UNSPEC;
3313     hints.ai_socktype = SOCK_STREAM;
3314     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3315    
3316 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3317 michael 1247 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3318 michael 913 else
3319     {
3320 michael 3473 assert(res);
3321 michael 913
3322     memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3323     ServerInfo.ip.ss.ss_family = res->ai_family;
3324     ServerInfo.ip.ss_len = res->ai_addrlen;
3325 michael 1123 freeaddrinfo(res);
3326 michael 913
3327     ServerInfo.specific_ipv4_vhost = 1;
3328     }
3329     }
3330     }
3331 michael 4121 #line 3332 "conf_parser.c" /* yacc.c:1646 */
3332 michael 913 break;
3333    
3334 michael 4114 case 96:
3335 michael 4121 #line 781 "conf_parser.y" /* yacc.c:1646 */
3336 michael 913 {
3337     #ifdef IPV6
3338 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3339 michael 913 {
3340     struct addrinfo hints, *res;
3341    
3342     memset(&hints, 0, sizeof(hints));
3343    
3344     hints.ai_family = AF_UNSPEC;
3345     hints.ai_socktype = SOCK_STREAM;
3346     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3347    
3348 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3349 michael 1247 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3350 michael 913 else
3351     {
3352 michael 3473 assert(res);
3353 michael 913
3354     memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3355     ServerInfo.ip6.ss.ss_family = res->ai_family;
3356     ServerInfo.ip6.ss_len = res->ai_addrlen;
3357 michael 1123 freeaddrinfo(res);
3358 michael 913
3359     ServerInfo.specific_ipv6_vhost = 1;
3360     }
3361     }
3362     #endif
3363     }
3364 michael 4121 #line 3365 "conf_parser.c" /* yacc.c:1646 */
3365 michael 913 break;
3366    
3367 michael 4114 case 97:
3368 michael 4121 #line 811 "conf_parser.y" /* yacc.c:1646 */
3369 michael 913 {
3370 michael 1736 if (conf_parser_ctx.pass != 2)
3371     break;
3372    
3373 michael 2473 if ((yyvsp[-1].number) < MAXCLIENTS_MIN)
3374 michael 913 {
3375 michael 3473 char buf[IRCD_BUFSIZE] = "";
3376 michael 913
3377 michael 1736 snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3378 michael 1752 conf_error_report(buf);
3379 michael 1736 ServerInfo.max_clients = MAXCLIENTS_MIN;
3380 michael 913 }
3381 michael 2473 else if ((yyvsp[-1].number) > MAXCLIENTS_MAX)
3382 michael 1736 {
3383 michael 3473 char buf[IRCD_BUFSIZE] = "";
3384 michael 1736
3385     snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3386 michael 1752 conf_error_report(buf);
3387 michael 1736 ServerInfo.max_clients = MAXCLIENTS_MAX;
3388     }
3389     else
3390 michael 2473 ServerInfo.max_clients = (yyvsp[-1].number);
3391 michael 913 }
3392 michael 4121 #line 3393 "conf_parser.c" /* yacc.c:1646 */
3393 michael 913 break;
3394    
3395 michael 4114 case 98:
3396 michael 4121 #line 836 "conf_parser.y" /* yacc.c:1646 */
3397 michael 913 {
3398 michael 1751 if (conf_parser_ctx.pass != 2)
3399     break;
3400    
3401 michael 2473 if ((yyvsp[-1].number) < 9)
3402 michael 1751 {
3403     conf_error_report("max_nick_length too low, setting to 9");
3404     ServerInfo.max_nick_length = 9;
3405     }
3406 michael 2473 else if ((yyvsp[-1].number) > NICKLEN)
3407 michael 1751 {
3408 michael 3473 char buf[IRCD_BUFSIZE] = "";
3409 michael 1751
3410     snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3411     conf_error_report(buf);
3412     ServerInfo.max_nick_length = NICKLEN;
3413     }
3414     else
3415 michael 2473 ServerInfo.max_nick_length = (yyvsp[-1].number);
3416 michael 1751 }
3417 michael 4121 #line 3418 "conf_parser.c" /* yacc.c:1646 */
3418 michael 1751 break;
3419    
3420 michael 4114 case 99:
3421 michael 4121 #line 858 "conf_parser.y" /* yacc.c:1646 */
3422 michael 1751 {
3423     if (conf_parser_ctx.pass != 2)
3424     break;
3425    
3426 michael 2473 if ((yyvsp[-1].number) < 80)
3427 michael 1751 {
3428     conf_error_report("max_topic_length too low, setting to 80");
3429     ServerInfo.max_topic_length = 80;
3430     }
3431 michael 2473 else if ((yyvsp[-1].number) > TOPICLEN)
3432 michael 1751 {
3433 michael 3473 char buf[IRCD_BUFSIZE] = "";
3434 michael 1751
3435     snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3436     conf_error_report(buf);
3437     ServerInfo.max_topic_length = TOPICLEN;
3438     }
3439     else
3440 michael 2473 ServerInfo.max_topic_length = (yyvsp[-1].number);
3441 michael 1751 }
3442 michael 4121 #line 3443 "conf_parser.c" /* yacc.c:1646 */
3443 michael 1751 break;
3444    
3445 michael 4114 case 100:
3446 michael 4121 #line 880 "conf_parser.y" /* yacc.c:1646 */
3447 michael 1751 {
3448 michael 967 if (conf_parser_ctx.pass == 2)
3449 michael 1119 ServerInfo.hub = yylval.number;
3450 michael 913 }
3451 michael 4121 #line 3452 "conf_parser.c" /* yacc.c:1646 */
3452 michael 913 break;
3453    
3454 michael 4114 case 108:
3455 michael 4121 #line 897 "conf_parser.y" /* yacc.c:1646 */
3456 michael 913 {
3457 michael 2129 if (conf_parser_ctx.pass != 2)
3458     break;
3459    
3460     MyFree(AdminInfo.name);
3461     AdminInfo.name = xstrdup(yylval.string);
3462 michael 913 }
3463 michael 4121 #line 3464 "conf_parser.c" /* yacc.c:1646 */
3464 michael 913 break;
3465    
3466 michael 4114 case 109:
3467 michael 4121 #line 906 "conf_parser.y" /* yacc.c:1646 */
3468 michael 913 {
3469 michael 2129 if (conf_parser_ctx.pass != 2)
3470     break;
3471    
3472     MyFree(AdminInfo.email);
3473     AdminInfo.email = xstrdup(yylval.string);
3474 michael 913 }
3475 michael 4121 #line 3476 "conf_parser.c" /* yacc.c:1646 */
3476 michael 913 break;
3477    
3478 michael 4114 case 110:
3479 michael 4121 #line 915 "conf_parser.y" /* yacc.c:1646 */
3480 michael 913 {
3481 michael 2129 if (conf_parser_ctx.pass != 2)
3482     break;
3483    
3484     MyFree(AdminInfo.description);
3485     AdminInfo.description = xstrdup(yylval.string);
3486 michael 913 }
3487 michael 4121 #line 3488 "conf_parser.c" /* yacc.c:1646 */
3488 michael 913 break;
3489    
3490 michael 4114 case 111:
3491 michael 4121 #line 927 "conf_parser.y" /* yacc.c:1646 */
3492 michael 913 {
3493 michael 1247 if (conf_parser_ctx.pass == 2)
3494 michael 2150 reset_block_state();
3495     }
3496 michael 4121 #line 3497 "conf_parser.c" /* yacc.c:1646 */
3497 michael 2150 break;
3498    
3499 michael 4114 case 112:
3500 michael 4121 #line 931 "conf_parser.y" /* yacc.c:1646 */
3501 michael 2150 {
3502     dlink_node *ptr = NULL;
3503    
3504     if (conf_parser_ctx.pass != 2)
3505     break;
3506    
3507     if (!block_state.file.buf[0])
3508     break;
3509    
3510     DLINK_FOREACH(ptr, block_state.mask.list.head)
3511     motd_add(ptr->data, block_state.file.buf);
3512     }
3513 michael 4121 #line 3514 "conf_parser.c" /* yacc.c:1646 */
3514 michael 2150 break;
3515    
3516 michael 4114 case 118:
3517 michael 4121 #line 948 "conf_parser.y" /* yacc.c:1646 */
3518 michael 2150 {
3519     if (conf_parser_ctx.pass == 2)
3520     dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3521     }
3522 michael 4121 #line 3523 "conf_parser.c" /* yacc.c:1646 */
3523 michael 2150 break;
3524    
3525 michael 4114 case 119:
3526 michael 4121 #line 954 "conf_parser.y" /* yacc.c:1646 */
3527 michael 2150 {
3528     if (conf_parser_ctx.pass == 2)
3529     strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3530     }
3531 michael 4121 #line 3532 "conf_parser.c" /* yacc.c:1646 */
3532 michael 2150 break;
3533    
3534 michael 4114 case 126:
3535 michael 4121 #line 969 "conf_parser.y" /* yacc.c:1646 */
3536 michael 2150 {
3537     if (conf_parser_ctx.pass == 2)
3538 michael 1247 ConfigLoggingEntry.use_logging = yylval.number;
3539     }
3540 michael 4121 #line 3541 "conf_parser.c" /* yacc.c:1646 */
3541 michael 913 break;
3542    
3543 michael 4114 case 127:
3544 michael 4121 #line 975 "conf_parser.y" /* yacc.c:1646 */
3545 michael 913 {
3546 michael 1647 if (conf_parser_ctx.pass == 2)
3547     reset_block_state();
3548 michael 913 }
3549 michael 4121 #line 3550 "conf_parser.c" /* yacc.c:1646 */
3550 michael 913 break;
3551    
3552 michael 4114 case 128:
3553 michael 4121 #line 979 "conf_parser.y" /* yacc.c:1646 */
3554 michael 913 {
3555 michael 1647 if (conf_parser_ctx.pass != 2)
3556     break;
3557    
3558     if (block_state.type.value && block_state.file.buf[0])
3559 michael 1831 log_set_file(block_state.type.value, block_state.size.value,
3560 michael 1647 block_state.file.buf);
3561 michael 913 }
3562 michael 4121 #line 3563 "conf_parser.c" /* yacc.c:1646 */
3563 michael 913 break;
3564    
3565 michael 4114 case 135:
3566 michael 4121 #line 995 "conf_parser.y" /* yacc.c:1646 */
3567 michael 913 {
3568 michael 1647 if (conf_parser_ctx.pass != 2)
3569     break;
3570    
3571     strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3572 michael 913 }
3573 michael 4121 #line 3574 "conf_parser.c" /* yacc.c:1646 */
3574 michael 913 break;
3575    
3576 michael 4114 case 136:
3577 michael 4121 #line 1003 "conf_parser.y" /* yacc.c:1646 */
3578 michael 913 {
3579 michael 2473 block_state.size.value = (yyvsp[-1].number);
3580 michael 913 }
3581 michael 4121 #line 3582 "conf_parser.c" /* yacc.c:1646 */
3582 michael 913 break;
3583    
3584 michael 4114 case 137:
3585 michael 4121 #line 1006 "conf_parser.y" /* yacc.c:1646 */
3586 michael 913 {
3587 michael 1647 block_state.size.value = 0;
3588 michael 913 }
3589 michael 4121 #line 3590 "conf_parser.c" /* yacc.c:1646 */
3590 michael 913 break;
3591    
3592 michael 4114 case 138:
3593 michael 4121 #line 1011 "conf_parser.y" /* yacc.c:1646 */
3594 michael 913 {
3595 michael 967 if (conf_parser_ctx.pass == 2)
3596 michael 1647 block_state.type.value = 0;
3597 michael 913 }
3598 michael 4121 #line 3599 "conf_parser.c" /* yacc.c:1646 */
3599 michael 913 break;
3600    
3601 michael 4114 case 142:
3602 michael 4121 #line 1018 "conf_parser.y" /* yacc.c:1646 */
3603 michael 913 {
3604 michael 967 if (conf_parser_ctx.pass == 2)
3605 michael 1647 block_state.type.value = LOG_TYPE_USER;
3606 michael 913 }
3607 michael 4121 #line 3608 "conf_parser.c" /* yacc.c:1646 */
3608 michael 913 break;
3609    
3610 michael 4114 case 143:
3611 michael 4121 #line 1022 "conf_parser.y" /* yacc.c:1646 */
3612 michael 913 {
3613 michael 967 if (conf_parser_ctx.pass == 2)
3614 michael 1647 block_state.type.value = LOG_TYPE_OPER;
3615 michael 913 }
3616 michael 4121 #line 3617 "conf_parser.c" /* yacc.c:1646 */
3617 michael 913 break;
3618    
3619 michael 4114 case 144:
3620 michael 4121 #line 1026 "conf_parser.y" /* yacc.c:1646 */
3621 michael 1247 {
3622 michael 967 if (conf_parser_ctx.pass == 2)
3623 michael 1647 block_state.type.value = LOG_TYPE_GLINE;
3624 michael 913 }
3625 michael 4121 #line 3626 "conf_parser.c" /* yacc.c:1646 */
3626 michael 913 break;
3627    
3628 michael 4114 case 145:
3629 michael 4121 #line 1030 "conf_parser.y" /* yacc.c:1646 */
3630 michael 913 {
3631 michael 967 if (conf_parser_ctx.pass == 2)
3632 michael 2336 block_state.type.value = LOG_TYPE_XLINE;
3633 michael 913 }
3634 michael 4121 #line 3635 "conf_parser.c" /* yacc.c:1646 */
3635 michael 913 break;
3636    
3637 michael 4114 case 146:
3638 michael 4121 #line 1034 "conf_parser.y" /* yacc.c:1646 */
3639 michael 913 {
3640 michael 967 if (conf_parser_ctx.pass == 2)
3641 michael 2336 block_state.type.value = LOG_TYPE_RESV;
3642 michael 913 }
3643 michael 4121 #line 3644 "conf_parser.c" /* yacc.c:1646 */
3644 michael 913 break;
3645    
3646 michael 4114 case 147:
3647 michael 4121 #line 1038 "conf_parser.y" /* yacc.c:1646 */
3648 michael 913 {
3649 michael 967 if (conf_parser_ctx.pass == 2)
3650 michael 2336 block_state.type.value = LOG_TYPE_DLINE;
3651 michael 913 }
3652 michael 4121 #line 3653 "conf_parser.c" /* yacc.c:1646 */
3653 michael 913 break;
3654    
3655 michael 4114 case 148:
3656 michael 4121 #line 1042 "conf_parser.y" /* yacc.c:1646 */
3657 michael 913 {
3658 michael 967 if (conf_parser_ctx.pass == 2)
3659 michael 2336 block_state.type.value = LOG_TYPE_KLINE;
3660 michael 1250 }
3661 michael 4121 #line 3662 "conf_parser.c" /* yacc.c:1646 */
3662 michael 1250 break;
3663    
3664 michael 4114 case 149:
3665 michael 4121 #line 1046 "conf_parser.y" /* yacc.c:1646 */
3666 michael 1250 {
3667 michael 2336 if (conf_parser_ctx.pass == 2)
3668     block_state.type.value = LOG_TYPE_KILL;
3669     }
3670 michael 4121 #line 3671 "conf_parser.c" /* yacc.c:1646 */
3671 michael 2336 break;
3672    
3673 michael 4114 case 150:
3674 michael 4121 #line 1050 "conf_parser.y" /* yacc.c:1646 */
3675 michael 2336 {
3676     if (conf_parser_ctx.pass == 2)
3677     block_state.type.value = LOG_TYPE_DEBUG;
3678     }
3679 michael 4121 #line 3680 "conf_parser.c" /* yacc.c:1646 */
3680 michael 2336 break;
3681    
3682 michael 4114 case 151:
3683 michael 4121 #line 1060 "conf_parser.y" /* yacc.c:1646 */
3684 michael 2336 {
3685 michael 1646 if (conf_parser_ctx.pass != 2)
3686     break;
3687    
3688     reset_block_state();
3689     block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3690 michael 913 }
3691 michael 4121 #line 3692 "conf_parser.c" /* yacc.c:1646 */
3692 michael 913 break;
3693    
3694 michael 4114 case 152:
3695 michael 4121 #line 1067 "conf_parser.y" /* yacc.c:1646 */
3696 michael 913 {
3697 michael 1646 dlink_node *ptr = NULL;
3698 michael 913
3699 michael 1646 if (conf_parser_ctx.pass != 2)
3700     break;
3701 michael 913
3702 michael 1646 if (!block_state.name.buf[0])
3703     break;
3704     #ifdef HAVE_LIBCRYPTO
3705 michael 2129 if (!block_state.file.buf[0] &&
3706     !block_state.rpass.buf[0])
3707 michael 1646 break;
3708     #else
3709 michael 1647 if (!block_state.rpass.buf[0])
3710 michael 1646 break;
3711     #endif
3712 michael 913
3713 michael 1646 DLINK_FOREACH(ptr, block_state.mask.list.head)
3714     {
3715     struct MaskItem *conf = NULL;
3716     struct split_nuh_item nuh;
3717 michael 913
3718 michael 1646 nuh.nuhmask = ptr->data;
3719     nuh.nickptr = NULL;
3720 michael 1647 nuh.userptr = block_state.user.buf;
3721     nuh.hostptr = block_state.host.buf;
3722 michael 1646 nuh.nicksize = 0;
3723 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
3724     nuh.hostsize = sizeof(block_state.host.buf);
3725 michael 1646 split_nuh(&nuh);
3726 michael 913
3727 michael 2228 conf = conf_make(CONF_OPER);
3728     conf->name = xstrdup(block_state.name.buf);
3729     conf->user = xstrdup(block_state.user.buf);
3730     conf->host = xstrdup(block_state.host.buf);
3731 michael 1285
3732 michael 2228 if (block_state.cert.buf[0])
3733     conf->certfp = xstrdup(block_state.cert.buf);
3734    
3735 michael 1647 if (block_state.rpass.buf[0])
3736     conf->passwd = xstrdup(block_state.rpass.buf);
3737 michael 1285
3738 michael 1646 conf->flags = block_state.flags.value;
3739     conf->modes = block_state.modes.value;
3740     conf->port = block_state.port.value;
3741     conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3742 michael 913
3743 michael 1646 conf_add_class_to_conf(conf, block_state.class.buf);
3744    
3745 michael 913 #ifdef HAVE_LIBCRYPTO
3746 michael 1646 if (block_state.file.buf[0])
3747     {
3748     BIO *file = NULL;
3749     RSA *pkey = NULL;
3750    
3751     if ((file = BIO_new_file(block_state.file.buf, "r")) == NULL)
3752 michael 913 {
3753 michael 1752 conf_error_report("Ignoring rsa_public_key_file -- file doesn't exist");
3754 michael 1646 break;
3755 michael 913 }
3756    
3757 michael 1646 if ((pkey = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL)) == NULL)
3758 michael 1752 conf_error_report("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3759 michael 913
3760 michael 1646 conf->rsa_public_key = pkey;
3761     BIO_set_close(file, BIO_CLOSE);
3762     BIO_free(file);
3763 michael 913 }
3764 michael 1646 #endif /* HAVE_LIBCRYPTO */
3765 michael 913 }
3766     }
3767 michael 4121 #line 3768 "conf_parser.c" /* yacc.c:1646 */
3768 michael 913 break;
3769    
3770 michael 4114 case 166:
3771 michael 4121 #line 1153 "conf_parser.y" /* yacc.c:1646 */
3772 michael 913 {
3773 michael 967 if (conf_parser_ctx.pass == 2)
3774 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3775 michael 913 }
3776 michael 4121 #line 3777 "conf_parser.c" /* yacc.c:1646 */
3777 michael 913 break;
3778    
3779 michael 4114 case 167:
3780 michael 4121 #line 1159 "conf_parser.y" /* yacc.c:1646 */
3781 michael 913 {
3782 michael 967 if (conf_parser_ctx.pass == 2)
3783 michael 1646 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3784 michael 913 }
3785 michael 4121 #line 3786 "conf_parser.c" /* yacc.c:1646 */
3786 michael 913 break;
3787    
3788 michael 4114 case 168:
3789 michael 4121 #line 1165 "conf_parser.y" /* yacc.c:1646 */
3790 michael 913 {
3791 michael 967 if (conf_parser_ctx.pass == 2)
3792 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3793 michael 913 }
3794 michael 4121 #line 3795 "conf_parser.c" /* yacc.c:1646 */
3795 michael 913 break;
3796    
3797 michael 4114 case 169:
3798 michael 4121 #line 1171 "conf_parser.y" /* yacc.c:1646 */
3799 michael 913 {
3800 michael 2129 if (conf_parser_ctx.pass != 2)
3801     break;
3802    
3803     if (yylval.number)
3804     block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3805     else
3806     block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3807 michael 913 }
3808 michael 4121 #line 3809 "conf_parser.c" /* yacc.c:1646 */
3809 michael 913 break;
3810    
3811 michael 4114 case 170:
3812 michael 4121 #line 1182 "conf_parser.y" /* yacc.c:1646 */
3813 michael 913 {
3814 michael 967 if (conf_parser_ctx.pass == 2)
3815 michael 1646 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3816 michael 913 }
3817 michael 4121 #line 3818 "conf_parser.c" /* yacc.c:1646 */
3818 michael 913 break;
3819    
3820 michael 4114 case 171:
3821 michael 4121 #line 1188 "conf_parser.y" /* yacc.c:1646 */
3822 michael 913 {
3823 michael 967 if (conf_parser_ctx.pass == 2)
3824 michael 2229 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
3825 michael 2228 }
3826 michael 4121 #line 3827 "conf_parser.c" /* yacc.c:1646 */
3827 michael 2228 break;
3828    
3829 michael 4114 case 172:
3830 michael 4121 #line 1194 "conf_parser.y" /* yacc.c:1646 */
3831 michael 2228 {
3832 michael 2248 if (conf_parser_ctx.pass != 2)
3833     break;
3834    
3835     if (yylval.number)
3836     block_state.flags.value |= CONF_FLAGS_SSL;
3837     else
3838     block_state.flags.value &= ~CONF_FLAGS_SSL;
3839     }
3840 michael 4121 #line 3841 "conf_parser.c" /* yacc.c:1646 */
3841 michael 2248 break;
3842    
3843 michael 4114 case 173:
3844 michael 4121 #line 1205 "conf_parser.y" /* yacc.c:1646 */
3845 michael 2248 {
3846 michael 2228 if (conf_parser_ctx.pass == 2)
3847 michael 1646 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3848 michael 913 }
3849 michael 4121 #line 3850 "conf_parser.c" /* yacc.c:1646 */
3850 michael 913 break;
3851    
3852 michael 4114 case 174:
3853 michael 4121 #line 1211 "conf_parser.y" /* yacc.c:1646 */
3854 michael 913 {
3855 michael 967 if (conf_parser_ctx.pass == 2)
3856 michael 1646 block_state.modes.value = 0;
3857 michael 913 }
3858 michael 4121 #line 3859 "conf_parser.c" /* yacc.c:1646 */
3859 michael 913 break;
3860    
3861 michael 4114 case 178:
3862 michael 4121 #line 1218 "conf_parser.y" /* yacc.c:1646 */
3863 michael 913 {
3864 michael 967 if (conf_parser_ctx.pass == 2)
3865 michael 2336 block_state.modes.value |= UMODE_BOTS;
3866 michael 913 }
3867 michael 4121 #line 3868 "conf_parser.c" /* yacc.c:1646 */
3868 michael 913 break;
3869    
3870 michael 4114 case 179:
3871 michael 4121 #line 1222 "conf_parser.y" /* yacc.c:1646 */
3872 michael 913 {
3873 michael 967 if (conf_parser_ctx.pass == 2)
3874 michael 2336 block_state.modes.value |= UMODE_CCONN;
3875 michael 913 }
3876 michael 4121 #line 3877 "conf_parser.c" /* yacc.c:1646 */
3877 michael 913 break;
3878    
3879 michael 4114 case 180:
3880 michael 4121 #line 1226 "conf_parser.y" /* yacc.c:1646 */
3881 michael 913 {
3882 michael 967 if (conf_parser_ctx.pass == 2)
3883 michael 2336 block_state.modes.value |= UMODE_DEAF;
3884 michael 913 }
3885 michael 4121 #line 3886 "conf_parser.c" /* yacc.c:1646 */
3886 michael 913 break;
3887    
3888 michael 4114 case 181:
3889 michael 4121 #line 1230 "conf_parser.y" /* yacc.c:1646 */
3890 michael 913 {
3891 michael 967 if (conf_parser_ctx.pass == 2)
3892 michael 2336 block_state.modes.value |= UMODE_DEBUG;
3893 michael 913 }
3894 michael 4121 #line 3895 "conf_parser.c" /* yacc.c:1646 */
3895 michael 913 break;
3896    
3897 michael 4114 case 182:
3898 michael 4121 #line 1234 "conf_parser.y" /* yacc.c:1646 */
3899 michael 913 {
3900 michael 967 if (conf_parser_ctx.pass == 2)
3901 michael 2336 block_state.modes.value |= UMODE_FULL;
3902 michael 913 }
3903 michael 4121 #line 3904 "conf_parser.c" /* yacc.c:1646 */
3904 michael 913 break;
3905    
3906 michael 4114 case 183:
3907 michael 4121 #line 1238 "conf_parser.y" /* yacc.c:1646 */
3908 michael 913 {
3909 michael 967 if (conf_parser_ctx.pass == 2)
3910 michael 2336 block_state.modes.value |= UMODE_HIDDEN;
3911 michael 913 }
3912 michael 4121 #line 3913 "conf_parser.c" /* yacc.c:1646 */
3913 michael 913 break;
3914    
3915 michael 4114 case 184:
3916 michael 4121 #line 1242 "conf_parser.y" /* yacc.c:1646 */
3917 michael 913 {
3918 michael 967 if (conf_parser_ctx.pass == 2)
3919 michael 3513 block_state.modes.value |= UMODE_HIDECHANS;
3920 michael 913 }
3921 michael 4121 #line 3922 "conf_parser.c" /* yacc.c:1646 */
3922 michael 913 break;
3923    
3924 michael 4114 case 185:
3925 michael 4121 #line 1246 "conf_parser.y" /* yacc.c:1646 */
3926 michael 913 {
3927 michael 967 if (conf_parser_ctx.pass == 2)
3928 michael 3513 block_state.modes.value |= UMODE_HIDEIDLE;
3929 michael 913 }
3930 michael 4121 #line 3931 "conf_parser.c" /* yacc.c:1646 */
3931 michael 913 break;
3932    
3933 michael 4114 case 186:
3934 michael 4121 #line 1250 "conf_parser.y" /* yacc.c:1646 */
3935 michael 913 {
3936 michael 967 if (conf_parser_ctx.pass == 2)
3937 michael 3513 block_state.modes.value |= UMODE_SKILL;
3938 michael 913 }
3939 michael 4121 #line 3940 "conf_parser.c" /* yacc.c:1646 */
3940 michael 913 break;
3941    
3942 michael 4114 case 187:
3943 michael 4121 #line 1254 "conf_parser.y" /* yacc.c:1646 */
3944 michael 913 {
3945 michael 967 if (conf_parser_ctx.pass == 2)
3946 michael 3513 block_state.modes.value |= UMODE_NCHANGE;
3947 michael 913 }
3948 michael 4121 #line 3949 "conf_parser.c" /* yacc.c:1646 */
3949 michael 913 break;
3950    
3951 michael 4114 case 188:
3952 michael 4121 #line 1258 "conf_parser.y" /* yacc.c:1646 */
3953 michael 913 {
3954 michael 967 if (conf_parser_ctx.pass == 2)
3955 michael 3513 block_state.modes.value |= UMODE_REJ;
3956 michael 913 }
3957 michael 4121 #line 3958 "conf_parser.c" /* yacc.c:1646 */
3958 michael 913 break;
3959    
3960 michael 4114 case 189:
3961 michael 4121 #line 1262 "conf_parser.y" /* yacc.c:1646 */
3962 michael 913 {
3963 michael 967 if (conf_parser_ctx.pass == 2)
3964 michael 3513 block_state.modes.value |= UMODE_UNAUTH;
3965 michael 913 }
3966 michael 4121 #line 3967 "conf_parser.c" /* yacc.c:1646 */
3967 michael 913 break;
3968    
3969 michael 4114 case 190:
3970 michael 4121 #line 1266 "conf_parser.y" /* yacc.c:1646 */
3971 michael 913 {
3972 michael 967 if (conf_parser_ctx.pass == 2)
3973 michael 3513 block_state.modes.value |= UMODE_SPY;
3974 michael 913 }
3975 michael 4121 #line 3976 "conf_parser.c" /* yacc.c:1646 */
3976 michael 913 break;
3977    
3978 michael 4114 case 191:
3979 michael 4121 #line 1270 "conf_parser.y" /* yacc.c:1646 */
3980 michael 913 {
3981 michael 967 if (conf_parser_ctx.pass == 2)
3982 michael 3513 block_state.modes.value |= UMODE_EXTERNAL;
3983 michael 913 }
3984 michael 4121 #line 3985 "conf_parser.c" /* yacc.c:1646 */
3985 michael 913 break;
3986    
3987 michael 4114 case 192:
3988 michael 4121 #line 1274 "conf_parser.y" /* yacc.c:1646 */
3989 michael 913 {
3990 michael 967 if (conf_parser_ctx.pass == 2)
3991 michael 3869 block_state.modes.value |= UMODE_SERVNOTICE;
3992 michael 913 }
3993 michael 4121 #line 3994 "conf_parser.c" /* yacc.c:1646 */
3994 michael 913 break;
3995    
3996 michael 4114 case 193:
3997 michael 4121 #line 1278 "conf_parser.y" /* yacc.c:1646 */
3998 michael 913 {
3999 michael 967 if (conf_parser_ctx.pass == 2)
4000 michael 3869 block_state.modes.value |= UMODE_INVISIBLE;
4001 michael 913 }
4002 michael 4121 #line 4003 "conf_parser.c" /* yacc.c:1646 */
4003 michael 913 break;
4004    
4005 michael 4114 case 194:
4006 michael 4121 #line 1282 "conf_parser.y" /* yacc.c:1646 */
4007 michael 913 {
4008 michael 1228 if (conf_parser_ctx.pass == 2)
4009 michael 3869 block_state.modes.value |= UMODE_WALLOP;
4010 michael 913 }
4011 michael 4121 #line 4012 "conf_parser.c" /* yacc.c:1646 */
4012 michael 913 break;
4013    
4014 michael 4114 case 195:
4015 michael 4121 #line 1286 "conf_parser.y" /* yacc.c:1646 */
4016 michael 1228 {
4017     if (conf_parser_ctx.pass == 2)
4018 michael 3869 block_state.modes.value |= UMODE_SOFTCALLERID;
4019 michael 1228 }
4020 michael 4121 #line 4021 "conf_parser.c" /* yacc.c:1646 */
4021 michael 913 break;
4022    
4023 michael 4114 case 196:
4024 michael 4121 #line 1290 "conf_parser.y" /* yacc.c:1646 */
4025 michael 913 {
4026 michael 967 if (conf_parser_ctx.pass == 2)
4027 michael 3869 block_state.modes.value |= UMODE_CALLERID;
4028 michael 1855 }
4029 michael 4121 #line 4030 "conf_parser.c" /* yacc.c:1646 */
4030 michael 1855 break;
4031    
4032 michael 4114 case 197:
4033 michael 4121 #line 1294 "conf_parser.y" /* yacc.c:1646 */
4034 michael 1855 {
4035     if (conf_parser_ctx.pass == 2)
4036 michael 3869 block_state.modes.value |= UMODE_LOCOPS;
4037 michael 913 }
4038 michael 4121 #line 4039 "conf_parser.c" /* yacc.c:1646 */
4039 michael 913 break;
4040    
4041 michael 4114 case 198:
4042 michael 4121 #line 1298 "conf_parser.y" /* yacc.c:1646 */
4043 michael 913 {
4044 michael 967 if (conf_parser_ctx.pass == 2)
4045 michael 3869 block_state.modes.value |= UMODE_REGONLY;
4046 michael 913 }
4047 michael 4121 #line 4048 "conf_parser.c" /* yacc.c:1646 */
4048 michael 913 break;
4049    
4050 michael 4114 case 199:
4051 michael 4121 #line 1302 "conf_parser.y" /* yacc.c:1646 */
4052 michael 913 {
4053 michael 967 if (conf_parser_ctx.pass == 2)
4054 michael 3869 block_state.modes.value |= UMODE_FARCONNECT;
4055 michael 3506 }
4056 michael 4121 #line 4057 "conf_parser.c" /* yacc.c:1646 */
4057 michael 3506 break;
4058    
4059 michael 4114 case 200:
4060 michael 4121 #line 1308 "conf_parser.y" /* yacc.c:1646 */
4061 michael 3506 {
4062     if (conf_parser_ctx.pass == 2)
4063 michael 2336 block_state.port.value = 0;
4064 michael 913 }
4065 michael 4121 #line 4066 "conf_parser.c" /* yacc.c:1646 */
4066 michael 913 break;
4067    
4068 michael 4114 case 204:
4069 michael 4121 #line 1315 "conf_parser.y" /* yacc.c:1646 */
4070 michael 913 {
4071 michael 967 if (conf_parser_ctx.pass == 2)
4072 michael 2336 block_state.port.value |= OPER_FLAG_KILL_REMOTE;
4073 michael 913 }
4074 michael 4121 #line 4075 "conf_parser.c" /* yacc.c:1646 */
4075 michael 913 break;
4076    
4077 michael 4114 case 205:
4078 michael 4121 #line 1319 "conf_parser.y" /* yacc.c:1646 */
4079 michael 913 {
4080 michael 967 if (conf_parser_ctx.pass == 2)
4081 michael 2336 block_state.port.value |= OPER_FLAG_KILL;
4082 michael 913 }
4083 michael 4121 #line 4084 "conf_parser.c" /* yacc.c:1646 */
4084 michael 913 break;
4085    
4086 michael 4114 case 206:
4087 michael 4121 #line 1323 "conf_parser.y" /* yacc.c:1646 */
4088 michael 913 {
4089 michael 967 if (conf_parser_ctx.pass == 2)
4090 michael 2336 block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
4091 michael 913 }
4092 michael 4121 #line 4093 "conf_parser.c" /* yacc.c:1646 */
4093 michael 913 break;
4094    
4095 michael 4114 case 207:
4096 michael 4121 #line 1327 "conf_parser.y" /* yacc.c:1646 */
4097 michael 913 {
4098 michael 967 if (conf_parser_ctx.pass == 2)
4099 michael 2336 block_state.port.value |= OPER_FLAG_CONNECT;
4100 michael 913 }
4101 michael 4121 #line 4102 "conf_parser.c" /* yacc.c:1646 */
4102 michael 913 break;
4103    
4104 michael 4114 case 208:
4105 michael 4121 #line 1331 "conf_parser.y" /* yacc.c:1646 */
4106 michael 913 {
4107 michael 967 if (conf_parser_ctx.pass == 2)
4108 michael 2336 block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
4109 michael 913 }
4110 michael 4121 #line 4111 "conf_parser.c" /* yacc.c:1646 */
4111 michael 913 break;
4112    
4113 michael 4114 case 209:
4114 michael 4121 #line 1335 "conf_parser.y" /* yacc.c:1646 */
4115 michael 913 {
4116 michael 967 if (conf_parser_ctx.pass == 2)
4117 michael 2336 block_state.port.value |= OPER_FLAG_SQUIT;
4118 michael 913 }
4119 michael 4121 #line 4120 "conf_parser.c" /* yacc.c:1646 */
4120 michael 913 break;
4121    
4122 michael 4114 case 210:
4123 michael 4121 #line 1339 "conf_parser.y" /* yacc.c:1646 */
4124 michael 913 {
4125 michael 967 if (conf_parser_ctx.pass == 2)
4126 michael 4019 block_state.port.value |= OPER_FLAG_KLINE;
4127 michael 913 }
4128 michael 4121 #line 4129 "conf_parser.c" /* yacc.c:1646 */
4129 michael 913 break;
4130    
4131 michael 4114 case 211:
4132 michael 4121 #line 1343 "conf_parser.y" /* yacc.c:1646 */
4133 michael 913 {
4134 michael 967 if (conf_parser_ctx.pass == 2)
4135 michael 2336 block_state.port.value |= OPER_FLAG_UNKLINE;
4136 michael 913 }
4137 michael 4121 #line 4138 "conf_parser.c" /* yacc.c:1646 */
4138 michael 913 break;
4139    
4140 michael 4114 case 212:
4141 michael 4121 #line 1347 "conf_parser.y" /* yacc.c:1646 */
4142 michael 913 {
4143 michael 967 if (conf_parser_ctx.pass == 2)
4144 michael 2336 block_state.port.value |= OPER_FLAG_DLINE;
4145 michael 913 }
4146 michael 4121 #line 4147 "conf_parser.c" /* yacc.c:1646 */
4147 michael 913 break;
4148    
4149 michael 4114 case 213:
4150 michael 4121 #line 1351 "conf_parser.y" /* yacc.c:1646 */
4151 michael 913 {
4152 michael 967 if (conf_parser_ctx.pass == 2)
4153 michael 2336 block_state.port.value |= OPER_FLAG_UNDLINE;
4154 michael 1216 }
4155 michael 4121 #line 4156 "conf_parser.c" /* yacc.c:1646 */
4156 michael 1216 break;
4157    
4158 michael 4114 case 214:
4159 michael 4121 #line 1355 "conf_parser.y" /* yacc.c:1646 */
4160 michael 1216 {
4161     if (conf_parser_ctx.pass == 2)
4162 michael 2853 block_state.port.value |= OPER_FLAG_XLINE;
4163 michael 913 }
4164 michael 4121 #line 4165 "conf_parser.c" /* yacc.c:1646 */
4165 michael 913 break;
4166    
4167 michael 4114 case 215:
4168 michael 4121 #line 1359 "conf_parser.y" /* yacc.c:1646 */
4169 michael 913 {
4170 michael 967 if (conf_parser_ctx.pass == 2)
4171 michael 2853 block_state.port.value |= OPER_FLAG_UNXLINE;
4172 michael 913 }
4173 michael 4121 #line 4174 "conf_parser.c" /* yacc.c:1646 */
4174 michael 913 break;
4175    
4176 michael 4114 case 216:
4177 michael 4121 #line 1363 "conf_parser.y" /* yacc.c:1646 */
4178 michael 913 {
4179 michael 967 if (conf_parser_ctx.pass == 2)
4180 michael 2853 block_state.port.value |= OPER_FLAG_GLINE;
4181 michael 913 }
4182 michael 4121 #line 4183 "conf_parser.c" /* yacc.c:1646 */
4183 michael 913 break;
4184    
4185 michael 4114 case 217:
4186 michael 4121 #line 1367 "conf_parser.y" /* yacc.c:1646 */
4187 michael 913 {
4188 michael 967 if (conf_parser_ctx.pass == 2)
4189 michael 2853 block_state.port.value |= OPER_FLAG_DIE;
4190 michael 913 }
4191 michael 4121 #line 4192 "conf_parser.c" /* yacc.c:1646 */
4192 michael 913 break;
4193    
4194 michael 4114 case 218:
4195 michael 4121 #line 1371 "conf_parser.y" /* yacc.c:1646 */
4196 michael 913 {
4197 michael 1301 if (conf_parser_ctx.pass == 2)
4198 michael 2853 block_state.port.value |= OPER_FLAG_RESTART;
4199 michael 1301 }
4200 michael 4121 #line 4201 "conf_parser.c" /* yacc.c:1646 */
4201 michael 1301 break;
4202    
4203 michael 4114 case 219:
4204 michael 4121 #line 1375 "conf_parser.y" /* yacc.c:1646 */
4205 michael 1301 {
4206 michael 2012 if (conf_parser_ctx.pass == 2)
4207 michael 2853 block_state.port.value |= OPER_FLAG_REHASH;
4208 michael 2012 }
4209 michael 4121 #line 4210 "conf_parser.c" /* yacc.c:1646 */
4210 michael 2012 break;
4211    
4212 michael 4114 case 220:
4213 michael 4121 #line 1379 "conf_parser.y" /* yacc.c:1646 */
4214 michael 2012 {
4215     if (conf_parser_ctx.pass == 2)
4216 michael 2853 block_state.port.value |= OPER_FLAG_ADMIN;
4217 michael 2012 }
4218 michael 4121 #line 4219 "conf_parser.c" /* yacc.c:1646 */
4219 michael 2012 break;
4220    
4221 michael 4114 case 221:
4222 michael 4121 #line 1383 "conf_parser.y" /* yacc.c:1646 */
4223 michael 2012 {
4224     if (conf_parser_ctx.pass == 2)
4225 michael 2853 block_state.port.value |= OPER_FLAG_GLOBOPS;
4226 michael 2012 }
4227 michael 4121 #line 4228 "conf_parser.c" /* yacc.c:1646 */
4228 michael 2012 break;
4229    
4230 michael 4114 case 222:
4231 michael 4121 #line 1387 "conf_parser.y" /* yacc.c:1646 */
4232 michael 2012 {
4233 michael 2038 if (conf_parser_ctx.pass == 2)
4234 michael 2853 block_state.port.value |= OPER_FLAG_WALLOPS;
4235 michael 2038 }
4236 michael 4121 #line 4237 "conf_parser.c" /* yacc.c:1646 */
4237 michael 2038 break;
4238    
4239 michael 4114 case 223:
4240 michael 4121 #line 1391 "conf_parser.y" /* yacc.c:1646 */
4241 michael 2038 {
4242     if (conf_parser_ctx.pass == 2)
4243 michael 2853 block_state.port.value |= OPER_FLAG_LOCOPS;
4244 michael 2038 }
4245 michael 4121 #line 4246 "conf_parser.c" /* yacc.c:1646 */
4246 michael 2038 break;
4247    
4248 michael 4114 case 224:
4249 michael 4121 #line 1395 "conf_parser.y" /* yacc.c:1646 */
4250 michael 2038 {
4251 michael 2336 if (conf_parser_ctx.pass == 2)
4252 michael 2853 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4253 michael 2336 }
4254 michael 4121 #line 4255 "conf_parser.c" /* yacc.c:1646 */
4255 michael 2336 break;
4256    
4257 michael 4114 case 225:
4258 michael 4121 #line 1399 "conf_parser.y" /* yacc.c:1646 */
4259 michael 2336 {
4260     if (conf_parser_ctx.pass == 2)
4261 michael 2853 block_state.port.value |= OPER_FLAG_SET;
4262 michael 2336 }
4263 michael 4121 #line 4264 "conf_parser.c" /* yacc.c:1646 */
4264 michael 2336 break;
4265    
4266 michael 4114 case 226:
4267 michael 4121 #line 1403 "conf_parser.y" /* yacc.c:1646 */
4268 michael 2336 {
4269 michael 2853 if (conf_parser_ctx.pass == 2)
4270     block_state.port.value |= OPER_FLAG_MODULE;
4271     }
4272 michael 4121 #line 4273 "conf_parser.c" /* yacc.c:1646 */
4273 michael 2853 break;
4274    
4275 michael 4114 case 227:
4276 michael 4121 #line 1413 "conf_parser.y" /* yacc.c:1646 */
4277 michael 2853 {
4278 michael 1651 if (conf_parser_ctx.pass != 1)
4279     break;
4280    
4281     reset_block_state();
4282    
4283     block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4284     block_state.con_freq.value = DEFAULT_CONNECTFREQUENCY;
4285     block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4286     block_state.max_sendq.value = DEFAULT_SENDQ;
4287     block_state.max_recvq.value = DEFAULT_RECVQ;
4288 michael 913 }
4289 michael 4121 #line 4290 "conf_parser.c" /* yacc.c:1646 */
4290 michael 913 break;
4291    
4292 michael 4114 case 228:
4293 michael 4121 #line 1425 "conf_parser.y" /* yacc.c:1646 */
4294 michael 913 {
4295 michael 1647 struct ClassItem *class = NULL;
4296 michael 913
4297 michael 1647 if (conf_parser_ctx.pass != 1)
4298     break;
4299 michael 913
4300 michael 1647 if (!block_state.class.buf[0])
4301     break;
4302 michael 913
4303 michael 1647 if (!(class = class_find(block_state.class.buf, 0)))
4304     class = class_make();
4305 michael 913
4306 michael 1647 class->active = 1;
4307     MyFree(class->name);
4308     class->name = xstrdup(block_state.class.buf);
4309     class->ping_freq = block_state.ping_freq.value;
4310     class->max_perip = block_state.max_perip.value;
4311     class->con_freq = block_state.con_freq.value;
4312     class->max_total = block_state.max_total.value;
4313     class->max_global = block_state.max_global.value;
4314     class->max_local = block_state.max_local.value;
4315     class->max_ident = block_state.max_ident.value;
4316     class->max_sendq = block_state.max_sendq.value;
4317     class->max_recvq = block_state.max_recvq.value;
4318 michael 3933 class->max_channels = block_state.max_channels.value;
4319 michael 913
4320 michael 1785 if (block_state.min_idle.value > block_state.max_idle.value)
4321     {
4322     block_state.min_idle.value = 0;
4323     block_state.max_idle.value = 0;
4324     block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4325     }
4326    
4327     class->flags = block_state.flags.value;
4328     class->min_idle = block_state.min_idle.value;
4329     class->max_idle = block_state.max_idle.value;
4330    
4331 michael 1647 if (class->number_per_cidr && block_state.number_per_cidr.value)
4332     if ((class->cidr_bitlen_ipv4 && block_state.cidr_bitlen_ipv4.value) ||
4333     (class->cidr_bitlen_ipv6 && block_state.cidr_bitlen_ipv6.value))
4334     if ((class->cidr_bitlen_ipv4 != block_state.cidr_bitlen_ipv4.value) ||
4335     (class->cidr_bitlen_ipv6 != block_state.cidr_bitlen_ipv6.value))
4336     rebuild_cidr_list(class);
4337 michael 913
4338 michael 1647 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4339     class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4340     class->number_per_cidr = block_state.number_per_cidr.value;
4341 michael 913 }
4342 michael 4121 #line 4343 "conf_parser.c" /* yacc.c:1646 */
4343 michael 913 break;
4344    
4345 michael 4114 case 249:
4346 michael 4121 #line 1494 "conf_parser.y" /* yacc.c:1646 */
4347 michael 913 {
4348 michael 967 if (conf_parser_ctx.pass == 1)
4349 michael 1647 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4350 michael 913 }
4351 michael 4121 #line 4352 "conf_parser.c" /* yacc.c:1646 */
4352 michael 913 break;
4353    
4354 michael 4114 case 250:
4355 michael 4121 #line 1500 "conf_parser.y" /* yacc.c:1646 */
4356 michael 1294 {
4357     if (conf_parser_ctx.pass == 1)
4358 michael 2473 block_state.ping_freq.value = (yyvsp[-1].number);
4359 michael 1294 }
4360 michael 4121 #line 4361 "conf_parser.c" /* yacc.c:1646 */
4361 michael 1294 break;
4362    
4363 michael 4114 case 251:
4364 michael 4121 #line 1506 "conf_parser.y" /* yacc.c:1646 */
4365 michael 913 {
4366 michael 967 if (conf_parser_ctx.pass == 1)
4367 michael 2473 block_state.max_perip.value = (yyvsp[-1].number);
4368 michael 913 }
4369 michael 4121 #line 4370 "conf_parser.c" /* yacc.c:1646 */
4370 michael 913 break;
4371    
4372 michael 4114 case 252:
4373 michael 4121 #line 1512 "conf_parser.y" /* yacc.c:1646 */
4374 michael 913 {
4375 michael 967 if (conf_parser_ctx.pass == 1)
4376 michael 2473 block_state.con_freq.value = (yyvsp[-1].number);
4377 michael 913 }
4378 michael 4121 #line 4379 "conf_parser.c" /* yacc.c:1646 */
4379 michael 913 break;
4380    
4381 michael 4114 case 253:
4382 michael 4121 #line 1518 "conf_parser.y" /* yacc.c:1646 */
4383 michael 913 {
4384 michael 967 if (conf_parser_ctx.pass == 1)
4385 michael 3933 block_state.max_channels.value = (yyvsp[-1].number);
4386     }
4387 michael 4121 #line 4388 "conf_parser.c" /* yacc.c:1646 */
4388 michael 3933 break;
4389    
4390 michael 4114 case 254:
4391 michael 4121 #line 1524 "conf_parser.y" /* yacc.c:1646 */
4392 michael 3933 {
4393     if (conf_parser_ctx.pass == 1)
4394 michael 2473 block_state.max_total.value = (yyvsp[-1].number);
4395 michael 913 }
4396 michael 4121 #line 4397 "conf_parser.c" /* yacc.c:1646 */
4397 michael 913 break;
4398    
4399 michael 4114 case 255:
4400 michael 4121 #line 1530 "conf_parser.y" /* yacc.c:1646 */
4401 michael 913 {
4402 michael 967 if (conf_parser_ctx.pass == 1)
4403 michael 2473 block_state.max_global.value = (yyvsp[-1].number);
4404 michael 913 }
4405 michael 4121 #line 4406 "conf_parser.c" /* yacc.c:1646 */
4406 michael 913 break;
4407    
4408 michael 4114 case 256:
4409 michael 4121 #line 1536 "conf_parser.y" /* yacc.c:1646 */
4410 michael 913 {
4411 michael 967 if (conf_parser_ctx.pass == 1)
4412 michael 2473 block_state.max_local.value = (yyvsp[-1].number);
4413 michael 913 }
4414 michael 4121 #line 4415 "conf_parser.c" /* yacc.c:1646 */
4415 michael 913 break;
4416    
4417 michael 4114 case 257:
4418 michael 4121 #line 1542 "conf_parser.y" /* yacc.c:1646 */
4419 michael 913 {
4420 michael 967 if (conf_parser_ctx.pass == 1)
4421 michael 2473 block_state.max_ident.value = (yyvsp[-1].number);
4422 michael 913 }
4423 michael 4121 #line 4424 "conf_parser.c" /* yacc.c:1646 */
4424 michael 913 break;
4425    
4426 michael 4114 case 258:
4427 michael 4121 #line 1548 "conf_parser.y" /* yacc.c:1646 */
4428 michael 913 {
4429 michael 967 if (conf_parser_ctx.pass == 1)
4430 michael 2473 block_state.max_sendq.value = (yyvsp[-1].number);
4431 michael 913 }
4432 michael 4121 #line 4433 "conf_parser.c" /* yacc.c:1646 */
4433 michael 913 break;
4434    
4435 michael 4114 case 259:
4436 michael 4121 #line 1554 "conf_parser.y" /* yacc.c:1646 */
4437 michael 913 {
4438 michael 967 if (conf_parser_ctx.pass == 1)
4439 michael 2473 if ((yyvsp[-1].number) >= CLIENT_FLOOD_MIN && (yyvsp[-1].number) <= CLIENT_FLOOD_MAX)
4440     block_state.max_recvq.value = (yyvsp[-1].number);
4441 michael 1516 }
4442 michael 4121 #line 4443 "conf_parser.c" /* yacc.c:1646 */
4443 michael 1516 break;
4444    
4445 michael 4114 case 260:
4446 michael 4121 #line 1561 "conf_parser.y" /* yacc.c:1646 */
4447 michael 1516 {
4448     if (conf_parser_ctx.pass == 1)
4449 michael 2473 block_state.cidr_bitlen_ipv4.value = (yyvsp[-1].number) > 32 ? 32 : (yyvsp[-1].number);
4450 michael 913 }
4451 michael 4121 #line 4452 "conf_parser.c" /* yacc.c:1646 */
4452 michael 913 break;
4453    
4454 michael 4114 case 261:
4455 michael 4121 #line 1567 "conf_parser.y" /* yacc.c:1646 */
4456 michael 913 {
4457 michael 967 if (conf_parser_ctx.pass == 1)
4458 michael 2473 block_state.cidr_bitlen_ipv6.value = (yyvsp[-1].number) > 128 ? 128 : (yyvsp[-1].number);
4459 michael 913 }
4460 michael 4121 #line 4461 "conf_parser.c" /* yacc.c:1646 */
4461 michael 913 break;
4462    
4463 michael 4114 case 262:
4464 michael 4121 #line 1573 "conf_parser.y" /* yacc.c:1646 */
4465 michael 913 {
4466 michael 967 if (conf_parser_ctx.pass == 1)
4467 michael 2473 block_state.number_per_cidr.value = (yyvsp[-1].number);
4468 michael 913 }
4469 michael 4121 #line 4470 "conf_parser.c" /* yacc.c:1646 */
4470 michael 913 break;
4471    
4472 michael 4114 case 263:
4473 michael 4121 #line 1579 "conf_parser.y" /* yacc.c:1646 */
4474 michael 913 {
4475 michael 1785 if (conf_parser_ctx.pass != 1)
4476     break;
4477    
4478 michael 2473 block_state.min_idle.value = (yyvsp[-1].number);
4479 michael 1785 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4480 michael 1783 }
4481 michael 4121 #line 4482 "conf_parser.c" /* yacc.c:1646 */
4482 michael 1783 break;
4483    
4484 michael 4114 case 264:
4485 michael 4121 #line 1588 "conf_parser.y" /* yacc.c:1646 */
4486 michael 1783 {
4487 michael 1785 if (conf_parser_ctx.pass != 1)
4488     break;
4489    
4490 michael 2473 block_state.max_idle.value = (yyvsp[-1].number);
4491 michael 1785 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4492 michael 1783 }
4493 michael 4121 #line 4494 "conf_parser.c" /* yacc.c:1646 */
4494 michael 1783 break;
4495    
4496 michael 4114 case 265:
4497 michael 4121 #line 1597 "conf_parser.y" /* yacc.c:1646 */
4498 michael 1783 {
4499     if (conf_parser_ctx.pass == 1)
4500 michael 1785 block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4501 michael 1783 }
4502 michael 4121 #line 4503 "conf_parser.c" /* yacc.c:1646 */
4503 michael 1783 break;
4504    
4505 michael 4114 case 269:
4506 michael 4121 #line 1604 "conf_parser.y" /* yacc.c:1646 */
4507 michael 1783 {
4508     if (conf_parser_ctx.pass == 1)
4509     block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4510     }
4511 michael 4121 #line 4512 "conf_parser.c" /* yacc.c:1646 */
4512 michael 1783 break;
4513    
4514 michael 4114 case 270:
4515 michael 4121 #line 1608 "conf_parser.y" /* yacc.c:1646 */
4516 michael 1783 {
4517     if (conf_parser_ctx.pass == 1)
4518     block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4519     }
4520 michael 4121 #line 4521 "conf_parser.c" /* yacc.c:1646 */
4521 michael 1783 break;
4522    
4523 michael 4114 case 271:
4524 michael 4121 #line 1618 "conf_parser.y" /* yacc.c:1646 */
4525 michael 1783 {
4526 michael 967 if (conf_parser_ctx.pass == 2)
4527 michael 1646 reset_block_state();
4528 michael 913 }
4529 michael 4121 #line 4530 "conf_parser.c" /* yacc.c:1646 */
4530 michael 913 break;
4531    
4532 michael 4114 case 273:
4533 michael 4121 #line 1624 "conf_parser.y" /* yacc.c:1646 */
4534 michael 913 {
4535 michael 1646 block_state.flags.value = 0;
4536 michael 913 }
4537 michael 4121 #line 4538 "conf_parser.c" /* yacc.c:1646 */
4538 michael 913 break;
4539    
4540 michael 4114 case 277:
4541 michael 4121 #line 1630 "conf_parser.y" /* yacc.c:1646 */
4542 michael 913 {
4543 michael 967 if (conf_parser_ctx.pass == 2)
4544 michael 1646 block_state.flags.value |= LISTENER_SSL;
4545 michael 913 }
4546 michael 4121 #line 4547 "conf_parser.c" /* yacc.c:1646 */
4547 michael 913 break;
4548    
4549 michael 4114 case 278:
4550 michael 4121 #line 1634 "conf_parser.y" /* yacc.c:1646 */
4551 michael 913 {
4552 michael 967 if (conf_parser_ctx.pass == 2)
4553 michael 1647 block_state.flags.value |= LISTENER_HIDDEN;
4554 michael 913 }
4555 michael 4121 #line 4556 "conf_parser.c" /* yacc.c:1646 */
4556 michael 913 break;
4557    
4558 michael 4114 case 279:
4559 michael 4121 #line 1638 "conf_parser.y" /* yacc.c:1646 */
4560 michael 913 {
4561 michael 967 if (conf_parser_ctx.pass == 2)
4562 michael 1647 block_state.flags.value |= LISTENER_SERVER;
4563 michael 913 }
4564 michael 4121 #line 4565 "conf_parser.c" /* yacc.c:1646 */
4565 michael 913 break;
4566    
4567 michael 4114 case 287:
4568 michael 4121 #line 1646 "conf_parser.y" /* yacc.c:1646 */
4569 michael 1648 { block_state.flags.value = 0; }
4570 michael 4121 #line 4571 "conf_parser.c" /* yacc.c:1646 */
4571 michael 913 break;
4572    
4573 michael 4114 case 291:
4574 michael 4121 #line 1651 "conf_parser.y" /* yacc.c:1646 */
4575 michael 913 {
4576 michael 967 if (conf_parser_ctx.pass == 2)
4577 michael 913 {
4578 michael 1646 if (block_state.flags.value & LISTENER_SSL)
4579 michael 913 #ifdef HAVE_LIBCRYPTO
4580 michael 967 if (!ServerInfo.server_ctx)
4581 michael 913 #endif
4582     {
4583 michael 1752 conf_error_report("SSL not available - port closed");
4584 michael 3473 break;
4585 michael 913 }
4586 michael 2473 add_listener((yyvsp[0].number), block_state.addr.buf, block_state.flags.value);
4587 michael 913 }
4588     }
4589 michael 4121 #line 4590 "conf_parser.c" /* yacc.c:1646 */
4590 michael 913 break;
4591    
4592 michael 4114 case 292:
4593 michael 4121 #line 1665 "conf_parser.y" /* yacc.c:1646 */
4594 michael 913 {
4595 michael 967 if (conf_parser_ctx.pass == 2)
4596 michael 913 {
4597 michael 1646 if (block_state.flags.value & LISTENER_SSL)
4598 michael 913 #ifdef HAVE_LIBCRYPTO
4599 michael 967 if (!ServerInfo.server_ctx)
4600 michael 913 #endif
4601     {
4602 michael 1752 conf_error_report("SSL not available - port closed");
4603 michael 3473 break;
4604 michael 913 }
4605    
4606 michael 3473 for (int i = (yyvsp[-2].number); i <= (yyvsp[0].number); ++i)
4607 michael 1646 add_listener(i, block_state.addr.buf, block_state.flags.value);
4608 michael 913 }
4609     }
4610 michael 4121 #line 4611 "conf_parser.c" /* yacc.c:1646 */
4611 michael 913 break;
4612    
4613 michael 4114 case 293:
4614 michael 4121 #line 1683 "conf_parser.y" /* yacc.c:1646 */
4615 michael 913 {
4616 michael 967 if (conf_parser_ctx.pass == 2)
4617 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4618 michael 913 }
4619 michael 4121 #line 4620 "conf_parser.c" /* yacc.c:1646 */
4620 michael 913 break;
4621    
4622 michael 4114 case 294:
4623 michael 4121 #line 1689 "conf_parser.y" /* yacc.c:1646 */
4624 michael 913 {
4625 michael 967 if (conf_parser_ctx.pass == 2)
4626 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4627 michael 913 }
4628 michael 4121 #line 4629 "conf_parser.c" /* yacc.c:1646 */
4629 michael 913 break;
4630    
4631 michael 4114 case 295:
4632 michael 4121 #line 1698 "conf_parser.y" /* yacc.c:1646 */
4633 michael 913 {
4634 michael 967 if (conf_parser_ctx.pass == 2)
4635 michael 1646 reset_block_state();
4636 michael 913 }
4637 michael 4121 #line 4638 "conf_parser.c" /* yacc.c:1646 */
4638 michael 913 break;
4639    
4640 michael 4114 case 296:
4641 michael 4121 #line 1702 "conf_parser.y" /* yacc.c:1646 */
4642 michael 913 {
4643 michael 1646 dlink_node *ptr = NULL;
4644 michael 913
4645 michael 1646 if (conf_parser_ctx.pass != 2)
4646 michael 913 break;
4647    
4648 michael 1646 DLINK_FOREACH(ptr, block_state.mask.list.head)
4649 michael 913 {
4650 michael 1646 struct MaskItem *conf = NULL;
4651 michael 913 struct split_nuh_item nuh;
4652    
4653 michael 1646 nuh.nuhmask = ptr->data;
4654 michael 913 nuh.nickptr = NULL;
4655 michael 1647 nuh.userptr = block_state.user.buf;
4656     nuh.hostptr = block_state.host.buf;
4657 michael 913 nuh.nicksize = 0;
4658 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
4659     nuh.hostsize = sizeof(block_state.host.buf);
4660 michael 913 split_nuh(&nuh);
4661    
4662 michael 1646 conf = conf_make(CONF_CLIENT);
4663 michael 2106 conf->user = xstrdup(block_state.user.buf);
4664     conf->host = xstrdup(block_state.host.buf);
4665 michael 913
4666 michael 1647 if (block_state.rpass.buf[0])
4667     conf->passwd = xstrdup(block_state.rpass.buf);
4668 michael 1646 if (block_state.name.buf[0])
4669 michael 1911 conf->name = xstrdup(block_state.name.buf);
4670 michael 913
4671 michael 1646 conf->flags = block_state.flags.value;
4672     conf->port = block_state.port.value;
4673    
4674     conf_add_class_to_conf(conf, block_state.class.buf);
4675     add_conf_by_address(CONF_CLIENT, conf);
4676 michael 913 }
4677     }
4678 michael 4121 #line 4679 "conf_parser.c" /* yacc.c:1646 */
4679 michael 913 break;
4680    
4681 michael 4114 case 308:
4682 michael 4121 #line 1751 "conf_parser.y" /* yacc.c:1646 */
4683 michael 1646 {
4684     if (conf_parser_ctx.pass == 2)
4685     dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4686     }
4687 michael 4121 #line 4688 "conf_parser.c" /* yacc.c:1646 */
4688 michael 1646 break;
4689    
4690 michael 4114 case 309:
4691 michael 4121 #line 1757 "conf_parser.y" /* yacc.c:1646 */
4692 michael 913 {
4693 michael 967 if (conf_parser_ctx.pass == 2)
4694 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4695 michael 913 }
4696 michael 4121 #line 4697 "conf_parser.c" /* yacc.c:1646 */
4697 michael 913 break;
4698    
4699 michael 4114 case 310:
4700 michael 4121 #line 1763 "conf_parser.y" /* yacc.c:1646 */
4701 michael 913 {
4702 michael 967 if (conf_parser_ctx.pass == 2)
4703 michael 1646 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4704 michael 913 }
4705 michael 4121 #line 4706 "conf_parser.c" /* yacc.c:1646 */
4706 michael 913 break;
4707    
4708 michael 4114 case 311:
4709 michael 4121 #line 1769 "conf_parser.y" /* yacc.c:1646 */
4710 michael 913 {
4711 michael 967 if (conf_parser_ctx.pass == 2)
4712 michael 913 {
4713     if (yylval.number)
4714 michael 1646 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4715 michael 913 else
4716 michael 1646 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4717 michael 913 }
4718     }
4719 michael 4121 #line 4720 "conf_parser.c" /* yacc.c:1646 */
4720 michael 913 break;
4721    
4722 michael 4114 case 312:
4723 michael 4121 #line 1780 "conf_parser.y" /* yacc.c:1646 */
4724 michael 913 {
4725 michael 1646 if (conf_parser_ctx.pass == 2)
4726 michael 2093 block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4727 michael 913 }
4728 michael 4121 #line 4729 "conf_parser.c" /* yacc.c:1646 */
4729 michael 913 break;
4730    
4731 michael 4114 case 316:
4732 michael 4121 #line 1787 "conf_parser.y" /* yacc.c:1646 */
4733 michael 913 {
4734 michael 967 if (conf_parser_ctx.pass == 2)
4735 michael 1646 block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4736 michael 913 }
4737 michael 4121 #line 4738 "conf_parser.c" /* yacc.c:1646 */
4738 michael 913 break;
4739    
4740 michael 4114 case 317:
4741 michael 4121 #line 1791 "conf_parser.y" /* yacc.c:1646 */
4742 michael 913 {
4743 michael 967 if (conf_parser_ctx.pass == 2)
4744 michael 1646 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4745 michael 913 }
4746 michael 4121 #line 4747 "conf_parser.c" /* yacc.c:1646 */
4747 michael 913 break;
4748    
4749 michael 4114 case 318:
4750 michael 4121 #line 1795 "conf_parser.y" /* yacc.c:1646 */
4751 michael 913 {
4752 michael 967 if (conf_parser_ctx.pass == 2)
4753 michael 1646 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4754 michael 913 }
4755 michael 4121 #line 4756 "conf_parser.c" /* yacc.c:1646 */
4756 michael 913 break;
4757    
4758 michael 4114 case 319:
4759 michael 4121 #line 1799 "conf_parser.y" /* yacc.c:1646 */
4760 michael 913 {
4761 michael 967 if (conf_parser_ctx.pass == 2)
4762 michael 1646 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4763 michael 913 }
4764 michael 4121 #line 4765 "conf_parser.c" /* yacc.c:1646 */
4765 michael 913 break;
4766    
4767 michael 4114 case 320:
4768 michael 4121 #line 1803 "conf_parser.y" /* yacc.c:1646 */
4769 michael 913 {
4770 michael 967 if (conf_parser_ctx.pass == 2)
4771 michael 1646 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4772 michael 913 }
4773 michael 4121 #line 4774 "conf_parser.c" /* yacc.c:1646 */
4774 michael 913 break;
4775    
4776 michael 4114 case 321:
4777 michael 4121 #line 1807 "conf_parser.y" /* yacc.c:1646 */
4778 michael 913 {
4779 michael 967 if (conf_parser_ctx.pass == 2)
4780 michael 1646 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4781 michael 913 }
4782 michael 4121 #line 4783 "conf_parser.c" /* yacc.c:1646 */
4783 michael 913 break;
4784    
4785 michael 4114 case 322:
4786 michael 4121 #line 1811 "conf_parser.y" /* yacc.c:1646 */
4787 michael 913 {
4788 michael 967 if (conf_parser_ctx.pass == 2)
4789 michael 1646 block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
4790 michael 913 }
4791 michael 4121 #line 4792 "conf_parser.c" /* yacc.c:1646 */
4792 michael 913 break;
4793    
4794 michael 4114 case 323:
4795 michael 4121 #line 1815 "conf_parser.y" /* yacc.c:1646 */
4796 michael 913 {
4797 michael 967 if (conf_parser_ctx.pass == 2)
4798 michael 1646 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4799 michael 913 }
4800 michael 4121 #line 4801 "conf_parser.c" /* yacc.c:1646 */
4801 michael 913 break;
4802    
4803 michael 4114 case 324:
4804 michael 4121 #line 1819 "conf_parser.y" /* yacc.c:1646 */
4805 michael 913 {
4806 michael 967 if (conf_parser_ctx.pass == 2)
4807 michael 1715 block_state.flags.value |= CONF_FLAGS_WEBIRC;
4808 michael 1250 }
4809 michael 4121 #line 4810 "conf_parser.c" /* yacc.c:1646 */
4810 michael 1250 break;
4811    
4812 michael 4114 case 325:
4813 michael 4121 #line 1823 "conf_parser.y" /* yacc.c:1646 */
4814 michael 1250 {
4815 michael 1715 if (conf_parser_ctx.pass == 2)
4816     block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4817     }
4818 michael 4121 #line 4819 "conf_parser.c" /* yacc.c:1646 */
4819 michael 1715 break;
4820    
4821 michael 4114 case 326:
4822 michael 4121 #line 1829 "conf_parser.y" /* yacc.c:1646 */
4823 michael 1715 {
4824 michael 1646 if (conf_parser_ctx.pass != 2)
4825     break;
4826    
4827 michael 3473 if (valid_hostname(yylval.string))
4828 michael 913 {
4829 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4830     block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4831 michael 913 }
4832 michael 1646 else
4833     ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4834 michael 913 }
4835 michael 4121 #line 4836 "conf_parser.c" /* yacc.c:1646 */
4836 michael 913 break;
4837    
4838 michael 4114 case 327:
4839 michael 4121 #line 1843 "conf_parser.y" /* yacc.c:1646 */
4840 michael 913 {
4841 michael 1646 if (conf_parser_ctx.pass != 2)
4842     break;
4843    
4844     strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4845     block_state.flags.value |= CONF_FLAGS_REDIR;
4846 michael 913 }
4847 michael 4121 #line 4848 "conf_parser.c" /* yacc.c:1646 */
4848 michael 913 break;
4849    
4850 michael 4114 case 328:
4851 michael 4121 #line 1852 "conf_parser.y" /* yacc.c:1646 */
4852 michael 913 {
4853 michael 1646 if (conf_parser_ctx.pass != 2)
4854     break;
4855 michael 1647
4856 michael 1646 block_state.flags.value |= CONF_FLAGS_REDIR;
4857 michael 2473 block_state.port.value = (yyvsp[-1].number);
4858 michael 913 }
4859 michael 4121 #line 4860 "conf_parser.c" /* yacc.c:1646 */
4860 michael 913 break;
4861    
4862 michael 4114 case 329:
4863 michael 4121 #line 1865 "conf_parser.y" /* yacc.c:1646 */
4864 michael 913 {
4865 michael 1647 if (conf_parser_ctx.pass != 2)
4866 michael 913 break;
4867    
4868 michael 1647 reset_block_state();
4869     strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4870 michael 913 }
4871 michael 4121 #line 4872 "conf_parser.c" /* yacc.c:1646 */
4872 michael 913 break;
4873    
4874 michael 4114 case 330:
4875 michael 4121 #line 1872 "conf_parser.y" /* yacc.c:1646 */
4876 michael 1823 {
4877 michael 1858 if (conf_parser_ctx.pass != 2)
4878     break;
4879    
4880     create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4881 michael 1823 }
4882 michael 4121 #line 4883 "conf_parser.c" /* yacc.c:1646 */
4883 michael 1823 break;
4884    
4885 michael 4114 case 337:
4886 michael 4121 #line 1883 "conf_parser.y" /* yacc.c:1646 */
4887 michael 913 {
4888 michael 967 if (conf_parser_ctx.pass == 2)
4889 michael 1858 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4890 michael 913 }
4891 michael 4121 #line 4892 "conf_parser.c" /* yacc.c:1646 */
4892 michael 913 break;
4893    
4894 michael 4114 case 338:
4895 michael 4121 #line 1889 "conf_parser.y" /* yacc.c:1646 */
4896 michael 913 {
4897 michael 1823 if (conf_parser_ctx.pass == 2)
4898 michael 1858 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4899 michael 913 }
4900 michael 4121 #line 4901 "conf_parser.c" /* yacc.c:1646 */
4901 michael 913 break;
4902    
4903 michael 4114 case 339:
4904 michael 4121 #line 1895 "conf_parser.y" /* yacc.c:1646 */
4905 michael 913 {
4906 michael 967 if (conf_parser_ctx.pass == 2)
4907 michael 1858 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4908 michael 913 }
4909 michael 4121 #line 4910 "conf_parser.c" /* yacc.c:1646 */
4910 michael 913 break;
4911    
4912 michael 4114 case 345:
4913 michael 4121 #line 1910 "conf_parser.y" /* yacc.c:1646 */
4914 michael 913 {
4915 michael 2129 if (conf_parser_ctx.pass != 2)
4916     break;
4917    
4918     if (valid_servname(yylval.string))
4919 michael 913 {
4920 michael 2129 struct MaskItem *conf = conf_make(CONF_SERVICE);
4921     conf->name = xstrdup(yylval.string);
4922 michael 1157 }
4923     }
4924 michael 4121 #line 4925 "conf_parser.c" /* yacc.c:1646 */
4925 michael 1157 break;
4926    
4927 michael 4114 case 346:
4928 michael 4121 #line 1925 "conf_parser.y" /* yacc.c:1646 */
4929 michael 1157 {
4930 michael 1647 if (conf_parser_ctx.pass != 2)
4931     break;
4932    
4933     reset_block_state();
4934    
4935     strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4936     strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4937     strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4938     block_state.flags.value = SHARED_ALL;
4939 michael 913 }
4940 michael 4121 #line 4941 "conf_parser.c" /* yacc.c:1646 */
4941 michael 913 break;
4942    
4943 michael 4114 case 347:
4944 michael 4121 #line 1936 "conf_parser.y" /* yacc.c:1646 */
4945 michael 913 {
4946 michael 1647 struct MaskItem *conf = NULL;
4947    
4948     if (conf_parser_ctx.pass != 2)
4949     break;
4950    
4951     conf = conf_make(CONF_ULINE);
4952     conf->flags = block_state.flags.value;
4953     conf->name = xstrdup(block_state.name.buf);
4954     conf->user = xstrdup(block_state.user.buf);
4955 michael 1911 conf->host = xstrdup(block_state.host.buf);
4956 michael 913 }
4957 michael 4121 #line 4958 "conf_parser.c" /* yacc.c:1646 */
4958 michael 913 break;
4959    
4960 michael 4114 case 354:
4961 michael 4121 #line 1953 "conf_parser.y" /* yacc.c:1646 */
4962 michael 913 {
4963 michael 967 if (conf_parser_ctx.pass == 2)
4964 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4965 michael 913 }
4966 michael 4121 #line 4967 "conf_parser.c" /* yacc.c:1646 */
4967 michael 913 break;
4968    
4969 michael 4114 case 355:
4970 michael 4121 #line 1959 "conf_parser.y" /* yacc.c:1646 */
4971 michael 913 {
4972 michael 967 if (conf_parser_ctx.pass == 2)
4973 michael 913 {
4974     struct split_nuh_item nuh;
4975    
4976     nuh.nuhmask = yylval.string;
4977     nuh.nickptr = NULL;
4978 michael 1647 nuh.userptr = block_state.user.buf;
4979     nuh.hostptr = block_state.host.buf;
4980 michael 913
4981     nuh.nicksize = 0;
4982 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
4983     nuh.hostsize = sizeof(block_state.host.buf);
4984 michael 913
4985     split_nuh(&nuh);
4986     }
4987     }
4988 michael 4121 #line 4989 "conf_parser.c" /* yacc.c:1646 */
4989 michael 913 break;
4990    
4991 michael 4114 case 356:
4992 michael 4121 #line 1978 "conf_parser.y" /* yacc.c:1646 */
4993 michael 913 {
4994 michael 967 if (conf_parser_ctx.pass == 2)
4995 michael 1647 block_state.flags.value = 0;
4996 michael 913 }
4997 michael 4121 #line 4998 "conf_parser.c" /* yacc.c:1646 */
4998 michael 913 break;
4999    
5000 michael 4114 case 360:
5001 michael 4121 #line 1985 "conf_parser.y" /* yacc.c:1646 */
5002 michael 1644 {
5003     if (conf_parser_ctx.pass == 2)
5004 michael 1647 block_state.flags.value |= SHARED_KLINE;
5005 michael 1644 }
5006 michael 4121 #line 5007 "conf_parser.c" /* yacc.c:1646 */
5007 michael 1644 break;
5008    
5009 michael 4114 case 361:
5010 michael 4121 #line 1989 "conf_parser.y" /* yacc.c:1646 */
5011 michael 1644 {
5012     if (conf_parser_ctx.pass == 2)
5013 michael 1647 block_state.flags.value |= SHARED_UNKLINE;
5014 michael 1644 }
5015 michael 4121 #line 5016 "conf_parser.c" /* yacc.c:1646 */
5016 michael 1644 break;
5017    
5018 michael 4114 case 362:
5019 michael 4121 #line 1993 "conf_parser.y" /* yacc.c:1646 */
5020 michael 913 {
5021 michael 967 if (conf_parser_ctx.pass == 2)
5022 michael 1647 block_state.flags.value |= SHARED_DLINE;
5023 michael 913 }
5024 michael 4121 #line 5025 "conf_parser.c" /* yacc.c:1646 */
5025 michael 913 break;
5026    
5027 michael 4114 case 363:
5028 michael 4121 #line 1997 "conf_parser.y" /* yacc.c:1646 */
5029 michael 913 {
5030 michael 967 if (conf_parser_ctx.pass == 2)
5031 michael 1647 block_state.flags.value |= SHARED_UNDLINE;
5032 michael 913 }
5033 michael 4121 #line 5034 "conf_parser.c" /* yacc.c:1646 */
5034 michael 913 break;
5035    
5036 michael 4114 case 364:
5037 michael 4121 #line 2001 "conf_parser.y" /* yacc.c:1646 */
5038 michael 913 {
5039 michael 967 if (conf_parser_ctx.pass == 2)
5040 michael 1647 block_state.flags.value |= SHARED_XLINE;
5041 michael 913 }
5042 michael 4121 #line 5043 "conf_parser.c" /* yacc.c:1646 */
5043 michael 913 break;
5044    
5045 michael 4114 case 365:
5046 michael 4121 #line 2005 "conf_parser.y" /* yacc.c:1646 */
5047 michael 913 {
5048 michael 967 if (conf_parser_ctx.pass == 2)
5049 michael 1647 block_state.flags.value |= SHARED_UNXLINE;
5050 michael 913 }
5051 michael 4121 #line 5052 "conf_parser.c" /* yacc.c:1646 */
5052 michael 913 break;
5053    
5054 michael 4114 case 366:
5055 michael 4121 #line 2009 "conf_parser.y" /* yacc.c:1646 */
5056 michael 913 {
5057 michael 967 if (conf_parser_ctx.pass == 2)
5058 michael 1647 block_state.flags.value |= SHARED_RESV;
5059 michael 913 }
5060 michael 4121 #line 5061 "conf_parser.c" /* yacc.c:1646 */
5061 michael 913 break;
5062    
5063 michael 4114 case 367:
5064 michael 4121 #line 2013 "conf_parser.y" /* yacc.c:1646 */
5065 michael 913 {
5066 michael 967 if (conf_parser_ctx.pass == 2)
5067 michael 1647 block_state.flags.value |= SHARED_UNRESV;
5068 michael 913 }
5069 michael 4121 #line 5070 "conf_parser.c" /* yacc.c:1646 */
5070 michael 913 break;
5071    
5072 michael 4114 case 368:
5073 michael 4121 #line 2017 "conf_parser.y" /* yacc.c:1646 */
5074 michael 913 {
5075 michael 967 if (conf_parser_ctx.pass == 2)
5076 michael 1647 block_state.flags.value |= SHARED_LOCOPS;
5077 michael 913 }
5078 michael 4121 #line 5079 "conf_parser.c" /* yacc.c:1646 */
5079 michael 913 break;
5080    
5081 michael 4114 case 369:
5082 michael 4121 #line 2021 "conf_parser.y" /* yacc.c:1646 */
5083 michael 913 {
5084 michael 967 if (conf_parser_ctx.pass == 2)
5085 michael 1647 block_state.flags.value = SHARED_ALL;
5086 michael 913 }
5087 michael 4121 #line 5088 "conf_parser.c" /* yacc.c:1646 */
5088 michael 913 break;
5089    
5090 michael 4114 case 370:
5091 michael 4121 #line 2030 "conf_parser.y" /* yacc.c:1646 */
5092 michael 913 {
5093 michael 1647 if (conf_parser_ctx.pass != 2)
5094     break;
5095    
5096     reset_block_state();
5097    
5098     strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5099     block_state.flags.value = SHARED_ALL;
5100 michael 913 }
5101 michael 4121 #line 5102 "conf_parser.c" /* yacc.c:1646 */
5102 michael 913 break;
5103    
5104 michael 4114 case 371:
5105 michael 4121 #line 2039 "conf_parser.y" /* yacc.c:1646 */
5106 michael 913 {
5107 michael 1647 struct MaskItem *conf = NULL;
5108    
5109     if (conf_parser_ctx.pass != 2)
5110     break;
5111    
5112     conf = conf_make(CONF_CLUSTER);
5113     conf->flags = block_state.flags.value;
5114     conf->name = xstrdup(block_state.name.buf);
5115 michael 913 }
5116 michael 4121 #line 5117 "conf_parser.c" /* yacc.c:1646 */
5117 michael 913 break;
5118    
5119 michael 4114 case 377:
5120 michael 4121 #line 2054 "conf_parser.y" /* yacc.c:1646 */
5121 michael 913 {
5122 michael 967 if (conf_parser_ctx.pass == 2)
5123 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5124 michael 913 }
5125 michael 4121 #line 5126 "conf_parser.c" /* yacc.c:1646 */
5126 michael 913 break;
5127    
5128 michael 4114 case 378:
5129 michael 4121 #line 2060 "conf_parser.y" /* yacc.c:1646 */
5130 michael 913 {
5131 michael 967 if (conf_parser_ctx.pass == 2)
5132 michael 1647 block_state.flags.value = 0;
5133 michael 913 }
5134 michael 4121 #line 5135 "conf_parser.c" /* yacc.c:1646 */
5135 michael 913 break;
5136    
5137 michael 4114 case 382:
5138 michael 4121 #line 2067 "conf_parser.y" /* yacc.c:1646 */
5139 michael 913 {
5140 michael 967 if (conf_parser_ctx.pass == 2)
5141 michael 1647 block_state.flags.value |= SHARED_KLINE;
5142 michael 913 }
5143 michael 4121 #line 5144 "conf_parser.c" /* yacc.c:1646 */
5144 michael 913 break;
5145    
5146 michael 4114 case 383:
5147 michael 4121 #line 2071 "conf_parser.y" /* yacc.c:1646 */
5148 michael 913 {
5149 michael 967 if (conf_parser_ctx.pass == 2)
5150 michael 1647 block_state.flags.value |= SHARED_UNKLINE;
5151 michael 913 }
5152 michael 4121 #line 5153 "conf_parser.c" /* yacc.c:1646 */
5153 michael 913 break;
5154    
5155 michael 4114 case 384:
5156 michael 4121 #line 2075 "conf_parser.y" /* yacc.c:1646 */
5157 michael 913 {
5158 michael 967 if (conf_parser_ctx.pass == 2)
5159 michael 1647 block_state.flags.value |= SHARED_DLINE;
5160 michael 913 }
5161 michael 4121 #line 5162 "conf_parser.c" /* yacc.c:1646 */
5162 michael 913 break;
5163    
5164 michael 4114 case 385:
5165 michael 4121 #line 2079 "conf_parser.y" /* yacc.c:1646 */
5166 michael 913 {
5167 michael 967 if (conf_parser_ctx.pass == 2)
5168 michael 1647 block_state.flags.value |= SHARED_UNDLINE;
5169 michael 913 }
5170 michael 4121 #line 5171 "conf_parser.c" /* yacc.c:1646 */
5171 michael 913 break;
5172    
5173 michael 4114 case 386:
5174 michael 4121 #line 2083 "conf_parser.y" /* yacc.c:1646 */
5175 michael 913 {
5176 michael 967 if (conf_parser_ctx.pass == 2)
5177 michael 1647 block_state.flags.value |= SHARED_XLINE;
5178 michael 913 }
5179 michael 4121 #line 5180 "conf_parser.c" /* yacc.c:1646 */
5180 michael 913 break;
5181    
5182 michael 4114 case 387:
5183 michael 4121 #line 2087 "conf_parser.y" /* yacc.c:1646 */
5184 michael 913 {
5185 michael 967 if (conf_parser_ctx.pass == 2)
5186 michael 1647 block_state.flags.value |= SHARED_UNXLINE;
5187 michael 913 }
5188 michael 4121 #line 5189 "conf_parser.c" /* yacc.c:1646 */
5189 michael 913 break;
5190    
5191 michael 4114 case 388:
5192 michael 4121 #line 2091 "conf_parser.y" /* yacc.c:1646 */
5193 michael 913 {
5194 michael 967 if (conf_parser_ctx.pass == 2)
5195 michael 1647 block_state.flags.value |= SHARED_RESV;
5196 michael 913 }
5197 michael 4121 #line 5198 "conf_parser.c" /* yacc.c:1646 */
5198 michael 913 break;
5199    
5200 michael 4114 case 389:
5201 michael 4121 #line 2095 "conf_parser.y" /* yacc.c:1646 */
5202 michael 913 {
5203 michael 967 if (conf_parser_ctx.pass == 2)
5204 michael 1647 block_state.flags.value |= SHARED_UNRESV;
5205 michael 913 }
5206 michael 4121 #line 5207 "conf_parser.c" /* yacc.c:1646 */
5207 michael 913 break;
5208    
5209 michael 4114 case 390:
5210 michael 4121 #line 2099 "conf_parser.y" /* yacc.c:1646 */
5211 michael 913 {
5212 michael 967 if (conf_parser_ctx.pass == 2)
5213 michael 1647 block_state.flags.value |= SHARED_LOCOPS;
5214 michael 913 }
5215 michael 4121 #line 5216 "conf_parser.c" /* yacc.c:1646 */
5216 michael 913 break;
5217    
5218 michael 4114 case 391:
5219 michael 4121 #line 2103 "conf_parser.y" /* yacc.c:1646 */
5220 michael 913 {
5221 michael 967 if (conf_parser_ctx.pass == 2)
5222 michael 1647 block_state.flags.value = SHARED_ALL;
5223 michael 1250 }
5224 michael 4121 #line 5225 "conf_parser.c" /* yacc.c:1646 */
5225 michael 1250 break;
5226    
5227 michael 4114 case 392:
5228 michael 4121 #line 2112 "conf_parser.y" /* yacc.c:1646 */
5229 michael 1250 {
5230 michael 1285
5231 michael 1647 if (conf_parser_ctx.pass != 2)
5232     break;
5233    
5234     reset_block_state();
5235 michael 2397 block_state.aftype.value = AF_INET;
5236 michael 1647 block_state.port.value = PORTNUM;
5237 michael 913 }
5238 michael 4121 #line 5239 "conf_parser.c" /* yacc.c:1646 */
5239 michael 913 break;
5240    
5241 michael 4114 case 393:
5242 michael 4121 #line 2121 "conf_parser.y" /* yacc.c:1646 */
5243 michael 913 {
5244 michael 1647 struct MaskItem *conf = NULL;
5245     struct addrinfo hints, *res;
5246    
5247     if (conf_parser_ctx.pass != 2)
5248     break;
5249    
5250 michael 1648 if (!block_state.name.buf[0] ||
5251     !block_state.host.buf[0])
5252 michael 1647 break;
5253    
5254 michael 2126 if (!block_state.rpass.buf[0] ||
5255     !block_state.spass.buf[0])
5256 michael 1647 break;
5257    
5258     if (has_wildcards(block_state.name.buf) ||
5259     has_wildcards(block_state.host.buf))
5260     break;
5261    
5262     conf = conf_make(CONF_SERVER);
5263     conf->port = block_state.port.value;
5264     conf->flags = block_state.flags.value;
5265     conf->aftype = block_state.aftype.value;
5266     conf->host = xstrdup(block_state.host.buf);
5267     conf->name = xstrdup(block_state.name.buf);
5268     conf->passwd = xstrdup(block_state.rpass.buf);
5269     conf->spasswd = xstrdup(block_state.spass.buf);
5270 michael 2228
5271     if (block_state.cert.buf[0])
5272     conf->certfp = xstrdup(block_state.cert.buf);
5273    
5274 michael 2252 if (block_state.ciph.buf[0])
5275     conf->cipher_list = xstrdup(block_state.ciph.buf);
5276 michael 1647
5277     dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5278     dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5279    
5280     if (block_state.bind.buf[0])
5281 michael 913 {
5282 michael 1647 memset(&hints, 0, sizeof(hints));
5283    
5284     hints.ai_family = AF_UNSPEC;
5285     hints.ai_socktype = SOCK_STREAM;
5286     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5287    
5288     if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5289     ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5290 michael 1302 else
5291     {
5292 michael 3473 assert(res);
5293 michael 913
5294 michael 1647 memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5295     conf->bind.ss.ss_family = res->ai_family;
5296     conf->bind.ss_len = res->ai_addrlen;
5297     freeaddrinfo(res);
5298 michael 1302 }
5299 michael 1647 }
5300 michael 913
5301 michael 1647 conf_add_class_to_conf(conf, block_state.class.buf);
5302     lookup_confhost(conf);
5303 michael 913 }
5304 michael 4121 #line 5305 "conf_parser.c" /* yacc.c:1646 */
5305 michael 913 break;
5306    
5307 michael 4114 case 411:
5308 michael 4121 #line 2201 "conf_parser.y" /* yacc.c:1646 */
5309 michael 913 {
5310 michael 967 if (conf_parser_ctx.pass == 2)
5311 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5312 michael 913 }
5313 michael 4121 #line 5314 "conf_parser.c" /* yacc.c:1646 */
5314 michael 913 break;
5315    
5316 michael 4114 case 412:
5317 michael 4121 #line 2207 "conf_parser.y" /* yacc.c:1646 */
5318 michael 913 {
5319 michael 967 if (conf_parser_ctx.pass == 2)
5320 michael 1647 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5321 michael 913 }
5322 michael 4121 #line 5323 "conf_parser.c" /* yacc.c:1646 */
5323 michael 913 break;
5324    
5325 michael 4114 case 413:
5326 michael 4121 #line 2213 "conf_parser.y" /* yacc.c:1646 */
5327 michael 913 {
5328 michael 967 if (conf_parser_ctx.pass == 2)
5329 michael 1647 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5330 michael 913 }
5331 michael 4121 #line 5332 "conf_parser.c" /* yacc.c:1646 */
5332 michael 913 break;
5333    
5334 michael 4114 case 414:
5335 michael 4121 #line 2219 "conf_parser.y" /* yacc.c:1646 */
5336 michael 913 {
5337 michael 1647 if (conf_parser_ctx.pass != 2)
5338     break;
5339 michael 913
5340 michael 2473 if ((yyvsp[-1].string)[0] == ':')
5341 michael 1752 conf_error_report("Server passwords cannot begin with a colon");
5342 michael 3473 else if (strchr((yyvsp[-1].string), ' '))
5343 michael 1752 conf_error_report("Server passwords cannot contain spaces");
5344 michael 1647 else
5345     strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5346 michael 913 }
5347 michael 4121 #line 5348 "conf_parser.c" /* yacc.c:1646 */
5348 michael 913 break;
5349    
5350 michael 4114 case 415:
5351 michael 4121 #line 2232 "conf_parser.y" /* yacc.c:1646 */
5352 michael 913 {
5353 michael 1647 if (conf_parser_ctx.pass != 2)
5354     break;
5355 michael 913
5356 michael 2473 if ((yyvsp[-1].string)[0] == ':')
5357 michael 1752 conf_error_report("Server passwords cannot begin with a colon");
5358 michael 3473 else if (strchr((yyvsp[-1].string), ' '))
5359 michael 1752 conf_error_report("Server passwords cannot contain spaces");
5360 michael 1647 else
5361     strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5362 michael 913 }
5363 michael 4121 #line 5364 "conf_parser.c" /* yacc.c:1646 */
5364 michael 913 break;
5365    
5366 michael 4114 case 416:
5367 michael 4121 #line 2245 "conf_parser.y" /* yacc.c:1646 */
5368 michael 913 {
5369 michael 967 if (conf_parser_ctx.pass == 2)
5370 michael 2229 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5371 michael 2228 }
5372 michael 4121 #line 5373 "conf_parser.c" /* yacc.c:1646 */
5373 michael 2228 break;
5374    
5375 michael 4114 case 417:
5376 michael 4121 #line 2251 "conf_parser.y" /* yacc.c:1646 */
5377 michael 2228 {
5378     if (conf_parser_ctx.pass == 2)
5379 michael 2473 block_state.port.value = (yyvsp[-1].number);
5380 michael 913 }
5381 michael 4121 #line 5382 "conf_parser.c" /* yacc.c:1646 */
5382 michael 913 break;
5383    
5384 michael 4114 case 418:
5385 michael 4121 #line 2257 "conf_parser.y" /* yacc.c:1646 */
5386 michael 913 {
5387 michael 967 if (conf_parser_ctx.pass == 2)
5388 michael 1647 block_state.aftype.value = AF_INET;
5389 michael 913 }
5390 michael 4121 #line 5391 "conf_parser.c" /* yacc.c:1646 */
5391 michael 913 break;
5392    
5393 michael 4114 case 419:
5394 michael 4121 #line 2261 "conf_parser.y" /* yacc.c:1646 */
5395 michael 913 {
5396     #ifdef IPV6
5397 michael 967 if (conf_parser_ctx.pass == 2)
5398 michael 1647 block_state.aftype.value = AF_INET6;
5399 michael 913 #endif
5400     }
5401 michael 4121 #line 5402 "conf_parser.c" /* yacc.c:1646 */
5402 michael 913 break;
5403    
5404 michael 4114 case 420:
5405 michael 4121 #line 2269 "conf_parser.y" /* yacc.c:1646 */
5406 michael 913 {
5407 michael 1648 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5408 michael 913 }
5409 michael 4121 #line 5410 "conf_parser.c" /* yacc.c:1646 */
5410 michael 913 break;
5411    
5412 michael 4114 case 424:
5413 michael 4121 #line 2275 "conf_parser.y" /* yacc.c:1646 */
5414 michael 913 {
5415 michael 967 if (conf_parser_ctx.pass == 2)
5416 michael 1647 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5417 michael 913 }
5418 michael 4121 #line 5419 "conf_parser.c" /* yacc.c:1646 */
5419 michael 913 break;
5420    
5421 michael 4114 case 425:
5422 michael 4121 #line 2279 "conf_parser.y" /* yacc.c:1646 */
5423 michael 913 {
5424 michael 967 if (conf_parser_ctx.pass == 2)
5425 michael 1647 block_state.flags.value |= CONF_FLAGS_SSL;
5426 michael 913 }
5427 michael 4121 #line 5428 "conf_parser.c" /* yacc.c:1646 */
5428 michael 913 break;
5429    
5430 michael 4114 case 426:
5431 michael 4121 #line 2285 "conf_parser.y" /* yacc.c:1646 */
5432 michael 913 {
5433 michael 967 if (conf_parser_ctx.pass == 2)
5434 michael 913 {
5435     if (yylval.number)
5436 michael 1647 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5437 michael 913 else
5438 michael 1647 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5439 michael 913 }
5440     }
5441 michael 4121 #line 5442 "conf_parser.c" /* yacc.c:1646 */
5442 michael 913 break;
5443    
5444 michael 4114 case 427:
5445 michael 4121 #line 2296 "conf_parser.y" /* yacc.c:1646 */
5446 michael 913 {
5447 michael 967 if (conf_parser_ctx.pass == 2)
5448 michael 1647 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5449 michael 913 }
5450 michael 4121 #line 5451 "conf_parser.c" /* yacc.c:1646 */
5451 michael 913 break;
5452    
5453 michael 4114 case 428:
5454 michael 4121 #line 2302 "conf_parser.y" /* yacc.c:1646 */
5455 michael 913 {
5456 michael 967 if (conf_parser_ctx.pass == 2)
5457 michael 1647 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5458 michael 913 }
5459 michael 4121 #line 5460 "conf_parser.c" /* yacc.c:1646 */
5460 michael 913 break;
5461    
5462 michael 4114 case 429:
5463 michael 4121 #line 2308 "conf_parser.y" /* yacc.c:1646 */
5464 michael 913 {
5465 michael 967 if (conf_parser_ctx.pass == 2)
5466 michael 1647 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5467 michael 913 }
5468 michael 4121 #line 5469 "conf_parser.c" /* yacc.c:1646 */
5469 michael 913 break;
5470    
5471 michael 4114 case 430:
5472 michael 4121 #line 2314 "conf_parser.y" /* yacc.c:1646 */
5473 michael 913 {
5474 michael 1306 #ifdef HAVE_LIBCRYPTO
5475 michael 967 if (conf_parser_ctx.pass == 2)
5476 michael 1647 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5477 michael 1306 #else
5478     if (conf_parser_ctx.pass == 2)
5479 michael 1752 conf_error_report("Ignoring connect::ciphers -- no OpenSSL support");
5480 michael 1306 #endif
5481     }
5482 michael 4121 #line 5483 "conf_parser.c" /* yacc.c:1646 */
5483 michael 1306 break;
5484    
5485 michael 4114 case 431:
5486 michael 4121 #line 2329 "conf_parser.y" /* yacc.c:1646 */
5487 michael 1306 {
5488     if (conf_parser_ctx.pass == 2)
5489 michael 1647 reset_block_state();
5490 michael 913 }
5491 michael 4121 #line 5492 "conf_parser.c" /* yacc.c:1646 */
5492 michael 913 break;
5493    
5494 michael 4114 case 432:
5495 michael 4121 #line 2333 "conf_parser.y" /* yacc.c:1646 */
5496 michael 913 {
5497 michael 1647 struct MaskItem *conf = NULL;
5498    
5499     if (conf_parser_ctx.pass != 2)
5500     break;
5501    
5502     if (!block_state.user.buf[0] ||
5503     !block_state.host.buf[0])
5504     break;
5505    
5506 michael 1921 conf = conf_make(CONF_KLINE);
5507     conf->user = xstrdup(block_state.user.buf);
5508     conf->host = xstrdup(block_state.host.buf);
5509 michael 1647
5510 michael 1921 if (block_state.rpass.buf[0])
5511     conf->reason = xstrdup(block_state.rpass.buf);
5512 michael 1647 else
5513 michael 1921 conf->reason = xstrdup(CONF_NOREASON);
5514     add_conf_by_address(CONF_KLINE, conf);
5515 michael 913 }
5516 michael 4121 #line 5517 "conf_parser.c" /* yacc.c:1646 */
5517 michael 913 break;
5518    
5519 michael 4114 case 438:
5520 michael 4121 #line 2358 "conf_parser.y" /* yacc.c:1646 */
5521 michael 913 {
5522    
5523 michael 967 if (conf_parser_ctx.pass == 2)
5524 michael 913 {
5525     struct split_nuh_item nuh;
5526    
5527     nuh.nuhmask = yylval.string;
5528     nuh.nickptr = NULL;
5529 michael 1647 nuh.userptr = block_state.user.buf;
5530     nuh.hostptr = block_state.host.buf;
5531 michael 913
5532     nuh.nicksize = 0;
5533 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
5534     nuh.hostsize = sizeof(block_state.host.buf);
5535 michael 913
5536     split_nuh(&nuh);
5537     }
5538     }
5539 michael 4121 #line 5540 "conf_parser.c" /* yacc.c:1646 */
5540 michael 913 break;
5541    
5542 michael 4114 case 439:
5543 michael 4121 #line 2378 "conf_parser.y" /* yacc.c:1646 */
5544 michael 913 {
5545 michael 967 if (conf_parser_ctx.pass == 2)
5546 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5547 michael 913 }
5548 michael 4121 #line 5549 "conf_parser.c" /* yacc.c:1646 */
5549 michael 913 break;
5550    
5551 michael 4114 case 440:
5552 michael 4121 #line 2387 "conf_parser.y" /* yacc.c:1646 */
5553 michael 913 {
5554 michael 967 if (conf_parser_ctx.pass == 2)
5555 michael 1646 reset_block_state();
5556 michael 913 }
5557 michael 4121 #line 5558 "conf_parser.c" /* yacc.c:1646 */
5558 michael 913 break;
5559    
5560 michael 4114 case 441:
5561 michael 4121 #line 2391 "conf_parser.y" /* yacc.c:1646 */
5562 michael 913 {
5563 michael 1646 struct MaskItem *conf = NULL;
5564    
5565     if (conf_parser_ctx.pass != 2)
5566     break;
5567    
5568     if (!block_state.addr.buf[0])
5569     break;
5570    
5571     if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5572 michael 913 {
5573 michael 1646 conf = conf_make(CONF_DLINE);
5574     conf->host = xstrdup(block_state.addr.buf);
5575 michael 1005
5576 michael 1647 if (block_state.rpass.buf[0])
5577     conf->reason = xstrdup(block_state.rpass.buf);
5578 michael 1646 else
5579     conf->reason = xstrdup(CONF_NOREASON);
5580     add_conf_by_address(CONF_DLINE, conf);
5581 michael 913 }
5582     }
5583 michael 4121 #line 5584 "conf_parser.c" /* yacc.c:1646 */
5584 michael 913 break;
5585    
5586 michael 4114 case 447:
5587 michael 4121 #line 2417 "conf_parser.y" /* yacc.c:1646 */
5588 michael 913 {
5589 michael 967 if (conf_parser_ctx.pass == 2)
5590 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5591 michael 913 }
5592 michael 4121 #line 5593 "conf_parser.c" /* yacc.c:1646 */
5593 michael 913 break;
5594    
5595 michael 4114 case 448:
5596 michael 4121 #line 2423 "conf_parser.y" /* yacc.c:1646 */
5597 michael 913 {
5598 michael 967 if (conf_parser_ctx.pass == 2)
5599 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5600 michael 913 }
5601 michael 4121 #line 5602 "conf_parser.c" /* yacc.c:1646 */
5602 michael 913 break;
5603    
5604 michael 4114 case 454:
5605 michael 4121 #line 2437 "conf_parser.y" /* yacc.c:1646 */
5606 michael 913 {
5607 michael 967 if (conf_parser_ctx.pass == 2)
5608 michael 913 {
5609     if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5610     {
5611 michael 1646 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5612     conf->host = xstrdup(yylval.string);
5613 michael 913
5614 michael 1646 add_conf_by_address(CONF_EXEMPT, conf);
5615 michael 913 }
5616     }
5617     }
5618 michael 4121 #line 5619 "conf_parser.c" /* yacc.c:1646 */
5619 michael 913 break;
5620    
5621 michael 4114 case 455:
5622 michael 4121 #line 2454 "conf_parser.y" /* yacc.c:1646 */
5623 michael 913 {
5624 michael 967 if (conf_parser_ctx.pass == 2)
5625 michael 1646 reset_block_state();
5626 michael 913 }
5627 michael 4121 #line 5628 "conf_parser.c" /* yacc.c:1646 */
5628 michael 913 break;
5629    
5630 michael 4114 case 456:
5631 michael 4121 #line 2458 "conf_parser.y" /* yacc.c:1646 */
5632 michael 913 {
5633 michael 1646 struct MaskItem *conf = NULL;
5634    
5635     if (conf_parser_ctx.pass != 2)
5636     break;
5637    
5638     if (!block_state.name.buf[0])
5639     break;
5640    
5641 michael 1921 conf = conf_make(CONF_XLINE);
5642 michael 1646 conf->name = xstrdup(block_state.name.buf);
5643 michael 913
5644 michael 1647 if (block_state.rpass.buf[0])
5645     conf->reason = xstrdup(block_state.rpass.buf);
5646 michael 1646 else
5647     conf->reason = xstrdup(CONF_NOREASON);
5648 michael 913 }
5649 michael 4121 #line 5650 "conf_parser.c" /* yacc.c:1646 */
5650 michael 913 break;
5651    
5652 michael 4114 case 462:
5653 michael 4121 #line 2480 "conf_parser.y" /* yacc.c:1646 */
5654 michael 913 {
5655 michael 1646 if (conf_parser_ctx.pass == 2)
5656     strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5657 michael 913 }
5658 michael 4121 #line 5659 "conf_parser.c" /* yacc.c:1646 */
5659 michael 913 break;
5660    
5661 michael 4114 case 463:
5662 michael 4121 #line 2486 "conf_parser.y" /* yacc.c:1646 */
5663 michael 913 {
5664 michael 967 if (conf_parser_ctx.pass == 2)
5665 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5666 michael 913 }
5667 michael 4121 #line 5668 "conf_parser.c" /* yacc.c:1646 */
5668 michael 1118 break;
5669    
5670 michael 4114 case 518:
5671 michael 4121 #line 2552 "conf_parser.y" /* yacc.c:1646 */
5672 michael 1118 {
5673 michael 3513 ConfigFileEntry.max_watch = (yyvsp[-1].number);
5674 michael 2283 }
5675 michael 4121 #line 5676 "conf_parser.c" /* yacc.c:1646 */
5676 michael 2283 break;
5677    
5678 michael 4114 case 519:
5679 michael 4121 #line 2557 "conf_parser.y" /* yacc.c:1646 */
5680 michael 2283 {
5681     if (conf_parser_ctx.pass == 2)
5682 michael 3513 ConfigFileEntry.cycle_on_host_change = yylval.number;
5683 michael 1459 }
5684 michael 4121 #line 5685 "conf_parser.c" /* yacc.c:1646 */
5685 michael 1459 break;
5686    
5687 michael 4114 case 520:
5688 michael 4121 #line 2563 "conf_parser.y" /* yacc.c:1646 */
5689 michael 1459 {
5690     if (conf_parser_ctx.pass == 2)
5691 michael 3513 ConfigFileEntry.glines = yylval.number;
5692 michael 1459 }
5693 michael 4121 #line 5694 "conf_parser.c" /* yacc.c:1646 */
5694 michael 1459 break;
5695    
5696 michael 4114 case 521:
5697 michael 4121 #line 2569 "conf_parser.y" /* yacc.c:1646 */
5698 michael 1459 {
5699     if (conf_parser_ctx.pass == 2)
5700 michael 3513 ConfigFileEntry.gline_time = (yyvsp[-1].number);
5701 michael 1459 }
5702 michael 4121 #line 5703 "conf_parser.c" /* yacc.c:1646 */
5703 michael 2185 break;
5704    
5705 michael 4114 case 522:
5706 michael 4121 #line 2575 "conf_parser.y" /* yacc.c:1646 */
5707 michael 913 {
5708 michael 3513 if (conf_parser_ctx.pass == 2)
5709     ConfigFileEntry.gline_request_time = (yyvsp[-1].number);
5710 michael 913 }
5711 michael 4121 #line 5712 "conf_parser.c" /* yacc.c:1646 */
5712 michael 913 break;
5713    
5714 michael 4114 case 523:
5715 michael 4121 #line 2581 "conf_parser.y" /* yacc.c:1646 */
5716 michael 913 {
5717 michael 3513 ConfigFileEntry.gline_min_cidr = (yyvsp[-1].number);
5718 michael 913 }
5719 michael 4121 #line 5720 "conf_parser.c" /* yacc.c:1646 */
5720 michael 913 break;
5721    
5722 michael 4114 case 524:
5723 michael 4121 #line 2586 "conf_parser.y" /* yacc.c:1646 */
5724 michael 913 {
5725 michael 3513 ConfigFileEntry.gline_min_cidr6 = (yyvsp[-1].number);
5726 michael 913 }
5727 michael 4121 #line 5728 "conf_parser.c" /* yacc.c:1646 */
5728 michael 913 break;
5729    
5730 michael 4114 case 525:
5731 michael 4121 #line 2591 "conf_parser.y" /* yacc.c:1646 */
5732 michael 913 {
5733 michael 3513 ConfigFileEntry.tkline_expire_notices = yylval.number;
5734 michael 913 }
5735 michael 4121 #line 5736 "conf_parser.c" /* yacc.c:1646 */
5736 michael 913 break;
5737    
5738 michael 4114 case 526:
5739 michael 4121 #line 2596 "conf_parser.y" /* yacc.c:1646 */
5740 michael 913 {
5741 michael 3513 ConfigFileEntry.kill_chase_time_limit = (yyvsp[-1].number);
5742 michael 913 }
5743 michael 4121 #line 5744 "conf_parser.c" /* yacc.c:1646 */
5744 michael 913 break;
5745    
5746 michael 4114 case 527:
5747 michael 4121 #line 2601 "conf_parser.y" /* yacc.c:1646 */
5748 michael 913 {
5749 michael 3513 ConfigFileEntry.hide_spoof_ips = yylval.number;
5750 michael 913 }
5751 michael 4121 #line 5752 "conf_parser.c" /* yacc.c:1646 */
5752 michael 913 break;
5753    
5754 michael 4114 case 528:
5755 michael 4121 #line 2606 "conf_parser.y" /* yacc.c:1646 */
5756 michael 913 {
5757 michael 3513 ConfigFileEntry.ignore_bogus_ts = yylval.number;
5758 michael 913 }
5759 michael 4121 #line 5760 "conf_parser.c" /* yacc.c:1646 */
5760 michael 913 break;
5761    
5762 michael 4114 case 529:
5763 michael 4121 #line 2611 "conf_parser.y" /* yacc.c:1646 */
5764 michael 913 {
5765 michael 3513 ConfigFileEntry.failed_oper_notice = yylval.number;
5766 michael 913 }
5767 michael 4121 #line 5768 "conf_parser.c" /* yacc.c:1646 */
5768 michael 913 break;
5769    
5770 michael 4114 case 530:
5771 michael 4121 #line 2616 "conf_parser.y" /* yacc.c:1646 */
5772 michael 913 {
5773 michael 3513 ConfigFileEntry.anti_nick_flood = yylval.number;
5774 michael 913 }
5775 michael 4121 #line 5776 "conf_parser.c" /* yacc.c:1646 */
5776 michael 913 break;
5777    
5778 michael 4114 case 531:
5779 michael 4121 #line 2621 "conf_parser.y" /* yacc.c:1646 */
5780 michael 913 {
5781 michael 3513 ConfigFileEntry.max_nick_time = (yyvsp[-1].number);
5782 michael 913 }
5783 michael 4121 #line 5784 "conf_parser.c" /* yacc.c:1646 */
5784 michael 913 break;
5785    
5786 michael 4114 case 532:
5787 michael 4121 #line 2626 "conf_parser.y" /* yacc.c:1646 */
5788 michael 913 {
5789 michael 3513 ConfigFileEntry.max_nick_changes = (yyvsp[-1].number);
5790 michael 913 }
5791 michael 4121 #line 5792 "conf_parser.c" /* yacc.c:1646 */
5792 michael 913 break;
5793    
5794 michael 4114 case 533:
5795 michael 4121 #line 2631 "conf_parser.y" /* yacc.c:1646 */
5796 michael 913 {
5797 michael 3513 ConfigFileEntry.max_accept = (yyvsp[-1].number);
5798 michael 2853 }
5799 michael 4121 #line 5800 "conf_parser.c" /* yacc.c:1646 */
5800 michael 2853 break;
5801    
5802 michael 4114 case 534:
5803 michael 4121 #line 2636 "conf_parser.y" /* yacc.c:1646 */
5804 michael 2853 {
5805 michael 3513 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[-1].number);
5806 michael 3506 }
5807 michael 4121 #line 5808 "conf_parser.c" /* yacc.c:1646 */
5808 michael 3506 break;
5809    
5810 michael 4114 case 535:
5811 michael 4121 #line 2641 "conf_parser.y" /* yacc.c:1646 */
5812 michael 3506 {
5813 michael 3513 ConfigFileEntry.ts_warn_delta = (yyvsp[-1].number);
5814     }
5815 michael 4121 #line 5816 "conf_parser.c" /* yacc.c:1646 */
5816 michael 3513 break;
5817    
5818 michael 4114 case 536:
5819 michael 4121 #line 2646 "conf_parser.y" /* yacc.c:1646 */
5820 michael 3513 {
5821 michael 1519 if (conf_parser_ctx.pass == 2)
5822 michael 2473 ConfigFileEntry.ts_max_delta = (yyvsp[-1].number);
5823 michael 913 }
5824 michael 4121 #line 5825 "conf_parser.c" /* yacc.c:1646 */
5825 michael 913 break;
5826    
5827 michael 4114 case 537:
5828 michael 4121 #line 2652 "conf_parser.y" /* yacc.c:1646 */
5829 michael 913 {
5830 michael 2473 if (((yyvsp[-1].number) > 0) && conf_parser_ctx.pass == 1)
5831 michael 1519 {
5832     ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
5833     ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
5834     ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
5835     exit(0);
5836     }
5837 michael 1460 }
5838 michael 4121 #line 5839 "conf_parser.c" /* yacc.c:1646 */
5839 michael 913 break;
5840    
5841 michael 4114 case 538:
5842 michael 4121 #line 2663 "conf_parser.y" /* yacc.c:1646 */
5843 michael 913 {
5844 michael 3513 ConfigFileEntry.invisible_on_connect = yylval.number;
5845 michael 913 }
5846 michael 4121 #line 5847 "conf_parser.c" /* yacc.c:1646 */
5847 michael 913 break;
5848    
5849 michael 4114 case 539:
5850 michael 4121 #line 2668 "conf_parser.y" /* yacc.c:1646 */
5851 michael 913 {
5852 michael 3513 ConfigFileEntry.warn_no_connect_block = yylval.number;
5853 michael 913 }
5854 michael 4121 #line 5855 "conf_parser.c" /* yacc.c:1646 */
5855 michael 913 break;
5856    
5857 michael 4114 case 540:
5858 michael 4121 #line 2673 "conf_parser.y" /* yacc.c:1646 */
5859 michael 913 {
5860 michael 3513 ConfigFileEntry.stats_e_disabled = yylval.number;
5861 michael 2269 }
5862 michael 4121 #line 5863 "conf_parser.c" /* yacc.c:1646 */
5863 michael 2269 break;
5864    
5865 michael 4114 case 541:
5866 michael 4121 #line 2678 "conf_parser.y" /* yacc.c:1646 */
5867 michael 2269 {
5868 michael 3513 ConfigFileEntry.stats_o_oper_only = yylval.number;
5869 michael 913 }
5870 michael 4121 #line 5871 "conf_parser.c" /* yacc.c:1646 */
5871 michael 913 break;
5872    
5873 michael 4114 case 542:
5874 michael 4121 #line 2683 "conf_parser.y" /* yacc.c:1646 */
5875 michael 913 {
5876 michael 3513 ConfigFileEntry.stats_P_oper_only = yylval.number;
5877 michael 913 }
5878 michael 4121 #line 5879 "conf_parser.c" /* yacc.c:1646 */
5879 michael 913 break;
5880    
5881 michael 4114 case 543:
5882 michael 4121 #line 2688 "conf_parser.y" /* yacc.c:1646 */
5883 michael 913 {
5884 michael 3513 ConfigFileEntry.stats_u_oper_only = yylval.number;
5885 michael 913 }
5886 michael 4121 #line 5887 "conf_parser.c" /* yacc.c:1646 */
5887 michael 913 break;
5888    
5889 michael 4114 case 544:
5890 michael 4121 #line 2693 "conf_parser.y" /* yacc.c:1646 */
5891 michael 913 {
5892 michael 3513 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5893 michael 913 }
5894 michael 4121 #line 5895 "conf_parser.c" /* yacc.c:1646 */
5895 michael 913 break;
5896    
5897 michael 4114 case 545:
5898 michael 4121 #line 2696 "conf_parser.y" /* yacc.c:1646 */
5899 michael 913 {
5900 michael 3513 ConfigFileEntry.stats_k_oper_only = 1;
5901 michael 913 }
5902 michael 4121 #line 5903 "conf_parser.c" /* yacc.c:1646 */
5903 michael 913 break;
5904    
5905 michael 4114 case 546:
5906 michael 4121 #line 2701 "conf_parser.y" /* yacc.c:1646 */
5907 michael 913 {
5908 michael 3513 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5909 michael 913 }
5910 michael 4121 #line 5911 "conf_parser.c" /* yacc.c:1646 */
5911 michael 913 break;
5912    
5913 michael 4114 case 547:
5914 michael 4121 #line 2704 "conf_parser.y" /* yacc.c:1646 */
5915 michael 913 {
5916 michael 3513 ConfigFileEntry.stats_i_oper_only = 1;
5917 michael 913 }
5918 michael 4121 #line 5919 "conf_parser.c" /* yacc.c:1646 */
5919 michael 913 break;
5920    
5921 michael 4114 case 548:
5922 michael 4121 #line 2709 "conf_parser.y" /* yacc.c:1646 */
5923 michael 913 {
5924 michael 3513 ConfigFileEntry.pace_wait = (yyvsp[-1].number);
5925 michael 913 }
5926 michael 4121 #line 5927 "conf_parser.c" /* yacc.c:1646 */
5927 michael 913 break;
5928    
5929 michael 4114 case 549:
5930 michael 4121 #line 2714 "conf_parser.y" /* yacc.c:1646 */
5931 michael 913 {
5932 michael 3513 ConfigFileEntry.caller_id_wait = (yyvsp[-1].number);
5933 michael 913 }
5934 michael 4121 #line 5935 "conf_parser.c" /* yacc.c:1646 */
5935 michael 913 break;
5936    
5937 michael 4114 case 550:
5938 michael 4121 #line 2719 "conf_parser.y" /* yacc.c:1646 */
5939 michael 913 {
5940 michael 3513 ConfigFileEntry.opers_bypass_callerid = yylval.number;
5941 michael 913 }
5942 michael 4121 #line 5943 "conf_parser.c" /* yacc.c:1646 */
5943 michael 913 break;
5944    
5945 michael 4114 case 551:
5946 michael 4121 #line 2724 "conf_parser.y" /* yacc.c:1646 */
5947 michael 913 {
5948 michael 3513 ConfigFileEntry.pace_wait_simple = (yyvsp[-1].number);
5949 michael 913 }
5950 michael 4121 #line 5951 "conf_parser.c" /* yacc.c:1646 */
5951 michael 913 break;
5952    
5953 michael 4114 case 552:
5954 michael 4121 #line 2729 "conf_parser.y" /* yacc.c:1646 */
5955 michael 913 {
5956 michael 3513 ConfigFileEntry.short_motd = yylval.number;
5957 michael 913 }
5958 michael 4121 #line 5959 "conf_parser.c" /* yacc.c:1646 */
5959 michael 913 break;
5960    
5961 michael 4114 case 553:
5962 michael 4121 #line 2734 "conf_parser.y" /* yacc.c:1646 */
5963 michael 913 {
5964 michael 3513 ConfigFileEntry.no_oper_flood = yylval.number;
5965 michael 1715 }
5966 michael 4121 #line 5967 "conf_parser.c" /* yacc.c:1646 */
5967 michael 1715 break;
5968    
5969 michael 4114 case 554:
5970 michael 4121 #line 2739 "conf_parser.y" /* yacc.c:1646 */
5971 michael 1715 {
5972 michael 3513 ConfigFileEntry.true_no_oper_flood = yylval.number;
5973 michael 913 }
5974 michael 4121 #line 5975 "conf_parser.c" /* yacc.c:1646 */
5975 michael 913 break;
5976    
5977 michael 4114 case 555:
5978 michael 4121 #line 2744 "conf_parser.y" /* yacc.c:1646 */
5979 michael 913 {
5980 michael 3513 ConfigFileEntry.oper_pass_resv = yylval.number;
5981 michael 913 }
5982 michael 4121 #line 5983 "conf_parser.c" /* yacc.c:1646 */
5983 michael 913 break;
5984    
5985 michael 4114 case 556:
5986 michael 4121 #line 2749 "conf_parser.y" /* yacc.c:1646 */
5987 michael 913 {
5988 michael 3513 ConfigFileEntry.dots_in_ident = (yyvsp[-1].number);
5989 michael 2853 }
5990 michael 4121 #line 5991 "conf_parser.c" /* yacc.c:1646 */
5991 michael 2853 break;
5992    
5993 michael 4114 case 557:
5994 michael 4121 #line 2754 "conf_parser.y" /* yacc.c:1646 */
5995 michael 2853 {
5996 michael 3513 ConfigFileEntry.max_targets = (yyvsp[-1].number);
5997 michael 3506 }
5998 michael 4121 #line 5999 "conf_parser.c" /* yacc.c:1646 */
5999 michael 3506 break;
6000    
6001 michael 4114 case 558:
6002 michael 4121 #line 2759 "conf_parser.y" /* yacc.c:1646 */
6003 michael 3506 {
6004 michael 3513 ConfigFileEntry.use_egd = yylval.number;
6005     }
6006 michael 4121 #line 6007 "conf_parser.c" /* yacc.c:1646 */
6007 michael 3513 break;
6008    
6009 michael 4114 case 559:
6010 michael 4121 #line 2764 "conf_parser.y" /* yacc.c:1646 */
6011 michael 3513 {
6012 michael 967 if (conf_parser_ctx.pass == 2)
6013 michael 913 {
6014     MyFree(ConfigFileEntry.egdpool_path);
6015 michael 1646 ConfigFileEntry.egdpool_path = xstrdup(yylval.string);
6016 michael 913 }
6017     }
6018 michael 4121 #line 6019 "conf_parser.c" /* yacc.c:1646 */
6019 michael 913 break;
6020    
6021 michael 4114 case 560:
6022 michael 4121 #line 2773 "conf_parser.y" /* yacc.c:1646 */
6023 michael 913 {
6024 michael 1176 if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
6025 michael 1157 {
6026     MyFree(ConfigFileEntry.service_name);
6027 michael 1646 ConfigFileEntry.service_name = xstrdup(yylval.string);
6028 michael 1157 }
6029     }
6030 michael 4121 #line 6031 "conf_parser.c" /* yacc.c:1646 */
6031 michael 913 break;
6032    
6033 michael 4114 case 561:
6034 michael 4121 #line 2782 "conf_parser.y" /* yacc.c:1646 */
6035 michael 913 {
6036 michael 3513 ConfigFileEntry.ping_cookie = yylval.number;
6037 michael 913 }
6038 michael 4121 #line 6039 "conf_parser.c" /* yacc.c:1646 */
6039 michael 913 break;
6040    
6041 michael 4114 case 562:
6042 michael 4121 #line 2787 "conf_parser.y" /* yacc.c:1646 */
6043 michael 913 {
6044 michael 3513 ConfigFileEntry.disable_auth = yylval.number;
6045 michael 913 }
6046 michael 4121 #line 6047 "conf_parser.c" /* yacc.c:1646 */
6047 michael 913 break;
6048    
6049 michael 4114 case 563:
6050 michael 4121 #line 2792 "conf_parser.y" /* yacc.c:1646 */
6051 michael 2196 {
6052 michael 3877 ConfigFileEntry.throttle_count = (yyvsp[-1].number);
6053     }
6054 michael 4121 #line 6055 "conf_parser.c" /* yacc.c:1646 */
6055 michael 3877 break;
6056    
6057 michael 4114 case 564:
6058 michael 4121 #line 2797 "conf_parser.y" /* yacc.c:1646 */
6059 michael 3877 {
6060 michael 3513 ConfigFileEntry.throttle_time = (yyvsp[-1].number);
6061 michael 2196 }
6062 michael 4121 #line 6063 "conf_parser.c" /* yacc.c:1646 */
6063 michael 2196 break;
6064    
6065 michael 4114 case 565:
6066 michael 4121 #line 2802 "conf_parser.y" /* yacc.c:1646 */
6067 michael 2196 {
6068 michael 3513 ConfigFileEntry.oper_umodes = 0;
6069 michael 2196 }
6070 michael 4121 #line 6071 "conf_parser.c" /* yacc.c:1646 */
6071 michael 2196 break;
6072    
6073 michael 4114 case 569:
6074 michael 4121 #line 2808 "conf_parser.y" /* yacc.c:1646 */
6075 michael 1547 {
6076 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6077 michael 1547 }
6078 michael 4121 #line 6079 "conf_parser.c" /* yacc.c:1646 */
6079 michael 1547 break;
6080    
6081 michael 4114 case 570:
6082 michael 4121 #line 2811 "conf_parser.y" /* yacc.c:1646 */
6083 michael 1547 {
6084 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6085 michael 1547 }
6086 michael 4121 #line 6087 "conf_parser.c" /* yacc.c:1646 */
6087 michael 1547 break;
6088    
6089 michael 4114 case 571:
6090 michael 4121 #line 2814 "conf_parser.y" /* yacc.c:1646 */
6091 michael 913 {
6092 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6093 michael 913 }
6094 michael 4121 #line 6095 "conf_parser.c" /* yacc.c:1646 */
6095 michael 913 break;
6096    
6097 michael 4114 case 572:
6098 michael 4121 #line 2817 "conf_parser.y" /* yacc.c:1646 */
6099 michael 913 {
6100 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6101 michael 913 }
6102 michael 4121 #line 6103 "conf_parser.c" /* yacc.c:1646 */
6103 michael 913 break;
6104    
6105 michael 4114 case 573:
6106 michael 4121 #line 2820 "conf_parser.y" /* yacc.c:1646 */
6107 michael 913 {
6108 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_FULL;
6109 michael 913 }
6110 michael 4121 #line 6111 "conf_parser.c" /* yacc.c:1646 */
6111 michael 913 break;
6112    
6113 michael 4114 case 574:
6114 michael 4121 #line 2823 "conf_parser.y" /* yacc.c:1646 */
6115 michael 913 {
6116 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6117 michael 3506 }
6118 michael 4121 #line 6119 "conf_parser.c" /* yacc.c:1646 */
6119 michael 3506 break;
6120    
6121 michael 4114 case 575:
6122 michael 4121 #line 2826 "conf_parser.y" /* yacc.c:1646 */
6123 michael 3506 {
6124 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_HIDECHANS;
6125 michael 913 }
6126 michael 4121 #line 6127 "conf_parser.c" /* yacc.c:1646 */
6127 michael 913 break;
6128    
6129 michael 4114 case 576:
6130 michael 4121 #line 2829 "conf_parser.y" /* yacc.c:1646 */
6131 michael 913 {
6132 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_HIDEIDLE;
6133 michael 913 }
6134 michael 4121 #line 6135 "conf_parser.c" /* yacc.c:1646 */
6135 michael 913 break;
6136    
6137 michael 4114 case 577:
6138 michael 4121 #line 2832 "conf_parser.y" /* yacc.c:1646 */
6139 michael 1294 {
6140 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6141 michael 1294 }
6142 michael 4121 #line 6143 "conf_parser.c" /* yacc.c:1646 */
6143 michael 1294 break;
6144    
6145 michael 4114 case 578:
6146 michael 4121 #line 2835 "conf_parser.y" /* yacc.c:1646 */
6147 michael 913 {
6148 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6149 michael 913 }
6150 michael 4121 #line 6151 "conf_parser.c" /* yacc.c:1646 */
6151 michael 913 break;
6152    
6153 michael 4114 case 579:
6154 michael 4121 #line 2838 "conf_parser.y" /* yacc.c:1646 */
6155 michael 913 {
6156 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_REJ;
6157 michael 913 }
6158 michael 4121 #line 6159 "conf_parser.c" /* yacc.c:1646 */
6159 michael 913 break;
6160    
6161 michael 4114 case 580:
6162 michael 4121 #line 2841 "conf_parser.y" /* yacc.c:1646 */
6163 michael 913 {
6164 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6165 michael 913 }
6166 michael 4121 #line 6167 "conf_parser.c" /* yacc.c:1646 */
6167 michael 913 break;
6168    
6169 michael 4114 case 581:
6170 michael 4121 #line 2844 "conf_parser.y" /* yacc.c:1646 */
6171 michael 913 {
6172 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_SPY;
6173 michael 913 }
6174 michael 4121 #line 6175 "conf_parser.c" /* yacc.c:1646 */
6175 michael 913 break;
6176    
6177 michael 4114 case 582:
6178 michael 4121 #line 2847 "conf_parser.y" /* yacc.c:1646 */
6179 michael 913 {
6180 michael 3513 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6181 michael 913 }
6182 michael 4121 #line 6183 "conf_parser.c" /* yacc.c:1646 */
6183 michael 913 break;
6184    
6185 michael 4114 case 583:
6186 michael 4121 #line 2850 "conf_parser.y" /* yacc.c:1646 */
6187 michael 913 {
6188 michael 3869 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6189 michael 913 }
6190 michael 4121 #line 6191 "conf_parser.c" /* yacc.c:1646 */
6191 michael 913 break;
6192    
6193 michael 4114 case 584:
6194 michael 4121 #line 2853 "conf_parser.y" /* yacc.c:1646 */
6195 michael 913 {
6196 michael 3869 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6197 michael 913 }
6198 michael 4121 #line 6199 "conf_parser.c" /* yacc.c:1646 */
6199 michael 913 break;
6200    
6201 michael 4114 case 585:
6202 michael 4121 #line 2856 "conf_parser.y" /* yacc.c:1646 */
6203 michael 913 {
6204 michael 3869 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6205 michael 913 }
6206 michael 4121 #line 6207 "conf_parser.c" /* yacc.c:1646 */
6207 michael 913 break;
6208    
6209 michael 4114 case 586:
6210 michael 4121 #line 2859 "conf_parser.y" /* yacc.c:1646 */
6211 michael 913 {
6212 michael 3869 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6213 michael 913 }
6214 michael 4121 #line 6215 "conf_parser.c" /* yacc.c:1646 */
6215 michael 913 break;
6216    
6217 michael 4114 case 587:
6218 michael 4121 #line 2862 "conf_parser.y" /* yacc.c:1646 */
6219 michael 913 {
6220 michael 3869 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6221 michael 913 }
6222 michael 4121 #line 6223 "conf_parser.c" /* yacc.c:1646 */
6223 michael 913 break;
6224    
6225 michael 4114 case 588:
6226 michael 4121 #line 2865 "conf_parser.y" /* yacc.c:1646 */
6227 michael 913 {
6228 michael 3869 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6229 michael 913 }
6230 michael 4121 #line 6231 "conf_parser.c" /* yacc.c:1646 */
6231 michael 913 break;
6232    
6233 michael 4114 case 589:
6234 michael 4121 #line 2868 "conf_parser.y" /* yacc.c:1646 */
6235 michael 913 {
6236 michael 3869 ConfigFileEntry.oper_umodes |= UMODE_REGONLY;
6237 michael 913 }
6238 michael 4121 #line 6239 "conf_parser.c" /* yacc.c:1646 */
6239 michael 913 break;
6240    
6241 michael 4114 case 590:
6242 michael 4121 #line 2871 "conf_parser.y" /* yacc.c:1646 */
6243 michael 913 {
6244 michael 3869 ConfigFileEntry.oper_umodes |= UMODE_FARCONNECT;
6245 michael 1981 }
6246 michael 4121 #line 6247 "conf_parser.c" /* yacc.c:1646 */
6247 michael 1981 break;
6248    
6249 michael 4114 case 591:
6250 michael 4121 #line 2876 "conf_parser.y" /* yacc.c:1646 */
6251 michael 1981 {
6252 michael 3869 ConfigFileEntry.oper_only_umodes = 0;
6253 michael 1981 }
6254 michael 4121 #line 6255 "conf_parser.c" /* yacc.c:1646 */
6255 michael 1981 break;
6256    
6257 michael 4114 case 595:
6258 michael 4121 #line 2882 "conf_parser.y" /* yacc.c:1646 */
6259 michael 1981 {
6260 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6261 michael 913 }
6262 michael 4121 #line 6263 "conf_parser.c" /* yacc.c:1646 */
6263 michael 913 break;
6264    
6265 michael 4114 case 596:
6266 michael 4121 #line 2885 "conf_parser.y" /* yacc.c:1646 */
6267 michael 913 {
6268 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6269 michael 913 }
6270 michael 4121 #line 6271 "conf_parser.c" /* yacc.c:1646 */
6271 michael 913 break;
6272    
6273 michael 4114 case 597:
6274 michael 4121 #line 2888 "conf_parser.y" /* yacc.c:1646 */
6275 michael 2853 {
6276 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6277 michael 913 }
6278 michael 4121 #line 6279 "conf_parser.c" /* yacc.c:1646 */
6279 michael 913 break;
6280    
6281 michael 4114 case 598:
6282 michael 4121 #line 2891 "conf_parser.y" /* yacc.c:1646 */
6283 michael 3229 {
6284 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6285 michael 913 }
6286 michael 4121 #line 6287 "conf_parser.c" /* yacc.c:1646 */
6287 michael 913 break;
6288    
6289 michael 4114 case 599:
6290 michael 4121 #line 2894 "conf_parser.y" /* yacc.c:1646 */
6291 michael 2196 {
6292 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6293 michael 913 }
6294 michael 4121 #line 6295 "conf_parser.c" /* yacc.c:1646 */
6295 michael 913 break;
6296    
6297 michael 4114 case 600:
6298 michael 4121 #line 2897 "conf_parser.y" /* yacc.c:1646 */
6299 michael 913 {
6300 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6301 michael 913 }
6302 michael 4121 #line 6303 "conf_parser.c" /* yacc.c:1646 */
6303 michael 913 break;
6304    
6305 michael 4114 case 601:
6306 michael 4121 #line 2900 "conf_parser.y" /* yacc.c:1646 */
6307 michael 1547 {
6308 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6309 michael 913 }
6310 michael 4121 #line 6311 "conf_parser.c" /* yacc.c:1646 */
6311 michael 913 break;
6312    
6313 michael 4114 case 602:
6314 michael 4121 #line 2903 "conf_parser.y" /* yacc.c:1646 */
6315 michael 913 {
6316 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6317 michael 913 }
6318 michael 4121 #line 6319 "conf_parser.c" /* yacc.c:1646 */
6319 michael 913 break;
6320    
6321 michael 4114 case 603:
6322 michael 4121 #line 2906 "conf_parser.y" /* yacc.c:1646 */
6323 michael 1294 {
6324 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6325 michael 1294 }
6326 michael 4121 #line 6327 "conf_parser.c" /* yacc.c:1646 */
6327 michael 1294 break;
6328    
6329 michael 4114 case 604:
6330 michael 4121 #line 2909 "conf_parser.y" /* yacc.c:1646 */
6331 michael 913 {
6332 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6333 michael 913 }
6334 michael 4121 #line 6335 "conf_parser.c" /* yacc.c:1646 */
6335 michael 913 break;
6336    
6337 michael 4114 case 605:
6338 michael 4121 #line 2912 "conf_parser.y" /* yacc.c:1646 */
6339 michael 913 {
6340 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6341 michael 913 }
6342 michael 4121 #line 6343 "conf_parser.c" /* yacc.c:1646 */
6343 michael 913 break;
6344    
6345 michael 4114 case 606:
6346 michael 4121 #line 2915 "conf_parser.y" /* yacc.c:1646 */
6347 michael 913 {
6348 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6349 michael 913 }
6350 michael 4121 #line 6351 "conf_parser.c" /* yacc.c:1646 */
6351 michael 913 break;
6352    
6353 michael 4114 case 607:
6354 michael 4121 #line 2918 "conf_parser.y" /* yacc.c:1646 */
6355 michael 913 {
6356 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6357 michael 913 }
6358 michael 4121 #line 6359 "conf_parser.c" /* yacc.c:1646 */
6359 michael 913 break;
6360    
6361 michael 4114 case 608:
6362 michael 4121 #line 2921 "conf_parser.y" /* yacc.c:1646 */
6363 michael 913 {
6364 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6365 michael 913 }
6366 michael 4121 #line 6367 "conf_parser.c" /* yacc.c:1646 */
6367 michael 913 break;
6368    
6369 michael 4114 case 609:
6370 michael 4121 #line 2924 "conf_parser.y" /* yacc.c:1646 */
6371 michael 913 {
6372 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6373 michael 913 }
6374 michael 4121 #line 6375 "conf_parser.c" /* yacc.c:1646 */
6375 michael 913 break;
6376    
6377 michael 4114 case 610:
6378 michael 4121 #line 2927 "conf_parser.y" /* yacc.c:1646 */
6379 michael 913 {
6380 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6381 michael 913 }
6382 michael 4121 #line 6383 "conf_parser.c" /* yacc.c:1646 */
6383 michael 913 break;
6384    
6385 michael 4114 case 611:
6386 michael 4121 #line 2930 "conf_parser.y" /* yacc.c:1646 */
6387 michael 913 {
6388 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6389 michael 913 }
6390 michael 4121 #line 6391 "conf_parser.c" /* yacc.c:1646 */
6391 michael 913 break;
6392    
6393 michael 4114 case 612:
6394 michael 4121 #line 2933 "conf_parser.y" /* yacc.c:1646 */
6395 michael 913 {
6396 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6397 michael 913 }
6398 michael 4121 #line 6399 "conf_parser.c" /* yacc.c:1646 */
6399 michael 913 break;
6400    
6401 michael 4114 case 613:
6402 michael 4121 #line 2936 "conf_parser.y" /* yacc.c:1646 */
6403 michael 913 {
6404 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_REGONLY;
6405 michael 913 }
6406 michael 4121 #line 6407 "conf_parser.c" /* yacc.c:1646 */
6407 michael 913 break;
6408    
6409 michael 4114 case 614:
6410 michael 4121 #line 2939 "conf_parser.y" /* yacc.c:1646 */
6411 michael 1904 {
6412 michael 3869 ConfigFileEntry.oper_only_umodes |= UMODE_FARCONNECT;
6413 michael 1904 }
6414 michael 4121 #line 6415 "conf_parser.c" /* yacc.c:1646 */
6415 michael 1904 break;
6416    
6417 michael 4114 case 615:
6418 michael 4121 #line 2944 "conf_parser.y" /* yacc.c:1646 */
6419 michael 1992 {
6420 michael 3869 ConfigFileEntry.min_nonwildcard = (yyvsp[-1].number);
6421 michael 1992 }
6422 michael 4121 #line 6423 "conf_parser.c" /* yacc.c:1646 */
6423 michael 1992 break;
6424    
6425 michael 4114 case 616:
6426 michael 4121 #line 2949 "conf_parser.y" /* yacc.c:1646 */
6427 michael 913 {
6428 michael 3869 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[-1].number);
6429 michael 1981 }
6430 michael 4121 #line 6431 "conf_parser.c" /* yacc.c:1646 */
6431 michael 1981 break;
6432    
6433 michael 4114 case 617:
6434 michael 4121 #line 2954 "conf_parser.y" /* yacc.c:1646 */
6435 michael 1981 {
6436 michael 3869 ConfigFileEntry.default_floodcount = (yyvsp[-1].number);
6437 michael 1855 }
6438 michael 4121 #line 6439 "conf_parser.c" /* yacc.c:1646 */
6439 michael 1855 break;
6440    
6441 michael 4114 case 636:
6442 michael 4121 #line 2983 "conf_parser.y" /* yacc.c:1646 */
6443 michael 1855 {
6444 michael 3869 ConfigChannel.disable_fake_channels = yylval.number;
6445 michael 913 }
6446 michael 4121 #line 6447 "conf_parser.c" /* yacc.c:1646 */
6447 michael 913 break;
6448    
6449 michael 4114 case 637:
6450 michael 4121 #line 2988 "conf_parser.y" /* yacc.c:1646 */
6451 michael 913 {
6452 michael 3869 ConfigChannel.invite_client_count = (yyvsp[-1].number);
6453 michael 913 }
6454 michael 4121 #line 6455 "conf_parser.c" /* yacc.c:1646 */
6455 michael 913 break;
6456    
6457 michael 4114 case 638:
6458 michael 4121 #line 2993 "conf_parser.y" /* yacc.c:1646 */
6459 michael 1519 {
6460 michael 3869 ConfigChannel.invite_client_time = (yyvsp[-1].number);
6461 michael 1519 }
6462 michael 4121 #line 6463 "conf_parser.c" /* yacc.c:1646 */
6463 michael 1519 break;
6464    
6465 michael 4114 case 639:
6466 michael 4121 #line 2998 "conf_parser.y" /* yacc.c:1646 */
6467 michael 1118 {
6468 michael 3869 ConfigChannel.knock_client_count = (yyvsp[-1].number);
6469 michael 913 }
6470 michael 4121 #line 6471 "conf_parser.c" /* yacc.c:1646 */
6471 michael 913 break;
6472    
6473 michael 4114 case 640:
6474 michael 4121 #line 3003 "conf_parser.y" /* yacc.c:1646 */
6475 michael 913 {
6476 michael 3869 ConfigChannel.knock_client_time = (yyvsp[-1].number);
6477 michael 3762 }
6478 michael 4121 #line 6479 "conf_parser.c" /* yacc.c:1646 */
6479 michael 3762 break;
6480    
6481 michael 4114 case 641:
6482 michael 4121 #line 3008 "conf_parser.y" /* yacc.c:1646 */
6483 michael 3762 {
6484 michael 3869 ConfigChannel.knock_delay_channel = (yyvsp[-1].number);
6485 michael 3762 }
6486 michael 4121 #line 6487 "conf_parser.c" /* yacc.c:1646 */
6487 michael 3762 break;
6488    
6489 michael 4114 case 642:
6490 michael 4121 #line 3013 "conf_parser.y" /* yacc.c:1646 */
6491 michael 913 {
6492 michael 3933 ConfigChannel.max_channels = (yyvsp[-1].number);
6493 michael 913 }
6494 michael 4121 #line 6495 "conf_parser.c" /* yacc.c:1646 */
6495 michael 913 break;
6496    
6497 michael 4114 case 643:
6498 michael 4121 #line 3018 "conf_parser.y" /* yacc.c:1646 */
6499 michael 913 {
6500 michael 3869 ConfigChannel.max_bans = (yyvsp[-1].number);
6501 michael 913 }
6502 michael 4121 #line 6503 "conf_parser.c" /* yacc.c:1646 */
6503 michael 913 break;
6504    
6505 michael 4114 case 644:
6506 michael 4121 #line 3023 "conf_parser.y" /* yacc.c:1646 */
6507 michael 913 {
6508 michael 3869 ConfigChannel.default_split_user_count = (yyvsp[-1].number);
6509 michael 913 }
6510 michael 4121 #line 6511 "conf_parser.c" /* yacc.c:1646 */
6511 michael 913 break;
6512    
6513 michael 4114 case 645:
6514 michael 4121 #line 3028 "conf_parser.y" /* yacc.c:1646 */
6515 michael 913 {
6516 michael 3869 ConfigChannel.default_split_server_count = (yyvsp[-1].number);
6517 michael 913 }
6518 michael 4121 #line 6519 "conf_parser.c" /* yacc.c:1646 */
6519 michael 913 break;
6520    
6521 michael 4114 case 646:
6522 michael 4121 #line 3033 "conf_parser.y" /* yacc.c:1646 */
6523 michael 913 {
6524 michael 3869 ConfigChannel.no_create_on_split = yylval.number;
6525 michael 913 }
6526 michael 4121 #line 6527 "conf_parser.c" /* yacc.c:1646 */
6527 michael 913 break;
6528    
6529 michael 4114 case 647:
6530 michael 4121 #line 3038 "conf_parser.y" /* yacc.c:1646 */
6531 michael 913 {
6532 michael 3869 ConfigChannel.no_join_on_split = yylval.number;
6533 michael 2853 }
6534 michael 4121 #line 6535 "conf_parser.c" /* yacc.c:1646 */
6535 michael 2853 break;
6536    
6537 michael 4114 case 648:
6538 michael 4121 #line 3043 "conf_parser.y" /* yacc.c:1646 */
6539 michael 2853 {
6540 michael 3869 GlobalSetOptions.joinfloodcount = yylval.number;
6541 michael 3513 }
6542 michael 4121 #line 6543 "conf_parser.c" /* yacc.c:1646 */
6543 michael 3513 break;
6544    
6545 michael 4114 case 649:
6546 michael 4121 #line 3048 "conf_parser.y" /* yacc.c:1646 */
6547 michael 3513 {
6548 michael 3869 GlobalSetOptions.joinfloodtime = (yyvsp[-1].number);
6549 michael 3860 }
6550 michael 4121 #line 6551 "conf_parser.c" /* yacc.c:1646 */
6551 michael 3860 break;
6552    
6553 michael 4114 case 662:
6554 michael 4121 #line 3070 "conf_parser.y" /* yacc.c:1646 */
6555 michael 3860 {
6556 michael 2196 if (conf_parser_ctx.pass == 2)
6557     ConfigServerHide.flatten_links = yylval.number;
6558 michael 913 }
6559 michael 4121 #line 6560 "conf_parser.c" /* yacc.c:1646 */
6560 michael 913 break;
6561    
6562 michael 4114 case 663:
6563 michael 4121 #line 3076 "conf_parser.y" /* yacc.c:1646 */
6564 michael 913 {
6565 michael 967 if (conf_parser_ctx.pass == 2)
6566 michael 2196 ConfigServerHide.disable_remote_commands = yylval.number;
6567 michael 913 }
6568 michael 4121 #line 6569 "conf_parser.c" /* yacc.c:1646 */
6569 michael 913 break;
6570    
6571 michael 4114 case 664:
6572 michael 4121 #line 3082 "conf_parser.y" /* yacc.c:1646 */
6573 michael 913 {
6574 michael 967 if (conf_parser_ctx.pass == 2)
6575 michael 913 ConfigServerHide.hide_servers = yylval.number;
6576     }
6577 michael 4121 #line 6578 "conf_parser.c" /* yacc.c:1646 */
6578 michael 913 break;
6579    
6580 michael 4114 case 665:
6581 michael 4121 #line 3088 "conf_parser.y" /* yacc.c:1646 */
6582 michael 913 {
6583 michael 967 if (conf_parser_ctx.pass == 2)
6584 michael 1851 ConfigServerHide.hide_services = yylval.number;
6585     }
6586 michael 4121 #line 6587 "conf_parser.c" /* yacc.c:1646 */
6587 michael 1851 break;
6588    
6589 michael 4114 case 666:
6590 michael 4121 #line 3094 "conf_parser.y" /* yacc.c:1646 */
6591 michael 1851 {
6592     if (conf_parser_ctx.pass == 2)
6593 michael 913 {
6594     MyFree(ConfigServerHide.hidden_name);
6595 michael 1646 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6596 michael 913 }
6597     }
6598 michael 4121 #line 6599 "conf_parser.c" /* yacc.c:1646 */
6599 michael 913 break;
6600    
6601 michael 4114 case 667:
6602 michael 4121 #line 3103 "conf_parser.y" /* yacc.c:1646 */
6603 michael 913 {
6604 michael 967 if (conf_parser_ctx.pass == 2)
6605 michael 913 {
6606 michael 2473 if (((yyvsp[-1].number) > 0) && ConfigServerHide.links_disabled == 1)
6607 michael 913 {
6608 michael 4094 event_write_links_file.when = (yyvsp[-1].number);
6609     event_addish(&event_write_links_file, NULL);
6610 michael 913 ConfigServerHide.links_disabled = 0;
6611     }
6612    
6613 michael 2473 ConfigServerHide.links_delay = (yyvsp[-1].number);
6614 michael 913 }
6615     }
6616 michael 4121 #line 6617 "conf_parser.c" /* yacc.c:1646 */
6617 michael 913 break;
6618    
6619 michael 4114 case 668:
6620 michael 4121 #line 3118 "conf_parser.y" /* yacc.c:1646 */
6621 michael 913 {
6622 michael 967 if (conf_parser_ctx.pass == 2)
6623 michael 913 ConfigServerHide.hidden = yylval.number;
6624     }
6625 michael 4121 #line 6626 "conf_parser.c" /* yacc.c:1646 */
6626 michael 913 break;
6627    
6628 michael 4114 case 669:
6629 michael 4121 #line 3124 "conf_parser.y" /* yacc.c:1646 */
6630 michael 913 {
6631 michael 967 if (conf_parser_ctx.pass == 2)
6632 michael 913 ConfigServerHide.hide_server_ips = yylval.number;
6633     }
6634 michael 4121 #line 6635 "conf_parser.c" /* yacc.c:1646 */
6635 michael 913 break;
6636    
6637    
6638 michael 4121 #line 6639 "conf_parser.c" /* yacc.c:1646 */
6639 michael 913 default: break;
6640     }
6641 michael 1133 /* User semantic actions sometimes alter yychar, and that requires
6642     that yytoken be updated with the new translation. We take the
6643     approach of translating immediately before every use of yytoken.
6644     One alternative is translating here after every semantic action,
6645     but that translation would be missed if the semantic action invokes
6646     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6647     if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6648     incorrect destructor might then be invoked immediately. In the
6649     case of YYERROR or YYBACKUP, subsequent parser actions might lead
6650     to an incorrect destructor call or verbose syntax error message
6651     before the lookahead is translated. */
6652 michael 913 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6653    
6654     YYPOPSTACK (yylen);
6655     yylen = 0;
6656     YY_STACK_PRINT (yyss, yyssp);
6657    
6658     *++yyvsp = yyval;
6659    
6660 michael 2473 /* Now 'shift' the result of the reduction. Determine what state
6661 michael 913 that goes to, based on the state we popped back to and the rule
6662     number reduced by. */
6663    
6664     yyn = yyr1[yyn];
6665    
6666     yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6667     if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6668     yystate = yytable[yystate];
6669     else
6670     yystate = yydefgoto[yyn - YYNTOKENS];
6671    
6672     goto yynewstate;
6673    
6674    
6675 michael 2473 /*--------------------------------------.
6676     | yyerrlab -- here on detecting error. |
6677     `--------------------------------------*/
6678 michael 913 yyerrlab:
6679 michael 1133 /* Make sure we have latest lookahead translation. See comments at
6680     user semantic actions for why this is necessary. */
6681     yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6682    
6683 michael 913 /* If not already recovering from an error, report this error. */
6684     if (!yyerrstatus)
6685     {
6686     ++yynerrs;
6687     #if ! YYERROR_VERBOSE
6688     yyerror (YY_("syntax error"));
6689     #else
6690 michael 1133 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6691     yyssp, yytoken)
6692 michael 913 {
6693 michael 1133 char const *yymsgp = YY_("syntax error");
6694     int yysyntax_error_status;
6695     yysyntax_error_status = YYSYNTAX_ERROR;
6696     if (yysyntax_error_status == 0)
6697     yymsgp = yymsg;
6698     else if (yysyntax_error_status == 1)
6699     {
6700     if (yymsg != yymsgbuf)
6701     YYSTACK_FREE (yymsg);
6702     yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6703     if (!yymsg)
6704     {
6705     yymsg = yymsgbuf;
6706     yymsg_alloc = sizeof yymsgbuf;
6707     yysyntax_error_status = 2;
6708     }
6709     else
6710     {
6711     yysyntax_error_status = YYSYNTAX_ERROR;
6712     yymsgp = yymsg;
6713     }
6714     }
6715     yyerror (yymsgp);
6716     if (yysyntax_error_status == 2)
6717     goto yyexhaustedlab;
6718 michael 913 }
6719 michael 1133 # undef YYSYNTAX_ERROR
6720 michael 913 #endif
6721     }
6722    
6723    
6724    
6725     if (yyerrstatus == 3)
6726     {
6727 michael 967 /* If just tried and failed to reuse lookahead token after an
6728 michael 2473 error, discard it. */
6729 michael 913
6730     if (yychar <= YYEOF)
6731 michael 2473 {
6732     /* Return failure if at end of input. */
6733     if (yychar == YYEOF)
6734     YYABORT;
6735     }
6736 michael 913 else
6737 michael 2473 {
6738     yydestruct ("Error: discarding",
6739     yytoken, &yylval);
6740     yychar = YYEMPTY;
6741     }
6742 michael 913 }
6743    
6744 michael 967 /* Else will try to reuse lookahead token after shifting the error
6745 michael 913 token. */
6746     goto yyerrlab1;
6747    
6748    
6749     /*---------------------------------------------------.
6750     | yyerrorlab -- error raised explicitly by YYERROR. |
6751     `---------------------------------------------------*/
6752     yyerrorlab:
6753    
6754     /* Pacify compilers like GCC when the user code never invokes
6755     YYERROR and the label yyerrorlab therefore never appears in user
6756     code. */
6757     if (/*CONSTCOND*/ 0)
6758     goto yyerrorlab;
6759    
6760 michael 2473 /* Do not reclaim the symbols of the rule whose action triggered
6761 michael 913 this YYERROR. */
6762     YYPOPSTACK (yylen);
6763     yylen = 0;
6764     YY_STACK_PRINT (yyss, yyssp);
6765     yystate = *yyssp;
6766     goto yyerrlab1;
6767    
6768    
6769     /*-------------------------------------------------------------.
6770     | yyerrlab1 -- common code for both syntax error and YYERROR. |
6771     `-------------------------------------------------------------*/
6772     yyerrlab1:
6773 michael 2473 yyerrstatus = 3; /* Each real token shifted decrements this. */
6774 michael 913
6775     for (;;)
6776     {
6777     yyn = yypact[yystate];
6778 michael 1133 if (!yypact_value_is_default (yyn))
6779 michael 2473 {
6780     yyn += YYTERROR;
6781     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6782     {
6783     yyn = yytable[yyn];
6784     if (0 < yyn)
6785     break;
6786     }
6787     }
6788 michael 913
6789     /* Pop the current state because it cannot handle the error token. */
6790     if (yyssp == yyss)
6791 michael 2473 YYABORT;
6792 michael 913
6793    
6794     yydestruct ("Error: popping",
6795 michael 2473 yystos[yystate], yyvsp);
6796 michael 913 YYPOPSTACK (1);
6797     yystate = *yyssp;
6798     YY_STACK_PRINT (yyss, yyssp);
6799     }
6800    
6801 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6802 michael 913 *++yyvsp = yylval;
6803 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_END
6804 michael 913
6805    
6806     /* Shift the error token. */
6807     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6808    
6809     yystate = yyn;
6810     goto yynewstate;
6811    
6812    
6813     /*-------------------------------------.
6814     | yyacceptlab -- YYACCEPT comes here. |
6815     `-------------------------------------*/
6816     yyacceptlab:
6817     yyresult = 0;
6818     goto yyreturn;
6819    
6820     /*-----------------------------------.
6821     | yyabortlab -- YYABORT comes here. |
6822     `-----------------------------------*/
6823     yyabortlab:
6824     yyresult = 1;
6825     goto yyreturn;
6826    
6827 michael 1425 #if !defined yyoverflow || YYERROR_VERBOSE
6828 michael 913 /*-------------------------------------------------.
6829     | yyexhaustedlab -- memory exhaustion comes here. |
6830     `-------------------------------------------------*/
6831     yyexhaustedlab:
6832     yyerror (YY_("memory exhausted"));
6833     yyresult = 2;
6834     /* Fall through. */
6835     #endif
6836    
6837     yyreturn:
6838 michael 967 if (yychar != YYEMPTY)
6839 michael 1133 {
6840     /* Make sure we have latest lookahead translation. See comments at
6841     user semantic actions for why this is necessary. */
6842     yytoken = YYTRANSLATE (yychar);
6843     yydestruct ("Cleanup: discarding lookahead",
6844     yytoken, &yylval);
6845     }
6846 michael 2473 /* Do not reclaim the symbols of the rule whose action triggered
6847 michael 913 this YYABORT or YYACCEPT. */
6848     YYPOPSTACK (yylen);
6849     YY_STACK_PRINT (yyss, yyssp);
6850     while (yyssp != yyss)
6851     {
6852     yydestruct ("Cleanup: popping",
6853 michael 2473 yystos[*yyssp], yyvsp);
6854 michael 913 YYPOPSTACK (1);
6855     }
6856     #ifndef yyoverflow
6857     if (yyss != yyssa)
6858     YYSTACK_FREE (yyss);
6859     #endif
6860     #if YYERROR_VERBOSE
6861     if (yymsg != yymsgbuf)
6862     YYSTACK_FREE (yymsg);
6863     #endif
6864 michael 2473 return yyresult;
6865 michael 913 }

Properties

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