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>