ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/src/y.tab.c
Revision: 139
Committed: Sun Oct 16 06:01:13 2005 UTC (20 years, 9 months ago) by db
Content type: text/x-csrc
File size: 176992 byte(s)
Log Message:
- get rid of map_conf_item and unmap_conf_item
- Use an union in struct ConfItem, but only allocate memory needed


File Contents

# User Rev Content
1 db 126 #include <stdlib.h>
2     #ifndef lint
3     #ifdef __unused
4     __unused
5 adx 30 #endif
6 db 126 static char const
7     yyrcsid[] = "$FreeBSD: src/usr.bin/yacc/skeleton.c,v 1.37 2003/02/12 18:03:55 davidc Exp $";
8     #endif
9     #define YYBYACC 1
10     #define YYMAJOR 1
11     #define YYMINOR 9
12     #define YYLEX yylex()
13     #define YYEMPTY -1
14     #define yyclearin (yychar=(YYEMPTY))
15     #define yyerrok (yyerrflag=0)
16     #define YYRECOVERING() (yyerrflag!=0)
17     #if defined(__cplusplus) || __STDC__
18     static int yygrowstack(void);
19     #else
20     static int yygrowstack();
21     #endif
22     #define YYPREFIX "yy"
23     #line 26 "ircd_parser.y"
24 adx 30
25     #define YY_NO_UNPUT
26     #include <sys/types.h>
27    
28     #include "stdinc.h"
29     #include "ircd.h"
30     #include "s_conf.h"
31     #include "client.h" /* for UMODE_ALL only */
32     #include "modules.h"
33     #include "s_serv.h" /* for CAP_LL / IsCapable */
34     #include "hostmask.h"
35     #include "send.h"
36     #include "listener.h"
37     #include "resv.h"
38     #include "numeric.h"
39     #include "s_user.h"
40    
41     #ifdef HAVE_LIBCRYPTO
42     #include <openssl/rsa.h>
43     #include <openssl/bio.h>
44     #include <openssl/pem.h>
45     #endif
46    
47     static char *class_name = NULL;
48     static struct ConfItem *yy_conf = NULL;
49     static struct AccessItem *yy_aconf = NULL;
50     static struct MatchItem *yy_match_item = NULL;
51     static struct ClassItem *yy_class = NULL;
52     static char *yy_class_name = NULL;
53    
54     static dlink_list col_conf_list = { NULL, NULL, 0 };
55     static dlink_list hub_conf_list = { NULL, NULL, 0 };
56     static dlink_list leaf_conf_list = { NULL, NULL, 0 };
57     static unsigned int listener_flags = 0;
58     static unsigned int regex_ban = 0;
59     static char userbuf[IRCD_BUFSIZE];
60     static char hostbuf[IRCD_BUFSIZE];
61     static char reasonbuf[REASONLEN + 1];
62     static char gecos_name[REALLEN * 4];
63    
64     extern dlink_list gdeny_items; /* XXX */
65    
66     static char *resv_reason = NULL;
67     static char *listener_address = NULL;
68     static int not_atom = 0;
69    
70     struct CollectItem {
71     dlink_node node;
72     char *name;
73     char *user;
74     char *host;
75     char *passwd;
76     int port;
77     int flags;
78     #ifdef HAVE_LIBCRYPTO
79     char *rsa_public_key_file;
80     RSA *rsa_public_key;
81     #endif
82     };
83    
84     static void
85     free_collect_item(struct CollectItem *item)
86     {
87     MyFree(item->name);
88     MyFree(item->user);
89     MyFree(item->host);
90     MyFree(item->passwd);
91     #ifdef HAVE_LIBCRYPTO
92     MyFree(item->rsa_public_key_file);
93     #endif
94     MyFree(item);
95     }
96    
97     static void
98     unhook_hub_leaf_confs(void)
99     {
100     dlink_node *ptr;
101     dlink_node *next_ptr;
102     struct CollectItem *yy_hconf;
103     struct CollectItem *yy_lconf;
104    
105     DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
106     {
107     yy_hconf = ptr->data;
108     dlinkDelete(&yy_hconf->node, &hub_conf_list);
109     free_collect_item(yy_hconf);
110     }
111    
112     DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
113     {
114     yy_lconf = ptr->data;
115     dlinkDelete(&yy_lconf->node, &leaf_conf_list);
116     free_collect_item(yy_lconf);
117     }
118     }
119    
120 michael 109 #line 124 "ircd_parser.y"
121 db 126 typedef union {
122 adx 30 int number;
123     char *string;
124 michael 55 } YYSTYPE;
125 db 126 #line 126 "y.tab.c"
126     #define YYERRCODE 256
127     #define ACCEPT_PASSWORD 257
128     #define ACTION 258
129     #define ADMIN 259
130     #define AFTYPE 260
131     #define T_ALLOW 261
132     #define ANTI_NICK_FLOOD 262
133     #define ANTI_SPAM_EXIT_MESSAGE_TIME 263
134     #define AUTOCONN 264
135     #define T_BLOCK 265
136     #define BURST_AWAY 266
137     #define BURST_TOPICWHO 267
138     #define BYTES 268
139     #define KBYTES 269
140     #define MBYTES 270
141     #define GBYTES 271
142     #define TBYTES 272
143     #define CALLER_ID_WAIT 273
144     #define CAN_FLOOD 274
145     #define CAN_IDLE 275
146     #define CHANNEL 276
147     #define CIDR_BITLEN_IPV4 277
148     #define CIDR_BITLEN_IPV6 278
149     #define CIPHER_PREFERENCE 279
150     #define CLASS 280
151     #define COMPRESSED 281
152     #define COMPRESSION_LEVEL 282
153     #define CONNECT 283
154     #define CONNECTFREQ 284
155     #define CRYPTLINK 285
156     #define DEFAULT_CIPHER_PREFERENCE 286
157     #define DEFAULT_FLOODCOUNT 287
158     #define DEFAULT_SPLIT_SERVER_COUNT 288
159     #define DEFAULT_SPLIT_USER_COUNT 289
160     #define DENY 290
161     #define DESCRIPTION 291
162     #define DIE 292
163     #define DISABLE_AUTH 293
164     #define DISABLE_HIDDEN 294
165     #define DISABLE_LOCAL_CHANNELS 295
166     #define DISABLE_REMOTE_COMMANDS 296
167     #define DOT_IN_IP6_ADDR 297
168     #define DOTS_IN_IDENT 298
169     #define DURATION 299
170     #define EGDPOOL_PATH 300
171     #define EMAIL 301
172     #define ENABLE 302
173     #define ENCRYPTED 303
174     #define EXCEED_LIMIT 304
175     #define EXEMPT 305
176     #define FAILED_OPER_NOTICE 306
177     #define FAKENAME 307
178     #define IRCD_FLAGS 308
179     #define FLATTEN_LINKS 309
180     #define FFAILED_OPERLOG 310
181     #define FKILLLOG 311
182     #define FKLINELOG 312
183     #define FGLINELOG 313
184     #define FIOERRLOG 314
185     #define FOPERLOG 315
186     #define FOPERSPYLOG 316
187     #define FUSERLOG 317
188     #define GECOS 318
189     #define GENERAL 319
190     #define GLINE 320
191     #define GLINES 321
192     #define GLINE_EXEMPT 322
193     #define GLINE_LOG 323
194     #define GLINE_TIME 324
195     #define GLINE_MIN_CIDR 325
196     #define GLINE_MIN_CIDR6 326
197     #define GLOBAL_KILL 327
198     #define IRCD_AUTH 328
199     #define NEED_IDENT 329
200     #define HAVENT_READ_CONF 330
201     #define HIDDEN 331
202     #define HIDDEN_ADMIN 332
203     #define HIDDEN_NAME 333
204     #define HIDDEN_OPER 334
205     #define HIDE_SERVER_IPS 335
206     #define HIDE_SERVERS 336
207     #define HIDE_SPOOF_IPS 337
208     #define HOST 338
209     #define HUB 339
210     #define HUB_MASK 340
211     #define IDLETIME 341
212     #define IGNORE_BOGUS_TS 342
213     #define INVISIBLE_ON_CONNECT 343
214     #define IP 344
215     #define KILL 345
216     #define KILL_CHASE_TIME_LIMIT 346
217     #define KLINE 347
218     #define KLINE_EXEMPT 348
219     #define KLINE_REASON 349
220     #define KLINE_WITH_REASON 350
221     #define KNOCK_DELAY 351
222     #define KNOCK_DELAY_CHANNEL 352
223     #define LAZYLINK 353
224     #define LEAF_MASK 354
225     #define LINKS_DELAY 355
226     #define LISTEN 356
227     #define T_LOG 357
228     #define LOGGING 358
229     #define LOG_LEVEL 359
230     #define MAX_ACCEPT 360
231     #define MAX_BANS 361
232     #define MAX_CHANS_PER_USER 362
233     #define MAX_GLOBAL 363
234     #define MAX_IDENT 364
235     #define MAX_LOCAL 365
236     #define MAX_NICK_CHANGES 366
237     #define MAX_NICK_TIME 367
238     #define MAX_NUMBER 368
239     #define MAX_TARGETS 369
240     #define MESSAGE_LOCALE 370
241     #define MIN_NONWILDCARD 371
242     #define MIN_NONWILDCARD_SIMPLE 372
243     #define MODULE 373
244     #define MODULES 374
245     #define NAME 375
246     #define NEED_PASSWORD 376
247     #define NETWORK_DESC 377
248     #define NETWORK_NAME 378
249     #define NICK 379
250     #define NICK_CHANGES 380
251     #define NO_CREATE_ON_SPLIT 381
252     #define NO_JOIN_ON_SPLIT 382
253     #define NO_OPER_FLOOD 383
254     #define NO_TILDE 384
255     #define NOT 385
256     #define NUMBER 386
257     #define NUMBER_PER_IDENT 387
258     #define NUMBER_PER_CIDR 388
259     #define NUMBER_PER_IP 389
260     #define NUMBER_PER_IP_GLOBAL 390
261     #define OPERATOR 391
262     #define OPERS_BYPASS_CALLERID 392
263     #define OPER_LOG 393
264     #define OPER_ONLY_UMODES 394
265     #define OPER_PASS_RESV 395
266     #define OPER_SPY_T 396
267     #define OPER_UMODES 397
268     #define INVITE_OPS_ONLY 398
269     #define JOIN_FLOOD_COUNT 399
270     #define JOIN_FLOOD_TIME 400
271     #define PACE_WAIT 401
272     #define PACE_WAIT_SIMPLE 402
273     #define PASSWORD 403
274     #define PATH 404
275     #define PING_COOKIE 405
276     #define PING_TIME 406
277     #define PING_WARNING 407
278     #define PORT 408
279     #define QSTRING 409
280     #define QUIET_ON_BAN 410
281     #define REASON 411
282     #define REDIRPORT 412
283     #define REDIRSERV 413
284     #define REGEX_T 414
285     #define REHASH 415
286     #define TREJECT_HOLD_TIME 416
287     #define REMOTE 417
288     #define REMOTEBAN 418
289     #define RESTRICT_CHANNELS 419
290     #define RESTRICTED 420
291     #define RSA_PRIVATE_KEY_FILE 421
292     #define RSA_PUBLIC_KEY_FILE 422
293     #define SSL_CERTIFICATE_FILE 423
294     #define RESV 424
295     #define RESV_EXEMPT 425
296     #define SECONDS 426
297     #define MINUTES 427
298     #define HOURS 428
299     #define DAYS 429
300     #define WEEKS 430
301     #define SENDQ 431
302     #define SEND_PASSWORD 432
303     #define SERVERHIDE 433
304     #define SERVERINFO 434
305     #define SERVLINK_PATH 435
306     #define IRCD_SID 436
307     #define TKLINE_EXPIRE_NOTICES 437
308     #define T_SHARED 438
309     #define T_CLUSTER 439
310     #define TYPE 440
311     #define SHORT_MOTD 441
312     #define SILENT 442
313     #define SPOOF 443
314     #define SPOOF_NOTICE 444
315     #define STATS_I_OPER_ONLY 445
316     #define STATS_K_OPER_ONLY 446
317     #define STATS_O_OPER_ONLY 447
318     #define STATS_P_OPER_ONLY 448
319     #define TBOOL 449
320     #define TMASKED 450
321     #define T_REJECT 451
322     #define TS_MAX_DELTA 452
323     #define TS_WARN_DELTA 453
324     #define TWODOTS 454
325     #define T_ALL 455
326     #define T_BOTS 456
327     #define T_SOFTCALLERID 457
328     #define T_CALLERID 458
329     #define T_CCONN 459
330     #define T_CLIENT_FLOOD 460
331     #define T_DEAF 461
332     #define T_DEBUG 462
333     #define T_DRONE 463
334     #define T_EXTERNAL 464
335     #define T_FULL 465
336     #define T_INVISIBLE 466
337     #define T_IPV4 467
338     #define T_IPV6 468
339     #define T_LOCOPS 469
340     #define T_LOGPATH 470
341     #define T_L_CRIT 471
342     #define T_L_DEBUG 472
343     #define T_L_ERROR 473
344     #define T_L_INFO 474
345     #define T_L_NOTICE 475
346     #define T_L_TRACE 476
347     #define T_L_WARN 477
348     #define T_MAX_CLIENTS 478
349     #define T_NCHANGE 479
350     #define T_OPERWALL 480
351     #define T_REJ 481
352     #define T_SERVNOTICE 482
353     #define T_SKILL 483
354     #define T_SPY 484
355     #define T_SSL 485
356     #define T_UMODES 486
357     #define T_UNAUTH 487
358     #define T_UNRESV 488
359     #define T_UNXLINE 489
360     #define T_WALLOP 490
361     #define THROTTLE_TIME 491
362     #define TOPICBURST 492
363     #define TRUE_NO_OPER_FLOOD 493
364     #define TKLINE 494
365     #define TXLINE 495
366     #define TRESV 496
367     #define UNKLINE 497
368     #define USER 498
369     #define USE_EGD 499
370     #define USE_EXCEPT 500
371     #define USE_INVEX 501
372     #define USE_KNOCK 502
373     #define USE_LOGGING 503
374     #define USE_WHOIS_ACTUALLY 504
375     #define VHOST 505
376     #define VHOST6 506
377     #define XLINE 507
378     #define WARN 508
379     #define WARN_NO_NLINE 509
380     const short yylhs[] = { -1,
381     0, 0, 5, 5, 5, 5, 5, 5, 5, 5,
382     5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
383     5, 5, 5, 5, 2, 2, 1, 1, 1, 1,
384     1, 1, 4, 4, 3, 3, 3, 3, 25, 26,
385     26, 27, 27, 27, 28, 29, 13, 30, 30, 31,
386     31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
387     31, 42, 39, 32, 41, 35, 36, 37, 33, 40,
388     38, 34, 6, 43, 43, 44, 44, 44, 44, 45,
389     47, 46, 7, 48, 48, 49, 49, 49, 49, 49,
390     49, 49, 49, 49, 49, 49, 49, 49, 50, 51,
391     54, 61, 55, 59, 56, 57, 60, 58, 52, 52,
392     52, 52, 52, 52, 52, 53, 63, 8, 62, 62,
393     64, 64, 66, 66, 66, 66, 66, 66, 66, 66,
394     66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
395     66, 66, 66, 66, 66, 67, 65, 68, 69, 86,
396     87, 73, 89, 72, 90, 90, 91, 91, 91, 91,
397     91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
398     91, 91, 91, 91, 74, 75, 81, 76, 77, 78,
399     79, 80, 82, 83, 84, 70, 71, 85, 92, 88,
400 db 134 93, 93, 96, 94, 97, 94, 95, 95, 95, 95,
401 db 126 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
402 db 134 95, 95, 99, 10, 98, 98, 100, 100, 102, 102,
403     102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
404     102, 102, 103, 101, 106, 107, 109, 110, 111, 112,
405     113, 114, 115, 104, 105, 108, 116, 11, 119, 118,
406     120, 120, 121, 121, 117, 117, 122, 122, 122, 122,
407     122, 123, 126, 126, 127, 127, 124, 125, 128, 12,
408     129, 129, 130, 130, 130, 130, 130, 130, 130, 130,
409     130, 130, 130, 130, 130, 130, 130, 130, 130, 131,
410     132, 141, 133, 146, 147, 134, 148, 148, 151, 149,
411     152, 149, 150, 150, 150, 150, 150, 150, 150, 150,
412     150, 150, 135, 136, 137, 144, 138, 139, 140, 142,
413     143, 145, 153, 15, 154, 154, 155, 155, 155, 155,
414     156, 157, 158, 159, 16, 160, 160, 161, 161, 161,
415     161, 162, 163, 165, 164, 166, 166, 167, 167, 167,
416     167, 167, 167, 167, 167, 167, 167, 167, 168, 17,
417     169, 169, 170, 170, 170, 171, 173, 172, 174, 174,
418     175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
419     175, 177, 18, 176, 176, 178, 178, 180, 180, 180,
420     180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
421     180, 180, 180, 180, 180, 180, 181, 179, 182, 183,
422     184, 185, 187, 186, 186, 188, 199, 189, 200, 200,
423     203, 201, 204, 201, 202, 202, 202, 202, 202, 202,
424     197, 194, 196, 195, 193, 190, 191, 192, 198, 205,
425     19, 208, 207, 209, 209, 210, 206, 206, 211, 211,
426     211, 211, 212, 213, 214, 20, 215, 215, 216, 216,
427     216, 217, 218, 21, 219, 219, 220, 220, 221, 222,
428     24, 225, 224, 226, 226, 227, 223, 223, 228, 228,
429     228, 228, 229, 230, 22, 231, 231, 232, 232, 232,
430     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
431     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
432     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
433     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
434     232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
435     232, 232, 283, 284, 281, 285, 286, 282, 243, 233,
436     234, 272, 235, 236, 237, 238, 239, 240, 241, 242,
437     277, 244, 245, 246, 247, 249, 254, 250, 250, 252,
438     252, 251, 266, 267, 253, 255, 256, 257, 258, 260,
439     259, 248, 262, 271, 273, 274, 263, 264, 279, 280,
440     276, 287, 265, 288, 288, 289, 289, 289, 289, 289,
441     289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
442     289, 289, 289, 290, 261, 291, 291, 292, 292, 292,
443     292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
444     292, 292, 292, 292, 292, 269, 270, 268, 275, 278,
445     293, 23, 294, 294, 295, 295, 295, 295, 295, 295,
446     295, 296, 297, 302, 298, 303, 303, 304, 304, 299,
447     300, 305, 301, 306, 306, 307, 307, 9, 308, 308,
448     309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
449     309, 309, 309, 309, 309, 309, 309, 309, 309, 323,
450     310, 311, 312, 313, 315, 316, 317, 318, 319, 314,
451     320, 321, 322, 324, 325, 326, 327, 14, 328, 328,
452     329, 329, 329, 329, 329, 329, 329, 329, 330, 331,
453     335, 332, 334, 333, 336,
454 adx 30 };
455 db 126 const short yylen[] = { 2,
456     0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
457     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
458     1, 1, 2, 2, 0, 1, 2, 3, 3, 3,
459     3, 3, 0, 1, 2, 3, 3, 3, 5, 2,
460     1, 1, 1, 2, 4, 4, 5, 2, 1, 1,
461     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
462     2, 4, 4, 4, 4, 4, 4, 4, 4, 4,
463     4, 4, 5, 2, 1, 1, 1, 1, 2, 4,
464     4, 4, 5, 2, 1, 1, 1, 1, 1, 1,
465     1, 1, 1, 1, 1, 1, 1, 2, 4, 4,
466     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
467     4, 4, 4, 4, 4, 4, 0, 7, 0, 1,
468     2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
469     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
470     1, 1, 1, 1, 2, 4, 1, 4, 4, 4,
471     4, 4, 0, 5, 3, 1, 1, 1, 1, 1,
472     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
473     1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
474     4, 4, 4, 4, 4, 4, 4, 4, 0, 5,
475 db 134 3, 1, 0, 3, 0, 2, 1, 1, 1, 1,
476 db 126 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
477 db 134 1, 1, 0, 7, 0, 1, 2, 1, 1, 1,
478 db 126 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
479     1, 2, 4, 1, 4, 4, 4, 4, 4, 4,
480 db 134 4, 4, 4, 4, 4, 4, 0, 6, 0, 5,
481     3, 1, 1, 1, 2, 1, 1, 1, 1, 1,
482     2, 4, 3, 1, 1, 3, 4, 4, 0, 6,
483     2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
484     1, 1, 1, 1, 1, 1, 1, 1, 2, 4,
485     4, 4, 4, 4, 0, 5, 3, 1, 0, 3,
486     0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
487     1, 1, 4, 4, 4, 4, 4, 4, 4, 4,
488     4, 4, 0, 6, 2, 1, 1, 1, 1, 2,
489     4, 4, 4, 0, 6, 2, 1, 1, 1, 1,
490     2, 4, 4, 0, 5, 3, 1, 1, 1, 1,
491     1, 1, 1, 1, 1, 1, 1, 1, 0, 6,
492     2, 1, 1, 1, 2, 4, 0, 5, 3, 1,
493 db 126 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
494 db 134 1, 0, 7, 0, 1, 2, 1, 1, 1, 1,
495 db 126 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
496 db 134 1, 1, 1, 1, 1, 2, 4, 1, 4, 4,
497     4, 4, 4, 4, 4, 4, 0, 5, 3, 1,
498     0, 3, 0, 2, 1, 1, 1, 1, 1, 1,
499     4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
500     6, 0, 5, 3, 1, 1, 2, 1, 1, 1,
501     1, 1, 4, 4, 0, 6, 2, 1, 1, 1,
502     1, 4, 4, 5, 2, 1, 1, 1, 4, 0,
503     6, 0, 5, 3, 1, 1, 2, 1, 1, 1,
504     1, 1, 4, 4, 5, 2, 1, 1, 1, 1,
505 db 126 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
506     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
507     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
508 db 134 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
509     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
510     1, 1, 4, 4, 4, 4, 4, 4, 4, 4,
511 db 126 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
512     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
513     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
514     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
515 db 134 4, 0, 5, 3, 1, 1, 1, 1, 1, 1,
516 db 126 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
517 db 134 1, 1, 1, 0, 5, 3, 1, 1, 1, 1,
518 db 126 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
519 db 134 1, 1, 1, 1, 1, 4, 4, 4, 4, 4,
520     0, 6, 2, 1, 1, 1, 1, 1, 1, 1,
521     1, 4, 4, 0, 5, 3, 1, 1, 1, 4,
522     4, 0, 5, 3, 1, 1, 1, 5, 2, 1,
523     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
524 db 126 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
525     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
526 db 134 4, 4, 4, 4, 4, 4, 4, 5, 2, 1,
527     1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
528     4, 4, 4, 4, 4,
529 adx 30 };
530 db 126 const short yydefred[] = { 1,
531 db 134 0, 0, 0, 0, 213, 382, 455, 0, 470, 0,
532     641, 269, 440, 247, 0, 0, 117, 323, 0, 0,
533     334, 359, 2, 3, 4, 5, 6, 7, 8, 9,
534 db 126 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
535     20, 21, 22, 23, 24, 0, 0, 0, 0, 0,
536     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
537     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
538 db 134 75, 76, 77, 78, 689, 0, 0, 0, 0, 0,
539 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
540 db 134 0, 0, 0, 0, 670, 671, 672, 673, 674, 675,
541     676, 677, 678, 679, 680, 681, 682, 683, 684, 685,
542     686, 687, 688, 234, 0, 216, 408, 0, 385, 0,
543     468, 0, 0, 466, 467, 0, 542, 0, 0, 0,
544 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
545     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
546 db 134 0, 0, 0, 0, 0, 0, 0, 0, 0, 614,
547     0, 592, 0, 0, 0, 0, 0, 0, 0, 0,
548 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
549 db 134 0, 0, 487, 488, 489, 490, 491, 492, 493, 494,
550     495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
551     505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
552     515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
553     525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
554     535, 536, 537, 538, 539, 540, 541, 0, 0, 0,
555 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
556     0, 0, 0, 0, 0, 85, 86, 87, 88, 89,
557     90, 91, 92, 93, 94, 95, 96, 97, 0, 0,
558 db 134 0, 0, 41, 42, 43, 147, 0, 120, 0, 718,
559     0, 0, 0, 0, 0, 0, 0, 0, 710, 711,
560     712, 713, 714, 715, 716, 717, 0, 0, 0, 0,
561 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
562     50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
563     60, 0, 0, 79, 0, 0, 0, 0, 74, 0,
564     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
565 db 134 0, 0, 0, 0, 0, 0, 0, 0, 669, 0,
566     0, 461, 0, 0, 0, 458, 459, 460, 0, 0,
567     465, 482, 0, 0, 472, 0, 481, 478, 479, 480,
568 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
569     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
570     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573 db 134 0, 0, 0, 0, 0, 486, 651, 662, 0, 0,
574     654, 0, 0, 0, 644, 645, 646, 647, 648, 649,
575     650, 0, 0, 0, 0, 0, 295, 0, 0, 0,
576     0, 0, 0, 0, 0, 0, 0, 0, 0, 272,
577     273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
578     283, 284, 285, 286, 287, 288, 452, 0, 442, 0,
579     0, 451, 448, 449, 450, 0, 249, 0, 0, 0,
580     0, 258, 256, 257, 259, 260, 98, 0, 0, 0,
581 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
582     84, 44, 0, 0, 0, 40, 0, 0, 0, 0,
583 db 134 0, 0, 326, 327, 328, 329, 0, 0, 0, 0,
584     0, 0, 0, 0, 709, 61, 0, 0, 0, 0,
585 db 126 0, 0, 0, 0, 0, 0, 0, 0, 48, 0,
586 db 134 0, 344, 0, 0, 337, 338, 339, 340, 0, 0,
587     367, 0, 362, 363, 364, 0, 0, 0, 73, 0,
588 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
589 db 134 0, 0, 0, 0, 0, 0, 0, 0, 668, 0,
590 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
591 db 134 0, 0, 0, 0, 218, 219, 220, 221, 222, 223,
592     224, 225, 226, 227, 228, 229, 230, 231, 0, 0,
593     0, 0, 0, 0, 0, 0, 0, 0, 417, 0,
594     0, 0, 0, 0, 0, 0, 0, 0, 387, 388,
595     389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
596     399, 400, 401, 402, 403, 404, 405, 0, 0, 0,
597     457, 0, 464, 0, 0, 0, 0, 477, 0, 0,
598 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
599     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
600     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
601     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
602     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
603 db 134 0, 0, 0, 0, 0, 485, 0, 0, 0, 0,
604     0, 0, 0, 643, 289, 0, 0, 0, 0, 0,
605 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
606 db 134 0, 0, 271, 0, 0, 0, 0, 447, 261, 0,
607     0, 0, 0, 0, 255, 0, 0, 0, 0, 0,
608 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
609     0, 0, 0, 83, 0, 0, 39, 0, 0, 0,
610     0, 0, 189, 0, 0, 0, 0, 0, 0, 0,
611     0, 0, 0, 0, 0, 0, 153, 0, 0, 0,
612     0, 122, 123, 124, 125, 126, 127, 128, 129, 130,
613     131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
614 db 134 141, 142, 143, 144, 330, 0, 0, 0, 0, 325,
615     0, 0, 0, 0, 0, 0, 0, 708, 0, 0,
616 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
617 db 134 341, 0, 0, 0, 0, 336, 365, 0, 0, 0,
618     361, 82, 81, 80, 705, 702, 701, 691, 0, 0,
619     0, 0, 0, 26, 27, 695, 696, 700, 698, 703,
620     704, 697, 706, 707, 699, 690, 692, 693, 694, 232,
621 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
622 db 134 0, 0, 0, 0, 217, 406, 0, 0, 0, 0,
623 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
624 db 134 0, 0, 0, 0, 0, 386, 0, 0, 456, 469,
625     0, 0, 0, 471, 554, 558, 545, 573, 586, 585,
626     638, 590, 552, 640, 582, 588, 553, 543, 544, 561,
627     550, 581, 551, 564, 549, 563, 562, 557, 556, 555,
628     583, 580, 636, 637, 577, 574, 618, 633, 634, 619,
629     620, 621, 628, 622, 631, 635, 624, 629, 625, 630,
630     623, 627, 626, 632, 0, 617, 579, 596, 611, 612,
631     597, 598, 599, 606, 600, 609, 613, 602, 607, 603,
632     608, 601, 605, 604, 610, 0, 595, 572, 575, 589,
633     547, 584, 548, 576, 570, 571, 568, 569, 566, 567,
634     560, 559, 0, 0, 0, 34, 35, 639, 591, 578,
635     587, 546, 565, 0, 0, 0, 0, 0, 0, 642,
636 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
637 db 134 0, 0, 0, 0, 0, 0, 270, 0, 0, 0,
638     441, 0, 0, 0, 0, 0, 264, 248, 102, 108,
639 db 126 106, 105, 107, 103, 104, 101, 109, 115, 110, 114,
640     112, 113, 111, 100, 99, 116, 45, 46, 145, 0,
641     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
642     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
643 db 134 0, 0, 121, 0, 0, 0, 324, 724, 719, 723,
644     721, 725, 720, 722, 66, 72, 64, 68, 67, 63,
645     62, 65, 71, 69, 70, 0, 0, 0, 335, 0,
646     0, 360, 28, 29, 30, 31, 32, 0, 0, 0,
647 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
648 db 134 214, 0, 0, 0, 0, 0, 0, 0, 0, 0,
649 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
650 db 134 383, 462, 463, 483, 484, 476, 0, 475, 615, 0,
651     593, 0, 36, 37, 38, 667, 666, 0, 665, 653,
652     652, 659, 658, 0, 657, 661, 660, 316, 293, 294,
653     315, 299, 0, 298, 0, 318, 314, 313, 322, 317,
654     291, 321, 320, 319, 292, 290, 454, 446, 0, 445,
655     453, 254, 253, 0, 252, 268, 267, 0, 262, 0,
656 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
657     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
658 db 134 0, 0, 118, 332, 333, 331, 342, 348, 354, 358,
659     357, 356, 353, 349, 352, 355, 350, 351, 0, 347,
660     343, 366, 371, 377, 381, 380, 379, 376, 372, 375,
661     378, 373, 374, 0, 370, 244, 245, 238, 240, 242,
662     241, 239, 233, 246, 237, 235, 236, 243, 412, 414,
663     415, 435, 439, 438, 434, 433, 432, 416, 421, 0,
664     420, 0, 409, 436, 437, 407, 413, 431, 411, 410,
665     473, 0, 616, 594, 663, 0, 655, 0, 0, 296,
666     0, 307, 308, 304, 310, 306, 305, 312, 309, 311,
667     303, 302, 443, 0, 250, 0, 266, 263, 185, 152,
668     183, 150, 193, 0, 192, 0, 181, 175, 186, 187,
669     178, 146, 182, 149, 184, 176, 177, 151, 188, 157,
670     172, 173, 158, 159, 160, 167, 161, 170, 174, 163,
671     168, 164, 169, 162, 166, 165, 171, 0, 156, 180,
672     148, 179, 345, 0, 368, 0, 0, 418, 0, 428,
673     429, 426, 427, 425, 430, 424, 474, 664, 656, 300,
674     297, 444, 251, 0, 190, 0, 205, 203, 212, 202,
675     197, 206, 210, 199, 207, 209, 204, 198, 211, 208,
676     200, 201, 196, 154, 0, 346, 369, 422, 419, 194,
677     191, 155,
678 adx 30 };
679 db 126 const short yydgoto[] = { 1,
680     884, 885, 1036, 1037, 23, 24, 25, 26, 27, 28,
681     29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
682     39, 40, 41, 42, 43, 272, 273, 274, 275, 309,
683     310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
684     320, 321, 70, 71, 72, 73, 74, 255, 256, 257,
685     258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
686     268, 277, 60, 811, 278, 812, 813, 814, 815, 816,
687     817, 818, 819, 820, 821, 822, 823, 824, 825, 826,
688 db 134 827, 828, 829, 830, 831, 832, 833, 834, 1118, 1408,
689     1409, 1104, 1374, 1375, 1453, 1434, 1376, 115, 48, 604,
690     116, 605, 606, 607, 608, 609, 610, 611, 612, 613,
691     614, 615, 616, 617, 618, 57, 491, 492, 760, 1244,
692     1245, 493, 494, 495, 496, 1076, 1077, 55, 459, 460,
693     461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
694     471, 472, 473, 474, 475, 476, 740, 1223, 1224, 1362,
695     1349, 1225, 61, 522, 523, 524, 525, 526, 64, 554,
696     555, 556, 557, 558, 863, 1289, 1290, 65, 562, 563,
697     564, 565, 869, 1304, 1305, 118, 49, 638, 119, 639,
698     640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
699     650, 651, 652, 653, 654, 655, 656, 657, 926, 1330,
700     1331, 1426, 1417, 1332, 56, 481, 482, 755, 1239, 1240,
701     483, 484, 485, 50, 355, 356, 357, 358, 123, 124,
702     125, 52, 366, 367, 666, 1197, 1198, 368, 369, 370,
703     182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
704     192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
705     202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
706     212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
707     222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
708     232, 233, 234, 235, 236, 237, 405, 1016, 1017, 403,
709     995, 996, 54, 434, 435, 436, 437, 438, 439, 440,
710     441, 730, 1214, 1215, 727, 1208, 1209, 94, 95, 96,
711     97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
712     107, 108, 109, 110, 111, 112, 113, 288, 289, 290,
713     291, 292, 293, 294, 295, 296,
714 adx 30 };
715 db 126 const short yysindex[] = { 0,
716     645, -26, -87, -73, 0, 0, 0, -57, 0, -35,
717     0, 0, 0, 0, -34, -31, 0, 0, -27, -14,
718     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
719     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
720 db 134 0, 0, 0, 0, 0, -236, 548, -394, -295, -2,
721     -237, 3, 265, 8, 9, 10, 19, 147, -238, -284,
722     22, -231, 308, 24, 27, 90, 92, 93, 95, -119,
723     0, 0, 0, 0, 0, 100, 101, 122, 124, 125,
724     130, 131, 132, 134, 135, 136, 139, 146, 152, 153,
725     156, 161, 164, 85, 0, 0, 0, 0, 0, 0,
726 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
727 db 134 0, 0, 0, 0, 106, 0, 0, 109, 0, -222,
728     0, 172, -113, 0, 0, -159, 0, 174, 175, 179,
729     182, 198, 199, 205, 206, 207, 208, 215, 226, 227,
730     248, 249, 256, 257, 260, 278, 279, 282, 284, 286,
731     296, 297, 298, 299, 306, 307, 309, 311, 314, 0,
732     315, 0, 320, 322, 323, 328, 330, 334, 335, 337,
733     338, 340, 343, 344, 345, 346, 349, 351, 355, 357,
734     361, -122, 0, 0, 0, 0, 0, 0, 0, 0,
735 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
736     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
737     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
738     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
739     0, 0, 0, 0, 0, 0, 0, -212, 612, -234,
740 db 134 -227, 365, 364, 369, 370, 371, 372, 374, 378, 379,
741 db 126 380, 381, 383, 384, -15, 0, 0, 0, 0, 0,
742 db 134 0, 0, 0, 0, 0, 0, 0, 0, 367, 393,
743     404, -88, 0, 0, 0, 0, 348, 0, -199, 0,
744     407, 408, 411, 421, 425, 426, 429, 318, 0, 0,
745     0, 0, 0, 0, 0, 0, 432, 431, 433, 436,
746     437, 438, 442, 446, 448, 449, 450, 452, -86, 0,
747 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
748 db 134 0, -252, -246, 0, 84, 107, 110, 455, 0, 66,
749     138, 143, 73, 144, 144, 148, 149, 74, 83, 87,
750     151, 144, 96, 97, 108, 111, 117, 461, 0, 698,
751     481, 0, 472, 478, -118, 0, 0, 0, 133, 482,
752     0, 0, 489, 493, 0, -104, 0, 0, 0, 0,
753     118, 144, 121, 144, 169, 150, 170, 123, 126, 127,
754     187, 171, 140, 193, 195, 196, 145, 144, 155, 160,
755     197, 183, 173, 202, 210, 144, 211, 184, 212, 214,
756     177, 180, 523, 181, 540, 144, 144, 189, 144, 201,
757     190, 192, -408, -402, 194, 209, 144, 144, 219, 144,
758     216, 220, 222, 223, 554, 0, 0, 0, 557, 559,
759     0, 560, 562, -101, 0, 0, 0, 0, 0, 0,
760     0, 565, 567, 572, 581, 583, 0, 584, 585, 594,
761     595, 600, 603, 613, 614, 615, 616, 617, 105, 0,
762 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
763 db 134 0, 0, 0, 0, 0, 0, 0, 618, 0, 621,
764     -108, 0, 0, 0, 0, 625, 0, 627, 628, 629,
765     -54, 0, 0, 0, 0, 0, 0, 287, 288, 289,
766     290, 292, 294, 295, 300, 2, 305, 310, 242, 634,
767     0, 0, 312, 313, 636, 0, 360, 646, 647, 654,
768     655, -97, 0, 0, 0, 0, 271, 274, 277, 319,
769     281, 285, 144, 668, 0, 0, 324, 293, 327, 339,
770     341, 342, 350, 358, 353, 362, 363, 684, 0, 687,
771 db 126 686, 0, 688, -98, 0, 0, 0, 0, 693, 692,
772 db 134 0, -120, 0, 0, 0, 695, 696, 711, 0, 714,
773     720, 721, 722, -64, 724, 728, 731, 732, 735, 736,
774     737, 739, 742, 743, 744, 747, 749, 750, 0, 751,
775 db 126 755, 756, 757, 761, 762, 763, 765, 766, 767, 768,
776     769, 770, 771, 137, 0, 0, 0, 0, 0, 0,
777 db 134 0, 0, 0, 0, 0, 0, 0, 0, 752, 772,
778     773, 777, 778, 780, 781, 783, 786, 787, 0, 788,
779     789, 790, 791, 793, 794, 798, 801, 48, 0, 0,
780 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
781 db 134 0, 0, 0, 0, 0, 0, 0, 416, 451, 804,
782     0, 805, 0, 456, 457, 809, 812, 0, 813, 814,
783     815, 816, 817, 818, 819, 820, 822, 825, 826, 828,
784     834, 835, 836, 837, 838, 839, 843, 846, 847, 848,
785     849, 852, 853, 855, 858, 859, 860, 863, 864, 865,
786     729, 867, 764, 868, 872, 873, 874, 877, 878, 879,
787     880, 881, 883, 884, 885, 890, 892, 893, -217, 896,
788     897, 898, 900, 902, 906, 0, 907, 144, 520, 910,
789     568, 569, 915, 0, 0, 530, 576, 532, 538, 928,
790     542, 543, 544, 545, 550, 591, 619, 593, 597, 555,
791     598, 949, 0, 601, 948, 602, 953, 0, 0, 955,
792     605, 608, 632, 961, 0, 962, 963, 964, 967, 969,
793     970, 971, 974, 975, 976, 978, 980, 981, 982, 983,
794     984, 985, 987, 0, 988, 992, 0, 994, 993, 997,
795     998, 999, 0, 1003, 1004, 1006, 1007, 1009, 1013, 1014,
796     1015, 1016, 1019, 1020, 1021, 1027, 0, 1028, 1029, 1030,
797 db 126 -69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
798     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
799 db 134 0, 0, 0, 0, 0, 683, 689, 691, 1035, 0,
800     1036, 1037, 1038, 1042, 1043, 1047, 1049, 0, 1052, 1053,
801     1054, 1055, 1056, 1057, 1059, 1060, 1061, 1062, 1063, 0,
802     0, 715, 1064, 717, 1068, 0, 0, 719, 1069, 1072,
803 db 126 0, 0, 0, 0, 0, 0, 0, 0, 144, 144,
804     144, 144, 144, 0, 0, 0, 0, 0, 0, 0,
805     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
806 db 134 746, 753, 144, 760, 774, 775, 776, 726, 779, 782,
807     144, 144, 219, 1074, 0, 0, 738, -399, 674, 740,
808     741, 702, 703, 707, 748, 1077, 754, 792, 795, 796,
809     784, 797, 806, 808, 1082, 0, 1099, 1100, 0, 0,
810     1105, 1107, 758, 0, 0, 0, 0, 0, 0, 0,
811 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
812     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
813     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
814     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
815     0, 0, 0, 0, -1, 0, 0, 0, 0, 0,
816     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
817     0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
818     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
819 db 134 0, 0, 219, 219, 219, 0, 0, 0, 0, 0,
820     0, 0, 0, -242, 1110, 1112, -233, 1116, 1117, 0,
821     1118, 1119, 1124, 1125, 811, 1130, 1138, 1140, 1141, 1143,
822     1144, 1148, 1155, 1159, 1165, 1168, 0, 1172, 821, 1173,
823     0, -318, 1175, 1177, 785, 5, 0, 0, 0, 0,
824 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
825     0, 0, 0, 0, 0, 0, 0, 0, 0, 800,
826 db 134 829, 803, 810, 1176, 823, 824, 827, 841, 842, 831,
827     844, 832, 845, 850, 851, 833, 854, 1189, 856, 857,
828     861, 1194, 0, 1203, 1208, 1210, 0, 0, 0, 0,
829 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
830 db 134 0, 0, 0, 0, 0, 1211, 648, 1212, 0, 1215,
831     685, 0, 0, 0, 0, 0, 0, 1216, 1218, 1225,
832     1226, 1228, 1229, 1233, 1236, 1237, 1238, 1239, 1242, 1243,
833     0, 1245, 1247, 1248, 1249, 1250, 1252, 1253, 1254, 1255,
834     1256, 931, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265,
835 db 126 0, 0, 0, 0, 0, 0, 15, 0, 0, 729,
836     0, 764, 0, 0, 0, 0, 0, 17, 0, 0,
837     0, 0, 0, 23, 0, 0, 0, 0, 0, 0,
838 db 134 0, 0, 26, 0, 709, 0, 0, 0, 0, 0,
839 db 126 0, 0, 0, 0, 0, 0, 0, 0, 35, 0,
840 db 134 0, 0, 0, 36, 0, 0, 0, 939, 0, 632,
841     1267, 1268, 1269, 1270, 945, 1272, 1273, 1274, 1275, 1276,
842 db 126 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 799, 1285,
843     1286, 1287, 0, 0, 0, 0, 0, 0, 0, 0,
844     0, 0, 0, 0, 0, 0, 0, 0, 47, 0,
845     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
846     0, 0, 0, 49, 0, 0, 0, 0, 0, 0,
847     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
848 db 134 0, 0, 0, 0, 0, 0, 0, 0, 0, 57,
849     0, -255, 0, 0, 0, 0, 0, 0, 0, 0,
850     0, 758, 0, 0, 0, -242, 0, -233, 709, 0,
851     811, 0, 0, 0, 0, 0, 0, 0, 0, 0,
852     0, 0, 0, 821, 0, -318, 0, 0, 0, 0,
853     0, 0, 0, 68, 0, 465, 0, 0, 0, 0,
854 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
855     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
856 db 134 0, 0, 0, 0, 0, 0, 0, 69, 0, 0,
857     0, 0, 0, 648, 0, 685, -255, 0, 931, 0,
858 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
859 db 134 0, 0, 0, 465, 0, 945, 0, 0, 0, 0,
860     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
861     0, 0, 0, 0, 799, 0, 0, 0, 0, 0,
862     0, 0,
863 adx 30 };
864 db 126 const short yyrindex[] = { 0,
865     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
866     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
867     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
868     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
869     0, 0, 0, 0, 0, 0, 0, 1224, 1227, 0,
870     0, 0, 0, 0, 0, 0, 0, 0, 0, 1230,
871     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
872     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
873     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
874     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
875     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
876     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
877     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
878     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
879     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
880     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
881     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
882     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
883     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
884     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
885     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
886     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
887     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
888     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
889     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
890     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
891     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
892     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
893     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
894     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
895     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
896     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
897     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
898     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
899     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
900     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
901     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
902     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
903     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
904     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
905     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
906     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
907     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
908     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
909     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
910     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
911     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
912     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
913     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
914     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
915     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
916     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
917     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
918     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
919     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
920     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
921     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
922     0, 0, 0, 1289, 0, 0, 0, 0, 0, 0,
923     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
924     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
925     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
926     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
927     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
928     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
929     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
930     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
931     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
932     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
933     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
934     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
935     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
936     0, 0, 0, 0, 0, 0, 0, 0, 1290, 0,
937     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
938     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
939     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
940     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
941     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
942     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
943     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
944     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
945     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
946     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
947     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
948     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
949     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
950     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
951     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
952     0, 0, 0, 0, 0, 0, 0, 0, 1289, 1289,
953     1289, 1289, 1289, 0, 0, 0, 0, 0, 0, 0,
954     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
955     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
956     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
957     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
958     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
959     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
960     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
961     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
962     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
963     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
964     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
965     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
966     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
967     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
968     0, 0, 1290, 1290, 1290, 0, 0, 0, 0, 0,
969     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
970 db 134 0, 0, 0, 0, 723, 0, 0, 0, 0, 0,
971 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
972 db 134 0, 0, 0, 0, 71, 0, 0, 0, 0, 0,
973 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
974     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
975     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
976     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
977     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
978     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
979     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
980     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
981     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
982     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
983 db 134 0, -250, 0, 0, 0, 0, 0, 0, 0, 0,
984 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
985     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
986     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
987     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
988     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
989     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
990 db 134 0, 0, 0, 0, 473, 0, 0, 0, 0, 0,
991 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
992     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
993     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
994     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
995     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
996     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
997     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
998     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
999     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1000 db 134 723, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1001 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1002     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1003     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1004     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1005     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1006 db 134 0, 0, 0, 0, 0, 0, 0, 0, -250, 0,
1007 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1008 db 134 0, 0, 0, 0, 0, 473, 0, 0, 0, 0,
1009 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1010     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1011 db 134 0, 0,
1012 adx 30 };
1013 db 126 const short yygindex[] = { 0,
1014 db 134 -334, -431, -417, -915, 0, 0, 0, 0, 0, 0,
1015 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1016     0, 0, 0, 0, 0, 0, 1079, 0, 0, 0,
1017     1045, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1018     0, 0, 0, 1288, 0, 0, 0, 0, 1097, 0,
1019     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1020     0, 0, 0, 0, 0, 546, 0, 0, 0, 0,
1021     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1022     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1023 db 134 -100, 0, 0, -80, -75, 0, 0, 0, 0, 0,
1024     0, 759, 0, 0, 0, 0, 0, 0, 0, 0,
1025 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1026 db 134 -6, 870, 0, 0, 0, 0, 112, 0, 0, 905,
1027 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1028 db 134 0, 0, 0, 0, 0, 0, 0, 0, 14, 18,
1029     0, 0, 0, 0, 862, 0, 0, 0, 0, 0,
1030     840, 0, 0, 0, 0, 0, -48, 0, 0, 807,
1031     0, 0, 0, 0, -46, 0, 0, 0, 0, 730,
1032 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1033     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1034 db 134 -47, -44, 0, 0, 0, 0, 0, 0, 0, 7,
1035     894, 0, 0, 0, 0, 1022, 0, 0, 0, 1251,
1036     0, 0, 0, 0, 0, 0, 34, 1012, 0, 0,
1037     0, 1197, 0, 0, 0, 0, 0, 0, 0, 0,
1038 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1039     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1040     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1041     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1042 db 134 0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
1043     0, 185, 0, 0, 947, 0, 0, 0, 0, 0,
1044     0, 0, 0, 38, 0, 0, 37, 0, 1293, 0,
1045 db 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1046 db 134 0, 0, 0, 0, 0, 0, 0, 0, 1094, 0,
1047     0, 0, 0, 0, 0, 0,
1048 adx 30 };
1049 db 126 #define YYTABLESIZE 1394
1050     const short yytable[] = { 575,
1051 db 134 576, 720, 425, 550, 870, 328, 660, 583, 1420, 559,
1052     1421, 360, 1242, 423, 114, 423, 757, 269, 121, 66,
1053     667, 477, 1206, 733, 280, 1422, 865, 839, 486, 1423,
1054     423, 1212, 44, 352, 423, 46, 515, 670, 548, 672,
1055     711, 712, 1200, 427, 1202, 428, 713, 714, 1250, 47,
1056     1033, 1034, 1035, 686, 67, 1122, 518, 1199, 1342, 1201,
1057     1346, 694, 281, 1249, 68, 51, 1348, 1173, 1174, 1351,
1058     764, 704, 705, 1341, 707, 1345, 519, 282, 1364, 1366,
1059     487, 1347, 717, 718, 1350, 721, 429, 53, 58, 430,
1060     1414, 59, 1416, 1363, 1365, 62, 362, 1424, 45, 283,
1061     1419, 284, 423, 285, 286, 1413, 122, 1415, 63, 510,
1062     488, 1436, 1455, 117, 265, 1418, 489, 1203, 1204, 1205,
1063     120, 353, 551, 287, 276, 126, 1435, 1454, 560, 265,
1064     238, 239, 240, 127, 270, 559, 66, 352, 69, 128,
1065     129, 241, 121, 130, 279, 431, 322, 477, 324, 323,
1066     131, 362, 325, 326, 427, 327, 428, 550, 518, 132,
1067     330, 331, 432, 133, 134, 271, 1243, 269, 719, 297,
1068 db 126 135, 67, 935, 136, 137, 138, 478, 139, 519, 520,
1069 db 134 490, 68, 332, 140, 333, 334, 788, 552, 354, 789,
1070     335, 336, 337, 561, 338, 339, 340, 429, 847, 341,
1071     430, 486, 141, 142, 298, 479, 342, 143, 1207, 348,
1072     790, 521, 343, 344, 144, 363, 345, 1213, 145, 146,
1073     147, 346, 791, 148, 347, 353, 149, 150, 350, 752,
1074     122, 351, 359, 792, 371, 372, 1425, 151, 793, 373,
1075     242, 423, 374, 152, 153, 553, 154, 155, 156, 157,
1076     794, 364, 299, 487, 560, 69, 431, 795, 375, 376,
1077     158, 914, 796, 480, 797, 377, 378, 379, 380, 159,
1078     363, 160, 161, 432, 162, 381, 551, 798, 163, 164,
1079     365, 520, 165, 488, 270, 433, 382, 383, 300, 489,
1080 db 126 301, 302, 354, 166, 243, 244, 245, 246, 247, 248,
1081 db 134 249, 250, 478, 619, 620, 799, 364, 621, 384, 385,
1082     800, 622, 167, 521, 168, 271, 386, 387, 169, 561,
1083     388, 574, 170, 171, 172, 173, 623, 624, 625, 174,
1084     175, 479, 626, 801, 303, 365, 304, 176, 389, 390,
1085     75, 552, 391, 251, 392, 802, 393, 803, 804, 305,
1086     627, 76, 805, 490, 628, 629, 394, 395, 396, 397,
1087     442, 879, 880, 881, 882, 883, 398, 399, 177, 400,
1088     178, 401, 77, 78, 402, 404, 179, 252, 443, 79,
1089     406, 180, 407, 408, 444, 630, 181, 631, 409, 480,
1090     410, 306, 590, 1045, 411, 412, 433, 413, 414, 553,
1091     415, 632, 242, 416, 417, 418, 419, 445, 446, 420,
1092     806, 421, 447, 591, 592, 422, 807, 423, 307, 308,
1093     593, 424, 633, 497, 498, 512, 448, 808, 809, 499,
1094 db 126 500, 501, 502, 449, 503, 80, 81, 810, 504, 505,
1095     506, 507, 534, 508, 509, 82, 83, 1153, 1154, 1155,
1096 db 134 1156, 1157, 450, 513, 253, 634, 243, 244, 245, 246,
1097     247, 248, 249, 250, 514, 84, 85, 527, 528, 635,
1098     517, 529, 774, 775, 776, 777, 778, 779, 780, 636,
1099     451, 530, 86, 87, 88, 531, 532, 254, 452, 533,
1100     536, 537, 566, 538, 89, 1170, 539, 540, 541, 594,
1101     595, 596, 542, 90, 597, 251, 543, 453, 544, 545,
1102     546, 598, 547, 569, 570, 567, 454, 455, 568, 589,
1103     127, 573, 579, 571, 599, 600, 128, 129, 572, 574,
1104     130, 580, 658, 577, 578, 581, 582, 131, 659, 252,
1105     663, 662, 601, 602, 584, 585, 132, 456, 457, 664,
1106     133, 134, 637, 665, 673, 675, 586, 135, 674, 587,
1107 db 126 136, 137, 138, 297, 139, 588, 669, 603, 1160, 671,
1108 db 134 140, 676, 679, 280, 677, 678, 1168, 1169, 682, 680,
1109     683, 684, 689, 701, 91, 92, 93, 692, 681, 141,
1110     142, 690, 696, 685, 143, 693, 695, 697, 298, 698,
1111     703, 144, 458, 687, 719, 145, 146, 147, 688, 708,
1112     148, 281, 726, 149, 150, 788, 253, 728, 789, 729,
1113     731, 691, 732, 735, 151, 699, 282, 736, 700, 702,
1114     152, 153, 737, 154, 155, 156, 157, 706, 709, 790,
1115     710, 738, 715, 739, 741, 742, 299, 158, 283, 254,
1116     284, 791, 285, 286, 743, 744, 159, 716, 160, 161,
1117     745, 162, 792, 746, 722, 163, 164, 793, 723, 165,
1118     724, 725, 287, 747, 748, 749, 750, 751, 754, 794,
1119     166, 756, 300, 759, 301, 302, 795, 761, 762, 763,
1120     783, 796, 784, 797, 787, 766, 767, 768, 769, 167,
1121     770, 168, 771, 772, 835, 169, 798, 836, 773, 170,
1122     171, 172, 173, 781, 837, 838, 174, 175, 782, 841,
1123     785, 786, 842, 1437, 176, 843, 848, 844, 303, 845,
1124     304, 195, 849, 846, 799, 851, 619, 620, 857, 800,
1125     621, 850, 860, 305, 622, 861, 862, 852, 864, 853,
1126     854, 867, 868, 872, 873, 177, 1438, 178, 855, 623,
1127     624, 625, 801, 179, 195, 626, 856, 1439, 180, 874,
1128     858, 859, 875, 181, 802, 195, 803, 804, 876, 877,
1129     878, 805, 886, 627, 1440, 306, 887, 628, 629, 888,
1130     889, 1441, 195, 890, 891, 892, 1442, 893, 1443, 195,
1131     894, 895, 896, 75, 195, 897, 195, 898, 899, 900,
1132     916, 1444, 307, 308, 76, 901, 902, 903, 630, 195,
1133 db 126 631, 904, 905, 906, 937, 907, 908, 909, 910, 911,
1134 db 134 912, 913, 917, 918, 632, 77, 78, 919, 920, 806,
1135     921, 922, 79, 923, 1445, 807, 924, 925, 927, 928,
1136     929, 930, 195, 931, 932, 633, 808, 809, 933, 938,
1137     1446, 934, 939, 940, 941, 942, 810, 442, 195, 943,
1138     944, 945, 946, 947, 948, 949, 950, 951, 952, 1447,
1139     953, 1448, 1449, 954, 955, 443, 956, 195, 634, 195,
1140     195, 444, 957, 958, 959, 960, 961, 962, 80, 81,
1141     2, 963, 635, 3, 964, 965, 966, 967, 82, 83,
1142     968, 969, 636, 970, 445, 446, 971, 972, 973, 447,
1143     4, 974, 975, 976, 5, 997, 1018, 6, 84, 85,
1144     1019, 1020, 1021, 448, 7, 1022, 1023, 1024, 1025, 1026,
1145     449, 1027, 1028, 1029, 1450, 86, 87, 88, 1030, 8,
1146     1031, 1032, 195, 590, 1038, 1039, 1040, 89, 1041, 450,
1147     1042, 1451, 9, 10, 1043, 11, 90, 1044, 1046, 195,
1148     1047, 1452, 12, 1050, 591, 592, 1048, 1049, 1051, 195,
1149     1053, 593, 1352, 1353, 1052, 637, 1054, 451, 1055, 13,
1150     1056, 1057, 1058, 1059, 1278, 452, 301, 301, 1060, 1061,
1151     14, 1063, 15, 1065, 1062, 1064, 1066, 1067, 1069, 1068,
1152     1070, 1071, 1354, 1073, 453, 1072, 1074, 1075, 16, 1078,
1153     1079, 1080, 1081, 454, 455, 1082, 301, 1083, 1084, 1085,
1154     1355, 1293, 1086, 1087, 1088, 17, 1089, 1356, 1090, 1091,
1155     1092, 1093, 1094, 1095, 301, 1096, 1097, 91, 92, 93,
1156     1098, 301, 1099, 1100, 456, 457, 1357, 1101, 1102, 1103,
1157     594, 595, 596, 1105, 1106, 597, 1107, 1108, 18, 1109,
1158     301, 1279, 598, 1110, 1111, 1112, 1113, 19, 20, 1114,
1159     1115, 1116, 21, 22, 1358, 599, 600, 1117, 1119, 1120,
1160     1121, 1124, 1359, 1127, 1128, 1129, 1130, 1125, 301, 1126,
1161     1131, 1132, 1280, 601, 602, 1133, 301, 1134, 1294, 458,
1162     1135, 1136, 1137, 1138, 1139, 1140, 1281, 1141, 1142, 1143,
1163     1144, 1145, 1175, 1146, 1147, 1148, 1149, 1150, 603, 1151,
1164     1152, 1158, 1171, 1360, 1165, 1282, 1283, 1182, 1159, 1295,
1165     1191, 1284, 1285, 1286, 1287, 1161, 1172, 301, 1176, 1177,
1166     1178, 1179, 1361, 1296, 1288, 1180, 1181, 1192, 1193, 1162,
1167     1163, 1164, 1183, 1194, 1166, 1195, 301, 1167, 1210, 1187,
1168     1211, 1196, 1297, 1298, 1216, 1217, 1218, 1219, 1299, 1300,
1169     1301, 1302, 1220, 1221, 977, 978, 979, 980, 1226, 981,
1170     982, 1303, 983, 984, 985, 1222, 1227, 986, 1228, 1229,
1171     1184, 1230, 1231, 1185, 1186, 1188, 1232, 987, 988, 989,
1172     990, 991, 992, 1233, 1189, 993, 1190, 1234, 994, 998,
1173     999, 1000, 1001, 1235, 1002, 1003, 1236, 1004, 1005, 1006,
1174     1237, 1241, 1007, 1246, 1238, 1247, 1255, 1252, 1248, 1261,
1175     1263, 1267, 1008, 1009, 1010, 1011, 1012, 1013, 1251, 1269,
1176     1014, 1253, 1273, 1015, 1390, 1391, 1392, 1393, 1254, 1394,
1177     1395, 1274, 1396, 1397, 1398, 1271, 1275, 1399, 1276, 1277,
1178     1291, 1256, 1257, 1292, 1306, 1258, 1307, 1400, 1401, 1402,
1179     1403, 1404, 1405, 1308, 1309, 1406, 1310, 1311, 1407, 1259,
1180     1260, 1312, 1262, 1264, 1313, 1314, 1315, 1316, 1265, 1266,
1181     1317, 1318, 1268, 1319, 1270, 1320, 1321, 1322, 1323, 1272,
1182     1324, 1325, 1326, 1327, 1328, 1329, 1333, 1334, 1335, 1336,
1183     1337, 1338, 1339, 1340, 1367, 1369, 1370, 1371, 1372, 1373,
1184     1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386,
1185     1387, 1388, 1389, 1410, 1411, 1412, 215, 25, 33, 384,
1186     516, 511, 119, 549, 1462, 1461, 1123, 329, 1460, 1433,
1187     765, 1368, 915, 753, 1431, 1456, 1430, 936, 871, 1457,
1188     1432, 1459, 1458, 361, 758, 1427, 661, 668, 426, 1344,
1189     734, 535, 1428, 840, 1343, 1429, 349, 0, 0, 0,
1190     0, 0, 0, 866,
1191 adx 30 };
1192 db 126 const short yycheck[] = { 334,
1193     335, 419, 125, 256, 125, 125, 125, 342, 264, 256,
1194     266, 125, 331, 264, 409, 266, 125, 256, 256, 256,
1195     125, 256, 265, 125, 256, 281, 125, 125, 256, 285,
1196     281, 265, 59, 256, 285, 123, 125, 372, 125, 374,
1197     449, 450, 44, 256, 44, 258, 449, 450, 44, 123,
1198     268, 269, 270, 388, 291, 125, 256, 59, 44, 59,
1199     44, 396, 294, 59, 301, 123, 44, 467, 468, 44,
1200     125, 406, 407, 59, 409, 59, 276, 309, 44, 44,
1201     308, 59, 417, 418, 59, 420, 299, 123, 123, 302,
1202     44, 123, 44, 59, 59, 123, 256, 353, 125, 331,
1203     44, 333, 353, 335, 336, 59, 344, 59, 123, 125,
1204 db 134 338, 44, 44, 409, 44, 59, 344, 1033, 1034, 1035,
1205     123, 344, 375, 355, 409, 123, 59, 59, 375, 59,
1206     123, 123, 123, 256, 373, 256, 256, 256, 375, 262,
1207 db 126 263, 123, 256, 266, 123, 358, 123, 256, 59, 123,
1208 db 134 273, 256, 61, 61, 256, 61, 258, 256, 256, 282,
1209 db 126 61, 61, 375, 286, 287, 404, 485, 256, 386, 256,
1210     293, 291, 125, 296, 297, 298, 411, 300, 276, 379,
1211     408, 301, 61, 306, 61, 61, 256, 440, 411, 259,
1212     61, 61, 61, 440, 61, 61, 61, 299, 533, 61,
1213     302, 256, 325, 326, 291, 440, 61, 330, 451, 125,
1214     280, 411, 61, 61, 337, 375, 61, 451, 341, 342,
1215 db 134 343, 61, 292, 346, 61, 344, 349, 350, 123, 125,
1216     344, 123, 61, 303, 61, 61, 492, 360, 308, 61,
1217 db 126 256, 492, 61, 366, 367, 498, 369, 370, 371, 372,
1218     320, 411, 339, 308, 375, 375, 358, 327, 61, 61,
1219     383, 125, 332, 498, 334, 61, 61, 61, 61, 392,
1220     375, 394, 395, 375, 397, 61, 375, 347, 401, 402,
1221     440, 379, 405, 338, 373, 498, 61, 61, 375, 344,
1222     377, 378, 411, 416, 310, 311, 312, 313, 314, 315,
1223     316, 317, 411, 256, 257, 375, 411, 260, 61, 61,
1224     380, 264, 435, 411, 437, 404, 61, 61, 441, 440,
1225     61, 386, 445, 446, 447, 448, 279, 280, 281, 452,
1226     453, 440, 285, 403, 421, 440, 423, 460, 61, 61,
1227     256, 440, 61, 359, 61, 415, 61, 417, 418, 436,
1228     303, 267, 422, 408, 307, 308, 61, 61, 61, 61,
1229     256, 426, 427, 428, 429, 430, 61, 61, 491, 61,
1230     493, 61, 288, 289, 61, 61, 499, 393, 274, 295,
1231     61, 504, 61, 61, 280, 338, 509, 340, 61, 498,
1232     61, 478, 256, 728, 61, 61, 498, 61, 61, 498,
1233     61, 354, 256, 61, 61, 61, 61, 303, 304, 61,
1234     480, 61, 308, 277, 278, 61, 486, 61, 505, 506,
1235 db 134 284, 61, 375, 59, 61, 59, 322, 497, 498, 61,
1236 db 126 61, 61, 61, 329, 61, 351, 352, 507, 61, 61,
1237     61, 61, 125, 61, 61, 361, 362, 879, 880, 881,
1238 db 134 882, 883, 348, 61, 470, 408, 310, 311, 312, 313,
1239 db 126 314, 315, 316, 317, 61, 381, 382, 61, 61, 422,
1240     123, 61, 471, 472, 473, 474, 475, 476, 477, 432,
1241     376, 61, 398, 399, 400, 61, 61, 503, 384, 61,
1242 db 134 59, 61, 409, 61, 410, 913, 61, 61, 61, 363,
1243 db 126 364, 365, 61, 419, 368, 359, 61, 403, 61, 61,
1244 db 134 61, 375, 61, 59, 449, 409, 412, 413, 409, 59,
1245     256, 449, 449, 386, 388, 389, 262, 263, 386, 386,
1246     266, 449, 61, 386, 386, 449, 386, 273, 61, 393,
1247     59, 409, 406, 407, 449, 449, 282, 443, 444, 61,
1248     286, 287, 505, 61, 386, 386, 449, 293, 409, 449,
1249 db 126 296, 297, 298, 256, 300, 449, 449, 431, 903, 449,
1250 db 134 306, 449, 386, 256, 449, 449, 911, 912, 386, 409,
1251 db 126 386, 386, 386, 61, 500, 501, 502, 386, 449, 325,
1252     326, 409, 409, 449, 330, 386, 386, 386, 291, 386,
1253 db 134 61, 337, 498, 449, 386, 341, 342, 343, 449, 409,
1254     346, 294, 59, 349, 350, 256, 470, 61, 259, 61,
1255     61, 449, 61, 59, 360, 449, 309, 61, 449, 449,
1256     366, 367, 61, 369, 370, 371, 372, 449, 449, 280,
1257     449, 61, 449, 61, 61, 61, 339, 383, 331, 503,
1258 db 126 333, 292, 335, 336, 61, 61, 392, 449, 394, 395,
1259     61, 397, 303, 61, 449, 401, 402, 308, 449, 405,
1260     449, 449, 355, 61, 61, 61, 61, 61, 61, 320,
1261 db 134 416, 61, 375, 59, 377, 378, 327, 61, 61, 61,
1262     449, 332, 59, 334, 59, 409, 409, 409, 409, 435,
1263     409, 437, 409, 409, 59, 441, 347, 61, 409, 445,
1264     446, 447, 448, 409, 61, 61, 452, 453, 409, 449,
1265     409, 409, 449, 259, 460, 449, 59, 409, 421, 449,
1266 db 126 423, 259, 409, 449, 375, 409, 256, 257, 386, 380,
1267 db 134 260, 449, 59, 436, 264, 59, 61, 409, 61, 409,
1268     409, 59, 61, 59, 59, 491, 292, 493, 409, 279,
1269 db 126 280, 281, 403, 499, 292, 285, 409, 303, 504, 59,
1270 db 134 409, 409, 59, 509, 415, 303, 417, 418, 59, 59,
1271 db 126 59, 422, 59, 303, 320, 478, 59, 307, 308, 59,
1272 db 134 59, 327, 320, 59, 59, 59, 332, 59, 334, 327,
1273 db 126 59, 59, 59, 256, 332, 59, 334, 59, 59, 59,
1274     59, 347, 505, 506, 267, 61, 61, 61, 338, 347,
1275     340, 61, 61, 61, 409, 61, 61, 61, 61, 61,
1276 db 134 61, 61, 61, 61, 354, 288, 289, 61, 61, 480,
1277     61, 61, 295, 61, 380, 486, 61, 61, 61, 61,
1278 db 126 61, 61, 380, 61, 61, 375, 497, 498, 61, 409,
1279 db 134 396, 61, 59, 59, 409, 409, 507, 256, 396, 61,
1280     59, 59, 59, 59, 59, 59, 59, 59, 59, 415,
1281 db 126 59, 417, 418, 59, 59, 274, 59, 415, 408, 417,
1282     418, 280, 59, 59, 59, 59, 59, 59, 351, 352,
1283     256, 59, 422, 259, 59, 59, 59, 59, 361, 362,
1284     59, 59, 432, 59, 303, 304, 59, 59, 59, 308,
1285     276, 59, 59, 59, 280, 59, 59, 283, 381, 382,
1286     59, 59, 59, 322, 290, 59, 59, 59, 59, 59,
1287     329, 59, 59, 59, 480, 398, 399, 400, 59, 305,
1288     59, 59, 480, 256, 59, 59, 59, 410, 59, 348,
1289 db 134 59, 497, 318, 319, 59, 321, 419, 61, 449, 497,
1290     61, 507, 328, 59, 277, 278, 409, 409, 449, 507,
1291     449, 284, 274, 275, 409, 505, 449, 376, 61, 345,
1292     449, 449, 449, 449, 347, 384, 274, 275, 449, 409,
1293     356, 409, 358, 449, 386, 409, 409, 59, 61, 409,
1294     409, 59, 304, 409, 403, 61, 409, 386, 374, 59,
1295     59, 59, 59, 412, 413, 59, 304, 59, 59, 59,
1296 db 126 322, 347, 59, 59, 59, 391, 59, 329, 59, 59,
1297     59, 59, 59, 59, 322, 59, 59, 500, 501, 502,
1298 db 134 59, 329, 59, 61, 443, 444, 348, 61, 61, 61,
1299 db 126 363, 364, 365, 61, 61, 368, 61, 61, 424, 61,
1300     348, 424, 375, 61, 61, 61, 61, 433, 434, 61,
1301     61, 61, 438, 439, 376, 388, 389, 61, 61, 61,
1302 db 134 61, 409, 384, 59, 59, 59, 59, 409, 376, 409,
1303 db 126 59, 59, 455, 406, 407, 59, 384, 59, 424, 498,
1304     59, 59, 59, 59, 59, 59, 469, 59, 59, 59,
1305 db 134 59, 59, 449, 409, 61, 409, 59, 409, 431, 61,
1306     59, 386, 59, 425, 409, 488, 489, 61, 386, 455,
1307     59, 494, 495, 496, 497, 386, 409, 425, 409, 409,
1308     449, 449, 444, 469, 507, 449, 409, 59, 59, 386,
1309 db 126 386, 386, 409, 59, 386, 59, 444, 386, 59, 386,
1310 db 134 59, 414, 488, 489, 59, 59, 59, 59, 494, 495,
1311 db 126 496, 497, 59, 59, 456, 457, 458, 459, 59, 461,
1312 db 134 462, 507, 464, 465, 466, 385, 59, 469, 59, 59,
1313 db 126 409, 59, 59, 409, 409, 409, 59, 479, 480, 481,
1314 db 134 482, 483, 484, 59, 409, 487, 409, 59, 490, 456,
1315 db 126 457, 458, 459, 59, 461, 462, 59, 464, 465, 466,
1316 db 134 59, 59, 469, 59, 414, 59, 61, 409, 454, 409,
1317     409, 409, 479, 480, 481, 482, 483, 484, 449, 61,
1318     487, 449, 59, 490, 456, 457, 458, 459, 449, 461,
1319     462, 59, 464, 465, 466, 409, 59, 469, 59, 59,
1320     59, 449, 449, 59, 59, 449, 59, 479, 480, 481,
1321 db 126 482, 483, 484, 59, 59, 487, 59, 59, 490, 449,
1322     449, 59, 449, 449, 59, 59, 59, 59, 449, 449,
1323 db 134 59, 59, 449, 59, 449, 59, 59, 59, 59, 449,
1324     59, 59, 59, 59, 59, 385, 59, 59, 59, 59,
1325     59, 59, 59, 59, 386, 59, 59, 59, 59, 385,
1326 db 126 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
1327     59, 59, 59, 59, 59, 59, 123, 59, 59, 123,
1328 db 134 272, 255, 123, 309, 1455, 1436, 811, 70, 1434, 1366,
1329     491, 1250, 604, 459, 1351, 1414, 1349, 638, 562, 1416,
1330     1364, 1419, 1417, 123, 481, 1342, 355, 366, 182, 1202,
1331     434, 288, 1346, 522, 1200, 1348, 94, -1, -1, -1,
1332     -1, -1, -1, 554,
1333 adx 30 };
1334 db 126 #define YYFINAL 1
1335     #ifndef YYDEBUG
1336     #define YYDEBUG 0
1337     #endif
1338     #define YYMAXTOKEN 509
1339     #if YYDEBUG
1340     const char * const yyname[] = {
1341     "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1342     0,0,0,0,0,0,0,0,0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,"';'",0,"'='",0,0,0,0,0,0,
1343     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1344     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1345     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1346     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1347     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1348     "ACCEPT_PASSWORD","ACTION","ADMIN","AFTYPE","T_ALLOW","ANTI_NICK_FLOOD",
1349     "ANTI_SPAM_EXIT_MESSAGE_TIME","AUTOCONN","T_BLOCK","BURST_AWAY",
1350     "BURST_TOPICWHO","BYTES","KBYTES","MBYTES","GBYTES","TBYTES","CALLER_ID_WAIT",
1351     "CAN_FLOOD","CAN_IDLE","CHANNEL","CIDR_BITLEN_IPV4","CIDR_BITLEN_IPV6",
1352     "CIPHER_PREFERENCE","CLASS","COMPRESSED","COMPRESSION_LEVEL","CONNECT",
1353     "CONNECTFREQ","CRYPTLINK","DEFAULT_CIPHER_PREFERENCE","DEFAULT_FLOODCOUNT",
1354     "DEFAULT_SPLIT_SERVER_COUNT","DEFAULT_SPLIT_USER_COUNT","DENY","DESCRIPTION",
1355     "DIE","DISABLE_AUTH","DISABLE_HIDDEN","DISABLE_LOCAL_CHANNELS",
1356     "DISABLE_REMOTE_COMMANDS","DOT_IN_IP6_ADDR","DOTS_IN_IDENT","DURATION",
1357     "EGDPOOL_PATH","EMAIL","ENABLE","ENCRYPTED","EXCEED_LIMIT","EXEMPT",
1358     "FAILED_OPER_NOTICE","FAKENAME","IRCD_FLAGS","FLATTEN_LINKS","FFAILED_OPERLOG",
1359     "FKILLLOG","FKLINELOG","FGLINELOG","FIOERRLOG","FOPERLOG","FOPERSPYLOG",
1360     "FUSERLOG","GECOS","GENERAL","GLINE","GLINES","GLINE_EXEMPT","GLINE_LOG",
1361     "GLINE_TIME","GLINE_MIN_CIDR","GLINE_MIN_CIDR6","GLOBAL_KILL","IRCD_AUTH",
1362     "NEED_IDENT","HAVENT_READ_CONF","HIDDEN","HIDDEN_ADMIN","HIDDEN_NAME",
1363     "HIDDEN_OPER","HIDE_SERVER_IPS","HIDE_SERVERS","HIDE_SPOOF_IPS","HOST","HUB",
1364     "HUB_MASK","IDLETIME","IGNORE_BOGUS_TS","INVISIBLE_ON_CONNECT","IP","KILL",
1365     "KILL_CHASE_TIME_LIMIT","KLINE","KLINE_EXEMPT","KLINE_REASON",
1366     "KLINE_WITH_REASON","KNOCK_DELAY","KNOCK_DELAY_CHANNEL","LAZYLINK","LEAF_MASK",
1367     "LINKS_DELAY","LISTEN","T_LOG","LOGGING","LOG_LEVEL","MAX_ACCEPT","MAX_BANS",
1368     "MAX_CHANS_PER_USER","MAX_GLOBAL","MAX_IDENT","MAX_LOCAL","MAX_NICK_CHANGES",
1369     "MAX_NICK_TIME","MAX_NUMBER","MAX_TARGETS","MESSAGE_LOCALE","MIN_NONWILDCARD",
1370     "MIN_NONWILDCARD_SIMPLE","MODULE","MODULES","NAME","NEED_PASSWORD",
1371     "NETWORK_DESC","NETWORK_NAME","NICK","NICK_CHANGES","NO_CREATE_ON_SPLIT",
1372     "NO_JOIN_ON_SPLIT","NO_OPER_FLOOD","NO_TILDE","NOT","NUMBER","NUMBER_PER_IDENT",
1373     "NUMBER_PER_CIDR","NUMBER_PER_IP","NUMBER_PER_IP_GLOBAL","OPERATOR",
1374     "OPERS_BYPASS_CALLERID","OPER_LOG","OPER_ONLY_UMODES","OPER_PASS_RESV",
1375     "OPER_SPY_T","OPER_UMODES","INVITE_OPS_ONLY","JOIN_FLOOD_COUNT",
1376     "JOIN_FLOOD_TIME","PACE_WAIT","PACE_WAIT_SIMPLE","PASSWORD","PATH",
1377     "PING_COOKIE","PING_TIME","PING_WARNING","PORT","QSTRING","QUIET_ON_BAN",
1378     "REASON","REDIRPORT","REDIRSERV","REGEX_T","REHASH","TREJECT_HOLD_TIME",
1379     "REMOTE","REMOTEBAN","RESTRICT_CHANNELS","RESTRICTED","RSA_PRIVATE_KEY_FILE",
1380     "RSA_PUBLIC_KEY_FILE","SSL_CERTIFICATE_FILE","RESV","RESV_EXEMPT","SECONDS",
1381     "MINUTES","HOURS","DAYS","WEEKS","SENDQ","SEND_PASSWORD","SERVERHIDE",
1382     "SERVERINFO","SERVLINK_PATH","IRCD_SID","TKLINE_EXPIRE_NOTICES","T_SHARED",
1383     "T_CLUSTER","TYPE","SHORT_MOTD","SILENT","SPOOF","SPOOF_NOTICE",
1384     "STATS_I_OPER_ONLY","STATS_K_OPER_ONLY","STATS_O_OPER_ONLY","STATS_P_OPER_ONLY",
1385     "TBOOL","TMASKED","T_REJECT","TS_MAX_DELTA","TS_WARN_DELTA","TWODOTS","T_ALL",
1386     "T_BOTS","T_SOFTCALLERID","T_CALLERID","T_CCONN","T_CLIENT_FLOOD","T_DEAF",
1387     "T_DEBUG","T_DRONE","T_EXTERNAL","T_FULL","T_INVISIBLE","T_IPV4","T_IPV6",
1388     "T_LOCOPS","T_LOGPATH","T_L_CRIT","T_L_DEBUG","T_L_ERROR","T_L_INFO",
1389     "T_L_NOTICE","T_L_TRACE","T_L_WARN","T_MAX_CLIENTS","T_NCHANGE","T_OPERWALL",
1390     "T_REJ","T_SERVNOTICE","T_SKILL","T_SPY","T_SSL","T_UMODES","T_UNAUTH",
1391     "T_UNRESV","T_UNXLINE","T_WALLOP","THROTTLE_TIME","TOPICBURST",
1392     "TRUE_NO_OPER_FLOOD","TKLINE","TXLINE","TRESV","UNKLINE","USER","USE_EGD",
1393     "USE_EXCEPT","USE_INVEX","USE_KNOCK","USE_LOGGING","USE_WHOIS_ACTUALLY","VHOST",
1394     "VHOST6","XLINE","WARN","WARN_NO_NLINE",
1395 adx 30 };
1396 db 126 const char * const yyrule[] = {
1397     "$accept : conf",
1398     "conf :",
1399     "conf : conf conf_item",
1400     "conf_item : admin_entry",
1401     "conf_item : logging_entry",
1402     "conf_item : oper_entry",
1403     "conf_item : channel_entry",
1404     "conf_item : class_entry",
1405     "conf_item : listen_entry",
1406     "conf_item : auth_entry",
1407     "conf_item : serverinfo_entry",
1408     "conf_item : serverhide_entry",
1409     "conf_item : resv_entry",
1410     "conf_item : shared_entry",
1411     "conf_item : cluster_entry",
1412     "conf_item : connect_entry",
1413     "conf_item : kill_entry",
1414     "conf_item : deny_entry",
1415     "conf_item : exempt_entry",
1416     "conf_item : general_entry",
1417     "conf_item : gline_entry",
1418     "conf_item : gecos_entry",
1419     "conf_item : modules_entry",
1420     "conf_item : error ';'",
1421     "conf_item : error '}'",
1422     "timespec_ :",
1423     "timespec_ : timespec",
1424     "timespec : NUMBER timespec_",
1425     "timespec : NUMBER SECONDS timespec_",
1426     "timespec : NUMBER MINUTES timespec_",
1427     "timespec : NUMBER HOURS timespec_",
1428     "timespec : NUMBER DAYS timespec_",
1429     "timespec : NUMBER WEEKS timespec_",
1430     "sizespec_ :",
1431     "sizespec_ : sizespec",
1432     "sizespec : NUMBER sizespec_",
1433     "sizespec : NUMBER BYTES sizespec_",
1434     "sizespec : NUMBER KBYTES sizespec_",
1435     "sizespec : NUMBER MBYTES sizespec_",
1436     "modules_entry : MODULES '{' modules_items '}' ';'",
1437     "modules_items : modules_items modules_item",
1438     "modules_items : modules_item",
1439     "modules_item : modules_module",
1440     "modules_item : modules_path",
1441     "modules_item : error ';'",
1442     "modules_module : MODULE '=' QSTRING ';'",
1443     "modules_path : PATH '=' QSTRING ';'",
1444     "serverinfo_entry : SERVERINFO '{' serverinfo_items '}' ';'",
1445     "serverinfo_items : serverinfo_items serverinfo_item",
1446     "serverinfo_items : serverinfo_item",
1447     "serverinfo_item : serverinfo_name",
1448     "serverinfo_item : serverinfo_vhost",
1449     "serverinfo_item : serverinfo_hub",
1450     "serverinfo_item : serverinfo_description",
1451     "serverinfo_item : serverinfo_network_name",
1452     "serverinfo_item : serverinfo_network_desc",
1453     "serverinfo_item : serverinfo_max_clients",
1454     "serverinfo_item : serverinfo_rsa_private_key_file",
1455     "serverinfo_item : serverinfo_vhost6",
1456     "serverinfo_item : serverinfo_sid",
1457     "serverinfo_item : serverinfo_ssl_certificate_file",
1458     "serverinfo_item : error ';'",
1459     "serverinfo_ssl_certificate_file : SSL_CERTIFICATE_FILE '=' QSTRING ';'",
1460     "serverinfo_rsa_private_key_file : RSA_PRIVATE_KEY_FILE '=' QSTRING ';'",
1461     "serverinfo_name : NAME '=' QSTRING ';'",
1462     "serverinfo_sid : IRCD_SID '=' QSTRING ';'",
1463     "serverinfo_description : DESCRIPTION '=' QSTRING ';'",
1464     "serverinfo_network_name : NETWORK_NAME '=' QSTRING ';'",
1465     "serverinfo_network_desc : NETWORK_DESC '=' QSTRING ';'",
1466     "serverinfo_vhost : VHOST '=' QSTRING ';'",
1467     "serverinfo_vhost6 : VHOST6 '=' QSTRING ';'",
1468     "serverinfo_max_clients : T_MAX_CLIENTS '=' NUMBER ';'",
1469     "serverinfo_hub : HUB '=' TBOOL ';'",
1470     "admin_entry : ADMIN '{' admin_items '}' ';'",
1471     "admin_items : admin_items admin_item",
1472     "admin_items : admin_item",
1473     "admin_item : admin_name",
1474     "admin_item : admin_description",
1475     "admin_item : admin_email",
1476     "admin_item : error ';'",
1477     "admin_name : NAME '=' QSTRING ';'",
1478     "admin_email : EMAIL '=' QSTRING ';'",
1479     "admin_description : DESCRIPTION '=' QSTRING ';'",
1480     "logging_entry : LOGGING '{' logging_items '}' ';'",
1481     "logging_items : logging_items logging_item",
1482     "logging_items : logging_item",
1483     "logging_item : logging_path",
1484     "logging_item : logging_oper_log",
1485     "logging_item : logging_log_level",
1486     "logging_item : logging_use_logging",
1487     "logging_item : logging_fuserlog",
1488     "logging_item : logging_foperlog",
1489     "logging_item : logging_fglinelog",
1490     "logging_item : logging_fklinelog",
1491     "logging_item : logging_killlog",
1492     "logging_item : logging_foperspylog",
1493     "logging_item : logging_ioerrlog",
1494     "logging_item : logging_ffailed_operlog",
1495     "logging_item : error ';'",
1496     "logging_path : T_LOGPATH '=' QSTRING ';'",
1497     "logging_oper_log : OPER_LOG '=' QSTRING ';'",
1498     "logging_fuserlog : FUSERLOG '=' QSTRING ';'",
1499     "logging_ffailed_operlog : FFAILED_OPERLOG '=' QSTRING ';'",
1500     "logging_foperlog : FOPERLOG '=' QSTRING ';'",
1501     "logging_foperspylog : FOPERSPYLOG '=' QSTRING ';'",
1502     "logging_fglinelog : FGLINELOG '=' QSTRING ';'",
1503     "logging_fklinelog : FKLINELOG '=' QSTRING ';'",
1504     "logging_ioerrlog : FIOERRLOG '=' QSTRING ';'",
1505     "logging_killlog : FKILLLOG '=' QSTRING ';'",
1506     "logging_log_level : LOG_LEVEL '=' T_L_CRIT ';'",
1507     "logging_log_level : LOG_LEVEL '=' T_L_ERROR ';'",
1508     "logging_log_level : LOG_LEVEL '=' T_L_WARN ';'",
1509     "logging_log_level : LOG_LEVEL '=' T_L_NOTICE ';'",
1510     "logging_log_level : LOG_LEVEL '=' T_L_TRACE ';'",
1511     "logging_log_level : LOG_LEVEL '=' T_L_INFO ';'",
1512     "logging_log_level : LOG_LEVEL '=' T_L_DEBUG ';'",
1513     "logging_use_logging : USE_LOGGING '=' TBOOL ';'",
1514     "$$1 :",
1515     "oper_entry : OPERATOR $$1 oper_name_b '{' oper_items '}' ';'",
1516     "oper_name_b :",
1517     "oper_name_b : oper_name_t",
1518     "oper_items : oper_items oper_item",
1519     "oper_items : oper_item",
1520     "oper_item : oper_name",
1521     "oper_item : oper_user",
1522     "oper_item : oper_password",
1523     "oper_item : oper_hidden_admin",
1524     "oper_item : oper_hidden_oper",
1525     "oper_item : oper_umodes",
1526     "oper_item : oper_class",
1527     "oper_item : oper_global_kill",
1528     "oper_item : oper_remote",
1529     "oper_item : oper_kline",
1530     "oper_item : oper_xline",
1531     "oper_item : oper_unkline",
1532     "oper_item : oper_gline",
1533     "oper_item : oper_nick_changes",
1534     "oper_item : oper_remoteban",
1535     "oper_item : oper_die",
1536     "oper_item : oper_rehash",
1537     "oper_item : oper_admin",
1538     "oper_item : oper_operwall",
1539     "oper_item : oper_encrypted",
1540     "oper_item : oper_rsa_public_key_file",
1541     "oper_item : oper_flags",
1542     "oper_item : error ';'",
1543     "oper_name : NAME '=' QSTRING ';'",
1544     "oper_name_t : QSTRING",
1545     "oper_user : USER '=' QSTRING ';'",
1546     "oper_password : PASSWORD '=' QSTRING ';'",
1547     "oper_encrypted : ENCRYPTED '=' TBOOL ';'",
1548     "oper_rsa_public_key_file : RSA_PUBLIC_KEY_FILE '=' QSTRING ';'",
1549     "oper_class : CLASS '=' QSTRING ';'",
1550     "$$2 :",
1551     "oper_umodes : T_UMODES $$2 '=' oper_umodes_items ';'",
1552     "oper_umodes_items : oper_umodes_items ',' oper_umodes_item",
1553     "oper_umodes_items : oper_umodes_item",
1554     "oper_umodes_item : T_BOTS",
1555     "oper_umodes_item : T_CCONN",
1556     "oper_umodes_item : T_DEAF",
1557     "oper_umodes_item : T_DEBUG",
1558     "oper_umodes_item : T_FULL",
1559     "oper_umodes_item : T_SKILL",
1560     "oper_umodes_item : T_NCHANGE",
1561     "oper_umodes_item : T_REJ",
1562     "oper_umodes_item : T_UNAUTH",
1563     "oper_umodes_item : T_SPY",
1564     "oper_umodes_item : T_EXTERNAL",
1565     "oper_umodes_item : T_OPERWALL",
1566     "oper_umodes_item : T_SERVNOTICE",
1567     "oper_umodes_item : T_INVISIBLE",
1568     "oper_umodes_item : T_WALLOP",
1569     "oper_umodes_item : T_SOFTCALLERID",
1570     "oper_umodes_item : T_CALLERID",
1571     "oper_umodes_item : T_LOCOPS",
1572     "oper_global_kill : GLOBAL_KILL '=' TBOOL ';'",
1573     "oper_remote : REMOTE '=' TBOOL ';'",
1574     "oper_remoteban : REMOTEBAN '=' TBOOL ';'",
1575     "oper_kline : KLINE '=' TBOOL ';'",
1576     "oper_xline : XLINE '=' TBOOL ';'",
1577     "oper_unkline : UNKLINE '=' TBOOL ';'",
1578     "oper_gline : GLINE '=' TBOOL ';'",
1579     "oper_nick_changes : NICK_CHANGES '=' TBOOL ';'",
1580     "oper_die : DIE '=' TBOOL ';'",
1581     "oper_rehash : REHASH '=' TBOOL ';'",
1582     "oper_admin : ADMIN '=' TBOOL ';'",
1583     "oper_hidden_admin : HIDDEN_ADMIN '=' TBOOL ';'",
1584     "oper_hidden_oper : HIDDEN_OPER '=' TBOOL ';'",
1585     "oper_operwall : T_OPERWALL '=' TBOOL ';'",
1586     "$$3 :",
1587     "oper_flags : IRCD_FLAGS $$3 '=' oper_flags_items ';'",
1588     "oper_flags_items : oper_flags_items ',' oper_flags_item",
1589     "oper_flags_items : oper_flags_item",
1590 db 134 "$$4 :",
1591     "oper_flags_item : NOT $$4 oper_flags_item_atom",
1592     "$$5 :",
1593     "oper_flags_item : $$5 oper_flags_item_atom",
1594 db 126 "oper_flags_item_atom : GLOBAL_KILL",
1595     "oper_flags_item_atom : REMOTE",
1596     "oper_flags_item_atom : KLINE",
1597     "oper_flags_item_atom : UNKLINE",
1598     "oper_flags_item_atom : XLINE",
1599     "oper_flags_item_atom : GLINE",
1600     "oper_flags_item_atom : DIE",
1601     "oper_flags_item_atom : REHASH",
1602     "oper_flags_item_atom : ADMIN",
1603     "oper_flags_item_atom : HIDDEN_ADMIN",
1604     "oper_flags_item_atom : NICK_CHANGES",
1605     "oper_flags_item_atom : T_OPERWALL",
1606     "oper_flags_item_atom : OPER_SPY_T",
1607     "oper_flags_item_atom : HIDDEN_OPER",
1608     "oper_flags_item_atom : REMOTEBAN",
1609     "oper_flags_item_atom : ENCRYPTED",
1610 db 134 "$$6 :",
1611     "class_entry : CLASS $$6 class_name_b '{' class_items '}' ';'",
1612 db 126 "class_name_b :",
1613     "class_name_b : class_name_t",
1614     "class_items : class_items class_item",
1615     "class_items : class_item",
1616     "class_item : class_name",
1617     "class_item : class_cidr_bitlen_ipv4",
1618     "class_item : class_cidr_bitlen_ipv6",
1619     "class_item : class_ping_time",
1620     "class_item : class_ping_warning",
1621     "class_item : class_number_per_cidr",
1622     "class_item : class_number_per_ip",
1623     "class_item : class_connectfreq",
1624     "class_item : class_max_number",
1625     "class_item : class_max_global",
1626     "class_item : class_max_local",
1627     "class_item : class_max_ident",
1628     "class_item : class_sendq",
1629     "class_item : error ';'",
1630     "class_name : NAME '=' QSTRING ';'",
1631     "class_name_t : QSTRING",
1632     "class_ping_time : PING_TIME '=' timespec ';'",
1633     "class_ping_warning : PING_WARNING '=' timespec ';'",
1634     "class_number_per_ip : NUMBER_PER_IP '=' NUMBER ';'",
1635     "class_connectfreq : CONNECTFREQ '=' timespec ';'",
1636     "class_max_number : MAX_NUMBER '=' NUMBER ';'",
1637     "class_max_global : MAX_GLOBAL '=' NUMBER ';'",
1638     "class_max_local : MAX_LOCAL '=' NUMBER ';'",
1639     "class_max_ident : MAX_IDENT '=' NUMBER ';'",
1640     "class_sendq : SENDQ '=' sizespec ';'",
1641     "class_cidr_bitlen_ipv4 : CIDR_BITLEN_IPV4 '=' NUMBER ';'",
1642     "class_cidr_bitlen_ipv6 : CIDR_BITLEN_IPV6 '=' NUMBER ';'",
1643     "class_number_per_cidr : NUMBER_PER_CIDR '=' NUMBER ';'",
1644 db 134 "$$7 :",
1645     "listen_entry : LISTEN $$7 '{' listen_items '}' ';'",
1646     "$$8 :",
1647     "listen_flags : IRCD_FLAGS $$8 '=' listen_flags_items ';'",
1648 db 126 "listen_flags_items : listen_flags_items ',' listen_flags_item",
1649     "listen_flags_items : listen_flags_item",
1650     "listen_flags_item : T_SSL",
1651     "listen_flags_item : HIDDEN",
1652     "listen_items : listen_items listen_item",
1653     "listen_items : listen_item",
1654     "listen_item : listen_port",
1655     "listen_item : listen_flags",
1656     "listen_item : listen_address",
1657     "listen_item : listen_host",
1658     "listen_item : error ';'",
1659     "listen_port : PORT '=' port_items ';'",
1660     "port_items : port_items ',' port_item",
1661     "port_items : port_item",
1662     "port_item : NUMBER",
1663     "port_item : NUMBER TWODOTS NUMBER",
1664     "listen_address : IP '=' QSTRING ';'",
1665     "listen_host : HOST '=' QSTRING ';'",
1666 db 134 "$$9 :",
1667     "auth_entry : IRCD_AUTH $$9 '{' auth_items '}' ';'",
1668 db 126 "auth_items : auth_items auth_item",
1669     "auth_items : auth_item",
1670     "auth_item : auth_user",
1671     "auth_item : auth_passwd",
1672     "auth_item : auth_class",
1673     "auth_item : auth_flags",
1674     "auth_item : auth_kline_exempt",
1675     "auth_item : auth_need_ident",
1676     "auth_item : auth_exceed_limit",
1677     "auth_item : auth_no_tilde",
1678     "auth_item : auth_gline_exempt",
1679     "auth_item : auth_spoof",
1680     "auth_item : auth_spoof_notice",
1681     "auth_item : auth_redir_serv",
1682     "auth_item : auth_redir_port",
1683     "auth_item : auth_can_flood",
1684     "auth_item : auth_need_password",
1685     "auth_item : auth_encrypted",
1686     "auth_item : error ';'",
1687     "auth_user : USER '=' QSTRING ';'",
1688     "auth_passwd : PASSWORD '=' QSTRING ';'",
1689     "auth_spoof_notice : SPOOF_NOTICE '=' TBOOL ';'",
1690     "auth_class : CLASS '=' QSTRING ';'",
1691     "auth_encrypted : ENCRYPTED '=' TBOOL ';'",
1692 db 134 "$$10 :",
1693     "auth_flags : IRCD_FLAGS $$10 '=' auth_flags_items ';'",
1694 db 126 "auth_flags_items : auth_flags_items ',' auth_flags_item",
1695     "auth_flags_items : auth_flags_item",
1696 db 134 "$$11 :",
1697     "auth_flags_item : NOT $$11 auth_flags_item_atom",
1698     "$$12 :",
1699     "auth_flags_item : $$12 auth_flags_item_atom",
1700 db 126 "auth_flags_item_atom : SPOOF_NOTICE",
1701     "auth_flags_item_atom : EXCEED_LIMIT",
1702     "auth_flags_item_atom : KLINE_EXEMPT",
1703     "auth_flags_item_atom : NEED_IDENT",
1704     "auth_flags_item_atom : CAN_FLOOD",
1705     "auth_flags_item_atom : CAN_IDLE",
1706     "auth_flags_item_atom : NO_TILDE",
1707     "auth_flags_item_atom : GLINE_EXEMPT",
1708     "auth_flags_item_atom : RESV_EXEMPT",
1709     "auth_flags_item_atom : NEED_PASSWORD",
1710     "auth_kline_exempt : KLINE_EXEMPT '=' TBOOL ';'",
1711     "auth_need_ident : NEED_IDENT '=' TBOOL ';'",
1712     "auth_exceed_limit : EXCEED_LIMIT '=' TBOOL ';'",
1713     "auth_can_flood : CAN_FLOOD '=' TBOOL ';'",
1714     "auth_no_tilde : NO_TILDE '=' TBOOL ';'",
1715     "auth_gline_exempt : GLINE_EXEMPT '=' TBOOL ';'",
1716     "auth_spoof : SPOOF '=' QSTRING ';'",
1717     "auth_redir_serv : REDIRSERV '=' QSTRING ';'",
1718     "auth_redir_port : REDIRPORT '=' NUMBER ';'",
1719     "auth_need_password : NEED_PASSWORD '=' TBOOL ';'",
1720 db 134 "$$13 :",
1721     "resv_entry : RESV $$13 '{' resv_items '}' ';'",
1722 db 126 "resv_items : resv_items resv_item",
1723     "resv_items : resv_item",
1724     "resv_item : resv_creason",
1725     "resv_item : resv_channel",
1726     "resv_item : resv_nick",
1727     "resv_item : error ';'",
1728     "resv_creason : REASON '=' QSTRING ';'",
1729     "resv_channel : CHANNEL '=' QSTRING ';'",
1730     "resv_nick : NICK '=' QSTRING ';'",
1731 db 134 "$$14 :",
1732     "shared_entry : T_SHARED $$14 '{' shared_items '}' ';'",
1733 db 126 "shared_items : shared_items shared_item",
1734     "shared_items : shared_item",
1735     "shared_item : shared_name",
1736     "shared_item : shared_user",
1737     "shared_item : shared_type",
1738     "shared_item : error ';'",
1739     "shared_name : NAME '=' QSTRING ';'",
1740     "shared_user : USER '=' QSTRING ';'",
1741 db 134 "$$15 :",
1742     "shared_type : TYPE $$15 '=' shared_types ';'",
1743 db 126 "shared_types : shared_types ',' shared_type_item",
1744     "shared_types : shared_type_item",
1745     "shared_type_item : KLINE",
1746     "shared_type_item : TKLINE",
1747     "shared_type_item : UNKLINE",
1748     "shared_type_item : XLINE",
1749     "shared_type_item : TXLINE",
1750     "shared_type_item : T_UNXLINE",
1751     "shared_type_item : RESV",
1752     "shared_type_item : TRESV",
1753     "shared_type_item : T_UNRESV",
1754     "shared_type_item : T_LOCOPS",
1755     "shared_type_item : T_ALL",
1756 db 134 "$$16 :",
1757     "cluster_entry : T_CLUSTER $$16 '{' cluster_items '}' ';'",
1758 db 126 "cluster_items : cluster_items cluster_item",
1759     "cluster_items : cluster_item",
1760     "cluster_item : cluster_name",
1761     "cluster_item : cluster_type",
1762     "cluster_item : error ';'",
1763     "cluster_name : NAME '=' QSTRING ';'",
1764 db 134 "$$17 :",
1765     "cluster_type : TYPE $$17 '=' cluster_types ';'",
1766 db 126 "cluster_types : cluster_types ',' cluster_type_item",
1767     "cluster_types : cluster_type_item",
1768     "cluster_type_item : KLINE",
1769     "cluster_type_item : TKLINE",
1770     "cluster_type_item : UNKLINE",
1771     "cluster_type_item : XLINE",
1772     "cluster_type_item : TXLINE",
1773     "cluster_type_item : T_UNXLINE",
1774     "cluster_type_item : RESV",
1775     "cluster_type_item : TRESV",
1776     "cluster_type_item : T_UNRESV",
1777     "cluster_type_item : T_LOCOPS",
1778     "cluster_type_item : T_ALL",
1779 db 134 "$$18 :",
1780     "connect_entry : CONNECT $$18 connect_name_b '{' connect_items '}' ';'",
1781 db 126 "connect_name_b :",
1782     "connect_name_b : connect_name_t",
1783     "connect_items : connect_items connect_item",
1784     "connect_items : connect_item",
1785     "connect_item : connect_name",
1786     "connect_item : connect_host",
1787     "connect_item : connect_vhost",
1788     "connect_item : connect_send_password",
1789     "connect_item : connect_accept_password",
1790     "connect_item : connect_aftype",
1791     "connect_item : connect_port",
1792     "connect_item : connect_fakename",
1793     "connect_item : connect_flags",
1794     "connect_item : connect_hub_mask",
1795     "connect_item : connect_leaf_mask",
1796     "connect_item : connect_class",
1797     "connect_item : connect_auto",
1798     "connect_item : connect_encrypted",
1799     "connect_item : connect_compressed",
1800     "connect_item : connect_cryptlink",
1801     "connect_item : connect_rsa_public_key_file",
1802     "connect_item : connect_cipher_preference",
1803     "connect_item : error ';'",
1804     "connect_name : NAME '=' QSTRING ';'",
1805     "connect_name_t : QSTRING",
1806     "connect_host : HOST '=' QSTRING ';'",
1807     "connect_vhost : VHOST '=' QSTRING ';'",
1808     "connect_send_password : SEND_PASSWORD '=' QSTRING ';'",
1809     "connect_accept_password : ACCEPT_PASSWORD '=' QSTRING ';'",
1810     "connect_port : PORT '=' NUMBER ';'",
1811     "connect_aftype : AFTYPE '=' T_IPV4 ';'",
1812     "connect_aftype : AFTYPE '=' T_IPV6 ';'",
1813     "connect_fakename : FAKENAME '=' QSTRING ';'",
1814 db 134 "$$19 :",
1815     "connect_flags : IRCD_FLAGS $$19 '=' connect_flags_items ';'",
1816 db 126 "connect_flags_items : connect_flags_items ',' connect_flags_item",
1817     "connect_flags_items : connect_flags_item",
1818 db 134 "$$20 :",
1819     "connect_flags_item : NOT $$20 connect_flags_item_atom",
1820     "$$21 :",
1821     "connect_flags_item : $$21 connect_flags_item_atom",
1822 db 126 "connect_flags_item_atom : LAZYLINK",
1823     "connect_flags_item_atom : COMPRESSED",
1824     "connect_flags_item_atom : CRYPTLINK",
1825     "connect_flags_item_atom : AUTOCONN",
1826     "connect_flags_item_atom : BURST_AWAY",
1827     "connect_flags_item_atom : TOPICBURST",
1828     "connect_rsa_public_key_file : RSA_PUBLIC_KEY_FILE '=' QSTRING ';'",
1829     "connect_encrypted : ENCRYPTED '=' TBOOL ';'",
1830     "connect_cryptlink : CRYPTLINK '=' TBOOL ';'",
1831     "connect_compressed : COMPRESSED '=' TBOOL ';'",
1832     "connect_auto : AUTOCONN '=' TBOOL ';'",
1833     "connect_hub_mask : HUB_MASK '=' QSTRING ';'",
1834     "connect_leaf_mask : LEAF_MASK '=' QSTRING ';'",
1835     "connect_class : CLASS '=' QSTRING ';'",
1836     "connect_cipher_preference : CIPHER_PREFERENCE '=' QSTRING ';'",
1837 db 134 "$$22 :",
1838     "kill_entry : KILL $$22 '{' kill_items '}' ';'",
1839     "$$23 :",
1840     "kill_type : TYPE $$23 '=' kill_type_items ';'",
1841 db 126 "kill_type_items : kill_type_items ',' kill_type_item",
1842     "kill_type_items : kill_type_item",
1843     "kill_type_item : REGEX_T",
1844     "kill_items : kill_items kill_item",
1845     "kill_items : kill_item",
1846     "kill_item : kill_user",
1847     "kill_item : kill_reason",
1848     "kill_item : kill_type",
1849     "kill_item : error",
1850     "kill_user : USER '=' QSTRING ';'",
1851     "kill_reason : REASON '=' QSTRING ';'",
1852 db 134 "$$24 :",
1853     "deny_entry : DENY $$24 '{' deny_items '}' ';'",
1854 db 126 "deny_items : deny_items deny_item",
1855     "deny_items : deny_item",
1856     "deny_item : deny_ip",
1857     "deny_item : deny_reason",
1858     "deny_item : error",
1859     "deny_ip : IP '=' QSTRING ';'",
1860     "deny_reason : REASON '=' QSTRING ';'",
1861     "exempt_entry : EXEMPT '{' exempt_items '}' ';'",
1862     "exempt_items : exempt_items exempt_item",
1863     "exempt_items : exempt_item",
1864     "exempt_item : exempt_ip",
1865     "exempt_item : error",
1866     "exempt_ip : IP '=' QSTRING ';'",
1867 db 134 "$$25 :",
1868     "gecos_entry : GECOS $$25 '{' gecos_items '}' ';'",
1869     "$$26 :",
1870     "gecos_flags : TYPE $$26 '=' gecos_flags_items ';'",
1871 db 126 "gecos_flags_items : gecos_flags_items ',' gecos_flags_item",
1872     "gecos_flags_items : gecos_flags_item",
1873     "gecos_flags_item : REGEX_T",
1874     "gecos_items : gecos_items gecos_item",
1875     "gecos_items : gecos_item",
1876     "gecos_item : gecos_name",
1877     "gecos_item : gecos_reason",
1878     "gecos_item : gecos_flags",
1879     "gecos_item : error",
1880     "gecos_name : NAME '=' QSTRING ';'",
1881     "gecos_reason : REASON '=' QSTRING ';'",
1882     "general_entry : GENERAL '{' general_items '}' ';'",
1883     "general_items : general_items general_item",
1884     "general_items : general_item",
1885     "general_item : general_hide_spoof_ips",
1886     "general_item : general_ignore_bogus_ts",
1887     "general_item : general_failed_oper_notice",
1888     "general_item : general_anti_nick_flood",
1889     "general_item : general_max_nick_time",
1890     "general_item : general_max_nick_changes",
1891     "general_item : general_max_accept",
1892     "general_item : general_anti_spam_exit_message_time",
1893     "general_item : general_ts_warn_delta",
1894     "general_item : general_ts_max_delta",
1895     "general_item : general_kill_chase_time_limit",
1896     "general_item : general_kline_with_reason",
1897     "general_item : general_kline_reason",
1898     "general_item : general_invisible_on_connect",
1899     "general_item : general_warn_no_nline",
1900     "general_item : general_dots_in_ident",
1901     "general_item : general_stats_o_oper_only",
1902     "general_item : general_stats_k_oper_only",
1903     "general_item : general_pace_wait",
1904     "general_item : general_stats_i_oper_only",
1905     "general_item : general_pace_wait_simple",
1906     "general_item : general_stats_P_oper_only",
1907     "general_item : general_short_motd",
1908     "general_item : general_no_oper_flood",
1909     "general_item : general_true_no_oper_flood",
1910     "general_item : general_oper_pass_resv",
1911     "general_item : general_idletime",
1912     "general_item : general_message_locale",
1913     "general_item : general_oper_only_umodes",
1914     "general_item : general_max_targets",
1915     "general_item : general_use_egd",
1916     "general_item : general_egdpool_path",
1917     "general_item : general_oper_umodes",
1918     "general_item : general_caller_id_wait",
1919     "general_item : general_opers_bypass_callerid",
1920     "general_item : general_default_floodcount",
1921     "general_item : general_min_nonwildcard",
1922     "general_item : general_min_nonwildcard_simple",
1923     "general_item : general_servlink_path",
1924     "general_item : general_disable_remote_commands",
1925     "general_item : general_default_cipher_preference",
1926     "general_item : general_compression_level",
1927     "general_item : general_client_flood",
1928     "general_item : general_throttle_time",
1929     "general_item : general_havent_read_conf",
1930     "general_item : general_dot_in_ip6_addr",
1931     "general_item : general_ping_cookie",
1932     "general_item : general_disable_auth",
1933     "general_item : general_burst_away",
1934     "general_item : general_tkline_expire_notices",
1935     "general_item : general_gline_min_cidr",
1936     "general_item : general_gline_min_cidr6",
1937     "general_item : general_use_whois_actually",
1938     "general_item : general_reject_hold_time",
1939     "general_item : error",
1940     "general_gline_min_cidr : GLINE_MIN_CIDR '=' NUMBER ';'",
1941     "general_gline_min_cidr6 : GLINE_MIN_CIDR6 '=' NUMBER ';'",
1942     "general_burst_away : BURST_AWAY '=' TBOOL ';'",
1943     "general_use_whois_actually : USE_WHOIS_ACTUALLY '=' TBOOL ';'",
1944     "general_reject_hold_time : TREJECT_HOLD_TIME '=' timespec ';'",
1945     "general_tkline_expire_notices : TKLINE_EXPIRE_NOTICES '=' TBOOL ';'",
1946     "general_kill_chase_time_limit : KILL_CHASE_TIME_LIMIT '=' NUMBER ';'",
1947     "general_hide_spoof_ips : HIDE_SPOOF_IPS '=' TBOOL ';'",
1948     "general_ignore_bogus_ts : IGNORE_BOGUS_TS '=' TBOOL ';'",
1949     "general_disable_remote_commands : DISABLE_REMOTE_COMMANDS '=' TBOOL ';'",
1950     "general_failed_oper_notice : FAILED_OPER_NOTICE '=' TBOOL ';'",
1951     "general_anti_nick_flood : ANTI_NICK_FLOOD '=' TBOOL ';'",
1952     "general_max_nick_time : MAX_NICK_TIME '=' timespec ';'",
1953     "general_max_nick_changes : MAX_NICK_CHANGES '=' NUMBER ';'",
1954     "general_max_accept : MAX_ACCEPT '=' NUMBER ';'",
1955     "general_anti_spam_exit_message_time : ANTI_SPAM_EXIT_MESSAGE_TIME '=' timespec ';'",
1956     "general_ts_warn_delta : TS_WARN_DELTA '=' timespec ';'",
1957     "general_ts_max_delta : TS_MAX_DELTA '=' timespec ';'",
1958     "general_havent_read_conf : HAVENT_READ_CONF '=' NUMBER ';'",
1959     "general_kline_with_reason : KLINE_WITH_REASON '=' TBOOL ';'",
1960     "general_kline_reason : KLINE_REASON '=' QSTRING ';'",
1961     "general_invisible_on_connect : INVISIBLE_ON_CONNECT '=' TBOOL ';'",
1962     "general_warn_no_nline : WARN_NO_NLINE '=' TBOOL ';'",
1963     "general_stats_o_oper_only : STATS_O_OPER_ONLY '=' TBOOL ';'",
1964     "general_stats_P_oper_only : STATS_P_OPER_ONLY '=' TBOOL ';'",
1965     "general_stats_k_oper_only : STATS_K_OPER_ONLY '=' TBOOL ';'",
1966     "general_stats_k_oper_only : STATS_K_OPER_ONLY '=' TMASKED ';'",
1967     "general_stats_i_oper_only : STATS_I_OPER_ONLY '=' TBOOL ';'",
1968     "general_stats_i_oper_only : STATS_I_OPER_ONLY '=' TMASKED ';'",
1969     "general_pace_wait : PACE_WAIT '=' timespec ';'",
1970     "general_caller_id_wait : CALLER_ID_WAIT '=' timespec ';'",
1971     "general_opers_bypass_callerid : OPERS_BYPASS_CALLERID '=' TBOOL ';'",
1972     "general_pace_wait_simple : PACE_WAIT_SIMPLE '=' timespec ';'",
1973     "general_short_motd : SHORT_MOTD '=' TBOOL ';'",
1974     "general_no_oper_flood : NO_OPER_FLOOD '=' TBOOL ';'",
1975     "general_true_no_oper_flood : TRUE_NO_OPER_FLOOD '=' TBOOL ';'",
1976     "general_oper_pass_resv : OPER_PASS_RESV '=' TBOOL ';'",
1977     "general_message_locale : MESSAGE_LOCALE '=' QSTRING ';'",
1978     "general_idletime : IDLETIME '=' timespec ';'",
1979     "general_dots_in_ident : DOTS_IN_IDENT '=' NUMBER ';'",
1980     "general_max_targets : MAX_TARGETS '=' NUMBER ';'",
1981     "general_servlink_path : SERVLINK_PATH '=' QSTRING ';'",
1982     "general_default_cipher_preference : DEFAULT_CIPHER_PREFERENCE '=' QSTRING ';'",
1983     "general_compression_level : COMPRESSION_LEVEL '=' NUMBER ';'",
1984     "general_use_egd : USE_EGD '=' TBOOL ';'",
1985     "general_egdpool_path : EGDPOOL_PATH '=' QSTRING ';'",
1986     "general_ping_cookie : PING_COOKIE '=' TBOOL ';'",
1987     "general_disable_auth : DISABLE_AUTH '=' TBOOL ';'",
1988     "general_throttle_time : THROTTLE_TIME '=' timespec ';'",
1989 db 134 "$$27 :",
1990     "general_oper_umodes : OPER_UMODES $$27 '=' umode_oitems ';'",
1991 db 126 "umode_oitems : umode_oitems ',' umode_oitem",
1992     "umode_oitems : umode_oitem",
1993     "umode_oitem : T_BOTS",
1994     "umode_oitem : T_CCONN",
1995     "umode_oitem : T_DEAF",
1996     "umode_oitem : T_DEBUG",
1997     "umode_oitem : T_FULL",
1998     "umode_oitem : T_SKILL",
1999     "umode_oitem : T_NCHANGE",
2000     "umode_oitem : T_REJ",
2001     "umode_oitem : T_UNAUTH",
2002     "umode_oitem : T_SPY",
2003     "umode_oitem : T_EXTERNAL",
2004     "umode_oitem : T_OPERWALL",
2005     "umode_oitem : T_SERVNOTICE",
2006     "umode_oitem : T_INVISIBLE",
2007     "umode_oitem : T_WALLOP",
2008     "umode_oitem : T_SOFTCALLERID",
2009     "umode_oitem : T_CALLERID",
2010     "umode_oitem : T_LOCOPS",
2011 db 134 "$$28 :",
2012     "general_oper_only_umodes : OPER_ONLY_UMODES $$28 '=' umode_items ';'",
2013 db 126 "umode_items : umode_items ',' umode_item",
2014     "umode_items : umode_item",
2015     "umode_item : T_BOTS",
2016     "umode_item : T_CCONN",
2017     "umode_item : T_DEAF",
2018     "umode_item : T_DEBUG",
2019     "umode_item : T_FULL",
2020     "umode_item : T_SKILL",
2021     "umode_item : T_NCHANGE",
2022     "umode_item : T_REJ",
2023     "umode_item : T_UNAUTH",
2024     "umode_item : T_SPY",
2025     "umode_item : T_EXTERNAL",
2026     "umode_item : T_OPERWALL",
2027     "umode_item : T_SERVNOTICE",
2028     "umode_item : T_INVISIBLE",
2029     "umode_item : T_WALLOP",
2030     "umode_item : T_SOFTCALLERID",
2031     "umode_item : T_CALLERID",
2032     "umode_item : T_LOCOPS",
2033     "general_min_nonwildcard : MIN_NONWILDCARD '=' NUMBER ';'",
2034     "general_min_nonwildcard_simple : MIN_NONWILDCARD_SIMPLE '=' NUMBER ';'",
2035     "general_default_floodcount : DEFAULT_FLOODCOUNT '=' NUMBER ';'",
2036     "general_client_flood : T_CLIENT_FLOOD '=' sizespec ';'",
2037     "general_dot_in_ip6_addr : DOT_IN_IP6_ADDR '=' TBOOL ';'",
2038 db 134 "$$29 :",
2039     "gline_entry : GLINES $$29 '{' gline_items '}' ';'",
2040 db 126 "gline_items : gline_items gline_item",
2041     "gline_items : gline_item",
2042     "gline_item : gline_enable",
2043     "gline_item : gline_duration",
2044     "gline_item : gline_logging",
2045     "gline_item : gline_user",
2046     "gline_item : gline_server",
2047     "gline_item : gline_action",
2048     "gline_item : error",
2049     "gline_enable : ENABLE '=' TBOOL ';'",
2050     "gline_duration : DURATION '=' timespec ';'",
2051 db 134 "$$30 :",
2052     "gline_logging : LOGGING $$30 '=' gline_logging_types ';'",
2053 db 126 "gline_logging_types : gline_logging_types ',' gline_logging_type_item",
2054     "gline_logging_types : gline_logging_type_item",
2055     "gline_logging_type_item : T_REJECT",
2056     "gline_logging_type_item : T_BLOCK",
2057     "gline_user : USER '=' QSTRING ';'",
2058     "gline_server : NAME '=' QSTRING ';'",
2059 db 134 "$$31 :",
2060     "gline_action : ACTION $$31 '=' gdeny_types ';'",
2061 db 126 "gdeny_types : gdeny_types ',' gdeny_type_item",
2062     "gdeny_types : gdeny_type_item",
2063     "gdeny_type_item : T_REJECT",
2064     "gdeny_type_item : T_BLOCK",
2065     "channel_entry : CHANNEL '{' channel_items '}' ';'",
2066     "channel_items : channel_items channel_item",
2067     "channel_items : channel_item",
2068     "channel_item : channel_disable_local_channels",
2069     "channel_item : channel_use_except",
2070     "channel_item : channel_use_invex",
2071     "channel_item : channel_use_knock",
2072     "channel_item : channel_max_bans",
2073     "channel_item : channel_knock_delay",
2074     "channel_item : channel_knock_delay_channel",
2075     "channel_item : channel_invite_ops_only",
2076     "channel_item : channel_max_chans_per_user",
2077     "channel_item : channel_quiet_on_ban",
2078     "channel_item : channel_default_split_user_count",
2079     "channel_item : channel_default_split_server_count",
2080     "channel_item : channel_no_create_on_split",
2081     "channel_item : channel_restrict_channels",
2082     "channel_item : channel_no_join_on_split",
2083     "channel_item : channel_burst_topicwho",
2084     "channel_item : channel_jflood_count",
2085     "channel_item : channel_jflood_time",
2086     "channel_item : error",
2087     "channel_restrict_channels : RESTRICT_CHANNELS '=' TBOOL ';'",
2088     "channel_disable_local_channels : DISABLE_LOCAL_CHANNELS '=' TBOOL ';'",
2089     "channel_use_except : USE_EXCEPT '=' TBOOL ';'",
2090     "channel_use_invex : USE_INVEX '=' TBOOL ';'",
2091     "channel_use_knock : USE_KNOCK '=' TBOOL ';'",
2092     "channel_knock_delay : KNOCK_DELAY '=' timespec ';'",
2093     "channel_knock_delay_channel : KNOCK_DELAY_CHANNEL '=' timespec ';'",
2094     "channel_invite_ops_only : INVITE_OPS_ONLY '=' TBOOL ';'",
2095     "channel_max_chans_per_user : MAX_CHANS_PER_USER '=' NUMBER ';'",
2096     "channel_quiet_on_ban : QUIET_ON_BAN '=' TBOOL ';'",
2097     "channel_max_bans : MAX_BANS '=' NUMBER ';'",
2098     "channel_default_split_user_count : DEFAULT_SPLIT_USER_COUNT '=' NUMBER ';'",
2099     "channel_default_split_server_count : DEFAULT_SPLIT_SERVER_COUNT '=' NUMBER ';'",
2100     "channel_no_create_on_split : NO_CREATE_ON_SPLIT '=' TBOOL ';'",
2101     "channel_no_join_on_split : NO_JOIN_ON_SPLIT '=' TBOOL ';'",
2102     "channel_burst_topicwho : BURST_TOPICWHO '=' TBOOL ';'",
2103     "channel_jflood_count : JOIN_FLOOD_COUNT '=' NUMBER ';'",
2104     "channel_jflood_time : JOIN_FLOOD_TIME '=' timespec ';'",
2105     "serverhide_entry : SERVERHIDE '{' serverhide_items '}' ';'",
2106     "serverhide_items : serverhide_items serverhide_item",
2107     "serverhide_items : serverhide_item",
2108     "serverhide_item : serverhide_flatten_links",
2109     "serverhide_item : serverhide_hide_servers",
2110     "serverhide_item : serverhide_links_delay",
2111     "serverhide_item : serverhide_disable_hidden",
2112     "serverhide_item : serverhide_hidden",
2113     "serverhide_item : serverhide_hidden_name",
2114     "serverhide_item : serverhide_hide_server_ips",
2115     "serverhide_item : error",
2116     "serverhide_flatten_links : FLATTEN_LINKS '=' TBOOL ';'",
2117     "serverhide_hide_servers : HIDE_SERVERS '=' TBOOL ';'",
2118     "serverhide_hidden_name : HIDDEN_NAME '=' QSTRING ';'",
2119     "serverhide_links_delay : LINKS_DELAY '=' timespec ';'",
2120     "serverhide_hidden : HIDDEN '=' TBOOL ';'",
2121     "serverhide_disable_hidden : DISABLE_HIDDEN '=' TBOOL ';'",
2122     "serverhide_hide_server_ips : HIDE_SERVER_IPS '=' TBOOL ';'",
2123 adx 30 };
2124     #endif
2125 db 126 #if YYDEBUG
2126     #include <stdio.h>
2127 michael 55 #endif
2128 db 126 #ifdef YYSTACKSIZE
2129     #undef YYMAXDEPTH
2130     #define YYMAXDEPTH YYSTACKSIZE
2131 michael 55 #else
2132 db 126 #ifdef YYMAXDEPTH
2133     #define YYSTACKSIZE YYMAXDEPTH
2134 michael 55 #else
2135 db 126 #define YYSTACKSIZE 10000
2136     #define YYMAXDEPTH 10000
2137 michael 55 #endif
2138     #endif
2139 db 126 #define YYINITSTACKSIZE 200
2140 adx 30 int yydebug;
2141 db 126 int yynerrs;
2142     int yyerrflag;
2143     int yychar;
2144     short *yyssp;
2145     YYSTYPE *yyvsp;
2146     YYSTYPE yyval;
2147     YYSTYPE yylval;
2148     short *yyss;
2149     short *yysslim;
2150     YYSTYPE *yyvs;
2151     int yystacksize;
2152     /* allocate initial stack or double stack size, up to YYMAXDEPTH */
2153     static int yygrowstack()
2154 adx 30 {
2155 db 126 int newsize, i;
2156     short *newss;
2157     YYSTYPE *newvs;
2158 adx 30
2159 db 126 if ((newsize = yystacksize) == 0)
2160     newsize = YYINITSTACKSIZE;
2161     else if (newsize >= YYMAXDEPTH)
2162     return -1;
2163     else if ((newsize *= 2) > YYMAXDEPTH)
2164     newsize = YYMAXDEPTH;
2165     i = yyssp - yyss;
2166     newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) :
2167     (short *)malloc(newsize * sizeof *newss);
2168     if (newss == NULL)
2169     return -1;
2170     yyss = newss;
2171     yyssp = newss + i;
2172     newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) :
2173     (YYSTYPE *)malloc(newsize * sizeof *newvs);
2174     if (newvs == NULL)
2175     return -1;
2176     yyvs = newvs;
2177     yyvsp = newvs + i;
2178     yystacksize = newsize;
2179     yysslim = yyss + newsize - 1;
2180     return 0;
2181 adx 30 }
2182    
2183 db 126 #define YYABORT goto yyabort
2184     #define YYREJECT goto yyabort
2185     #define YYACCEPT goto yyaccept
2186     #define YYERROR goto yyerrlab
2187 adx 30
2188 db 126 #ifndef YYPARSE_PARAM
2189     #if defined(__cplusplus) || __STDC__
2190     #define YYPARSE_PARAM_ARG void
2191     #define YYPARSE_PARAM_DECL
2192     #else /* ! ANSI-C/C++ */
2193     #define YYPARSE_PARAM_ARG
2194     #define YYPARSE_PARAM_DECL
2195     #endif /* ANSI-C/C++ */
2196     #else /* YYPARSE_PARAM */
2197     #ifndef YYPARSE_PARAM_TYPE
2198     #define YYPARSE_PARAM_TYPE void *
2199     #endif
2200     #if defined(__cplusplus) || __STDC__
2201     #define YYPARSE_PARAM_ARG YYPARSE_PARAM_TYPE YYPARSE_PARAM
2202     #define YYPARSE_PARAM_DECL
2203     #else /* ! ANSI-C/C++ */
2204     #define YYPARSE_PARAM_ARG YYPARSE_PARAM
2205     #define YYPARSE_PARAM_DECL YYPARSE_PARAM_TYPE YYPARSE_PARAM;
2206     #endif /* ANSI-C/C++ */
2207     #endif /* ! YYPARSE_PARAM */
2208 adx 30
2209 db 126 int
2210     yyparse (YYPARSE_PARAM_ARG)
2211     YYPARSE_PARAM_DECL
2212 michael 109 {
2213 db 126 int yym, yyn, yystate;
2214 adx 30 #if YYDEBUG
2215 db 126 const char *yys;
2216 adx 30
2217 db 126 if ((yys = getenv("YYDEBUG")))
2218 adx 30 {
2219 db 126 yyn = *yys;
2220     if (yyn >= '0' && yyn <= '9')
2221     yydebug = yyn - '0';
2222 adx 30 }
2223 db 126 #endif
2224 adx 30
2225 db 126 yynerrs = 0;
2226     yyerrflag = 0;
2227     yychar = (-1);
2228 adx 30
2229 db 126 if (yyss == NULL && yygrowstack()) goto yyoverflow;
2230     yyssp = yyss;
2231     yyvsp = yyvs;
2232     *yyssp = yystate = 0;
2233 adx 30
2234 db 126 yyloop:
2235     if ((yyn = yydefred[yystate])) goto yyreduce;
2236     if (yychar < 0)
2237 adx 30 {
2238 db 126 if ((yychar = yylex()) < 0) yychar = 0;
2239     #if YYDEBUG
2240     if (yydebug)
2241     {
2242     yys = 0;
2243     if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2244     if (!yys) yys = "illegal-symbol";
2245     printf("%sdebug: state %d, reading %d (%s)\n",
2246     YYPREFIX, yystate, yychar, yys);
2247     }
2248 adx 30 #endif
2249     }
2250 db 126 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
2251     yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2252 adx 30 {
2253 db 126 #if YYDEBUG
2254     if (yydebug)
2255     printf("%sdebug: state %d, shifting to state %d\n",
2256     YYPREFIX, yystate, yytable[yyn]);
2257     #endif
2258     if (yyssp >= yysslim && yygrowstack())
2259     {
2260     goto yyoverflow;
2261     }
2262     *++yyssp = yystate = yytable[yyn];
2263     *++yyvsp = yylval;
2264     yychar = (-1);
2265     if (yyerrflag > 0) --yyerrflag;
2266     goto yyloop;
2267 adx 30 }
2268 db 126 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
2269     yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2270 adx 30 {
2271 db 126 yyn = yytable[yyn];
2272     goto yyreduce;
2273 adx 30 }
2274 db 126 if (yyerrflag) goto yyinrecovery;
2275     #if defined(lint) || defined(__GNUC__)
2276     goto yynewerror;
2277     #endif
2278     yynewerror:
2279     yyerror("syntax error");
2280     #if defined(lint) || defined(__GNUC__)
2281     goto yyerrlab;
2282     #endif
2283     yyerrlab:
2284     ++yynerrs;
2285     yyinrecovery:
2286     if (yyerrflag < 3)
2287 adx 30 {
2288 db 126 yyerrflag = 3;
2289     for (;;)
2290     {
2291     if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
2292     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
2293     {
2294     #if YYDEBUG
2295     if (yydebug)
2296     printf("%sdebug: state %d, error recovery shifting\
2297     to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
2298     #endif
2299     if (yyssp >= yysslim && yygrowstack())
2300     {
2301     goto yyoverflow;
2302     }
2303     *++yyssp = yystate = yytable[yyn];
2304     *++yyvsp = yylval;
2305     goto yyloop;
2306     }
2307     else
2308     {
2309     #if YYDEBUG
2310     if (yydebug)
2311     printf("%sdebug: error recovery discarding state %d\n",
2312     YYPREFIX, *yyssp);
2313     #endif
2314     if (yyssp <= yyss) goto yyabort;
2315     --yyssp;
2316     --yyvsp;
2317     }
2318     }
2319 adx 30 }
2320 db 126 else
2321 adx 30 {
2322 db 126 if (yychar == 0) goto yyabort;
2323     #if YYDEBUG
2324     if (yydebug)
2325     {
2326     yys = 0;
2327     if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2328     if (!yys) yys = "illegal-symbol";
2329     printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
2330     YYPREFIX, yystate, yychar, yys);
2331     }
2332     #endif
2333     yychar = (-1);
2334     goto yyloop;
2335 adx 30 }
2336     yyreduce:
2337 db 126 #if YYDEBUG
2338     if (yydebug)
2339     printf("%sdebug: state %d, reducing by rule %d (%s)\n",
2340     YYPREFIX, yystate, yyn, yyrule[yyn]);
2341     #endif
2342     yym = yylen[yyn];
2343     yyval = yyvsp[1-yym];
2344     switch (yyn)
2345 adx 30 {
2346 db 126 case 25:
2347 michael 109 #line 412 "ircd_parser.y"
2348 db 126 { yyval.number = 0; }
2349     break;
2350     case 27:
2351 michael 109 #line 414 "ircd_parser.y"
2352 db 126 {
2353     yyval.number = yyvsp[-1].number + yyvsp[0].number;
2354 adx 30 }
2355 db 126 break;
2356     case 28:
2357 michael 109 #line 418 "ircd_parser.y"
2358 db 126 {
2359     yyval.number = yyvsp[-2].number + yyvsp[0].number;
2360 adx 30 }
2361 db 126 break;
2362     case 29:
2363 michael 109 #line 422 "ircd_parser.y"
2364 db 126 {
2365     yyval.number = yyvsp[-2].number * 60 + yyvsp[0].number;
2366 adx 30 }
2367 db 126 break;
2368     case 30:
2369 michael 109 #line 426 "ircd_parser.y"
2370 db 126 {
2371     yyval.number = yyvsp[-2].number * 60 * 60 + yyvsp[0].number;
2372 adx 30 }
2373 db 126 break;
2374     case 31:
2375 michael 109 #line 430 "ircd_parser.y"
2376 db 126 {
2377     yyval.number = yyvsp[-2].number * 60 * 60 * 24 + yyvsp[0].number;
2378 adx 30 }
2379 db 126 break;
2380     case 32:
2381 michael 109 #line 434 "ircd_parser.y"
2382 db 126 {
2383     yyval.number = yyvsp[-2].number * 60 * 60 * 24 * 7 + yyvsp[0].number;
2384 adx 30 }
2385 db 126 break;
2386     case 33:
2387 michael 109 #line 439 "ircd_parser.y"
2388 db 126 { yyval.number = 0; }
2389     break;
2390     case 35:
2391 michael 109 #line 440 "ircd_parser.y"
2392 db 126 { yyval.number = yyvsp[-1].number + yyvsp[0].number; }
2393     break;
2394     case 36:
2395 michael 109 #line 441 "ircd_parser.y"
2396 db 126 { yyval.number = yyvsp[-2].number + yyvsp[0].number; }
2397     break;
2398     case 37:
2399 michael 109 #line 442 "ircd_parser.y"
2400 db 126 { yyval.number = yyvsp[-2].number * 1024 + yyvsp[0].number; }
2401     break;
2402     case 38:
2403 michael 109 #line 443 "ircd_parser.y"
2404 db 126 { yyval.number = yyvsp[-2].number * 1024 * 1024 + yyvsp[0].number; }
2405     break;
2406     case 45:
2407 michael 109 #line 457 "ircd_parser.y"
2408 db 126 {
2409 adx 30 #ifndef STATIC_MODULES /* NOOP in the static case */
2410     if (ypass == 2)
2411     {
2412     char *m_bn;
2413    
2414     m_bn = basename(yylval.string);
2415    
2416     /* I suppose we should just ignore it if it is already loaded(since
2417     * otherwise we would flood the opers on rehash) -A1kmm.
2418     */
2419     add_conf_module(yylval.string);
2420     }
2421     #endif
2422     }
2423 db 126 break;
2424     case 46:
2425 michael 109 #line 474 "ircd_parser.y"
2426 db 126 {
2427 adx 30 #ifndef STATIC_MODULES
2428     if (ypass == 2)
2429     mod_add_path(yylval.string);
2430     #endif
2431     }
2432 db 126 break;
2433     case 62:
2434 michael 109 #line 498 "ircd_parser.y"
2435 db 126 {
2436 adx 30 #ifdef HAVE_LIBCRYPTO
2437     if (ypass == 2 && ServerInfo.ctx)
2438     {
2439     if (!ServerInfo.rsa_private_key_file)
2440     {
2441     yyerror("No rsa_private_key_file specified, SSL disabled");
2442     break;
2443     }
2444    
2445     if (SSL_CTX_use_certificate_file(ServerInfo.ctx,
2446     yylval.string, SSL_FILETYPE_PEM) <= 0)
2447     {
2448     yyerror(ERR_lib_error_string(ERR_get_error()));
2449     break;
2450     }
2451    
2452     if (SSL_CTX_use_PrivateKey_file(ServerInfo.ctx,
2453     ServerInfo.rsa_private_key_file, SSL_FILETYPE_PEM) <= 0)
2454     {
2455     yyerror(ERR_lib_error_string(ERR_get_error()));
2456     break;
2457     }
2458    
2459     if (!SSL_CTX_check_private_key(ServerInfo.ctx))
2460     {
2461     yyerror("RSA private key does not match the SSL certificate public key!");
2462     break;
2463     }
2464     }
2465     #endif
2466     }
2467 db 126 break;
2468     case 63:
2469 michael 109 #line 532 "ircd_parser.y"
2470 db 126 {
2471 adx 30 #ifdef HAVE_LIBCRYPTO
2472     if (ypass == 1)
2473     {
2474     BIO *file;
2475    
2476     if (ServerInfo.rsa_private_key)
2477     {
2478     RSA_free(ServerInfo.rsa_private_key);
2479     ServerInfo.rsa_private_key = NULL;
2480     }
2481    
2482     if (ServerInfo.rsa_private_key_file)
2483     {
2484     MyFree(ServerInfo.rsa_private_key_file);
2485     ServerInfo.rsa_private_key_file = NULL;
2486     }
2487    
2488     DupString(ServerInfo.rsa_private_key_file, yylval.string);
2489    
2490     if ((file = BIO_new_file(yylval.string, "r")) == NULL)
2491     {
2492     yyerror("File open failed, ignoring");
2493     break;
2494     }
2495    
2496     ServerInfo.rsa_private_key = (RSA *)PEM_read_bio_RSAPrivateKey(file, NULL,
2497     0, NULL);
2498    
2499     BIO_set_close(file, BIO_CLOSE);
2500     BIO_free(file);
2501    
2502     if (ServerInfo.rsa_private_key == NULL)
2503     {
2504     yyerror("Couldn't extract key, ignoring");
2505     break;
2506     }
2507    
2508     if (!RSA_check_key(ServerInfo.rsa_private_key))
2509     {
2510     RSA_free(ServerInfo.rsa_private_key);
2511     ServerInfo.rsa_private_key = NULL;
2512    
2513     yyerror("Invalid key, ignoring");
2514     break;
2515     }
2516    
2517     /* require 2048 bit (256 byte) key */
2518     if (RSA_size(ServerInfo.rsa_private_key) != 256)
2519     {
2520     RSA_free(ServerInfo.rsa_private_key);
2521     ServerInfo.rsa_private_key = NULL;
2522    
2523     yyerror("Not a 2048 bit key, ignoring");
2524     }
2525     }
2526     #endif
2527     }
2528 db 126 break;
2529     case 64:
2530 michael 109 #line 592 "ircd_parser.y"
2531 db 126 {
2532 adx 30 /* this isn't rehashable */
2533     if (ypass == 2)
2534     {
2535     if (ServerInfo.name == NULL)
2536     {
2537     /* the ircd will exit() in main() if we dont set one */
2538     if (strlen(yylval.string) <= HOSTLEN)
2539     DupString(ServerInfo.name, yylval.string);
2540     }
2541     }
2542     }
2543 db 126 break;
2544     case 65:
2545 michael 109 #line 606 "ircd_parser.y"
2546 db 126 {
2547 adx 30 /* this isn't rehashable */
2548     if (ypass == 2 && !ServerInfo.sid)
2549     {
2550     if ((strlen(yylval.string) == IRC_MAXSID) && IsDigit(yylval.string[0])
2551     && IsAlNum(yylval.string[1]) && IsAlNum(yylval.string[2]))
2552     {
2553     DupString(ServerInfo.sid, yylval.string);
2554     }
2555     else
2556     {
2557     ilog(L_ERROR, "Ignoring config file entry SID -- invalid SID. Aborting.");
2558     exit(0);
2559     }
2560     }
2561     }
2562 db 126 break;
2563     case 66:
2564 michael 109 #line 624 "ircd_parser.y"
2565 db 126 {
2566 adx 30 if (ypass == 2)
2567     {
2568     MyFree(ServerInfo.description);
2569     DupString(ServerInfo.description,yylval.string);
2570     }
2571     }
2572 db 126 break;
2573     case 67:
2574 michael 109 #line 633 "ircd_parser.y"
2575 db 126 {
2576 adx 30 if (ypass == 2)
2577     {
2578     char *p;
2579    
2580     if ((p = strchr(yylval.string, ' ')) != NULL)
2581     p = '\0';
2582    
2583     MyFree(ServerInfo.network_name);
2584     DupString(ServerInfo.network_name, yylval.string);
2585     }
2586     }
2587 db 126 break;
2588     case 68:
2589 michael 109 #line 647 "ircd_parser.y"
2590 db 126 {
2591 adx 30 if (ypass == 2)
2592     {
2593     MyFree(ServerInfo.network_desc);
2594     DupString(ServerInfo.network_desc, yylval.string);
2595     }
2596     }
2597 db 126 break;
2598     case 69:
2599 michael 109 #line 656 "ircd_parser.y"
2600 db 126 {
2601 adx 30 if (ypass == 2 && *yylval.string != '*')
2602     {
2603     struct addrinfo hints, *res;
2604    
2605     memset(&hints, 0, sizeof(hints));
2606    
2607     hints.ai_family = AF_UNSPEC;
2608     hints.ai_socktype = SOCK_STREAM;
2609     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
2610    
2611     if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
2612     ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
2613     else
2614     {
2615     assert(res != NULL);
2616    
2617     memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
2618     ServerInfo.ip.ss.ss_family = res->ai_family;
2619     ServerInfo.ip.ss_len = res->ai_addrlen;
2620     irc_freeaddrinfo(res);
2621    
2622     ServerInfo.specific_ipv4_vhost = 1;
2623     }
2624     }
2625     }
2626 db 126 break;
2627     case 70:
2628 michael 109 #line 684 "ircd_parser.y"
2629 db 126 {
2630 adx 30 #ifdef IPV6
2631     if (ypass == 2 && *yylval.string != '*')
2632     {
2633     struct addrinfo hints, *res;
2634    
2635     memset(&hints, 0, sizeof(hints));
2636    
2637     hints.ai_family = AF_UNSPEC;
2638     hints.ai_socktype = SOCK_STREAM;
2639     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
2640    
2641     if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
2642     ilog(L_ERROR, "Invalid netmask for server vhost6(%s)", yylval.string);
2643     else
2644     {
2645     assert(res != NULL);
2646    
2647     memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
2648     ServerInfo.ip6.ss.ss_family = res->ai_family;
2649     ServerInfo.ip6.ss_len = res->ai_addrlen;
2650     irc_freeaddrinfo(res);
2651    
2652     ServerInfo.specific_ipv6_vhost = 1;
2653     }
2654     }
2655     #endif
2656     }
2657 db 126 break;
2658     case 71:
2659 michael 109 #line 714 "ircd_parser.y"
2660 db 126 {
2661 adx 30 if (ypass == 2)
2662     {
2663     recalc_fdlimit(NULL);
2664    
2665 db 126 if (yyvsp[-1].number < MAXCLIENTS_MIN)
2666 adx 30 {
2667     char buf[IRCD_BUFSIZE];
2668     ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
2669     yyerror(buf);
2670     }
2671 db 126 else if (yyvsp[-1].number > MAXCLIENTS_MAX)
2672 adx 30 {
2673     char buf[IRCD_BUFSIZE];
2674     ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
2675     yyerror(buf);
2676     }
2677     else
2678 db 126 ServerInfo.max_clients = yyvsp[-1].number;
2679 adx 30 }
2680     }
2681 db 126 break;
2682     case 72:
2683 michael 109 #line 737 "ircd_parser.y"
2684 db 126 {
2685 adx 30 if (ypass == 2)
2686     {
2687     if (yylval.number)
2688     {
2689     /* Don't become a hub if we have a lazylink active. */
2690     if (!ServerInfo.hub && uplink && IsCapable(uplink, CAP_LL))
2691     {
2692     sendto_realops_flags(UMODE_ALL, L_ALL,
2693     "Ignoring config file line hub=yes; "
2694     "due to active LazyLink (%s)", uplink->name);
2695     }
2696     else
2697     {
2698     ServerInfo.hub = 1;
2699     uplink = NULL;
2700     delete_capability("HUB");
2701     add_capability("HUB", CAP_HUB, 1);
2702     }
2703     }
2704     else if (ServerInfo.hub)
2705     {
2706     dlink_node *ptr = NULL;
2707    
2708     ServerInfo.hub = 0;
2709     delete_capability("HUB");
2710    
2711     /* Don't become a leaf if we have a lazylink active. */
2712     DLINK_FOREACH(ptr, serv_list.head)
2713     {
2714     const struct Client *acptr = ptr->data;
2715     if (MyConnect(acptr) && IsCapable(acptr, CAP_LL))
2716     {
2717     sendto_realops_flags(UMODE_ALL, L_ALL,
2718     "Ignoring config file line hub=no; "
2719     "due to active LazyLink (%s)",
2720     acptr->name);
2721     add_capability("HUB", CAP_HUB, 1);
2722     ServerInfo.hub = 1;
2723     break;
2724     }
2725     }
2726     }
2727     }
2728     }
2729 db 126 break;
2730     case 80:
2731 michael 109 #line 793 "ircd_parser.y"
2732 db 126 {
2733 adx 30 if (ypass == 2)
2734     {
2735     MyFree(AdminInfo.name);
2736     DupString(AdminInfo.name, yylval.string);
2737     }
2738     }
2739 db 126 break;
2740     case 81:
2741 michael 109 #line 802 "ircd_parser.y"
2742 db 126 {
2743 adx 30 if (ypass == 2)
2744     {
2745     MyFree(AdminInfo.email);
2746     DupString(AdminInfo.email, yylval.string);
2747     }
2748     }
2749 db 126 break;
2750     case 82:
2751 michael 109 #line 811 "ircd_parser.y"
2752 db 126 {
2753 adx 30 if (ypass == 2)
2754     {
2755     MyFree(AdminInfo.description);
2756     DupString(AdminInfo.description, yylval.string);
2757     }
2758     }
2759 db 126 break;
2760     case 99:
2761 michael 109 #line 838 "ircd_parser.y"
2762 db 126 {
2763 adx 30 }
2764 db 126 break;
2765     case 100:
2766 michael 109 #line 842 "ircd_parser.y"
2767 db 126 {
2768 adx 30 }
2769 db 126 break;
2770     case 101:
2771 michael 109 #line 846 "ircd_parser.y"
2772 db 126 {
2773 adx 30 if (ypass == 2)
2774     strlcpy(ConfigLoggingEntry.userlog, yylval.string,
2775     sizeof(ConfigLoggingEntry.userlog));
2776     }
2777 db 126 break;
2778     case 102:
2779 michael 109 #line 853 "ircd_parser.y"
2780 db 126 {
2781 adx 30 if (ypass == 2)
2782     strlcpy(ConfigLoggingEntry.failed_operlog, yylval.string,
2783     sizeof(ConfigLoggingEntry.failed_operlog));
2784     }
2785 db 126 break;
2786     case 103:
2787 michael 109 #line 860 "ircd_parser.y"
2788 db 126 {
2789 adx 30 if (ypass == 2)
2790     strlcpy(ConfigLoggingEntry.operlog, yylval.string,
2791     sizeof(ConfigLoggingEntry.operlog));
2792     }
2793 db 126 break;
2794     case 104:
2795 michael 109 #line 867 "ircd_parser.y"
2796 db 126 {
2797 adx 30 if (ypass == 2)
2798     strlcpy(ConfigLoggingEntry.operspylog, yylval.string,
2799     sizeof(ConfigLoggingEntry.operspylog));
2800     }
2801 db 126 break;
2802     case 105:
2803 michael 109 #line 874 "ircd_parser.y"
2804 db 126 {
2805 adx 30 if (ypass == 2)
2806     strlcpy(ConfigLoggingEntry.glinelog, yylval.string,
2807     sizeof(ConfigLoggingEntry.glinelog));
2808     }
2809 db 126 break;
2810     case 106:
2811 michael 109 #line 881 "ircd_parser.y"
2812 db 126 {
2813 adx 30 if (ypass == 2)
2814     strlcpy(ConfigLoggingEntry.klinelog, yylval.string,
2815     sizeof(ConfigLoggingEntry.klinelog));
2816     }
2817 db 126 break;
2818     case 107:
2819 michael 109 #line 888 "ircd_parser.y"
2820 db 126 {
2821 adx 30 if (ypass == 2)
2822     strlcpy(ConfigLoggingEntry.ioerrlog, yylval.string,
2823     sizeof(ConfigLoggingEntry.ioerrlog));
2824     }
2825 db 126 break;
2826     case 108:
2827 michael 109 #line 895 "ircd_parser.y"
2828 db 126 {
2829 adx 30 if (ypass == 2)
2830     strlcpy(ConfigLoggingEntry.killlog, yylval.string,
2831     sizeof(ConfigLoggingEntry.killlog));
2832     }
2833 db 126 break;
2834     case 109:
2835 michael 109 #line 902 "ircd_parser.y"
2836 db 126 {
2837 adx 30 if (ypass == 2)
2838     set_log_level(L_CRIT);
2839     }
2840 db 126 break;
2841     case 110:
2842 michael 109 #line 906 "ircd_parser.y"
2843 db 126 {
2844 adx 30 if (ypass == 2)
2845     set_log_level(L_ERROR);
2846     }
2847 db 126 break;
2848     case 111:
2849 michael 109 #line 910 "ircd_parser.y"
2850 db 126 {
2851 adx 30 if (ypass == 2)
2852     set_log_level(L_WARN);
2853     }
2854 db 126 break;
2855     case 112:
2856 michael 109 #line 914 "ircd_parser.y"
2857 db 126 {
2858 adx 30 if (ypass == 2)
2859     set_log_level(L_NOTICE);
2860     }
2861 db 126 break;
2862     case 113:
2863 michael 109 #line 918 "ircd_parser.y"
2864 db 126 {
2865 adx 30 if (ypass == 2)
2866     set_log_level(L_TRACE);
2867     }
2868 db 126 break;
2869     case 114:
2870 michael 109 #line 922 "ircd_parser.y"
2871 db 126 {
2872 adx 30 if (ypass == 2)
2873     set_log_level(L_INFO);
2874     }
2875 db 126 break;
2876     case 115:
2877 michael 109 #line 926 "ircd_parser.y"
2878 db 126 {
2879 adx 30 if (ypass == 2)
2880     set_log_level(L_DEBUG);
2881     }
2882 db 126 break;
2883     case 116:
2884 michael 109 #line 932 "ircd_parser.y"
2885 db 126 {
2886 adx 30 if (ypass == 2)
2887     ConfigLoggingEntry.use_logging = yylval.number;
2888     }
2889 db 126 break;
2890     case 117:
2891 michael 109 #line 941 "ircd_parser.y"
2892 db 126 {
2893 adx 30 if (ypass == 2)
2894     {
2895     yy_conf = make_conf_item(OPER_TYPE);
2896 db 139 yy_aconf = &yy_conf->conf.AccessItem;
2897 adx 30 SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
2898     }
2899     else
2900     {
2901     MyFree(class_name);
2902     class_name = NULL;
2903     }
2904     }
2905 db 126 break;
2906     case 118:
2907 michael 109 #line 954 "ircd_parser.y"
2908 db 126 {
2909 adx 30 if (ypass == 2)
2910     {
2911     struct CollectItem *yy_tmp;
2912     dlink_node *ptr;
2913     dlink_node *next_ptr;
2914    
2915     conf_add_class_to_conf(yy_conf, class_name);
2916    
2917     /* Now, make sure there is a copy of the "base" given oper
2918     * block in each of the collected copies
2919     */
2920    
2921     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
2922     {
2923     struct AccessItem *new_aconf;
2924     struct ConfItem *new_conf;
2925     yy_tmp = ptr->data;
2926    
2927     new_conf = make_conf_item(OPER_TYPE);
2928 db 139 new_aconf = &new_conf->conf.AccessItem;
2929 adx 30
2930     new_aconf->flags = yy_aconf->flags;
2931    
2932     if (yy_conf->name != NULL)
2933     DupString(new_conf->name, yy_conf->name);
2934     if (yy_tmp->user != NULL)
2935     DupString(new_aconf->user, yy_tmp->user);
2936     else
2937     DupString(new_aconf->user, "*");
2938     if (yy_tmp->host != NULL)
2939     DupString(new_aconf->host, yy_tmp->host);
2940     else
2941     DupString(new_aconf->host, "*");
2942     conf_add_class_to_conf(new_conf, class_name);
2943     if (yy_aconf->passwd != NULL)
2944     DupString(new_aconf->passwd, yy_aconf->passwd);
2945    
2946     new_aconf->port = yy_aconf->port;
2947     #ifdef HAVE_LIBCRYPTO
2948     if (yy_aconf->rsa_public_key_file != NULL)
2949     {
2950     BIO *file;
2951    
2952     DupString(new_aconf->rsa_public_key_file,
2953     yy_aconf->rsa_public_key_file);
2954    
2955     file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
2956     new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
2957     NULL, 0, NULL);
2958     BIO_set_close(file, BIO_CLOSE);
2959     BIO_free(file);
2960     }
2961     #endif
2962    
2963     #ifdef HAVE_LIBCRYPTO
2964     if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
2965     && yy_tmp->host)
2966     #else
2967     if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
2968     #endif
2969     {
2970     conf_add_class_to_conf(new_conf, class_name);
2971     if (yy_tmp->name != NULL)
2972     DupString(new_conf->name, yy_tmp->name);
2973     }
2974    
2975     dlinkDelete(&yy_tmp->node, &col_conf_list);
2976     free_collect_item(yy_tmp);
2977     }
2978    
2979     yy_conf = NULL;
2980     yy_aconf = NULL;
2981    
2982    
2983     MyFree(class_name);
2984     class_name = NULL;
2985     }
2986     }
2987 db 126 break;
2988     case 146:
2989 michael 109 #line 1046 "ircd_parser.y"
2990 db 126 {
2991 adx 30 if (ypass == 2)
2992     {
2993     if (strlen(yylval.string) > OPERNICKLEN)
2994     yylval.string[OPERNICKLEN] = '\0';
2995    
2996     MyFree(yy_conf->name);
2997     DupString(yy_conf->name, yylval.string);
2998     }
2999     }
3000 db 126 break;
3001     case 147:
3002 michael 109 #line 1058 "ircd_parser.y"
3003 db 126 {
3004 adx 30 if (ypass == 2)
3005     {
3006     if (strlen(yylval.string) > OPERNICKLEN)
3007     yylval.string[OPERNICKLEN] = '\0';
3008    
3009     MyFree(yy_conf->name);
3010     DupString(yy_conf->name, yylval.string);
3011     }
3012     }
3013 db 126 break;
3014     case 148:
3015 michael 109 #line 1070 "ircd_parser.y"
3016 db 126 {
3017 adx 30 if (ypass == 2)
3018     {
3019     struct CollectItem *yy_tmp;
3020    
3021     if (yy_aconf->user == NULL)
3022     {
3023     split_nuh(yylval.string, NULL, &yy_aconf->user, &yy_aconf->host);
3024     }
3025     else
3026     {
3027     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
3028     split_nuh(yylval.string, NULL, &yy_tmp->user, &yy_tmp->host);
3029     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
3030     }
3031     }
3032     }
3033 db 126 break;
3034     case 149:
3035 michael 109 #line 1089 "ircd_parser.y"
3036 db 126 {
3037 adx 30 if (ypass == 2)
3038     {
3039     if (yy_aconf->passwd != NULL)
3040     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
3041    
3042     MyFree(yy_aconf->passwd);
3043     DupString(yy_aconf->passwd, yylval.string);
3044     }
3045     }
3046 db 126 break;
3047     case 150:
3048 michael 109 #line 1101 "ircd_parser.y"
3049 db 126 {
3050 adx 30 if (ypass == 2)
3051     {
3052     if (yylval.number)
3053     SetConfEncrypted(yy_aconf);
3054     else
3055     ClearConfEncrypted(yy_aconf);
3056     }
3057     }
3058 db 126 break;
3059     case 151:
3060 michael 109 #line 1112 "ircd_parser.y"
3061 db 126 {
3062 adx 30 #ifdef HAVE_LIBCRYPTO
3063     if (ypass == 2)
3064     {
3065     BIO *file;
3066    
3067     if (yy_aconf->rsa_public_key != NULL)
3068     {
3069     RSA_free(yy_aconf->rsa_public_key);
3070     yy_aconf->rsa_public_key = NULL;
3071     }
3072    
3073     if (yy_aconf->rsa_public_key_file != NULL)
3074     {
3075     MyFree(yy_aconf->rsa_public_key_file);
3076     yy_aconf->rsa_public_key_file = NULL;
3077     }
3078    
3079     DupString(yy_aconf->rsa_public_key_file, yylval.string);
3080     file = BIO_new_file(yylval.string, "r");
3081    
3082     if (file == NULL)
3083     {
3084     yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
3085     break;
3086     }
3087    
3088     yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
3089    
3090     if (yy_aconf->rsa_public_key == NULL)
3091     {
3092     yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3093     break;
3094     }
3095    
3096     BIO_set_close(file, BIO_CLOSE);
3097     BIO_free(file);
3098     }
3099     #endif /* HAVE_LIBCRYPTO */
3100     }
3101 db 126 break;
3102     case 152:
3103 michael 109 #line 1154 "ircd_parser.y"
3104 db 126 {
3105 adx 30 if (ypass == 2)
3106     {
3107     MyFree(class_name);
3108     DupString(class_name, yylval.string);
3109     }
3110     }
3111 db 126 break;
3112     case 153:
3113 michael 109 #line 1163 "ircd_parser.y"
3114 db 126 {
3115 michael 55 yy_aconf->modes = 0;
3116     }
3117 db 126 break;
3118     case 157:
3119 michael 109 #line 1169 "ircd_parser.y"
3120 db 126 {
3121 michael 55 yy_aconf->modes |= UMODE_BOTS;
3122     }
3123 db 126 break;
3124     case 158:
3125 michael 109 #line 1172 "ircd_parser.y"
3126 db 126 {
3127 michael 55 yy_aconf->modes |= UMODE_CCONN;
3128     }
3129 db 126 break;
3130     case 159:
3131 michael 109 #line 1175 "ircd_parser.y"
3132 db 126 {
3133 michael 55 yy_aconf->modes |= UMODE_DEAF;
3134     }
3135 db 126 break;
3136     case 160:
3137 michael 109 #line 1178 "ircd_parser.y"
3138 db 126 {
3139 michael 55 yy_aconf->modes |= UMODE_DEBUG;
3140     }
3141 db 126 break;
3142     case 161:
3143 michael 109 #line 1181 "ircd_parser.y"
3144 db 126 {
3145 michael 55 yy_aconf->modes |= UMODE_FULL;
3146     }
3147 db 126 break;
3148     case 162:
3149 michael 109 #line 1184 "ircd_parser.y"
3150 db 126 {
3151 michael 55 yy_aconf->modes |= UMODE_SKILL;
3152     }
3153 db 126 break;
3154     case 163:
3155 michael 109 #line 1187 "ircd_parser.y"
3156 db 126 {
3157 michael 55 yy_aconf->modes |= UMODE_NCHANGE;
3158     }
3159 db 126 break;
3160     case 164:
3161 michael 109 #line 1190 "ircd_parser.y"
3162 db 126 {
3163 michael 55 yy_aconf->modes |= UMODE_REJ;
3164     }
3165 db 126 break;
3166     case 165:
3167 michael 109 #line 1193 "ircd_parser.y"
3168 db 126 {
3169 michael 55 yy_aconf->modes |= UMODE_UNAUTH;
3170     }
3171 db 126 break;
3172     case 166:
3173 michael 109 #line 1196 "ircd_parser.y"
3174 db 126 {
3175 michael 55 yy_aconf->modes |= UMODE_SPY;
3176     }
3177 db 126 break;
3178     case 167:
3179 michael 109 #line 1199 "ircd_parser.y"
3180 db 126 {
3181 michael 55 yy_aconf->modes |= UMODE_EXTERNAL;
3182     }
3183 db 126 break;
3184     case 168:
3185 michael 109 #line 1202 "ircd_parser.y"
3186 db 126 {
3187 michael 55 yy_aconf->modes |= UMODE_OPERWALL;
3188     }
3189 db 126 break;
3190     case 169:
3191 michael 109 #line 1205 "ircd_parser.y"
3192 db 126 {
3193 michael 55 yy_aconf->modes |= UMODE_SERVNOTICE;
3194     }
3195 db 126 break;
3196     case 170:
3197 michael 109 #line 1208 "ircd_parser.y"
3198 db 126 {
3199 michael 55 yy_aconf->modes |= UMODE_INVISIBLE;
3200     }
3201 db 126 break;
3202     case 171:
3203 michael 109 #line 1211 "ircd_parser.y"
3204 db 126 {
3205 michael 55 yy_aconf->modes |= UMODE_WALLOP;
3206     }
3207 db 126 break;
3208     case 172:
3209 michael 109 #line 1214 "ircd_parser.y"
3210 db 126 {
3211 michael 55 yy_aconf->modes |= UMODE_SOFTCALLERID;
3212     }
3213 db 126 break;
3214     case 173:
3215 michael 109 #line 1217 "ircd_parser.y"
3216 db 126 {
3217 michael 55 yy_aconf->modes |= UMODE_CALLERID;
3218     }
3219 db 126 break;
3220     case 174:
3221 michael 109 #line 1220 "ircd_parser.y"
3222 db 126 {
3223 michael 55 yy_aconf->modes |= UMODE_LOCOPS;
3224     }
3225 db 126 break;
3226     case 175:
3227 michael 109 #line 1225 "ircd_parser.y"
3228 db 126 {
3229 adx 30 if (ypass == 2)
3230     {
3231     if (yylval.number)
3232     yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
3233     else
3234     yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
3235     }
3236     }
3237 db 126 break;
3238     case 176:
3239 michael 109 #line 1236 "ircd_parser.y"
3240 db 126 {
3241 adx 30 if (ypass == 2)
3242     {
3243     if (yylval.number)
3244     yy_aconf->port |= OPER_FLAG_REMOTE;
3245     else
3246     yy_aconf->port &= ~OPER_FLAG_REMOTE;
3247     }
3248     }
3249 db 126 break;
3250     case 177:
3251 michael 109 #line 1247 "ircd_parser.y"
3252 db 126 {
3253 adx 30 if (ypass == 2)
3254     {
3255     if (yylval.number)
3256     yy_aconf->port |= OPER_FLAG_REMOTEBAN;
3257     else
3258     yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
3259     }
3260     }
3261 db 126 break;
3262     case 178:
3263 michael 109 #line 1258 "ircd_parser.y"
3264 db 126 {
3265 adx 30 if (ypass == 2)
3266     {
3267     if (yylval.number)
3268     yy_aconf->port |= OPER_FLAG_K;
3269     else
3270     yy_aconf->port &= ~OPER_FLAG_K;
3271     }
3272     }
3273 db 126 break;
3274     case 179:
3275 michael 109 #line 1269 "ircd_parser.y"
3276 db 126 {
3277 adx 30 if (ypass == 2)
3278     {
3279     if (yylval.number)
3280     yy_aconf->port |= OPER_FLAG_X;
3281     else
3282     yy_aconf->port &= ~OPER_FLAG_X;
3283     }
3284     }
3285 db 126 break;
3286     case 180:
3287 michael 109 #line 1280 "ircd_parser.y"
3288 db 126 {
3289 adx 30 if (ypass == 2)
3290     {
3291     if (yylval.number)
3292     yy_aconf->port |= OPER_FLAG_UNKLINE;
3293     else
3294     yy_aconf->port &= ~OPER_FLAG_UNKLINE;
3295     }
3296     }
3297 db 126 break;
3298     case 181:
3299 michael 109 #line 1291 "ircd_parser.y"
3300 db 126 {
3301 adx 30 if (ypass == 2)
3302     {
3303     if (yylval.number)
3304     yy_aconf->port |= OPER_FLAG_GLINE;
3305     else
3306     yy_aconf->port &= ~OPER_FLAG_GLINE;
3307     }
3308     }
3309 db 126 break;
3310     case 182:
3311 michael 109 #line 1302 "ircd_parser.y"
3312 db 126 {
3313 adx 30 if (ypass == 2)
3314     {
3315     if (yylval.number)
3316     yy_aconf->port |= OPER_FLAG_N;
3317     else
3318     yy_aconf->port &= ~OPER_FLAG_N;
3319     }
3320     }
3321 db 126 break;
3322     case 183:
3323 michael 109 #line 1313 "ircd_parser.y"
3324 db 126 {
3325 adx 30 if (ypass == 2)
3326     {
3327     if (yylval.number)
3328     yy_aconf->port |= OPER_FLAG_DIE;
3329     else
3330     yy_aconf->port &= ~OPER_FLAG_DIE;
3331     }
3332     }
3333 db 126 break;
3334     case 184:
3335 michael 109 #line 1324 "ircd_parser.y"
3336 db 126 {
3337 adx 30 if (ypass == 2)
3338     {
3339     if (yylval.number)
3340     yy_aconf->port |= OPER_FLAG_REHASH;
3341     else
3342     yy_aconf->port &= ~OPER_FLAG_REHASH;
3343     }
3344     }
3345 db 126 break;
3346     case 185:
3347 michael 109 #line 1335 "ircd_parser.y"
3348 db 126 {
3349 adx 30 if (ypass == 2)
3350     {
3351     if (yylval.number)
3352     yy_aconf->port |= OPER_FLAG_ADMIN;
3353     else
3354     yy_aconf->port &= ~OPER_FLAG_ADMIN;
3355     }
3356     }
3357 db 126 break;
3358     case 186:
3359 michael 109 #line 1346 "ircd_parser.y"
3360 db 126 {
3361 adx 30 if (ypass == 2)
3362     {
3363     if (yylval.number)
3364     yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
3365     else
3366     yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
3367     }
3368     }
3369 db 126 break;
3370     case 187:
3371 michael 109 #line 1357 "ircd_parser.y"
3372 db 126 {
3373 adx 30 if (ypass == 2)
3374     {
3375     if (yylval.number)
3376     yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
3377     else
3378     yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
3379     }
3380     }
3381 db 126 break;
3382     case 188:
3383 michael 109 #line 1368 "ircd_parser.y"
3384 db 126 {
3385 adx 30 if (ypass == 2)
3386     {
3387     if (yylval.number)
3388     yy_aconf->port |= OPER_FLAG_OPERWALL;
3389     else
3390     yy_aconf->port &= ~OPER_FLAG_OPERWALL;
3391     }
3392     }
3393 db 126 break;
3394     case 189:
3395 michael 109 #line 1379 "ircd_parser.y"
3396 db 126 {
3397 adx 30 }
3398 db 126 break;
3399     case 193:
3400 michael 109 #line 1383 "ircd_parser.y"
3401 db 126 { not_atom = 1; }
3402     break;
3403 db 134 case 195:
3404 michael 109 #line 1384 "ircd_parser.y"
3405 db 126 { not_atom = 0; }
3406     break;
3407 db 134 case 197:
3408 michael 109 #line 1387 "ircd_parser.y"
3409 db 126 {
3410 adx 30 if (ypass == 2)
3411     {
3412     if (not_atom)yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
3413     else yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
3414     }
3415     }
3416 db 126 break;
3417 db 134 case 198:
3418 michael 109 #line 1394 "ircd_parser.y"
3419 db 126 {
3420 adx 30 if (ypass == 2)
3421     {
3422     if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTE;
3423     else yy_aconf->port |= OPER_FLAG_REMOTE;
3424     }
3425     }
3426 db 126 break;
3427 db 134 case 199:
3428 michael 109 #line 1401 "ircd_parser.y"
3429 db 126 {
3430 adx 30 if (ypass == 2)
3431     {
3432     if (not_atom) yy_aconf->port &= ~OPER_FLAG_K;
3433     else yy_aconf->port |= OPER_FLAG_K;
3434     }
3435     }
3436 db 126 break;
3437 db 134 case 200:
3438 michael 109 #line 1408 "ircd_parser.y"
3439 db 126 {
3440 adx 30 if (ypass == 2)
3441     {
3442     if (not_atom) yy_aconf->port &= ~OPER_FLAG_UNKLINE;
3443     else yy_aconf->port |= OPER_FLAG_UNKLINE;
3444     }
3445     }
3446 db 126 break;
3447 db 134 case 201:
3448 michael 109 #line 1415 "ircd_parser.y"
3449 db 126 {
3450 adx 30 if (ypass == 2)
3451     {
3452     if (not_atom) yy_aconf->port &= ~OPER_FLAG_X;
3453     else yy_aconf->port |= OPER_FLAG_X;
3454     }
3455     }
3456 db 126 break;
3457 db 134 case 202:
3458 michael 109 #line 1422 "ircd_parser.y"
3459 db 126 {
3460 adx 30 if (ypass == 2)
3461     {
3462     if (not_atom) yy_aconf->port &= ~OPER_FLAG_GLINE;
3463     else yy_aconf->port |= OPER_FLAG_GLINE;
3464     }
3465     }
3466 db 126 break;
3467 db 134 case 203:
3468 michael 109 #line 1429 "ircd_parser.y"
3469 db 126 {
3470 adx 30 if (ypass == 2)
3471     {
3472     if (not_atom) yy_aconf->port &= ~OPER_FLAG_DIE;
3473     else yy_aconf->port |= OPER_FLAG_DIE;
3474     }
3475     }
3476 db 126 break;
3477 db 134 case 204:
3478 michael 109 #line 1436 "ircd_parser.y"
3479 db 126 {
3480 adx 30 if (ypass == 2)
3481     {
3482     if (not_atom) yy_aconf->port &= ~OPER_FLAG_REHASH;
3483     else yy_aconf->port |= OPER_FLAG_REHASH;
3484     }
3485     }
3486 db 126 break;
3487 db 134 case 205:
3488 michael 109 #line 1443 "ircd_parser.y"
3489 db 126 {
3490 adx 30 if (ypass == 2)
3491     {
3492     if (not_atom) yy_aconf->port &= ~OPER_FLAG_ADMIN;
3493     else yy_aconf->port |= OPER_FLAG_ADMIN;
3494     }
3495     }
3496 db 126 break;
3497 db 134 case 206:
3498 michael 109 #line 1450 "ircd_parser.y"
3499 db 126 {
3500 adx 30 if (ypass == 2)
3501     {
3502     if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
3503     else yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
3504     }
3505     }
3506 db 126 break;
3507 db 134 case 207:
3508 michael 109 #line 1457 "ircd_parser.y"
3509 db 126 {
3510 adx 30 if (ypass == 2)
3511     {
3512     if (not_atom) yy_aconf->port &= ~OPER_FLAG_N;
3513     else yy_aconf->port |= OPER_FLAG_N;
3514     }
3515     }
3516 db 126 break;
3517 db 134 case 208:
3518 michael 109 #line 1464 "ircd_parser.y"
3519 db 126 {
3520 adx 30 if (ypass == 2)
3521     {
3522     if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPERWALL;
3523     else yy_aconf->port |= OPER_FLAG_OPERWALL;
3524     }
3525     }
3526 db 126 break;
3527 db 134 case 209:
3528 michael 109 #line 1471 "ircd_parser.y"
3529 db 126 {
3530 adx 30 if (ypass == 2)
3531     {
3532     if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPER_SPY;
3533     else yy_aconf->port |= OPER_FLAG_OPER_SPY;
3534     }
3535     }
3536 db 126 break;
3537 db 134 case 210:
3538 michael 109 #line 1478 "ircd_parser.y"
3539 db 126 {
3540 adx 30 if (ypass == 2)
3541     {
3542     if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
3543     else yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
3544     }
3545     }
3546 db 126 break;
3547 db 134 case 211:
3548 michael 109 #line 1485 "ircd_parser.y"
3549 db 126 {
3550 adx 30 if (ypass == 2)
3551     {
3552     if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
3553     else yy_aconf->port |= OPER_FLAG_REMOTEBAN;
3554     }
3555     }
3556 db 126 break;
3557 db 134 case 212:
3558 michael 109 #line 1492 "ircd_parser.y"
3559 db 126 {
3560 adx 30 if (ypass == 2)
3561     {
3562     if (not_atom) ClearConfEncrypted(yy_aconf);
3563     else SetConfEncrypted(yy_aconf);
3564     }
3565     }
3566 db 126 break;
3567 db 134 case 213:
3568 michael 109 #line 1505 "ircd_parser.y"
3569 db 126 {
3570 adx 30 if (ypass == 1)
3571     {
3572     yy_conf = make_conf_item(CLASS_TYPE);
3573 db 139 yy_class = &yy_conf->conf.ClassItem;
3574 adx 30 }
3575     }
3576 db 126 break;
3577 db 134 case 214:
3578 michael 109 #line 1512 "ircd_parser.y"
3579 db 126 {
3580 adx 30 if (ypass == 1)
3581     {
3582     struct ConfItem *cconf;
3583     struct ClassItem *class = NULL;
3584    
3585     if (yy_class_name == NULL)
3586     {
3587     delete_conf_item(yy_conf);
3588     }
3589     else
3590     {
3591     cconf = find_exact_name_conf(CLASS_TYPE, yy_class_name, NULL, NULL);
3592    
3593     if (cconf != NULL) /* The class existed already */
3594     {
3595 db 139 class = &cconf->conf.ClassItem;
3596 db 126 rebuild_cidr_class(class, yy_class);
3597 adx 30 *class = *yy_class;
3598     delete_conf_item(yy_conf);
3599    
3600     MyFree(cconf->name); /* Allows case change of class name */
3601     cconf->name = yy_class_name;
3602     }
3603     else /* Brand new class */
3604     {
3605     MyFree(yy_conf->name); /* just in case it was allocated */
3606     yy_conf->name = yy_class_name;
3607     }
3608     }
3609     yy_class_name = NULL;
3610     }
3611     }
3612 db 126 break;
3613 db 134 case 233:
3614 michael 109 #line 1564 "ircd_parser.y"
3615 db 126 {
3616 adx 30 if (ypass == 1)
3617     {
3618     MyFree(yy_class_name);
3619     DupString(yy_class_name, yylval.string);
3620     }
3621     }
3622 db 126 break;
3623 db 134 case 234:
3624 michael 109 #line 1573 "ircd_parser.y"
3625 db 126 {
3626 adx 30 if (ypass == 1)
3627     {
3628     MyFree(yy_class_name);
3629     DupString(yy_class_name, yylval.string);
3630     }
3631     }
3632 db 126 break;
3633 db 134 case 235:
3634 michael 109 #line 1582 "ircd_parser.y"
3635 db 126 {
3636 adx 30 if (ypass == 1)
3637 db 126 PingFreq(yy_class) = yyvsp[-1].number;
3638 adx 30 }
3639 db 126 break;
3640 db 134 case 236:
3641 michael 109 #line 1588 "ircd_parser.y"
3642 db 126 {
3643 adx 30 if (ypass == 1)
3644 db 126 PingWarning(yy_class) = yyvsp[-1].number;
3645 adx 30 }
3646 db 126 break;
3647 db 134 case 237:
3648 michael 109 #line 1594 "ircd_parser.y"
3649 db 126 {
3650 adx 30 if (ypass == 1)
3651 db 126 MaxPerIp(yy_class) = yyvsp[-1].number;
3652 adx 30 }
3653 db 126 break;
3654 db 134 case 238:
3655 michael 109 #line 1600 "ircd_parser.y"
3656 db 126 {
3657 adx 30 if (ypass == 1)
3658 db 126 ConFreq(yy_class) = yyvsp[-1].number;
3659 adx 30 }
3660 db 126 break;
3661 db 134 case 239:
3662 michael 109 #line 1606 "ircd_parser.y"
3663 db 126 {
3664 adx 30 if (ypass == 1)
3665 db 126 MaxTotal(yy_class) = yyvsp[-1].number;
3666 adx 30 }
3667 db 126 break;
3668 db 134 case 240:
3669 michael 109 #line 1612 "ircd_parser.y"
3670 db 126 {
3671 adx 30 if (ypass == 1)
3672 db 126 MaxGlobal(yy_class) = yyvsp[-1].number;
3673 adx 30 }
3674 db 126 break;
3675 db 134 case 241:
3676 michael 109 #line 1618 "ircd_parser.y"
3677 db 126 {
3678 adx 30 if (ypass == 1)
3679 db 126 MaxLocal(yy_class) = yyvsp[-1].number;
3680 adx 30 }
3681 db 126 break;
3682 db 134 case 242:
3683 michael 109 #line 1624 "ircd_parser.y"
3684 db 126 {
3685 adx 30 if (ypass == 1)
3686 db 126 MaxIdent(yy_class) = yyvsp[-1].number;
3687 adx 30 }
3688 db 126 break;
3689 db 134 case 243:
3690 michael 109 #line 1630 "ircd_parser.y"
3691 db 126 {
3692 adx 30 if (ypass == 1)
3693 db 126 MaxSendq(yy_class) = yyvsp[-1].number;
3694 adx 30 }
3695 db 126 break;
3696 db 134 case 244:
3697 michael 109 #line 1636 "ircd_parser.y"
3698 db 126 {
3699 adx 30 if (ypass == 1)
3700 db 126 CidrBitlenIPV4(yy_class) = yyvsp[-1].number;
3701 adx 30 }
3702 db 126 break;
3703 db 134 case 245:
3704 michael 109 #line 1642 "ircd_parser.y"
3705 db 126 {
3706 adx 30 if (ypass == 1)
3707 db 126 CidrBitlenIPV6(yy_class) = yyvsp[-1].number;
3708 adx 30 }
3709 db 126 break;
3710 db 134 case 246:
3711 michael 109 #line 1648 "ircd_parser.y"
3712 db 126 {
3713 adx 30 if (ypass == 1)
3714 db 126 NumberPerCidr(yy_class) = yyvsp[-1].number;
3715 adx 30 }
3716 db 126 break;
3717 db 134 case 247:
3718 michael 109 #line 1657 "ircd_parser.y"
3719 db 126 {
3720 adx 30 if (ypass == 2)
3721     {
3722     listener_address = NULL;
3723     listener_flags = 0;
3724     }
3725     }
3726 db 126 break;
3727 db 134 case 248:
3728 michael 109 #line 1664 "ircd_parser.y"
3729 db 126 {
3730 adx 30 if (ypass == 2)
3731     {
3732     MyFree(listener_address);
3733     listener_address = NULL;
3734     }
3735     }
3736 db 126 break;
3737 db 134 case 249:
3738 michael 109 #line 1673 "ircd_parser.y"
3739 db 126 {
3740 adx 30 }
3741 db 126 break;
3742 db 134 case 253:
3743 michael 109 #line 1678 "ircd_parser.y"
3744 db 126 {
3745 adx 30 if (ypass == 2)
3746     listener_flags |= LISTENER_SSL;
3747     }
3748 db 126 break;
3749 db 134 case 254:
3750 michael 109 #line 1682 "ircd_parser.y"
3751 db 126 {
3752 adx 30 if (ypass == 2)
3753     listener_flags |= LISTENER_HIDDEN;
3754     }
3755 db 126 break;
3756 db 134 case 265:
3757 michael 109 #line 1695 "ircd_parser.y"
3758 db 126 {
3759 adx 30 if (ypass == 2)
3760     {
3761     if ((listener_flags & LISTENER_SSL))
3762     #ifdef HAVE_LIBCRYPTO
3763     if (!ServerInfo.ctx)
3764     #endif
3765     {
3766     yyerror("SSL not available - port closed");
3767     break;
3768     }
3769 db 126 add_listener(yyvsp[0].number, listener_address, listener_flags);
3770 adx 30 listener_flags = 0;
3771     }
3772     }
3773 db 126 break;
3774 db 134 case 266:
3775 michael 109 #line 1710 "ircd_parser.y"
3776 db 126 {
3777 adx 30 if (ypass == 2)
3778     {
3779     int i;
3780    
3781     if ((listener_flags & LISTENER_SSL))
3782     #ifdef HAVE_LIBCRYPTO
3783     if (!ServerInfo.ctx)
3784     #endif
3785     {
3786     yyerror("SSL not available - port closed");
3787     break;
3788     }
3789    
3790 db 126 for (i = yyvsp[-2].number; i <= yyvsp[0].number; ++i)
3791 adx 30 add_listener(i, listener_address, listener_flags);
3792    
3793     listener_flags = 0;
3794     }
3795     }
3796 db 126 break;
3797 db 134 case 267:
3798 michael 109 #line 1732 "ircd_parser.y"
3799 db 126 {
3800 adx 30 if (ypass == 2)
3801     {
3802     MyFree(listener_address);
3803     DupString(listener_address, yylval.string);
3804     }
3805     }
3806 db 126 break;
3807 db 134 case 268:
3808 michael 109 #line 1741 "ircd_parser.y"
3809 db 126 {
3810 adx 30 if (ypass == 2)
3811     {
3812     MyFree(listener_address);
3813     DupString(listener_address, yylval.string);
3814     }
3815     }
3816 db 126 break;
3817 db 134 case 269:
3818 michael 109 #line 1753 "ircd_parser.y"
3819 db 126 {
3820 adx 30 if (ypass == 2)
3821     {
3822     yy_conf = make_conf_item(CLIENT_TYPE);
3823 db 139 yy_aconf = &yy_conf->conf.AccessItem;
3824 adx 30 }
3825     else
3826     {
3827     MyFree(class_name);
3828     class_name = NULL;
3829     }
3830     }
3831 db 126 break;
3832 db 134 case 270:
3833 michael 109 #line 1765 "ircd_parser.y"
3834 db 126 {
3835 adx 30 if (ypass == 2)
3836     {
3837     struct CollectItem *yy_tmp = NULL;
3838     dlink_node *ptr = NULL, *next_ptr = NULL;
3839    
3840     if (yy_aconf->user && yy_aconf->host)
3841     {
3842     conf_add_class_to_conf(yy_conf, class_name);
3843     add_conf_by_address(CONF_CLIENT, yy_aconf);
3844     }
3845     else
3846     delete_conf_item(yy_conf);
3847    
3848     /* copy over settings from first struct */
3849     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
3850     {
3851     struct AccessItem *new_aconf;
3852     struct ConfItem *new_conf;
3853    
3854     new_conf = make_conf_item(CLIENT_TYPE);
3855 db 139 new_aconf = &new_conf->conf.AccessItem;
3856 adx 30
3857     yy_tmp = ptr->data;
3858    
3859     assert(yy_tmp->user && yy_tmp->host);
3860    
3861     if (yy_aconf->passwd != NULL)
3862     DupString(new_aconf->passwd, yy_aconf->passwd);
3863     if (yy_conf->name != NULL)
3864     DupString(new_conf->name, yy_conf->name);
3865     if (yy_aconf->passwd != NULL)
3866     DupString(new_aconf->passwd, yy_aconf->passwd);
3867    
3868     new_aconf->flags = yy_aconf->flags;
3869     new_aconf->port = yy_aconf->port;
3870    
3871     DupString(new_aconf->user, yy_tmp->user);
3872     collapse(new_aconf->user);
3873    
3874     DupString(new_aconf->host, yy_tmp->host);
3875     collapse(new_aconf->host);
3876    
3877     conf_add_class_to_conf(new_conf, class_name);
3878     add_conf_by_address(CONF_CLIENT, new_aconf);
3879     dlinkDelete(&yy_tmp->node, &col_conf_list);
3880     free_collect_item(yy_tmp);
3881     }
3882    
3883     MyFree(class_name);
3884     class_name = NULL;
3885     yy_conf = NULL;
3886     yy_aconf = NULL;
3887     }
3888     }
3889 db 126 break;
3890 db 134 case 290:
3891 michael 109 #line 1830 "ircd_parser.y"
3892 db 126 {
3893 adx 30 if (ypass == 2)
3894     {
3895     struct CollectItem *yy_tmp;
3896    
3897     if (yy_aconf->user == NULL)
3898     split_nuh(yylval.string, NULL, &yy_aconf->user, &yy_aconf->host);
3899     else
3900     {
3901     yy_tmp = MyMalloc(sizeof(struct CollectItem));
3902     split_nuh(yylval.string, NULL, &yy_tmp->user, &yy_tmp->host);
3903     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
3904     }
3905     }
3906     }
3907 db 126 break;
3908 db 134 case 291:
3909 michael 109 #line 1849 "ircd_parser.y"
3910 db 126 {
3911 adx 30 if (ypass == 2)
3912     {
3913     /* be paranoid */
3914     if (yy_aconf->passwd != NULL)
3915     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
3916    
3917     MyFree(yy_aconf->passwd);
3918     DupString(yy_aconf->passwd, yylval.string);
3919     }
3920     }
3921 db 126 break;
3922 db 134 case 292:
3923 michael 109 #line 1862 "ircd_parser.y"
3924 db 126 {
3925 adx 30 if (ypass == 2)
3926     {
3927     if (yylval.number)
3928     yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
3929     else
3930     yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
3931     }
3932     }
3933 db 126 break;
3934 db 134 case 293:
3935 michael 109 #line 1873 "ircd_parser.y"
3936 db 126 {
3937 adx 30 if (ypass == 2)
3938     {
3939     MyFree(class_name);
3940     DupString(class_name, yylval.string);
3941     }
3942     }
3943 db 126 break;
3944 db 134 case 294:
3945 michael 109 #line 1882 "ircd_parser.y"
3946 db 126 {
3947 adx 30 if (ypass == 2)
3948     {
3949     if (yylval.number)
3950     SetConfEncrypted(yy_aconf);
3951     else
3952     ClearConfEncrypted(yy_aconf);
3953     }
3954     }
3955 db 126 break;
3956 db 134 case 295:
3957 michael 109 #line 1893 "ircd_parser.y"
3958 db 126 {
3959 adx 30 }
3960 db 126 break;
3961 db 134 case 299:
3962 michael 109 #line 1897 "ircd_parser.y"
3963 db 126 { not_atom = 1; }
3964     break;
3965 db 134 case 301:
3966 michael 109 #line 1898 "ircd_parser.y"
3967 db 126 { not_atom = 0; }
3968     break;
3969 db 134 case 303:
3970 michael 109 #line 1901 "ircd_parser.y"
3971 db 126 {
3972 adx 30 if (ypass == 2)
3973     {
3974     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
3975     else yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
3976     }
3977    
3978     }
3979 db 126 break;
3980 db 134 case 304:
3981 michael 109 #line 1909 "ircd_parser.y"
3982 db 126 {
3983 adx 30 if (ypass == 2)
3984     {
3985     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
3986     else yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
3987     }
3988     }
3989 db 126 break;
3990 db 134 case 305:
3991 michael 109 #line 1916 "ircd_parser.y"
3992 db 126 {
3993 adx 30 if (ypass == 2)
3994     {
3995     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
3996     else yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
3997     }
3998     }
3999 db 126 break;
4000 db 134 case 306:
4001 michael 109 #line 1923 "ircd_parser.y"
4002 db 126 {
4003 adx 30 if (ypass == 2)
4004     {
4005     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
4006     else yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
4007     }
4008     }
4009 db 126 break;
4010 db 134 case 307:
4011 michael 109 #line 1930 "ircd_parser.y"
4012 db 126 {
4013 adx 30 if (ypass == 2)
4014     {
4015     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
4016     else yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
4017     }
4018     }
4019 db 126 break;
4020 db 134 case 308:
4021 michael 109 #line 1937 "ircd_parser.y"
4022 db 126 {
4023 adx 30 if (ypass == 2)
4024     {
4025     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_IDLE_LINED;
4026     else yy_aconf->flags |= CONF_FLAGS_IDLE_LINED;
4027     }
4028     }
4029 db 126 break;
4030 db 134 case 309:
4031 michael 109 #line 1944 "ircd_parser.y"
4032 db 126 {
4033 adx 30 if (ypass == 2)
4034     {
4035     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
4036     else yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
4037     }
4038     }
4039 db 126 break;
4040 db 134 case 310:
4041 michael 109 #line 1951 "ircd_parser.y"
4042 db 126 {
4043 adx 30 if (ypass == 2)
4044     {
4045     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
4046     else yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
4047     }
4048     }
4049 db 126 break;
4050 db 134 case 311:
4051 michael 109 #line 1958 "ircd_parser.y"
4052 db 126 {
4053 adx 30 if (ypass == 2)
4054     {
4055     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTRESV;
4056     else yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
4057     }
4058     }
4059 db 126 break;
4060 db 134 case 312:
4061 michael 109 #line 1965 "ircd_parser.y"
4062 db 126 {
4063 adx 30 if (ypass == 2)
4064     {
4065     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
4066     else yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
4067     }
4068     }
4069 db 126 break;
4070 db 134 case 313:
4071 michael 109 #line 1974 "ircd_parser.y"
4072 db 126 {
4073 adx 30 if (ypass == 2)
4074     {
4075     if (yylval.number)
4076     yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
4077     else
4078     yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
4079     }
4080     }
4081 db 126 break;
4082 db 134 case 314:
4083 michael 109 #line 1985 "ircd_parser.y"
4084 db 126 {
4085 adx 30 if (ypass == 2)
4086     {
4087     if (yylval.number)
4088     yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
4089     else
4090     yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
4091     }
4092     }
4093 db 126 break;
4094 db 134 case 315:
4095 michael 109 #line 1996 "ircd_parser.y"
4096 db 126 {
4097 adx 30 if (ypass == 2)
4098     {
4099     if (yylval.number)
4100     yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
4101     else
4102     yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
4103     }
4104     }
4105 db 126 break;
4106 db 134 case 316:
4107 michael 109 #line 2007 "ircd_parser.y"
4108 db 126 {
4109 adx 30 if (ypass == 2)
4110     {
4111     if (yylval.number)
4112     yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
4113     else
4114     yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
4115     }
4116     }
4117 db 126 break;
4118 db 134 case 317:
4119 michael 109 #line 2018 "ircd_parser.y"
4120 db 126 {
4121 adx 30 if (ypass == 2)
4122     {
4123     if (yylval.number)
4124     yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
4125     else
4126     yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
4127     }
4128     }
4129 db 126 break;
4130 db 134 case 318:
4131 michael 109 #line 2029 "ircd_parser.y"
4132 db 126 {
4133 adx 30 if (ypass == 2)
4134     {
4135     if (yylval.number)
4136     yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
4137     else
4138     yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
4139     }
4140     }
4141 db 126 break;
4142 db 134 case 319:
4143 michael 109 #line 2041 "ircd_parser.y"
4144 db 126 {
4145 adx 30 if (ypass == 2)
4146     {
4147     MyFree(yy_conf->name);
4148    
4149     if (strlen(yylval.string) < HOSTLEN)
4150     {
4151     DupString(yy_conf->name, yylval.string);
4152     yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
4153     }
4154     else
4155     {
4156     ilog(L_ERROR, "Spoofs must be less than %d..ignoring it", HOSTLEN);
4157     yy_conf->name = NULL;
4158     }
4159     }
4160     }
4161 db 126 break;
4162 db 134 case 320:
4163 michael 109 #line 2060 "ircd_parser.y"
4164 db 126 {
4165 adx 30 if (ypass == 2)
4166     {
4167     yy_aconf->flags |= CONF_FLAGS_REDIR;
4168     MyFree(yy_conf->name);
4169     DupString(yy_conf->name, yylval.string);
4170     }
4171     }
4172 db 126 break;
4173 db 134 case 321:
4174 michael 109 #line 2070 "ircd_parser.y"
4175 db 126 {
4176 adx 30 if (ypass == 2)
4177     {
4178     yy_aconf->flags |= CONF_FLAGS_REDIR;
4179 db 126 yy_aconf->port = yyvsp[-1].number;
4180 adx 30 }
4181     }
4182 db 126 break;
4183 db 134 case 322:
4184 michael 109 #line 2079 "ircd_parser.y"
4185 db 126 {
4186 adx 30 if (ypass == 2)
4187     {
4188     if (yylval.number)
4189     yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
4190     else
4191     yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
4192     }
4193     }
4194 db 126 break;
4195 db 134 case 323:
4196 michael 109 #line 2094 "ircd_parser.y"
4197 db 126 {
4198 adx 30 if (ypass == 2)
4199     {
4200     MyFree(resv_reason);
4201     resv_reason = NULL;
4202     }
4203     }
4204 db 126 break;
4205 db 134 case 324:
4206 michael 109 #line 2101 "ircd_parser.y"
4207 db 126 {
4208 adx 30 if (ypass == 2)
4209     {
4210     MyFree(resv_reason);
4211     resv_reason = NULL;
4212     }
4213     }
4214 db 126 break;
4215 db 134 case 331:
4216 michael 109 #line 2113 "ircd_parser.y"
4217 db 126 {
4218 adx 30 if (ypass == 2)
4219     {
4220     MyFree(resv_reason);
4221     DupString(resv_reason, yylval.string);
4222     }
4223     }
4224 db 126 break;
4225 db 134 case 332:
4226 michael 109 #line 2122 "ircd_parser.y"
4227 db 126 {
4228 adx 30 if (ypass == 2)
4229     {
4230     if (IsChanPrefix(*yylval.string))
4231     {
4232     char def_reason[] = "No reason";
4233    
4234     create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
4235     }
4236     }
4237     /* ignore it for now.. but we really should make a warning if
4238     * its an erroneous name --fl_ */
4239     }
4240 db 126 break;
4241 db 134 case 333:
4242 michael 109 #line 2137 "ircd_parser.y"
4243 db 126 {
4244 adx 30 if (ypass == 2)
4245     {
4246     char def_reason[] = "No reason";
4247    
4248     create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
4249     }
4250     }
4251 db 126 break;
4252 db 134 case 334:
4253 michael 109 #line 2150 "ircd_parser.y"
4254 db 126 {
4255 adx 30 if (ypass == 2)
4256     {
4257     yy_conf = make_conf_item(ULINE_TYPE);
4258 db 139 yy_match_item = &yy_conf->conf.MatchItem;
4259 adx 30 yy_match_item->action = SHARED_ALL;
4260     }
4261     }
4262 db 126 break;
4263 db 134 case 335:
4264 michael 109 #line 2158 "ircd_parser.y"
4265 db 126 {
4266 adx 30 if (ypass == 2)
4267     {
4268     yy_conf = NULL;
4269     }
4270     }
4271 db 126 break;
4272 db 134 case 342:
4273 michael 109 #line 2169 "ircd_parser.y"
4274 db 126 {
4275 adx 30 if (ypass == 2)
4276     {
4277     MyFree(yy_conf->name);
4278     DupString(yy_conf->name, yylval.string);
4279     }
4280     }
4281 db 126 break;
4282 db 134 case 343:
4283 michael 109 #line 2178 "ircd_parser.y"
4284 db 126 {
4285 adx 30 if (ypass == 2)
4286     {
4287     split_nuh(yylval.string, NULL, &yy_match_item->user, &yy_match_item->host);
4288     }
4289     }
4290 db 126 break;
4291 db 134 case 344:
4292 michael 109 #line 2186 "ircd_parser.y"
4293 db 126 {
4294 adx 30 if (ypass == 2)
4295     yy_match_item->action = 0;
4296     }
4297 db 126 break;
4298 db 134 case 348:
4299 michael 109 #line 2193 "ircd_parser.y"
4300 db 126 {
4301 adx 30 if (ypass == 2)
4302     yy_match_item->action |= SHARED_KLINE;
4303     }
4304 db 126 break;
4305 db 134 case 349:
4306 michael 109 #line 2197 "ircd_parser.y"
4307 db 126 {
4308 adx 30 if (ypass == 2)
4309     yy_match_item->action |= SHARED_TKLINE;
4310     }
4311 db 126 break;
4312 db 134 case 350:
4313 michael 109 #line 2201 "ircd_parser.y"
4314 db 126 {
4315 adx 30 if (ypass == 2)
4316     yy_match_item->action |= SHARED_UNKLINE;
4317     }
4318 db 126 break;
4319 db 134 case 351:
4320 michael 109 #line 2205 "ircd_parser.y"
4321 db 126 {
4322 adx 30 if (ypass == 2)
4323     yy_match_item->action |= SHARED_XLINE;
4324     }
4325 db 126 break;
4326 db 134 case 352:
4327 michael 109 #line 2209 "ircd_parser.y"
4328 db 126 {
4329 adx 30 if (ypass == 2)
4330     yy_match_item->action |= SHARED_TXLINE;
4331     }
4332 db 126 break;
4333 db 134 case 353:
4334 michael 109 #line 2213 "ircd_parser.y"
4335 db 126 {
4336 adx 30 if (ypass == 2)
4337     yy_match_item->action |= SHARED_UNXLINE;
4338     }
4339 db 126 break;
4340 db 134 case 354:
4341 michael 109 #line 2217 "ircd_parser.y"
4342 db 126 {
4343 adx 30 if (ypass == 2)
4344     yy_match_item->action |= SHARED_RESV;
4345     }
4346 db 126 break;
4347 db 134 case 355:
4348 michael 109 #line 2221 "ircd_parser.y"
4349 db 126 {
4350 adx 30 if (ypass == 2)
4351     yy_match_item->action |= SHARED_TRESV;
4352     }
4353 db 126 break;
4354 db 134 case 356:
4355 michael 109 #line 2225 "ircd_parser.y"
4356 db 126 {
4357 adx 30 if (ypass == 2)
4358     yy_match_item->action |= SHARED_UNRESV;
4359     }
4360 db 126 break;
4361 db 134 case 357:
4362 michael 109 #line 2229 "ircd_parser.y"
4363 db 126 {
4364 adx 30 if (ypass == 2)
4365     yy_match_item->action |= SHARED_LOCOPS;
4366     }
4367 db 126 break;
4368 db 134 case 358:
4369 michael 109 #line 2233 "ircd_parser.y"
4370 db 126 {
4371 adx 30 if (ypass == 2)
4372     yy_match_item->action = SHARED_ALL;
4373     }
4374 db 126 break;
4375 db 134 case 359:
4376 michael 109 #line 2242 "ircd_parser.y"
4377 db 126 {
4378 adx 30 if (ypass == 2)
4379     {
4380     yy_conf = make_conf_item(CLUSTER_TYPE);
4381     yy_conf->flags = SHARED_ALL;
4382     }
4383     }
4384 db 126 break;
4385 db 134 case 360:
4386 michael 109 #line 2249 "ircd_parser.y"
4387 db 126 {
4388 adx 30 if (ypass == 2)
4389     {
4390     if (yy_conf->name == NULL)
4391     DupString(yy_conf->name, "*");
4392     yy_conf = NULL;
4393     }
4394     }
4395 db 126 break;
4396 db 134 case 366:
4397 michael 109 #line 2262 "ircd_parser.y"
4398 db 126 {
4399 adx 30 if (ypass == 2)
4400     DupString(yy_conf->name, yylval.string);
4401     }
4402 db 126 break;
4403 db 134 case 367:
4404 michael 109 #line 2268 "ircd_parser.y"
4405 db 126 {
4406 adx 30 if (ypass == 2)
4407     yy_conf->flags = 0;
4408     }
4409 db 126 break;
4410 db 134 case 371:
4411 michael 109 #line 2275 "ircd_parser.y"
4412 db 126 {
4413 adx 30 if (ypass == 2)
4414     yy_conf->flags |= SHARED_KLINE;
4415     }
4416 db 126 break;
4417 db 134 case 372:
4418 michael 109 #line 2279 "ircd_parser.y"
4419 db 126 {
4420 adx 30 if (ypass == 2)
4421     yy_conf->flags |= SHARED_TKLINE;
4422     }
4423 db 126 break;
4424 db 134 case 373:
4425 michael 109 #line 2283 "ircd_parser.y"
4426 db 126 {
4427 adx 30 if (ypass == 2)
4428     yy_conf->flags |= SHARED_UNKLINE;
4429     }
4430 db 126 break;
4431 db 134 case 374:
4432 michael 109 #line 2287 "ircd_parser.y"
4433 db 126 {
4434 adx 30 if (ypass == 2)
4435     yy_conf->flags |= SHARED_XLINE;
4436     }
4437 db 126 break;
4438 db 134 case 375:
4439 michael 109 #line 2291 "ircd_parser.y"
4440 db 126 {
4441 adx 30 if (ypass == 2)
4442     yy_conf->flags |= SHARED_TXLINE;
4443     }
4444 db 126 break;
4445 db 134 case 376:
4446 michael 109 #line 2295 "ircd_parser.y"
4447 db 126 {
4448 adx 30 if (ypass == 2)
4449     yy_conf->flags |= SHARED_UNXLINE;
4450     }
4451 db 126 break;
4452 db 134 case 377:
4453 michael 109 #line 2299 "ircd_parser.y"
4454 db 126 {
4455 adx 30 if (ypass == 2)
4456     yy_conf->flags |= SHARED_RESV;
4457     }
4458 db 126 break;
4459 db 134 case 378:
4460 michael 109 #line 2303 "ircd_parser.y"
4461 db 126 {
4462 adx 30 if (ypass == 2)
4463     yy_conf->flags |= SHARED_TRESV;
4464     }
4465 db 126 break;
4466 db 134 case 379:
4467 michael 109 #line 2307 "ircd_parser.y"
4468 db 126 {
4469 adx 30 if (ypass == 2)
4470     yy_conf->flags |= SHARED_UNRESV;
4471     }
4472 db 126 break;
4473 db 134 case 380:
4474 michael 109 #line 2311 "ircd_parser.y"
4475 db 126 {
4476 adx 30 if (ypass == 2)
4477     yy_conf->flags |= SHARED_LOCOPS;
4478     }
4479 db 126 break;
4480 db 134 case 381:
4481 michael 109 #line 2315 "ircd_parser.y"
4482 db 126 {
4483 adx 30 if (ypass == 2)
4484     yy_conf->flags = SHARED_ALL;
4485     }
4486 db 126 break;
4487 db 134 case 382:
4488 michael 109 #line 2324 "ircd_parser.y"
4489 db 126 {
4490 adx 30 if (ypass == 2)
4491     {
4492     yy_conf = make_conf_item(SERVER_TYPE);
4493 db 139 yy_aconf = &yy_conf->conf.AccessItem;
4494 adx 30 yy_aconf->passwd = NULL;
4495     /* defaults */
4496     yy_aconf->port = PORTNUM;
4497    
4498     if (ConfigFileEntry.burst_away)
4499     yy_aconf->flags = CONF_FLAGS_BURST_AWAY;
4500     }
4501     else
4502     {
4503     MyFree(class_name);
4504     class_name = NULL;
4505     }
4506     }
4507 db 126 break;
4508 db 134 case 383:
4509 michael 109 #line 2342 "ircd_parser.y"
4510 db 126 {
4511 adx 30 if (ypass == 2)
4512     {
4513     struct CollectItem *yy_hconf=NULL;
4514     struct CollectItem *yy_lconf=NULL;
4515     dlink_node *ptr;
4516     dlink_node *next_ptr;
4517     #ifdef HAVE_LIBCRYPTO
4518     if (yy_aconf->host &&
4519     ((yy_aconf->passwd && yy_aconf->spasswd) ||
4520     (yy_aconf->rsa_public_key && IsConfCryptLink(yy_aconf))))
4521     #else /* !HAVE_LIBCRYPTO */
4522     if (yy_aconf->host && !IsConfCryptLink(yy_aconf) &&
4523     yy_aconf->passwd && yy_aconf->spasswd)
4524     #endif /* !HAVE_LIBCRYPTO */
4525     {
4526     if (conf_add_server(yy_conf, scount, class_name) >= 0)
4527     {
4528     ++scount;
4529     }
4530     else
4531     {
4532     delete_conf_item(yy_conf);
4533     yy_conf = NULL;
4534     yy_aconf = NULL;
4535     }
4536     }
4537     else
4538     {
4539     /* Even if yy_conf ->name is NULL
4540     * should still unhook any hub/leaf confs still pending
4541     */
4542     unhook_hub_leaf_confs();
4543    
4544     if (yy_conf->name != NULL)
4545     {
4546     #ifndef HAVE_LIBCRYPTO
4547     if (IsConfCryptLink(yy_aconf))
4548     yyerror("Ignoring connect block -- no OpenSSL support");
4549     #else
4550     if (IsConfCryptLink(yy_aconf) && !yy_aconf->rsa_public_key)
4551     yyerror("Ignoring connect block -- missing key");
4552     #endif
4553     if (yy_aconf->host == NULL)
4554     yyerror("Ignoring connect block -- missing host");
4555     else if (!IsConfCryptLink(yy_aconf) &&
4556     (!yy_aconf->passwd || !yy_aconf->spasswd))
4557     yyerror("Ignoring connect block -- missing password");
4558     }
4559    
4560    
4561     /* XXX
4562     * This fixes a try_connections() core (caused by invalid class_ptr
4563     * pointers) reported by metalrock. That's an ugly fix, but there
4564     * is currently no better way. The entire config subsystem needs an
4565     * rewrite ASAP. make_conf_item() shouldn't really add things onto
4566     * a doubly linked list immediately without any sanity checks! -Michael
4567     */
4568     delete_conf_item(yy_conf);
4569    
4570     yy_aconf = NULL;
4571     yy_conf = NULL;
4572     }
4573    
4574     /*
4575     * yy_conf is still pointing at the server that is having
4576     * a connect block built for it. This means, y_aconf->name
4577     * points to the actual irc name this server will be known as.
4578     * Now this new server has a set or even just one hub_mask (or leaf_mask)
4579     * given in the link list at yy_hconf. Fill in the HUB confs
4580     * from this link list now.
4581     */
4582     DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
4583     {
4584     struct ConfItem *new_hub_conf;
4585     struct MatchItem *match_item;
4586    
4587     yy_hconf = ptr->data;
4588    
4589     /* yy_conf == NULL is a fatal error for this connect block! */
4590     if ((yy_conf != NULL) && (yy_conf->name != NULL))
4591     {
4592     new_hub_conf = make_conf_item(HUB_TYPE);
4593 db 139 match_item = &new_hub_conf->conf.MatchItem;
4594 adx 30 DupString(new_hub_conf->name, yy_conf->name);
4595     if (yy_hconf->user != NULL)
4596     DupString(match_item->user, yy_hconf->user);
4597     else
4598     DupString(match_item->user, "*");
4599     if (yy_hconf->host != NULL)
4600     DupString(match_item->host, yy_hconf->host);
4601     else
4602     DupString(match_item->host, "*");
4603     }
4604     dlinkDelete(&yy_hconf->node, &hub_conf_list);
4605     free_collect_item(yy_hconf);
4606     }
4607    
4608     /* Ditto for the LEAF confs */
4609    
4610     DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
4611     {
4612     struct ConfItem *new_leaf_conf;
4613     struct MatchItem *match_item;
4614    
4615     yy_lconf = ptr->data;
4616    
4617     if ((yy_conf != NULL) && (yy_conf->name != NULL))
4618     {
4619     new_leaf_conf = make_conf_item(LEAF_TYPE);
4620 db 139 match_item = &new_leaf_conf->conf.MatchItem;
4621 adx 30 DupString(new_leaf_conf->name, yy_conf->name);
4622     if (yy_lconf->user != NULL)
4623     DupString(match_item->user, yy_lconf->user);
4624     else
4625     DupString(match_item->user, "*");
4626     if (yy_lconf->host != NULL)
4627     DupString(match_item->host, yy_lconf->host);
4628     else
4629     DupString(match_item->host, "*");
4630     }
4631     dlinkDelete(&yy_lconf->node, &leaf_conf_list);
4632     free_collect_item(yy_lconf);
4633     }
4634     MyFree(class_name);
4635     class_name = NULL;
4636     yy_conf = NULL;
4637     yy_aconf = NULL;
4638     }
4639     }
4640 db 126 break;
4641 db 134 case 407:
4642 michael 109 #line 2485 "ircd_parser.y"
4643 db 126 {
4644 adx 30 if (ypass == 2)
4645     {
4646     if (yy_conf->name != NULL)
4647     yyerror("Multiple connect name entry");
4648    
4649     MyFree(yy_conf->name);
4650     DupString(yy_conf->name, yylval.string);
4651     }
4652     }
4653 db 126 break;
4654 db 134 case 408:
4655 michael 109 #line 2497 "ircd_parser.y"
4656 db 126 {
4657 adx 30 if (ypass == 2)
4658     {
4659     if (yy_conf->name != NULL)
4660     yyerror("Multiple connect name entry");
4661    
4662     MyFree(yy_conf->name);
4663     DupString(yy_conf->name, yylval.string);
4664     }
4665     }
4666 db 126 break;
4667 db 134 case 409:
4668 michael 109 #line 2509 "ircd_parser.y"
4669 db 126 {
4670 adx 30 if (ypass == 2)
4671     {
4672     MyFree(yy_aconf->host);
4673     DupString(yy_aconf->host, yylval.string);
4674     }
4675     }
4676 db 126 break;
4677 db 134 case 410:
4678 michael 109 #line 2518 "ircd_parser.y"
4679 db 126 {
4680 adx 30 if (ypass == 2)
4681     {
4682     struct addrinfo hints, *res;
4683    
4684     memset(&hints, 0, sizeof(hints));
4685    
4686     hints.ai_family = AF_UNSPEC;
4687     hints.ai_socktype = SOCK_STREAM;
4688     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
4689    
4690     if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
4691     ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
4692     else
4693     {
4694     assert(res != NULL);
4695    
4696     memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
4697     yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
4698     yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
4699     irc_freeaddrinfo(res);
4700     }
4701     }
4702     }
4703 db 126 break;
4704 db 134 case 411:
4705 michael 109 #line 2544 "ircd_parser.y"
4706 db 126 {
4707 adx 30 if (ypass == 2)
4708     {
4709 db 126 if (yyvsp[-1].string[0] == ':')
4710 adx 37 yyerror("Server passwords cannot begin with a colon");
4711 db 126 else if (strchr(yyvsp[-1].string, ' ') != NULL)
4712 adx 37 yyerror("Server passwords cannot contain spaces");
4713     else {
4714     if (yy_aconf->spasswd != NULL)
4715     memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
4716 adx 30
4717 adx 37 MyFree(yy_aconf->spasswd);
4718     DupString(yy_aconf->spasswd, yylval.string);
4719     }
4720 adx 30 }
4721     }
4722 db 126 break;
4723 db 134 case 412:
4724 michael 109 #line 2562 "ircd_parser.y"
4725 db 126 {
4726 adx 30 if (ypass == 2)
4727     {
4728 db 126 if (yyvsp[-1].string[0] == ':')
4729 adx 37 yyerror("Server passwords cannot begin with a colon");
4730 db 126 else if (strchr(yyvsp[-1].string, ' ') != NULL)
4731 adx 37 yyerror("Server passwords cannot contain spaces");
4732     else {
4733     if (yy_aconf->passwd != NULL)
4734     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4735 adx 30
4736 adx 37 MyFree(yy_aconf->passwd);
4737     DupString(yy_aconf->passwd, yylval.string);
4738     }
4739 adx 30 }
4740     }
4741 db 126 break;
4742 db 134 case 413:
4743 michael 109 #line 2580 "ircd_parser.y"
4744 db 126 {
4745 adx 30 if (ypass == 2)
4746 db 126 yy_aconf->port = yyvsp[-1].number;
4747 adx 30 }
4748 db 126 break;
4749 db 134 case 414:
4750 michael 109 #line 2586 "ircd_parser.y"
4751 db 126 {
4752 adx 30 if (ypass == 2)
4753     yy_aconf->aftype = AF_INET;
4754     }
4755 db 126 break;
4756 db 134 case 415:
4757 michael 109 #line 2590 "ircd_parser.y"
4758 db 126 {
4759 adx 30 #ifdef IPV6
4760     if (ypass == 2)
4761     yy_aconf->aftype = AF_INET6;
4762     #endif
4763     }
4764 db 126 break;
4765 db 134 case 416:
4766 michael 109 #line 2598 "ircd_parser.y"
4767 db 126 {
4768 adx 30 if (ypass == 2)
4769     {
4770     MyFree(yy_aconf->fakename);
4771     DupString(yy_aconf->fakename, yylval.string);
4772     }
4773     }
4774 db 126 break;
4775 db 134 case 417:
4776 michael 109 #line 2607 "ircd_parser.y"
4777 db 126 {
4778 adx 30 }
4779 db 126 break;
4780 db 134 case 421:
4781 michael 109 #line 2611 "ircd_parser.y"
4782 db 126 { not_atom = 1; }
4783     break;
4784 db 134 case 423:
4785 michael 109 #line 2612 "ircd_parser.y"
4786 db 126 { not_atom = 0; }
4787     break;
4788 db 134 case 425:
4789 michael 109 #line 2615 "ircd_parser.y"
4790 db 126 {
4791 adx 30 if (ypass == 2)
4792     {
4793     if (not_atom)ClearConfLazyLink(yy_aconf);
4794     else SetConfLazyLink(yy_aconf);
4795     }
4796     }
4797 db 126 break;
4798 db 134 case 426:
4799 michael 109 #line 2622 "ircd_parser.y"
4800 db 126 {
4801 adx 30 if (ypass == 2)
4802     #ifndef HAVE_LIBZ
4803     yyerror("Ignoring flags = compressed; -- no zlib support");
4804     #else
4805     {
4806     if (not_atom)ClearConfCompressed(yy_aconf);
4807     else SetConfCompressed(yy_aconf);
4808     }
4809     #endif
4810     }
4811 db 126 break;
4812 db 134 case 427:
4813 michael 109 #line 2633 "ircd_parser.y"
4814 db 126 {
4815 adx 30 if (ypass == 2)
4816     {
4817     if (not_atom)ClearConfCryptLink(yy_aconf);
4818     else SetConfCryptLink(yy_aconf);
4819     }
4820     }
4821 db 126 break;
4822 db 134 case 428:
4823 michael 109 #line 2640 "ircd_parser.y"
4824 db 126 {
4825 adx 30 if (ypass == 2)
4826     {
4827     if (not_atom)ClearConfAllowAutoConn(yy_aconf);
4828     else SetConfAllowAutoConn(yy_aconf);
4829     }
4830     }
4831 db 126 break;
4832 db 134 case 429:
4833 michael 109 #line 2647 "ircd_parser.y"
4834 db 126 {
4835 adx 30 if (ypass == 2)
4836     {
4837     if (not_atom)ClearConfAwayBurst(yy_aconf);
4838     else SetConfAwayBurst(yy_aconf);
4839     }
4840     }
4841 db 126 break;
4842 db 134 case 430:
4843 michael 109 #line 2654 "ircd_parser.y"
4844 db 126 {
4845 adx 30 if (ypass == 2)
4846     {
4847     if (not_atom)ClearConfTopicBurst(yy_aconf);
4848     else SetConfTopicBurst(yy_aconf);
4849     }
4850     }
4851 db 126 break;
4852 db 134 case 431:
4853 michael 109 #line 2664 "ircd_parser.y"
4854 db 126 {
4855 adx 30 #ifdef HAVE_LIBCRYPTO
4856     if (ypass == 2)
4857     {
4858     BIO *file;
4859    
4860     if (yy_aconf->rsa_public_key != NULL)
4861     {
4862     RSA_free(yy_aconf->rsa_public_key);
4863     yy_aconf->rsa_public_key = NULL;
4864     }
4865    
4866     if (yy_aconf->rsa_public_key_file != NULL)
4867     {
4868     MyFree(yy_aconf->rsa_public_key_file);
4869     yy_aconf->rsa_public_key_file = NULL;
4870     }
4871    
4872     DupString(yy_aconf->rsa_public_key_file, yylval.string);
4873    
4874     if ((file = BIO_new_file(yylval.string, "r")) == NULL)
4875     {
4876     yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
4877     break;
4878     }
4879    
4880     yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
4881    
4882     if (yy_aconf->rsa_public_key == NULL)
4883     {
4884     yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4885     break;
4886     }
4887    
4888     BIO_set_close(file, BIO_CLOSE);
4889     BIO_free(file);
4890     }
4891     #endif /* HAVE_LIBCRYPTO */
4892     }
4893 db 126 break;
4894 db 134 case 432:
4895 michael 109 #line 2705 "ircd_parser.y"
4896 db 126 {
4897 adx 30 if (ypass == 2)
4898     {
4899     if (yylval.number)
4900     yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
4901     else
4902     yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
4903     }
4904     }
4905 db 126 break;
4906 db 134 case 433:
4907 michael 109 #line 2716 "ircd_parser.y"
4908 db 126 {
4909 adx 30 if (ypass == 2)
4910     {
4911     if (yylval.number)
4912     yy_aconf->flags |= CONF_FLAGS_CRYPTLINK;
4913     else
4914     yy_aconf->flags &= ~CONF_FLAGS_CRYPTLINK;
4915     }
4916     }
4917 db 126 break;
4918 db 134 case 434:
4919 michael 109 #line 2727 "ircd_parser.y"
4920 db 126 {
4921 adx 30 if (ypass == 2)
4922     {
4923     if (yylval.number)
4924     #ifndef HAVE_LIBZ
4925     yyerror("Ignoring compressed=yes; -- no zlib support");
4926     #else
4927     yy_aconf->flags |= CONF_FLAGS_COMPRESSED;
4928     #endif
4929     else
4930     yy_aconf->flags &= ~CONF_FLAGS_COMPRESSED;
4931     }
4932     }
4933 db 126 break;
4934 db 134 case 435:
4935 michael 109 #line 2742 "ircd_parser.y"
4936 db 126 {
4937 adx 30 if (ypass == 2)
4938     {
4939     if (yylval.number)
4940     yy_aconf->flags |= CONF_FLAGS_ALLOW_AUTO_CONN;
4941     else
4942     yy_aconf->flags &= ~CONF_FLAGS_ALLOW_AUTO_CONN;
4943     }
4944     }
4945 db 126 break;
4946 db 134 case 436:
4947 michael 109 #line 2753 "ircd_parser.y"
4948 db 126 {
4949 adx 30 if (ypass == 2)
4950     {
4951     struct CollectItem *yy_tmp;
4952    
4953     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
4954     DupString(yy_tmp->host, yylval.string);
4955     DupString(yy_tmp->user, "*");
4956     dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
4957     }
4958     }
4959 db 126 break;
4960 db 134 case 437:
4961 michael 109 #line 2766 "ircd_parser.y"
4962 db 126 {
4963 adx 30 if (ypass == 2)
4964     {
4965     struct CollectItem *yy_tmp;
4966    
4967     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
4968     DupString(yy_tmp->host, yylval.string);
4969     DupString(yy_tmp->user, "*");
4970     dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
4971     }
4972     }
4973 db 126 break;
4974 db 134 case 438:
4975 michael 109 #line 2779 "ircd_parser.y"
4976 db 126 {
4977 adx 30 if (ypass == 2)
4978     {
4979     MyFree(class_name);
4980     DupString(class_name, yylval.string);
4981     }
4982     }
4983 db 126 break;
4984 db 134 case 439:
4985 michael 109 #line 2788 "ircd_parser.y"
4986 db 126 {
4987 adx 30 #ifdef HAVE_LIBCRYPTO
4988     if (ypass == 2)
4989     {
4990     struct EncCapability *ecap;
4991     const char *cipher_name;
4992     int found = 0;
4993    
4994     yy_aconf->cipher_preference = NULL;
4995     cipher_name = yylval.string;
4996    
4997     for (ecap = CipherTable; ecap->name; ecap++)
4998     {
4999     if ((irccmp(ecap->name, cipher_name) == 0) &&
5000     (ecap->cap & CAP_ENC_MASK))
5001     {
5002     yy_aconf->cipher_preference = ecap;
5003     found = 1;
5004     break;
5005     }
5006     }
5007    
5008     if (!found)
5009     yyerror("Invalid cipher");
5010     }
5011     #else
5012     if (ypass == 2)
5013     yyerror("Ignoring cipher_preference -- no OpenSSL support");
5014     #endif
5015     }
5016 db 126 break;
5017 db 134 case 440:
5018 michael 109 #line 2823 "ircd_parser.y"
5019 db 126 {
5020 adx 30 if (ypass == 2)
5021     {
5022     userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
5023     regex_ban = 0;
5024     }
5025     }
5026 db 126 break;
5027 db 134 case 441:
5028 michael 109 #line 2830 "ircd_parser.y"
5029 db 126 {
5030 adx 30 if (ypass == 2)
5031     {
5032     if (userbuf[0] && hostbuf[0])
5033     {
5034     if (regex_ban)
5035     {
5036     pcre *exp_user = NULL;
5037     pcre *exp_host = NULL;
5038     const char *errptr = NULL;
5039    
5040     if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
5041     !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
5042     {
5043     ilog(L_ERROR, "Failed to add regular expression based K-Line: %s", errptr);
5044     break;
5045     }
5046    
5047     yy_conf = make_conf_item(RKLINE_TYPE);
5048     yy_aconf->regexuser = exp_user;
5049     yy_aconf->regexhost = exp_host;
5050    
5051     DupString(yy_aconf->user, userbuf);
5052     DupString(yy_aconf->host, hostbuf);
5053    
5054     if (reasonbuf[0])
5055     DupString(yy_aconf->reason, reasonbuf);
5056     else
5057     DupString(yy_aconf->reason, "No reason");
5058     }
5059     else
5060     {
5061     yy_conf = make_conf_item(KLINE_TYPE);
5062 db 139 yy_aconf = &yy_conf->conf.AccessItem;
5063 adx 30
5064     DupString(yy_aconf->user, userbuf);
5065     DupString(yy_aconf->host, hostbuf);
5066    
5067     if (reasonbuf[0])
5068     DupString(yy_aconf->reason, reasonbuf);
5069     else
5070     DupString(yy_aconf->reason, "No reason");
5071     add_conf_by_address(CONF_KILL, yy_aconf);
5072     }
5073     }
5074     else
5075     delete_conf_item(yy_conf);
5076    
5077     yy_conf = NULL;
5078     yy_aconf = NULL;
5079     }
5080     }
5081 db 126 break;
5082 db 134 case 442:
5083 michael 109 #line 2884 "ircd_parser.y"
5084 db 126 {
5085 adx 30 }
5086 db 126 break;
5087 db 134 case 446:
5088 michael 109 #line 2889 "ircd_parser.y"
5089 db 126 {
5090 adx 30 if (ypass == 2)
5091     regex_ban = 1;
5092     }
5093 db 126 break;
5094 db 134 case 453:
5095 michael 109 #line 2898 "ircd_parser.y"
5096 db 126 {
5097 adx 30 if (ypass == 2)
5098     {
5099     char *user = NULL, *host = NULL;
5100    
5101     split_nuh(yylval.string, NULL, &user, &host);
5102    
5103     strlcpy(userbuf, user, sizeof(userbuf));
5104     strlcpy(hostbuf, host, sizeof(hostbuf));
5105    
5106     MyFree(user);
5107     MyFree(host);
5108     }
5109     }
5110 db 126 break;
5111 db 134 case 454:
5112 michael 109 #line 2914 "ircd_parser.y"
5113 db 126 {
5114 adx 30 if (ypass == 2)
5115     strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5116     }
5117 db 126 break;
5118 db 134 case 455:
5119 michael 109 #line 2923 "ircd_parser.y"
5120 db 126 {
5121 adx 30 if (ypass == 2)
5122     {
5123     yy_conf = make_conf_item(DLINE_TYPE);
5124 db 139 yy_aconf = &yy_conf->conf.AccessItem;
5125 adx 30 /* default reason */
5126     DupString(yy_aconf->reason, "No reason");
5127     }
5128     }
5129 db 126 break;
5130 db 134 case 456:
5131 michael 109 #line 2932 "ircd_parser.y"
5132 db 126 {
5133 adx 30 if (ypass == 2)
5134     {
5135     if (yy_aconf->host && parse_netmask(yy_aconf->host, NULL, NULL) != HM_HOST)
5136     add_conf_by_address(CONF_DLINE, yy_aconf);
5137     else
5138     delete_conf_item(yy_conf);
5139     yy_conf = NULL;
5140     yy_aconf = NULL;
5141     }
5142     }
5143 db 126 break;
5144 db 134 case 462:
5145 michael 109 #line 2948 "ircd_parser.y"
5146 db 126 {
5147 adx 30 if (ypass == 2)
5148     {
5149     MyFree(yy_aconf->host);
5150     DupString(yy_aconf->host, yylval.string);
5151     }
5152     }
5153 db 126 break;
5154 db 134 case 463:
5155 michael 109 #line 2957 "ircd_parser.y"
5156 db 126 {
5157 adx 30 if (ypass == 2)
5158     {
5159     MyFree(yy_aconf->reason);
5160     DupString(yy_aconf->reason, yylval.string);
5161     }
5162     }
5163 db 126 break;
5164 db 134 case 469:
5165 michael 109 #line 2974 "ircd_parser.y"
5166 db 126 {
5167 adx 30 if (ypass == 2)
5168     {
5169     if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5170     {
5171     yy_conf = make_conf_item(EXEMPTDLINE_TYPE);
5172 db 139 yy_aconf = &yy_conf->conf.AccessItem;
5173 adx 30 DupString(yy_aconf->host, yylval.string);
5174    
5175     add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
5176    
5177     yy_conf = NULL;
5178     yy_aconf = NULL;
5179     }
5180     }
5181     }
5182 db 126 break;
5183 db 134 case 470:
5184 michael 109 #line 2995 "ircd_parser.y"
5185 db 126 {
5186 adx 30 if (ypass == 2)
5187     {
5188     regex_ban = 0;
5189     reasonbuf[0] = gecos_name[0] = '\0';
5190     }
5191     }
5192 db 126 break;
5193 db 134 case 471:
5194 michael 109 #line 3002 "ircd_parser.y"
5195 db 126 {
5196 adx 30 if (ypass == 2)
5197     {
5198     if (gecos_name[0])
5199     {
5200     if (regex_ban)
5201     {
5202     pcre *exp_p = NULL;
5203     const char *errptr = NULL;
5204    
5205     if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
5206     {
5207     ilog(L_ERROR, "Failed to add regular expression based X-Line: %s", errptr);
5208     break;
5209     }
5210    
5211     yy_conf = make_conf_item(RXLINE_TYPE);
5212     yy_conf->regexpname = exp_p;
5213     }
5214     else
5215     yy_conf = make_conf_item(XLINE_TYPE);
5216    
5217 db 139 yy_match_item = &yy_conf->conf.MatchItem;
5218 adx 30 DupString(yy_conf->name, gecos_name);
5219    
5220     if (reasonbuf[0])
5221     DupString(yy_match_item->reason, reasonbuf);
5222     else
5223     DupString(yy_match_item->reason, "No reason");
5224     }
5225     }
5226     }
5227 db 126 break;
5228 db 134 case 472:
5229 michael 109 #line 3036 "ircd_parser.y"
5230 db 126 {
5231 adx 30 }
5232 db 126 break;
5233 db 134 case 476:
5234 michael 109 #line 3041 "ircd_parser.y"
5235 db 126 {
5236 adx 30 if (ypass == 2)
5237     regex_ban = 1;
5238     }
5239 db 126 break;
5240 db 134 case 483:
5241 michael 109 #line 3050 "ircd_parser.y"
5242 db 126 {
5243 adx 30 if (ypass == 2)
5244     strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
5245     }
5246 db 126 break;
5247 db 134 case 484:
5248 michael 109 #line 3056 "ircd_parser.y"
5249 db 126 {
5250 adx 30 if (ypass == 2)
5251     strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5252     }
5253 db 126 break;
5254 db 134 case 543:
5255 michael 109 #line 3101 "ircd_parser.y"
5256 db 126 {
5257     ConfigFileEntry.gline_min_cidr = yyvsp[-1].number;
5258 adx 30 }
5259 db 126 break;
5260 db 134 case 544:
5261 michael 109 #line 3106 "ircd_parser.y"
5262 db 126 {
5263     ConfigFileEntry.gline_min_cidr6 = yyvsp[-1].number;
5264 adx 30 }
5265 db 126 break;
5266 db 134 case 545:
5267 michael 109 #line 3111 "ircd_parser.y"
5268 db 126 {
5269 adx 30 ConfigFileEntry.burst_away = yylval.number;
5270     }
5271 db 126 break;
5272 db 134 case 546:
5273 michael 109 #line 3116 "ircd_parser.y"
5274 db 126 {
5275 adx 30 ConfigFileEntry.use_whois_actually = yylval.number;
5276     }
5277 db 126 break;
5278 db 134 case 547:
5279 michael 109 #line 3121 "ircd_parser.y"
5280 db 126 {
5281 adx 30 GlobalSetOptions.rejecttime = yylval.number;
5282     }
5283 db 126 break;
5284 db 134 case 548:
5285 michael 109 #line 3126 "ircd_parser.y"
5286 db 126 {
5287 adx 30 ConfigFileEntry.tkline_expire_notices = yylval.number;
5288     }
5289 db 126 break;
5290 db 134 case 549:
5291 michael 109 #line 3131 "ircd_parser.y"
5292 db 126 {
5293     ConfigFileEntry.kill_chase_time_limit = yyvsp[-1].number;
5294 adx 30 }
5295 db 126 break;
5296 db 134 case 550:
5297 michael 109 #line 3136 "ircd_parser.y"
5298 db 126 {
5299 adx 30 ConfigFileEntry.hide_spoof_ips = yylval.number;
5300     }
5301 db 126 break;
5302 db 134 case 551:
5303 michael 109 #line 3141 "ircd_parser.y"
5304 db 126 {
5305 adx 30 ConfigFileEntry.ignore_bogus_ts = yylval.number;
5306     }
5307 db 126 break;
5308 db 134 case 552:
5309 michael 109 #line 3146 "ircd_parser.y"
5310 db 126 {
5311 adx 30 ConfigFileEntry.disable_remote = yylval.number;
5312     }
5313 db 126 break;
5314 db 134 case 553:
5315 michael 109 #line 3151 "ircd_parser.y"
5316 db 126 {
5317 adx 30 ConfigFileEntry.failed_oper_notice = yylval.number;
5318     }
5319 db 126 break;
5320 db 134 case 554:
5321 michael 109 #line 3156 "ircd_parser.y"
5322 db 126 {
5323 adx 30 ConfigFileEntry.anti_nick_flood = yylval.number;
5324     }
5325 db 126 break;
5326 db 134 case 555:
5327 michael 109 #line 3161 "ircd_parser.y"
5328 db 126 {
5329     ConfigFileEntry.max_nick_time = yyvsp[-1].number;
5330 adx 30 }
5331 db 126 break;
5332 db 134 case 556:
5333 michael 109 #line 3166 "ircd_parser.y"
5334 db 126 {
5335     ConfigFileEntry.max_nick_changes = yyvsp[-1].number;
5336 adx 30 }
5337 db 126 break;
5338 db 134 case 557:
5339 michael 109 #line 3171 "ircd_parser.y"
5340 db 126 {
5341     ConfigFileEntry.max_accept = yyvsp[-1].number;
5342 adx 30 }
5343 db 126 break;
5344 db 134 case 558:
5345 michael 109 #line 3176 "ircd_parser.y"
5346 db 126 {
5347     ConfigFileEntry.anti_spam_exit_message_time = yyvsp[-1].number;
5348 adx 30 }
5349 db 126 break;
5350 db 134 case 559:
5351 michael 109 #line 3181 "ircd_parser.y"
5352 db 126 {
5353     ConfigFileEntry.ts_warn_delta = yyvsp[-1].number;
5354 adx 30 }
5355 db 126 break;
5356 db 134 case 560:
5357 michael 109 #line 3186 "ircd_parser.y"
5358 db 126 {
5359 adx 30 if (ypass == 2)
5360 db 126 ConfigFileEntry.ts_max_delta = yyvsp[-1].number;
5361 adx 30 }
5362 db 126 break;
5363 db 134 case 561:
5364 michael 109 #line 3192 "ircd_parser.y"
5365 db 126 {
5366     if ((yyvsp[-1].number > 0) && ypass == 1)
5367 adx 30 {
5368     ilog(L_CRIT, "You haven't read your config file properly.");
5369     ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
5370     ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
5371     exit(0);
5372     }
5373     }
5374 db 126 break;
5375 db 134 case 562:
5376 michael 109 #line 3203 "ircd_parser.y"
5377 db 126 {
5378 adx 30 ConfigFileEntry.kline_with_reason = yylval.number;
5379     }
5380 db 126 break;
5381 db 134 case 563:
5382 michael 109 #line 3208 "ircd_parser.y"
5383 db 126 {
5384 adx 30 if (ypass == 2)
5385     {
5386     MyFree(ConfigFileEntry.kline_reason);
5387     DupString(ConfigFileEntry.kline_reason, yylval.string);
5388     }
5389     }
5390 db 126 break;
5391 db 134 case 564:
5392 michael 109 #line 3217 "ircd_parser.y"
5393 db 126 {
5394 adx 30 ConfigFileEntry.invisible_on_connect = yylval.number;
5395     }
5396 db 126 break;
5397 db 134 case 565:
5398 michael 109 #line 3222 "ircd_parser.y"
5399 db 126 {
5400 adx 30 ConfigFileEntry.warn_no_nline = yylval.number;
5401     }
5402 db 126 break;
5403 db 134 case 566:
5404 michael 109 #line 3227 "ircd_parser.y"
5405 db 126 {
5406 adx 30 ConfigFileEntry.stats_o_oper_only = yylval.number;
5407     }
5408 db 126 break;
5409 db 134 case 567:
5410 michael 109 #line 3232 "ircd_parser.y"
5411 db 126 {
5412 adx 30 ConfigFileEntry.stats_P_oper_only = yylval.number;
5413     }
5414 db 126 break;
5415 db 134 case 568:
5416 michael 109 #line 3237 "ircd_parser.y"
5417 db 126 {
5418 adx 30 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5419     }
5420 db 126 break;
5421 db 134 case 569:
5422 michael 109 #line 3240 "ircd_parser.y"
5423 db 126 {
5424 adx 30 ConfigFileEntry.stats_k_oper_only = 1;
5425     }
5426 db 126 break;
5427 db 134 case 570:
5428 michael 109 #line 3245 "ircd_parser.y"
5429 db 126 {
5430 adx 30 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5431     }
5432 db 126 break;
5433 db 134 case 571:
5434 michael 109 #line 3248 "ircd_parser.y"
5435 db 126 {
5436 adx 30 ConfigFileEntry.stats_i_oper_only = 1;
5437     }
5438 db 126 break;
5439 db 134 case 572:
5440 michael 109 #line 3253 "ircd_parser.y"
5441 db 126 {
5442     ConfigFileEntry.pace_wait = yyvsp[-1].number;
5443 adx 30 }
5444 db 126 break;
5445 db 134 case 573:
5446 michael 109 #line 3258 "ircd_parser.y"
5447 db 126 {
5448     ConfigFileEntry.caller_id_wait = yyvsp[-1].number;
5449 adx 30 }
5450 db 126 break;
5451 db 134 case 574:
5452 michael 109 #line 3263 "ircd_parser.y"
5453 db 126 {
5454 adx 30 ConfigFileEntry.opers_bypass_callerid = yylval.number;
5455     }
5456 db 126 break;
5457 db 134 case 575:
5458 michael 109 #line 3268 "ircd_parser.y"
5459 db 126 {
5460     ConfigFileEntry.pace_wait_simple = yyvsp[-1].number;
5461 adx 30 }
5462 db 126 break;
5463 db 134 case 576:
5464 michael 109 #line 3273 "ircd_parser.y"
5465 db 126 {
5466 adx 30 ConfigFileEntry.short_motd = yylval.number;
5467     }
5468 db 126 break;
5469 db 134 case 577:
5470 michael 109 #line 3278 "ircd_parser.y"
5471 db 126 {
5472 adx 30 ConfigFileEntry.no_oper_flood = yylval.number;
5473     }
5474 db 126 break;
5475 db 134 case 578:
5476 michael 109 #line 3283 "ircd_parser.y"
5477 db 126 {
5478 adx 30 ConfigFileEntry.true_no_oper_flood = yylval.number;
5479     }
5480 db 126 break;
5481 db 134 case 579:
5482 michael 109 #line 3288 "ircd_parser.y"
5483 db 126 {
5484 adx 30 ConfigFileEntry.oper_pass_resv = yylval.number;
5485     }
5486 db 126 break;
5487 db 134 case 580:
5488 michael 109 #line 3293 "ircd_parser.y"
5489 db 126 {
5490 adx 30 if (ypass == 2)
5491     {
5492     if (strlen(yylval.string) > LOCALE_LENGTH-2)
5493     yylval.string[LOCALE_LENGTH-1] = '\0';
5494    
5495     set_locale(yylval.string);
5496     }
5497     }
5498 db 126 break;
5499 db 134 case 581:
5500 michael 109 #line 3304 "ircd_parser.y"
5501 db 126 {
5502     ConfigFileEntry.idletime = yyvsp[-1].number;
5503 adx 30 }
5504 db 126 break;
5505 db 134 case 582:
5506 michael 109 #line 3309 "ircd_parser.y"
5507 db 126 {
5508     ConfigFileEntry.dots_in_ident = yyvsp[-1].number;
5509 adx 30 }
5510 db 126 break;
5511 db 134 case 583:
5512 michael 109 #line 3314 "ircd_parser.y"
5513 db 126 {
5514     ConfigFileEntry.max_targets = yyvsp[-1].number;
5515 adx 30 }
5516 db 126 break;
5517 db 134 case 584:
5518 michael 109 #line 3319 "ircd_parser.y"
5519 db 126 {
5520 adx 30 if (ypass == 2)
5521     {
5522     MyFree(ConfigFileEntry.servlink_path);
5523     DupString(ConfigFileEntry.servlink_path, yylval.string);
5524     }
5525     }
5526 db 126 break;
5527 db 134 case 585:
5528 michael 109 #line 3328 "ircd_parser.y"
5529 db 126 {
5530 adx 30 #ifdef HAVE_LIBCRYPTO
5531     if (ypass == 2)
5532     {
5533     struct EncCapability *ecap;
5534     const char *cipher_name;
5535     int found = 0;
5536    
5537     ConfigFileEntry.default_cipher_preference = NULL;
5538     cipher_name = yylval.string;
5539    
5540     for (ecap = CipherTable; ecap->name; ecap++)
5541     {
5542     if ((irccmp(ecap->name, cipher_name) == 0) &&
5543     (ecap->cap & CAP_ENC_MASK))
5544     {
5545     ConfigFileEntry.default_cipher_preference = ecap;
5546     found = 1;
5547     break;
5548     }
5549     }
5550    
5551     if (!found)
5552     yyerror("Invalid cipher");
5553     }
5554     #else
5555     if (ypass == 2)
5556     yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
5557     #endif
5558     }
5559 db 126 break;
5560 db 134 case 586:
5561 michael 109 #line 3360 "ircd_parser.y"
5562 db 126 {
5563 adx 30 if (ypass == 2)
5564     {
5565 db 126 ConfigFileEntry.compression_level = yyvsp[-1].number;
5566 adx 30 #ifndef HAVE_LIBZ
5567     yyerror("Ignoring compression_level -- no zlib support");
5568     #else
5569     if ((ConfigFileEntry.compression_level < 1) ||
5570     (ConfigFileEntry.compression_level > 9))
5571     {
5572     yyerror("Ignoring invalid compression_level, using default");
5573     ConfigFileEntry.compression_level = 0;
5574     }
5575     #endif
5576     }
5577     }
5578 db 126 break;
5579 db 134 case 587:
5580 michael 109 #line 3378 "ircd_parser.y"
5581 db 126 {
5582 adx 30 ConfigFileEntry.use_egd = yylval.number;
5583     }
5584 db 126 break;
5585 db 134 case 588:
5586 michael 109 #line 3383 "ircd_parser.y"
5587 db 126 {
5588 adx 30 if (ypass == 2)
5589     {
5590     MyFree(ConfigFileEntry.egdpool_path);
5591     DupString(ConfigFileEntry.egdpool_path, yylval.string);
5592     }
5593     }
5594 db 126 break;
5595 db 134 case 589:
5596 michael 109 #line 3392 "ircd_parser.y"
5597 db 126 {
5598 adx 30 ConfigFileEntry.ping_cookie = yylval.number;
5599     }
5600 db 126 break;
5601 db 134 case 590:
5602 michael 109 #line 3397 "ircd_parser.y"
5603 db 126 {
5604 adx 30 ConfigFileEntry.disable_auth = yylval.number;
5605     }
5606 db 126 break;
5607 db 134 case 591:
5608 michael 109 #line 3402 "ircd_parser.y"
5609 db 126 {
5610 adx 30 ConfigFileEntry.throttle_time = yylval.number;
5611     }
5612 db 126 break;
5613 db 134 case 592:
5614 michael 109 #line 3407 "ircd_parser.y"
5615 db 126 {
5616 adx 30 ConfigFileEntry.oper_umodes = 0;
5617     }
5618 db 126 break;
5619 db 134 case 596:
5620 michael 109 #line 3413 "ircd_parser.y"
5621 db 126 {
5622 adx 30 ConfigFileEntry.oper_umodes |= UMODE_BOTS;
5623     }
5624 db 126 break;
5625 db 134 case 597:
5626 michael 109 #line 3416 "ircd_parser.y"
5627 db 126 {
5628 adx 30 ConfigFileEntry.oper_umodes |= UMODE_CCONN;
5629     }
5630 db 126 break;
5631 db 134 case 598:
5632 michael 109 #line 3419 "ircd_parser.y"
5633 db 126 {
5634 adx 30 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
5635     }
5636 db 126 break;
5637 db 134 case 599:
5638 michael 109 #line 3422 "ircd_parser.y"
5639 db 126 {
5640 adx 30 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
5641     }
5642 db 126 break;
5643 db 134 case 600:
5644 michael 109 #line 3425 "ircd_parser.y"
5645 db 126 {
5646 adx 30 ConfigFileEntry.oper_umodes |= UMODE_FULL;
5647     }
5648 db 126 break;
5649 db 134 case 601:
5650 michael 109 #line 3428 "ircd_parser.y"
5651 db 126 {
5652 adx 30 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
5653     }
5654 db 126 break;
5655 db 134 case 602:
5656 michael 109 #line 3431 "ircd_parser.y"
5657 db 126 {
5658 adx 30 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
5659     }
5660 db 126 break;
5661 db 134 case 603:
5662 michael 109 #line 3434 "ircd_parser.y"
5663 db 126 {
5664 adx 30 ConfigFileEntry.oper_umodes |= UMODE_REJ;
5665     }
5666 db 126 break;
5667 db 134 case 604:
5668 michael 109 #line 3437 "ircd_parser.y"
5669 db 126 {
5670 adx 30 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
5671     }
5672 db 126 break;
5673 db 134 case 605:
5674 michael 109 #line 3440 "ircd_parser.y"
5675 db 126 {
5676 adx 30 ConfigFileEntry.oper_umodes |= UMODE_SPY;
5677     }
5678 db 126 break;
5679 db 134 case 606:
5680 michael 109 #line 3443 "ircd_parser.y"
5681 db 126 {
5682 adx 30 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
5683     }
5684 db 126 break;
5685 db 134 case 607:
5686 michael 109 #line 3446 "ircd_parser.y"
5687 db 126 {
5688 adx 30 ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
5689     }
5690 db 126 break;
5691 db 134 case 608:
5692 michael 109 #line 3449 "ircd_parser.y"
5693 db 126 {
5694 adx 30 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
5695     }
5696 db 126 break;
5697 db 134 case 609:
5698 michael 109 #line 3452 "ircd_parser.y"
5699 db 126 {
5700 adx 30 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
5701     }
5702 db 126 break;
5703 db 134 case 610:
5704 michael 109 #line 3455 "ircd_parser.y"
5705 db 126 {
5706 adx 30 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
5707     }
5708 db 126 break;
5709 db 134 case 611:
5710 michael 109 #line 3458 "ircd_parser.y"
5711 db 126 {
5712 adx 30 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
5713     }
5714 db 126 break;
5715 db 134 case 612:
5716 michael 109 #line 3461 "ircd_parser.y"
5717 db 126 {
5718 adx 30 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
5719     }
5720 db 126 break;
5721 db 134 case 613:
5722 michael 109 #line 3464 "ircd_parser.y"
5723 db 126 {
5724 adx 30 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
5725     }
5726 db 126 break;
5727 db 134 case 614:
5728 michael 109 #line 3469 "ircd_parser.y"
5729 db 126 {
5730 adx 30 ConfigFileEntry.oper_only_umodes = 0;
5731     }
5732 db 126 break;
5733 db 134 case 618:
5734 michael 109 #line 3475 "ircd_parser.y"
5735 db 126 {
5736 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
5737     }
5738 db 126 break;
5739 db 134 case 619:
5740 michael 109 #line 3478 "ircd_parser.y"
5741 db 126 {
5742 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
5743     }
5744 db 126 break;
5745 db 134 case 620:
5746 michael 109 #line 3481 "ircd_parser.y"
5747 db 126 {
5748 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
5749     }
5750 db 126 break;
5751 db 134 case 621:
5752 michael 109 #line 3484 "ircd_parser.y"
5753 db 126 {
5754 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
5755     }
5756 db 126 break;
5757 db 134 case 622:
5758 michael 109 #line 3487 "ircd_parser.y"
5759 db 126 {
5760 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
5761     }
5762 db 126 break;
5763 db 134 case 623:
5764 michael 109 #line 3490 "ircd_parser.y"
5765 db 126 {
5766 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
5767     }
5768 db 126 break;
5769 db 134 case 624:
5770 michael 109 #line 3493 "ircd_parser.y"
5771 db 126 {
5772 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
5773     }
5774 db 126 break;
5775 db 134 case 625:
5776 michael 109 #line 3496 "ircd_parser.y"
5777 db 126 {
5778 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
5779     }
5780 db 126 break;
5781 db 134 case 626:
5782 michael 109 #line 3499 "ircd_parser.y"
5783 db 126 {
5784 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
5785     }
5786 db 126 break;
5787 db 134 case 627:
5788 michael 109 #line 3502 "ircd_parser.y"
5789 db 126 {
5790 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
5791     }
5792 db 126 break;
5793 db 134 case 628:
5794 michael 109 #line 3505 "ircd_parser.y"
5795 db 126 {
5796 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
5797     }
5798 db 126 break;
5799 db 134 case 629:
5800 michael 109 #line 3508 "ircd_parser.y"
5801 db 126 {
5802 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
5803     }
5804 db 126 break;
5805 db 134 case 630:
5806 michael 109 #line 3511 "ircd_parser.y"
5807 db 126 {
5808 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
5809     }
5810 db 126 break;
5811 db 134 case 631:
5812 michael 109 #line 3514 "ircd_parser.y"
5813 db 126 {
5814 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
5815     }
5816 db 126 break;
5817 db 134 case 632:
5818 michael 109 #line 3517 "ircd_parser.y"
5819 db 126 {
5820 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
5821     }
5822 db 126 break;
5823 db 134 case 633:
5824 michael 109 #line 3520 "ircd_parser.y"
5825 db 126 {
5826 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
5827     }
5828 db 126 break;
5829 db 134 case 634:
5830 michael 109 #line 3523 "ircd_parser.y"
5831 db 126 {
5832 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
5833     }
5834 db 126 break;
5835 db 134 case 635:
5836 michael 109 #line 3526 "ircd_parser.y"
5837 db 126 {
5838 adx 30 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
5839     }
5840 db 126 break;
5841 db 134 case 636:
5842 michael 109 #line 3531 "ircd_parser.y"
5843 db 126 {
5844     ConfigFileEntry.min_nonwildcard = yyvsp[-1].number;
5845 adx 30 }
5846 db 126 break;
5847 db 134 case 637:
5848 michael 109 #line 3536 "ircd_parser.y"
5849 db 126 {
5850     ConfigFileEntry.min_nonwildcard_simple = yyvsp[-1].number;
5851 adx 30 }
5852 db 126 break;
5853 db 134 case 638:
5854 michael 109 #line 3541 "ircd_parser.y"
5855 db 126 {
5856     ConfigFileEntry.default_floodcount = yyvsp[-1].number;
5857 adx 30 }
5858 db 126 break;
5859 db 134 case 639:
5860 michael 109 #line 3546 "ircd_parser.y"
5861 db 126 {
5862     ConfigFileEntry.client_flood = yyvsp[-1].number;
5863 adx 30 }
5864 db 126 break;
5865 db 134 case 640:
5866 michael 109 #line 3551 "ircd_parser.y"
5867 db 126 {
5868 adx 30 ConfigFileEntry.dot_in_ip6_addr = yylval.number;
5869     }
5870 db 126 break;
5871 db 134 case 641:
5872 michael 109 #line 3559 "ircd_parser.y"
5873 db 126 {
5874 adx 30 if (ypass == 2)
5875     {
5876     yy_conf = make_conf_item(GDENY_TYPE);
5877 db 139 yy_aconf = &yy_conf->conf.AccessItem;
5878 adx 30 }
5879     }
5880 db 126 break;
5881 db 134 case 642:
5882 michael 109 #line 3566 "ircd_parser.y"
5883 db 126 {
5884 adx 30 if (ypass == 2)
5885     {
5886     /*
5887     * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
5888     * end we will have one extra, so we should free it.
5889     */
5890 michael 109 if (yy_conf->name == NULL || yy_aconf->user == NULL)
5891 adx 30 {
5892 michael 109 delete_conf_item(yy_conf);
5893 adx 30 yy_conf = NULL;
5894     yy_aconf = NULL;
5895     }
5896     }
5897     }
5898 db 126 break;
5899 db 134 case 652:
5900 michael 109 #line 3592 "ircd_parser.y"
5901 db 126 {
5902 adx 30 if (ypass == 2)
5903     ConfigFileEntry.glines = yylval.number;
5904     }
5905 db 126 break;
5906 db 134 case 653:
5907 michael 109 #line 3598 "ircd_parser.y"
5908 db 126 {
5909 adx 30 if (ypass == 2)
5910 db 126 ConfigFileEntry.gline_time = yyvsp[-1].number;
5911 adx 30 }
5912 db 126 break;
5913 db 134 case 654:
5914 michael 109 #line 3604 "ircd_parser.y"
5915 db 126 {
5916 adx 30 if (ypass == 2)
5917     ConfigFileEntry.gline_logging = 0;
5918     }
5919 db 126 break;
5920 db 134 case 658:
5921 michael 109 #line 3610 "ircd_parser.y"
5922 db 126 {
5923 adx 30 if (ypass == 2)
5924     ConfigFileEntry.gline_logging |= GDENY_REJECT;
5925     }
5926 db 126 break;
5927 db 134 case 659:
5928 michael 109 #line 3614 "ircd_parser.y"
5929 db 126 {
5930 adx 30 if (ypass == 2)
5931     ConfigFileEntry.gline_logging |= GDENY_BLOCK;
5932     }
5933 db 126 break;
5934 db 134 case 660:
5935 michael 109 #line 3620 "ircd_parser.y"
5936 db 126 {
5937 adx 30 if (ypass == 2)
5938     {
5939     if (yy_aconf->user == NULL)
5940     {
5941     split_nuh(yylval.string, NULL, &yy_aconf->user, &yy_aconf->host);
5942     }
5943     else
5944     {
5945 michael 109 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
5946 adx 30 split_nuh(yylval.string, NULL, &yy_tmp->user, &yy_tmp->host);
5947     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
5948     }
5949     }
5950     }
5951 db 126 break;
5952 db 134 case 661:
5953 michael 109 #line 3637 "ircd_parser.y"
5954 db 126 {
5955 adx 30 if (ypass == 2)
5956     {
5957     MyFree(yy_conf->name);
5958     DupString(yy_conf->name, yylval.string);
5959     }
5960     }
5961 db 126 break;
5962 db 134 case 662:
5963 michael 109 #line 3646 "ircd_parser.y"
5964 db 126 {
5965 adx 30 if (ypass == 2)
5966     yy_aconf->flags = 0;
5967     }
5968 db 126 break;
5969 db 134 case 663:
5970 michael 109 #line 3650 "ircd_parser.y"
5971 db 126 {
5972 adx 30 if (ypass == 2)
5973     {
5974 michael 109 struct CollectItem *yy_tmp = NULL;
5975     dlink_node *ptr = NULL, *next_ptr = NULL;
5976 adx 30
5977     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
5978     {
5979     struct AccessItem *new_aconf;
5980     struct ConfItem *new_conf;
5981    
5982     yy_tmp = ptr->data;
5983     new_conf = make_conf_item(GDENY_TYPE);
5984 db 139 new_aconf = &new_conf->conf.AccessItem;
5985 adx 30
5986     new_aconf->flags = yy_aconf->flags;
5987    
5988     if (yy_conf->name != NULL)
5989     DupString(new_conf->name, yy_conf->name);
5990     else
5991     DupString(new_conf->name, "*");
5992     if (yy_aconf->user != NULL)
5993     DupString(new_aconf->user, yy_tmp->user);
5994     else
5995     DupString(new_aconf->user, "*");
5996     if (yy_aconf->host != NULL)
5997     DupString(new_aconf->host, yy_tmp->host);
5998     else
5999     DupString(new_aconf->host, "*");
6000    
6001     dlinkDelete(&yy_tmp->node, &col_conf_list);
6002     }
6003 michael 109
6004     /*
6005     * In case someone has fed us with more than one action= after user/name
6006     * which would leak memory -Michael
6007     */
6008     if (yy_conf->name == NULL || yy_aconf->user == NULL)
6009     delete_conf_item(yy_conf);
6010    
6011 adx 30 yy_conf = make_conf_item(GDENY_TYPE);
6012 db 139 yy_aconf = &yy_conf->conf.AccessItem;
6013 adx 30 }
6014     }
6015 db 126 break;
6016 db 134 case 666:
6017 michael 109 #line 3697 "ircd_parser.y"
6018 db 126 {
6019 adx 30 if (ypass == 2)
6020     yy_aconf->flags |= GDENY_REJECT;
6021     }
6022 db 126 break;
6023 db 134 case 667:
6024 michael 109 #line 3701 "ircd_parser.y"
6025 db 126 {
6026 adx 30 if (ypass == 2)
6027     yy_aconf->flags |= GDENY_BLOCK;
6028     }
6029 db 126 break;
6030 db 134 case 690:
6031 michael 109 #line 3726 "ircd_parser.y"
6032 db 126 {
6033 adx 30 ConfigChannel.restrict_channels = yylval.number;
6034     }
6035 db 126 break;
6036 db 134 case 691:
6037 michael 109 #line 3731 "ircd_parser.y"
6038 db 126 {
6039 adx 30 ConfigChannel.disable_local_channels = yylval.number;
6040     }
6041 db 126 break;
6042 db 134 case 692:
6043 michael 109 #line 3736 "ircd_parser.y"
6044 db 126 {
6045 adx 30 ConfigChannel.use_except = yylval.number;
6046     }
6047 db 126 break;
6048 db 134 case 693:
6049 michael 109 #line 3741 "ircd_parser.y"
6050 db 126 {
6051 adx 30 ConfigChannel.use_invex = yylval.number;
6052     }
6053 db 126 break;
6054 db 134 case 694:
6055 michael 109 #line 3746 "ircd_parser.y"
6056 db 126 {
6057 adx 30 ConfigChannel.use_knock = yylval.number;
6058     }
6059 db 126 break;
6060 db 134 case 695:
6061 michael 109 #line 3751 "ircd_parser.y"
6062 db 126 {
6063     ConfigChannel.knock_delay = yyvsp[-1].number;
6064 adx 30 }
6065 db 126 break;
6066 db 134 case 696:
6067 michael 109 #line 3756 "ircd_parser.y"
6068 db 126 {
6069     ConfigChannel.knock_delay_channel = yyvsp[-1].number;
6070 adx 30 }
6071 db 126 break;
6072 db 134 case 697:
6073 michael 109 #line 3761 "ircd_parser.y"
6074 db 126 {
6075 adx 30 ConfigChannel.invite_ops_only = yylval.number;
6076     }
6077 db 126 break;
6078 db 134 case 698:
6079 michael 109 #line 3766 "ircd_parser.y"
6080 db 126 {
6081     ConfigChannel.max_chans_per_user = yyvsp[-1].number;
6082 adx 30 }
6083 db 126 break;
6084 db 134 case 699:
6085 michael 109 #line 3771 "ircd_parser.y"
6086 db 126 {
6087 adx 30 ConfigChannel.quiet_on_ban = yylval.number;
6088     }
6089 db 126 break;
6090 db 134 case 700:
6091 michael 109 #line 3776 "ircd_parser.y"
6092 db 126 {
6093     ConfigChannel.max_bans = yyvsp[-1].number;
6094 adx 30 }
6095 db 126 break;
6096 db 134 case 701:
6097 michael 109 #line 3781 "ircd_parser.y"
6098 db 126 {
6099     ConfigChannel.default_split_user_count = yyvsp[-1].number;
6100 adx 30 }
6101 db 126 break;
6102 db 134 case 702:
6103 michael 109 #line 3786 "ircd_parser.y"
6104 db 126 {
6105     ConfigChannel.default_split_server_count = yyvsp[-1].number;
6106 adx 30 }
6107 db 126 break;
6108 db 134 case 703:
6109 michael 109 #line 3791 "ircd_parser.y"
6110 db 126 {
6111 adx 30 ConfigChannel.no_create_on_split = yylval.number;
6112     }
6113 db 126 break;
6114 db 134 case 704:
6115 michael 109 #line 3796 "ircd_parser.y"
6116 db 126 {
6117 adx 30 ConfigChannel.no_join_on_split = yylval.number;
6118     }
6119 db 126 break;
6120 db 134 case 705:
6121 michael 109 #line 3801 "ircd_parser.y"
6122 db 126 {
6123 adx 30 ConfigChannel.burst_topicwho = yylval.number;
6124     }
6125 db 126 break;
6126 db 134 case 706:
6127 michael 109 #line 3806 "ircd_parser.y"
6128 db 126 {
6129 adx 30 GlobalSetOptions.joinfloodcount = yylval.number;
6130     }
6131 db 126 break;
6132 db 134 case 707:
6133 michael 109 #line 3811 "ircd_parser.y"
6134 db 126 {
6135 adx 30 GlobalSetOptions.joinfloodtime = yylval.number;
6136     }
6137 db 126 break;
6138 db 134 case 719:
6139 michael 109 #line 3830 "ircd_parser.y"
6140 db 126 {
6141 adx 30 if (ypass == 2)
6142     ConfigServerHide.flatten_links = yylval.number;
6143     }
6144 db 126 break;
6145 db 134 case 720:
6146 michael 109 #line 3836 "ircd_parser.y"
6147 db 126 {
6148 adx 30 if (ypass == 2)
6149     ConfigServerHide.hide_servers = yylval.number;
6150     }
6151 db 126 break;
6152 db 134 case 721:
6153 michael 109 #line 3842 "ircd_parser.y"
6154 db 126 {
6155 adx 30 if (ypass == 2)
6156     {
6157     MyFree(ConfigServerHide.hidden_name);
6158     DupString(ConfigServerHide.hidden_name, yylval.string);
6159     }
6160     }
6161 db 126 break;
6162 db 134 case 722:
6163 michael 109 #line 3851 "ircd_parser.y"
6164 db 126 {
6165 adx 30 if (ypass == 2)
6166     {
6167 db 126 if ((yyvsp[-1].number > 0) && ConfigServerHide.links_disabled == 1)
6168 adx 30 {
6169 db 126 eventAddIsh("write_links_file", write_links_file, NULL, yyvsp[-1].number);
6170 adx 30 ConfigServerHide.links_disabled = 0;
6171     }
6172    
6173 db 126 ConfigServerHide.links_delay = yyvsp[-1].number;
6174 adx 30 }
6175     }
6176 db 126 break;
6177 db 134 case 723:
6178 michael 109 #line 3865 "ircd_parser.y"
6179 db 126 {
6180 adx 30 if (ypass == 2)
6181     ConfigServerHide.hidden = yylval.number;
6182     }
6183 db 126 break;
6184 db 134 case 724:
6185 michael 109 #line 3871 "ircd_parser.y"
6186 db 126 {
6187 adx 30 if (ypass == 2)
6188     ConfigServerHide.disable_hidden = yylval.number;
6189     }
6190 db 126 break;
6191 db 134 case 725:
6192 michael 109 #line 3877 "ircd_parser.y"
6193 db 126 {
6194 adx 30 if (ypass == 2)
6195     ConfigServerHide.hide_server_ips = yylval.number;
6196     }
6197 db 126 break;
6198 db 134 #line 6199 "y.tab.c"
6199 adx 30 }
6200 db 126 yyssp -= yym;
6201     yystate = *yyssp;
6202     yyvsp -= yym;
6203     yym = yylhs[yyn];
6204     if (yystate == 0 && yym == 0)
6205 adx 30 {
6206 db 126 #if YYDEBUG
6207     if (yydebug)
6208     printf("%sdebug: after reduction, shifting from state 0 to\
6209     state %d\n", YYPREFIX, YYFINAL);
6210 michael 109 #endif
6211 db 126 yystate = YYFINAL;
6212     *++yyssp = YYFINAL;
6213     *++yyvsp = yyval;
6214     if (yychar < 0)
6215 adx 30 {
6216 db 126 if ((yychar = yylex()) < 0) yychar = 0;
6217     #if YYDEBUG
6218     if (yydebug)
6219     {
6220     yys = 0;
6221     if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
6222     if (!yys) yys = "illegal-symbol";
6223     printf("%sdebug: state %d, reading %d (%s)\n",
6224     YYPREFIX, YYFINAL, yychar, yys);
6225     }
6226     #endif
6227 adx 37 }
6228 db 126 if (yychar == 0) goto yyaccept;
6229     goto yyloop;
6230 adx 30 }
6231 db 126 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
6232     yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
6233     yystate = yytable[yyn];
6234     else
6235     yystate = yydgoto[yym];
6236     #if YYDEBUG
6237     if (yydebug)
6238     printf("%sdebug: after reduction, shifting from state %d \
6239     to state %d\n", YYPREFIX, *yyssp, yystate);
6240 adx 30 #endif
6241 db 126 if (yyssp >= yysslim && yygrowstack())
6242 michael 109 {
6243 db 126 goto yyoverflow;
6244 michael 109 }
6245 db 126 *++yyssp = yystate;
6246     *++yyvsp = yyval;
6247     goto yyloop;
6248     yyoverflow:
6249     yyerror("yacc stack overflow");
6250     yyabort:
6251     return (1);
6252     yyaccept:
6253     return (0);
6254 adx 30 }

Properties

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