diff options
Diffstat (limited to 'files/common/etc/fsm')
| -rw-r--r-- | files/common/etc/fsm/inetable/common.sh | 22 | ||||
| -rwxr-xr-x | files/common/etc/fsm/inetable/trans/default.enter | 3 | ||||
| -rwxr-xr-x | files/common/etc/fsm/inetable/trans/ghost.leave | 14 | ||||
| -rwxr-xr-x | files/common/etc/fsm/inetable/trans/queen.enter | 3 | ||||
| -rwxr-xr-x | files/common/etc/fsm/inetable/trans/queen.leave | 4 | ||||
| -rwxr-xr-x | files/common/etc/fsm/inetable/trans/robinson.enter | 10 | ||||
| -rwxr-xr-x | files/common/etc/fsm/inetable/trans/robinson.leave | 4 | 
7 files changed, 38 insertions, 22 deletions
diff --git a/files/common/etc/fsm/inetable/common.sh b/files/common/etc/fsm/inetable/common.sh index 7c73837..148c369 100644 --- a/files/common/etc/fsm/inetable/common.sh +++ b/files/common/etc/fsm/inetable/common.sh @@ -1,5 +1,25 @@  cloud_is_online () {      # look for mac addrs in batman gateway list -    # TODO: remove fake gws with almost zero bandwith      batctl gwl | tail -n-1 | egrep -q '([0-9a-f]{2}:){5}[0-9a-f]{2}'  } + +## add/remove IPv4 address from mesh iface +# manual update to avoid full ifdown+ifup, but update uci state for +# other users (e.g. dnsmasq) +mesh_add_ipv4 () { +    ifconfig br-mesh $1 netmask $2 +    echo " +set network.mesh.ipaddr=$1 +set network.mesh.proto=static +set network.mesh.netmask=$2 +" | uci batch +} + +mesh_del_ipv4 () { +    ifconfig br-mesh 0.0.0.0 +    echo " +delete network.mesh.ipaddr +delete network.mesh.proto +delete network.mesh.netmask +" | uci batch +} diff --git a/files/common/etc/fsm/inetable/trans/default.enter b/files/common/etc/fsm/inetable/trans/default.enter new file mode 100755 index 0000000..7ca822c --- /dev/null +++ b/files/common/etc/fsm/inetable/trans/default.enter @@ -0,0 +1,3 @@ +#!/bin/sh + +batctl gw client
\ No newline at end of file diff --git a/files/common/etc/fsm/inetable/trans/ghost.leave b/files/common/etc/fsm/inetable/trans/ghost.leave index 747a05d..df16d99 100755 --- a/files/common/etc/fsm/inetable/trans/ghost.leave +++ b/files/common/etc/fsm/inetable/trans/ghost.leave @@ -2,16 +2,4 @@  rm /tmp/ghost_since -# free our gw ip -ifconfig br-mesh 0.0.0.0 - -# update status of our gateway ip -if we_own_our_ip; then -    p2ptbl update $gwiptbl $oct3 free br-mesh -fi - -# disable DHCP -uci delete dhcp.mesh -/etc/init.d/dnsmasq restart - -# TODO: remove internet redirection & splash iptable
\ No newline at end of file +./queen.leave "$1" diff --git a/files/common/etc/fsm/inetable/trans/queen.enter b/files/common/etc/fsm/inetable/trans/queen.enter index 6eac3a0..fe0799e 100755 --- a/files/common/etc/fsm/inetable/trans/queen.enter +++ b/files/common/etc/fsm/inetable/trans/queen.enter @@ -1,4 +1,5 @@  #!/bin/sh -e +. ../common.sh  gwiptbl=/tmp/p2ptbl/gwip  NodeId="$(cat /etc/nodeid)" @@ -30,7 +31,7 @@ p2ptbl update $gwiptbl $oct3 "queen\t$NodeId" br-mesh  batctl gw server  # set up gw IP -ifconfig br-mesh 10.17.$oct3.1 +mesh_add_ipv4 10.17.$oct3.1 255.255.0.0  # TODO: load splash status diff --git a/files/common/etc/fsm/inetable/trans/queen.leave b/files/common/etc/fsm/inetable/trans/queen.leave index 660f2e2..502e972 100755 --- a/files/common/etc/fsm/inetable/trans/queen.leave +++ b/files/common/etc/fsm/inetable/trans/queen.leave @@ -1,9 +1,13 @@  #!/bin/sh -e +. ../common.sh  . ../common_queen.sh  # do not announce gateway anymore  batctl gw client +# free gw IP +mesh_del_ipv4 +  # release IP in p2ptable (if we still own it)  if we_own_our_ip; then      p2ptbl update $gwiptbl $oct3 free br-mesh diff --git a/files/common/etc/fsm/inetable/trans/robinson.enter b/files/common/etc/fsm/inetable/trans/robinson.enter index 7ea0001..163f155 100755 --- a/files/common/etc/fsm/inetable/trans/robinson.enter +++ b/files/common/etc/fsm/inetable/trans/robinson.enter @@ -1,4 +1,5 @@  #!/bin/sh -e +. ../common.sh  # setup random ip  gen_randnet () { @@ -9,7 +10,8 @@ gen_randnet  while ! arping -I br-mesh -D -c 5 -q $randnet.1; do      gen_randnet  done -ifconfig br-mesh $randnet.1 + +mesh_add_ipv4 $randnet.1 255.0.0.0  # setup dhcp  echo " @@ -18,13 +20,11 @@ set dhcp.mesh.start=2  set dhcp.mesh.limit=254  set dhcp.mesh.leasetime=60  set dhcp.mesh.interface=mesh -set dhcp.mesh.start_ip=$randnet.2 -set dhcp.mesh.end_ip=$randnet.254  " | uci batch  /etc/init.d/dnsmasq restart -# announce fake gateway; TODO: announce only tiny bandwith -batctl gw server +# disable batman-adv-mangling with DHCP packets +batctl gw off  # TODO: start fake dns diff --git a/files/common/etc/fsm/inetable/trans/robinson.leave b/files/common/etc/fsm/inetable/trans/robinson.leave index b7f49b8..cdc5461 100755 --- a/files/common/etc/fsm/inetable/trans/robinson.leave +++ b/files/common/etc/fsm/inetable/trans/robinson.leave @@ -1,7 +1,7 @@  #!/bin/sh -e +. ../common.sh -# stop announcing fake gateway -batctl gw client +mesh_del_ipv4  # stop DHCP server  uci delete dhcp.mesh  | 
