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 means foo is set to “bar”
  • $n means the n-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.

  • users/mnemoc/snet-states.txt
  • Last modified: 2018/08/14 11:25
  • (external edit)