Annotation of embedaddon/bird2/sysdep/unix/config.Y, revision 1.1.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>