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

FreeBSD Manual Pages

  
 
  

home | help
IFSTATED.CONF(5)	      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  usu-
       ally  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)  in-
		 terfaces this equals the backup state.
       unknown	 The  physical	link of	the interface is unknown.  This	is be-
		 cause the interface driver does not  provide  information  of
		 the  physical link state.  For	carp(4)	interfaces this	equals
		 the init state.

       In contrast to link state tests,	external tests must  be	 run  periodi-
       cally  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	 asso-
       ciates  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 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 en-
       tered.  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 tran-
       sition with the set-state keyword.  It is also possible to write	multi-
       ple 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	Ports 14.quarterly     October 25, 2007		      IFSTATED.CONF(5)

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

home | help