~ubuntu-branches/ubuntu/gutsy/syslog-ng/gutsy

« back to all changes in this revision

Viewing changes to src/cfg-grammar.y

  • Committer: Bazaar Package Importer
  • Author(s): Magosányi Árpád (mag)
  • Date: 2004-03-13 18:35:37 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040313183537-g0fsc2j2y1wbxage
Tags: 1.6.2-3
* changed manpage to better reflect -v. Closes: #228377
* fixed build-depends, hopefully correctly now:( Closes: #237668

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 *
20
20
 * Inspired by nsyslog, originally written by Darren Reed.
21
21
 *
22
 
 * $Id: cfg-grammar.y,v 1.50 2002/02/05 10:33:07 bazsi Exp $
 
22
 * $Id: cfg-grammar.y,v 1.58.4.1 2004/01/13 18:08:02 bazsi Exp $
23
23
 *
24
24
 ***************************************************************************/
25
25
 
38
38
#include "afremctrl.h"
39
39
 
40
40
#include <netinet/in.h>
 
41
#include <stdio.h>
41
42
 
42
43
void yyerror(char *msg);
43
44
int yylex();
44
45
 
45
46
static struct log_source_driver *last_source_driver;
46
47
static struct log_dest_driver *last_dest_driver;
 
48
UINT8 *last_prefix = NULL;
 
49
UINT32 last_pad_size;
 
50
 
 
51
UINT8 *
 
52
get_last_log_prefix(void)
 
53
{
 
54
        UINT8 *res = last_prefix;
 
55
        last_prefix = NULL;
 
56
        return res;
 
57
}
47
58
 
48
59
%}
49
60
 
64
75
 
65
76
/* option items */
66
77
%token KW_FLAGS KW_CATCHALL KW_FALLBACK KW_FINAL
67
 
%token KW_FSYNC KW_MARK_FREQ KW_SYNC_FREQ KW_STATS_FREQ KW_CHAIN_HOSTNAMES KW_KEEP_HOSTNAME
68
 
%token KW_LOG_FIFO_SIZE 
 
78
%token KW_FSYNC KW_MARK_FREQ KW_SYNC_FREQ KW_STATS_FREQ KW_CHAIN_HOSTNAMES KW_KEEP_HOSTNAME KW_CHECK_HOSTNAME KW_BAD_HOSTNAME
 
79
%token KW_LOG_FIFO_SIZE KW_LOG_MSG_SIZE
69
80
%token KW_TIME_REOPEN KW_TIME_REAP KW_USE_TIME_RECVD
70
81
%token KW_USE_DNS KW_USE_FQDN KW_GC_BUSY_THRESHOLD 
71
82
%token KW_GC_IDLE_THRESHOLD KW_CREATE_DIRS 
72
 
%token KW_DIR_OWNER KW_DIR_GROUP KW_DIR_PERM KW_FILE_TEMPLATE KW_TEMPLATE_ESCAPE
 
83
%token KW_DIR_OWNER KW_DIR_GROUP KW_DIR_PERM KW_TEMPLATE KW_TEMPLATE_ESCAPE
73
84
%token KW_OWNER KW_GROUP KW_PERM KW_KEEP_ALIVE KW_MAX_CONNECTIONS
74
85
%token KW_LOCALIP KW_IP KW_LOCALPORT KW_PORT KW_DESTPORT 
75
86
%token KW_COMPRESS KW_MAC KW_AUTH KW_ENCRYPT
76
87
%token KW_DNS_CACHE KW_DNS_CACHE_SIZE
77
88
%token KW_DNS_CACHE_EXPIRE KW_DNS_CACHE_EXPIRE_FAILED
78
 
%token KW_REMOVE_IF_OLDER
 
89
%token KW_REMOVE_IF_OLDER KW_LOG_PREFIX KW_PAD_SIZE
79
90
 
80
91
/* filter items*/
81
92
%token KW_FACILITY KW_LEVEL KW_NETMASK KW_HOST KW_MATCH
125
136
%type   <ptr> dest_afinet_udp_params
126
137
%type   <ptr> dest_afinet_tcp_params
127
138
%type   <ptr> dest_afuser
 
139
%type   <ptr> dest_afuser_params
128
140
%type   <ptr> dest_afprogram
 
141
%type   <ptr> dest_afprogram_params
129
142
%type   <ptr> dest_afremctrl
130
143
 
131
144
%type   <ptr> log_items
203
216
        ;
204
217
 
205
218
source_affile
206
 
        : KW_FILE '(' string ')'                { $$ = make_affile_source($3, 0); free($3); }
207
 
        | KW_PIPE '(' string ')'                { $$ = make_affile_source($3, AFFILE_PIPE); free($3); }
 
219
        : KW_FILE '(' string source_affile_options ')'          
 
220
          { 
 
221
                $$ = make_affile_source($3, 0, get_last_log_prefix(), last_pad_size); 
 
222
                free($3); 
 
223
          }
 
224
        | KW_PIPE '(' string source_affile_options ')'
 
225
          { 
 
226
                $$ = make_affile_source($3, AFFILE_PIPE, get_last_log_prefix(), last_pad_size); 
 
227
                free($3); 
 
228
          }
 
229
        ;
 
230
 
 
231
source_affile_options
 
232
        : source_affile_option source_affile_options
 
233
        |
 
234
        ;
 
235
 
 
236
source_affile_option
 
237
        : KW_LOG_PREFIX '(' string ')'                          { last_prefix = (UINT8 *) $3; }
 
238
        | KW_PAD_SIZE '(' NUMBER ')'                            { last_pad_size = $3; }
208
239
        ;
209
240
 
210
241
source_afsocket
275
306
        | KW_LOCALPORT '(' NUMBER ')'           { afinet_src_set_localport(last_source_driver, $3, NULL, NULL); }
276
307
        | KW_PORT '(' NUMBER ')'                { afinet_src_set_localport(last_source_driver, $3, NULL, NULL); }
277
308
        | KW_IP '(' string ')'                  { afinet_src_set_localip(last_source_driver, $3); free($3); }
278
 
 
 
309
        ;
279
310
 
280
311
source_afinet_tcp_params
281
312
        : 
379
410
        | KW_DIR_PERM '(' NUMBER ')'            { affile_set_dir_perm(last_dest_driver, $3); }
380
411
        | KW_CREATE_DIRS '(' yesno ')'          { affile_set_create_dirs(last_dest_driver, $3); }
381
412
        | KW_REMOVE_IF_OLDER '(' NUMBER ')'     { affile_set_remove_if_older(last_dest_driver, $3); }
382
 
        | KW_FILE_TEMPLATE '(' string ')'       { affile_set_file_template(last_dest_driver, $3); free($3); }
 
413
        | KW_TEMPLATE '(' string ')'            { affile_set_file_template(last_dest_driver, $3); free($3); }
383
414
        | KW_TEMPLATE_ESCAPE '(' yesno ')'      { affile_set_template_escape(last_dest_driver, $3); }
384
415
        | KW_FSYNC '(' yesno ')'                { affile_set_fsync(last_dest_driver, $3); }
385
416
        ;
407
438
        : KW_OWNER '(' string ')'               { affile_set_owner(last_dest_driver, $3); free($3); }
408
439
        | KW_GROUP '(' string ')'               { affile_set_group(last_dest_driver, $3); free($3); }
409
440
        | KW_PERM '(' NUMBER ')'                { affile_set_perm(last_dest_driver, $3); }
410
 
        | KW_FILE_TEMPLATE '(' string ')'       { affile_set_file_template(last_dest_driver, $3); free($3); }
 
441
        | KW_TEMPLATE '(' string ')'            { affile_set_file_template(last_dest_driver, $3); free($3); }
411
442
        | KW_TEMPLATE_ESCAPE '(' yesno ')'      { affile_set_template_escape(last_dest_driver, $3); }
412
443
        ;
413
444
 
419
450
        | KW_TCP '(' dest_afinet_tcp_params ')'                 { $$ = $3; } 
420
451
        ;
421
452
 
 
453
/* options are common between dgram & stream */
 
454
dest_afunix_option
 
455
        : KW_TEMPLATE '(' string ')'            { afunix_dest_set_template(last_dest_driver, $3); free($3); }
 
456
        | KW_TEMPLATE_ESCAPE '(' yesno ')'      { afunix_dest_set_template_escape(last_dest_driver, $3); }
 
457
        ; 
 
458
 
 
459
dest_afunix_options
 
460
        : dest_afunix_options dest_afunix_option
 
461
        |
 
462
        ;
 
463
 
422
464
dest_afunix_dgram_params
423
 
        : string                                { $$ = make_afunix_dest(
 
465
        : string                                { last_dest_driver = make_afunix_dest(
424
466
                                                        &make_unix_address_c($1)->super, 
425
467
                                                        AFSOCKET_DGRAM);
426
468
                                                        free($1);
427
469
                                                }
 
470
        dest_afunix_options                     { $$ = last_dest_driver; }
428
471
        ;
429
472
 
430
473
dest_afunix_stream_params
431
 
        : string                                { $$ = make_afunix_dest(
 
474
        : string                                { last_dest_driver = make_afunix_dest(
432
475
                                                        &make_unix_address_c($1)->super, 
433
476
                                                        AFSOCKET_STREAM);
434
477
                                                        free($1);
435
478
                                                }
 
479
        dest_afunix_options                     { $$ = last_dest_driver; }
436
480
        ;
437
481
 
438
 
 
439
482
dest_afinet_udp_params
440
483
        : string        
441
484
          { 
457
500
        | KW_LOCALPORT '(' NUMBER ')'           { afinet_dest_set_localport(last_dest_driver, $3, NULL, NULL); }
458
501
        | KW_PORT '(' NUMBER ')'                { afinet_dest_set_destport(last_dest_driver, $3, NULL, NULL); }
459
502
        | KW_DESTPORT '(' NUMBER ')'            { afinet_dest_set_destport(last_dest_driver, $3, NULL, NULL); }
 
503
        | KW_TEMPLATE '(' string ')'            { afinet_dest_set_template(last_dest_driver, $3); free($3); }
 
504
        | KW_TEMPLATE_ESCAPE '(' yesno ')'      { afinet_dest_set_template_escape(last_dest_driver, $3); }
460
505
        ;
461
506
 
462
507
dest_afinet_udp_option
493
538
        | KW_SYNC_FREQ '(' NUMBER ')'           { afinet_dest_set_syncfreq(last_dest_driver, $3); }
494
539
        ;
495
540
 
496
 
 
497
541
dest_afuser
498
 
        : KW_USER '(' string ')'                { $$ = make_afuser_dest($3); free($3); }
 
542
        : KW_USER '(' dest_afuser_params ')'    { $$ = $3; }
 
543
        ;
 
544
 
 
545
dest_afuser_params
 
546
        : string                                { last_dest_driver = make_afuser_dest($1); free($1); }
 
547
        dest_afuser_options                     { $$ = last_dest_driver; }
 
548
        ;
 
549
 
 
550
dest_afuser_option
 
551
        : KW_TEMPLATE '(' string ')'            { afuser_dest_set_template(last_dest_driver, $3); free($3); }
 
552
        | KW_TEMPLATE_ESCAPE '(' yesno ')'      { afuser_dest_set_template_escape(last_dest_driver, $3); }
 
553
        ; 
 
554
 
 
555
dest_afuser_options
 
556
        : dest_afuser_options dest_afuser_option
 
557
        |
499
558
        ;
500
559
 
501
560
dest_afprogram
502
 
        : KW_PROGRAM '(' string ')'             { $$ = make_afprogram_dest($3); free($3); }
 
561
        : KW_PROGRAM '(' dest_afprogram_params ')'      { $$ = $3; }
 
562
        ;
 
563
 
 
564
dest_afprogram_params
 
565
        : string                                { last_dest_driver = make_afprogram_dest($1); free($1); }
 
566
        dest_afprogram_options                  { $$ = last_dest_driver; }
 
567
        ;
 
568
 
 
569
dest_afprogram_option
 
570
        : KW_TEMPLATE '(' string ')'            { afprogram_dest_set_template(last_dest_driver, $3); free($3); }
 
571
        | KW_TEMPLATE_ESCAPE '(' yesno ')'      { afprogram_dest_set_template_escape(last_dest_driver, $3); }
 
572
        ; 
 
573
 
 
574
dest_afprogram_options
 
575
        : dest_afprogram_options dest_afprogram_option
 
576
        |
 
577
        ;
503
578
 
504
579
dest_afremctrl
505
580
        : KW_REMCTRL '(' ')'                    { $$ = make_afremctrl_dest(); }
 
581
        ;
506
582
 
507
583
log_items
508
584
        : log_item ';' log_items                { append_endpoint_info($1, $3); $$ = $1; }
543
619
        | KW_STATS_FREQ '(' NUMBER ')'          { configuration->stats_freq = $3; }
544
620
        | KW_CHAIN_HOSTNAMES '(' yesno ')'      { configuration->chain_hostnames = $3; }
545
621
        | KW_KEEP_HOSTNAME '(' yesno ')'        { configuration->keep_hostname = $3; }
 
622
        | KW_CHECK_HOSTNAME '(' yesno ')'       { configuration->check_hostname = $3; }
 
623
        | KW_BAD_HOSTNAME '(' STRING ')'        { cfg_set_bad_hostname($3); }
546
624
        | KW_USE_TIME_RECVD '(' yesno ')'       { configuration->use_time_recvd = $3; }
547
 
        | KW_USE_FQDN '(' yesno ')'             { configuration->use_fqdn = $3; };
548
 
        | KW_USE_DNS '(' yesno ')'              { configuration->use_dns = $3; };
 
625
        | KW_USE_FQDN '(' yesno ')'             { configuration->use_fqdn = $3; }
 
626
        | KW_USE_DNS '(' yesno ')'              { configuration->use_dns = $3; }
549
627
        | KW_TIME_REOPEN '(' NUMBER ')'         { configuration->time_reopen = $3; }
550
628
        | KW_TIME_REAP '(' NUMBER ')'           { configuration->time_reap = $3; }
551
629
        | KW_LOG_FIFO_SIZE '(' NUMBER ')'       { configuration->log_fifo_size = $3; }
562
640
        | KW_DNS_CACHE_SIZE '(' NUMBER ')'      { configuration->dns_cache_size = $3; }
563
641
        | KW_DNS_CACHE_EXPIRE '(' NUMBER ')'    { configuration->dns_cache_expire = $3; }
564
642
        | KW_DNS_CACHE_EXPIRE_FAILED '(' NUMBER ')'
565
 
                                { configuration->dns_cache_expire_failed = $3; }
 
643
                                                { configuration->dns_cache_expire_failed = $3; }
 
644
        | KW_LOG_MSG_SIZE '(' NUMBER ')'        { configuration->log_msg_size = $3; }
566
645
        ;
567
646
 
568
647
filter_stmt