ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4070
Committed: Thu Jun 26 15:36:08 2014 UTC (11 years, 2 months ago) by michael
Content type: text/x-csrc
File size: 222331 byte(s)
Log Message:
- Added proper ECDH support

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

Properties

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