]> git.ipfire.org Git - thirdparty/bird.git/blame - sysdep/unix/config.Y
Adds support for soft reconfiguration.
[thirdparty/bird.git] / sysdep / unix / config.Y
CommitLineData
a0c37b45
MM
1/*
2 * BIRD -- UNIX Configuration
3 *
50fe90ed 4 * (c) 1999--2000 Martin Mares <mj@ucw.cz>
a0c37b45
MM
5 *
6 * Can be freely distributed and used under the terms of the GNU GPL.
7 */
8
9CF_HDR
10
11#include "lib/unix.h"
a19cd811 12#include <stdio.h>
a0c37b45
MM
13
14CF_DECLS
15
bf1aec97 16CF_KEYWORDS(LOG, SYSLOG, ALL, DEBUG, TRACE, INFO, REMOTE, WARNING, ERROR, AUTH, FATAL, BUG, STDERR, SOFT)
a0c37b45
MM
17
18%type <i> log_mask log_mask_list log_cat
f78056fb 19%type <g> log_file
50fe90ed 20%type <t> cfg_name
a0c37b45
MM
21
22CF_GRAMMAR
23
24CF_ADDTO(conf, log_config)
25
f78056fb 26log_config: LOG log_file log_mask ';' {
a0c37b45 27 struct log_config *c = cfg_allocz(sizeof(struct log_config));
f78056fb 28 c->fh = $2;
a0c37b45
MM
29 c->mask = $3;
30 add_tail(&new_config->logfiles, &c->n);
31 }
32 ;
33
f78056fb
MM
34log_file:
35 TEXT {
36 FILE *f = tracked_fopen(new_config->pool, $1, "a");
37 if (!f) cf_error("Unable to open log file `%s': %m", $1);
38 $$ = f;
39 }
40 | SYSLOG { $$ = NULL; }
41 | STDERR { $$ = stderr; }
42 ;
43
a0c37b45
MM
44log_mask:
45 ALL { $$ = ~0; }
46 | '{' log_mask_list '}' { $$ = $2; }
47 ;
48
49log_mask_list:
50 log_cat { $$ = 1 << $1; }
51 | log_mask_list ',' log_cat { $$ = $1 | (1 << $3); }
52 ;
53
54log_cat:
55 DEBUG { $$ = L_DEBUG[0]; }
56 | TRACE { $$ = L_TRACE[0]; }
57 | INFO { $$ = L_INFO[0]; }
58 | REMOTE { $$ = L_REMOTE[0]; }
59 | WARNING { $$ = L_WARN[0]; }
60 | ERROR { $$ = L_ERR[0]; }
61 | AUTH { $$ = L_AUTH[0]; }
62 | FATAL { $$ = L_FATAL[0]; }
63 | BUG { $$ = L_BUG[0]; }
64 ;
65
50fe90ed
MM
66/* Unix specific commands */
67
bf1aec97
OZ
68CF_CLI_HELP(CONFIGURE, [soft] [\"<file>\"], [[Reload configuration]])
69
c62d1c19 70CF_CLI(CONFIGURE, cfg_name, [\"<file>\"], [[Reload configuration]])
bf1aec97
OZ
71{ cmd_reconfig($2, RECONFIG_HARD); } ;
72
73CF_CLI(CONFIGURE SOFT, cfg_name, [\"<file>\"], [[Reload configuration and ignore changes in filters]])
74{ cmd_reconfig($3, RECONFIG_SOFT); } ;
50fe90ed 75
c801e1fb 76CF_CLI(DOWN,,, [[Shut the daemon down]])
99278e10 77{ cli_msg(7, "Shutdown requested"); order_shutdown(); } ;
bf8558bc 78
50fe90ed
MM
79cfg_name:
80 /* empty */ { $$ = NULL; }
81 | TEXT
82 ;
83
a0c37b45
MM
84CF_CODE
85
86CF_END