Annotation of embedaddon/bird2/sysdep/unix/config.Y, revision 1.1
1.1 ! misho 1: /*
! 2: * BIRD -- UNIX Configuration
! 3: *
! 4: * (c) 1999--2000 Martin Mares <mj@ucw.cz>
! 5: *
! 6: * Can be freely distributed and used under the terms of the GNU GPL.
! 7: */
! 8:
! 9: CF_HDR
! 10:
! 11: #include "sysdep/unix/unix.h"
! 12: #include <stdio.h>
! 13:
! 14: CF_DEFINES
! 15:
! 16: static struct log_config *this_log;
! 17:
! 18: CF_DECLS
! 19:
! 20: CF_KEYWORDS(LOG, SYSLOG, ALL, DEBUG, TRACE, INFO, REMOTE, WARNING, ERROR, AUTH, FATAL, BUG, STDERR, SOFT)
! 21: CF_KEYWORDS(NAME, CONFIRM, UNDO, CHECK, TIMEOUT, DEBUG, LATENCY, LIMIT, WATCHDOG, WARNING, STATUS)
! 22: CF_KEYWORDS(GRACEFUL, RESTART)
! 23:
! 24: %type <i> log_mask log_mask_list log_cat cfg_timeout
! 25: %type <t> cfg_name
! 26: %type <tf> timeformat_which
! 27: %type <t> syslog_name
! 28:
! 29: CF_GRAMMAR
! 30:
! 31: conf: log_config ;
! 32:
! 33: log_begin: { this_log = cfg_allocz(sizeof(struct log_config)); };
! 34:
! 35: log_config: LOG log_begin log_file log_mask ';' {
! 36: this_log->mask = $4;
! 37: add_tail(&new_config->logfiles, &this_log->n);
! 38: }
! 39: ;
! 40:
! 41: syslog_name:
! 42: NAME text { $$ = $2; }
! 43: | { $$ = bird_name; }
! 44: ;
! 45:
! 46: log_limit:
! 47: /* empty */
! 48: | expr text { this_log->limit = $1; this_log->backup = $2; }
! 49: ;
! 50:
! 51: log_file:
! 52: text log_limit {
! 53: this_log->rf = rf_open(new_config->pool, $1, "a");
! 54: if (!this_log->rf) cf_error("Unable to open log file '%s': %m", $1);
! 55: this_log->fh = rf_file(this_log->rf);
! 56: this_log->pos = -1;
! 57: this_log->filename = $1;
! 58: }
! 59: | SYSLOG syslog_name { this_log->fh = NULL; new_config->syslog_name = $2; }
! 60: | STDERR { this_log->fh = stderr; }
! 61: ;
! 62:
! 63: log_mask:
! 64: ALL { $$ = ~0; }
! 65: | '{' log_mask_list '}' { $$ = $2; }
! 66: ;
! 67:
! 68: log_mask_list:
! 69: log_cat { $$ = 1 << $1; }
! 70: | log_mask_list ',' log_cat { $$ = $1 | (1 << $3); }
! 71: ;
! 72:
! 73: log_cat:
! 74: DEBUG { $$ = L_DEBUG[0]; }
! 75: | TRACE { $$ = L_TRACE[0]; }
! 76: | INFO { $$ = L_INFO[0]; }
! 77: | REMOTE { $$ = L_REMOTE[0]; }
! 78: | WARNING { $$ = L_WARN[0]; }
! 79: | ERROR { $$ = L_ERR[0]; }
! 80: | AUTH { $$ = L_AUTH[0]; }
! 81: | FATAL { $$ = L_FATAL[0]; }
! 82: | BUG { $$ = L_BUG[0]; }
! 83: ;
! 84:
! 85:
! 86: conf: mrtdump_base ;
! 87:
! 88: mrtdump_base:
! 89: MRTDUMP PROTOCOLS mrtdump_mask ';' { new_config->proto_default_mrtdump = $3; }
! 90: | MRTDUMP text ';' {
! 91: struct rfile *f = rf_open(new_config->pool, $2, "a");
! 92: if (!f) cf_error("Unable to open MRTDump file '%s': %m", $2);
! 93: new_config->mrtdump_file = rf_fileno(f);
! 94: }
! 95: ;
! 96:
! 97:
! 98: conf: debug_unix ;
! 99:
! 100: debug_unix:
! 101: DEBUG LATENCY bool { new_config->latency_debug = $3; }
! 102: | DEBUG LATENCY LIMIT expr_us { new_config->latency_limit = $4; }
! 103: | WATCHDOG WARNING expr_us { new_config->watchdog_warning = $3; }
! 104: | WATCHDOG TIMEOUT expr_us { new_config->watchdog_timeout = ($3 + 999999) TO_S; }
! 105: ;
! 106:
! 107:
! 108: /* Unix specific commands */
! 109:
! 110: CF_CLI_HELP(CONFIGURE, ..., [[Reload configuration]])
! 111:
! 112: CF_CLI(CONFIGURE, cfg_name cfg_timeout, [\"<file>\"] [timeout [<sec>]], [[Reload configuration]])
! 113: { cmd_reconfig($2, RECONFIG_HARD, $3); } ;
! 114:
! 115: CF_CLI(CONFIGURE SOFT, cfg_name cfg_timeout, [\"<file>\"] [timeout [<sec>]], [[Reload configuration and ignore changes in filters]])
! 116: { cmd_reconfig($3, RECONFIG_SOFT, $4); } ;
! 117:
! 118: /* Hack to get input completion for 'timeout' */
! 119: CF_CLI_CMD(CONFIGURE TIMEOUT, [<sec>], [[Reload configuration with undo timeout]])
! 120: CF_CLI_CMD(CONFIGURE SOFT TIMEOUT, [<sec>], [[Reload configuration with undo timeout]])
! 121:
! 122: CF_CLI(CONFIGURE CONFIRM,,, [[Confirm last configuration change - deactivate undo timeout]])
! 123: { cmd_reconfig_confirm(); } ;
! 124:
! 125: CF_CLI(CONFIGURE UNDO,,, [[Undo last configuration change]])
! 126: { cmd_reconfig_undo(); } ;
! 127:
! 128: CF_CLI(CONFIGURE STATUS,,, [[Show configuration status]])
! 129: { cmd_reconfig_status(); } ;
! 130:
! 131: CF_CLI(CONFIGURE CHECK, cfg_name, [\"<file>\"], [[Parse configuration and check its validity]])
! 132: { cmd_check_config($3); } ;
! 133:
! 134: CF_CLI(DOWN,,, [[Shut the daemon down]])
! 135: { cmd_shutdown(); } ;
! 136:
! 137: CF_CLI_HELP(GRACEFUL, restart, [[Shut the daemon down for graceful restart]])
! 138:
! 139: CF_CLI(GRACEFUL RESTART,,, [[Shut the daemon down for graceful restart]])
! 140: { cmd_graceful_restart(); } ;
! 141:
! 142:
! 143: cfg_name:
! 144: /* empty */ { $$ = NULL; }
! 145: | TEXT
! 146: ;
! 147:
! 148: cfg_timeout:
! 149: /* empty */ { $$ = 0; }
! 150: | TIMEOUT { $$ = UNIX_DEFAULT_CONFIGURE_TIMEOUT; }
! 151: | TIMEOUT expr { $$ = $2; }
! 152: ;
! 153:
! 154: CF_CODE
! 155:
! 156: CF_END
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>