States Diagram: Compilation
When a command
is called, it needs to know some information about the context of the call in the rules file. This is done using a few global variables like:
$iface
$profile
(used internally by addcode)$state
$type
$IP
- …. any other needed?
Initially all are empty.
The changes on the state and types are described in the following diagram using the this syntax:
*
means any$state
, any$type
.foo(*)
means$state = foo
, but any$type
foo=bar
meansfoo
is set to“bar”
$n
means then-er
argument
This diagram is on a very early stage, we have to see how each command
affects the global variables. Please, We need your opinions to polish it:
* -> interface -> state=new, type=undefined, IP=, iface=$1, profile=$2 new(undefined) -> ip -> state=normal, type=static, IP=$1 new(*) -> ip -> state=normal, IP=$1
States Diagram: Execution
When we addcode
we need to decide when do we want this code to run. The life of an interface pass by different states and the first argument of addcode
determines that.
When snet
will perform an action to goes to the coded added to a given state (or chain) and then execute everything in (level, $sublevel, $timestamp) order. and then pass to the next state an does the same. So….. we have to define this states considering what do we want to up/down/reload without affecting other parts of the setup, and without dropping the interface completely.
Currently I see four “subsystems”, each with an up and down state. Here you can see the subsystems and the suggested name for the state.
- interface (init, finish)
- routing (up, down)
- firewall (fwup, fwdown)
- QoS (qosup, qosdown)
which leads for each interface to something like:
init -> up --> fwup --> fwdown ----> down -> finish `-> qosup -> qosdown --'
Suggestions welcomed.