]>
Commit | Line | Data |
---|---|---|
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 | ||
9 | CF_HDR | |
10 | ||
11 | #include "lib/unix.h" | |
a19cd811 | 12 | #include <stdio.h> |
a0c37b45 MM |
13 | |
14 | CF_DECLS | |
15 | ||
bf1aec97 | 16 | CF_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 | |
22 | CF_GRAMMAR | |
23 | ||
24 | CF_ADDTO(conf, log_config) | |
25 | ||
f78056fb | 26 | log_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 |
34 | log_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 |
44 | log_mask: |
45 | ALL { $$ = ~0; } | |
46 | | '{' log_mask_list '}' { $$ = $2; } | |
47 | ; | |
48 | ||
49 | log_mask_list: | |
50 | log_cat { $$ = 1 << $1; } | |
51 | | log_mask_list ',' log_cat { $$ = $1 | (1 << $3); } | |
52 | ; | |
53 | ||
54 | log_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 |
68 | CF_CLI_HELP(CONFIGURE, [soft] [\"<file>\"], [[Reload configuration]]) |
69 | ||
c62d1c19 | 70 | CF_CLI(CONFIGURE, cfg_name, [\"<file>\"], [[Reload configuration]]) |
bf1aec97 OZ |
71 | { cmd_reconfig($2, RECONFIG_HARD); } ; |
72 | ||
73 | CF_CLI(CONFIGURE SOFT, cfg_name, [\"<file>\"], [[Reload configuration and ignore changes in filters]]) | |
74 | { cmd_reconfig($3, RECONFIG_SOFT); } ; | |
50fe90ed | 75 | |
c801e1fb | 76 | CF_CLI(DOWN,,, [[Shut the daemon down]]) |
99278e10 | 77 | { cli_msg(7, "Shutdown requested"); order_shutdown(); } ; |
bf8558bc | 78 | |
50fe90ed MM |
79 | cfg_name: |
80 | /* empty */ { $$ = NULL; } | |
81 | | TEXT | |
82 | ; | |
83 | ||
a0c37b45 MM |
84 | CF_CODE |
85 | ||
86 | CF_END |