Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
IFSTATED.CONF(5)	  FreeBSD File Formats Manual	      IFSTATED.CONF(5)

NAME
     ifstated.conf -- Interface	State daemon configuration file

DESCRIPTION
     The ifstated(8) daemon runs commands in response to network state
     changes, which it determines by monitoring	interface link state or	run-
     ning external tests.  ifstated.conf is the	configuration file for this
     daemon.

SECTIONS
     The ifstated.conf config file is divided into three main sections.

     Global Configuration
	   Global settings for ifstated(8).

     Macros
	   User-defined	variables may be defined and used later, simplifying
	   configuration.  Macros must be defined before they are referenced
	   in ifstated.conf.

     State Definitions
	   Definitions of states and transitions.

GLOBAL CONFIGURATION
     init-state	state
	     Set the initial state to state instead of using the first state
	     defined.

MACROS
     Macros 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:

     up	       The physical link of the	interface is up.  For carp(4) inter-
	       faces this equals the master state.
     down      The physical link of the	interface is down.  For	carp(4)	inter-
	       faces this equals the backup state.
     unknown   The physical link of the	interface is unknown.  This is because
	       the interface driver does not provide information of the	physi-
	       cal link	state.	For carp(4) interfaces this equals the init
	       state.

     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 EVENTS
     ifstated(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 trig-
     gered and the state's body	is processed.

STATE DEFINITIONS
     ifstated(8) operates on a finite state machine with states	and transi-
     tions.

     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 transi-
     tion 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
		   }
	   }

GRAMMAR
     Syntax for	ifstated.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
     /usr/local/etc/ifstated.conf  ifstated(8) configuration file

SEE ALSO
     carp(4), pf(4), ifstated(8)

HISTORY
     The ifstated.conf file format first appeared in OpenBSD 3.8.

FreeBSD	13.0		       October 25, 2007			  FreeBSD 13.0

NAME | DESCRIPTION | SECTIONS | GLOBAL CONFIGURATION | MACROS | TESTS AND EVENTS | STATE DEFINITIONS | GRAMMAR | FILES | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=ifstated.conf&sektion=5&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help