|
NAMEifstated.conf —
Interface State daemon configuration file
DESCRIPTIONThe ifstated(8) daemon runs commands in response to network state changes, which it determines by monitoring interface link state or running external tests.ifstated.conf is the configuration file for this
daemon.
SECTIONSTheifstated.conf config file is divided into three main
sections.
GLOBAL CONFIGURATION
MACROSMacros can be defined that will later be expanded in context. Macro names may not be reserved words like, for example state or run. Macros are referenced with a shell-like notation as $macro. Macros are usually used to define tests for state transitions like interface link state or external tests.Currently an interface can have three different link states:
In contrast to link state tests, external tests must be run periodically to evaluate their status. The frequency at which an external test is run has to be set with the every keyword. For example: carp_up = "carp0.link.up && carp1.link.up" net = '( "ping -q -c 1 -w 1 192.168.0.1 > /dev/null" every 10 && \ "ping -q -c 1 -w 1 192.168.0.2 > /dev/null" every 10 )' TESTS AND EVENTSifstated(8) delegates the process of testing to libevent which associates a value with every test, in this case true or false. Whenever the value of a test associated with the current state changes, an event is triggered and the state's body is processed.STATE DEFINITIONSifstated(8) operates on a finite state machine with states and transitions.Each state consists of an init block and a body. The init block is used to initialise the state and is executed each time the state is entered. The body of a state is only executed when that state is the current state and an event occurs. The action taken within a certain state is typically made dependent on the evaluation of one or more if statements. Possible actions include executing commands using the run statement, or triggering a state transition with the set-state keyword. It is also possible to write multiple nested if blocks. For example: state one { init { run "ifconfig carp0 advskew 10" run "ifconfig carp1 advskew 10" } if ! $net set-state two if ! $carp_up { run "ifconfig carp0 advskew 254" run "ifconfig carp1 advskew 254" set-state three } } GRAMMARSyntax forifstated.conf in BNF:
grammar = entry grammar | entry entry = global_config | varset | action | state global_config = initstate initstate = "init-state" string varset = string "=" string action_list = action [ action_list ] action = "run" string | "set-state" string | "if" expr action_block action_block = "{" action_list "}" | action expr = "!" expr | expr "&&" expr | expr "||" expr | term term = if_test | ext_test | "(" expr ")" if_test = string ".link." ( "up" | "down" | "unknown" ) ext_test = string "every" number state = "state" string "{" stateopt_list "}" stateopt_list = stateopt [ stateopt_list ] stateopt = init | action init = "init" action_block FILES
SEE ALSOcarp(4), pf(4), ifstated(8)HISTORYTheifstated.conf file format first appeared in
OpenBSD 3.8.
Visit the GSP FreeBSD Man Page Interface. |