Einrückungen Korrigiert

Signed-off-by: Jan-Tarek Butt <buttjantarek@googlemail.com>
This commit is contained in:
Jan-Tarek Butt 2013-10-08 23:28:45 +02:00 committed by Tim Niemeyer
parent af17b5196f
commit b59b5c945d
2 changed files with 112 additions and 115 deletions

View File

@ -3,27 +3,27 @@
# functions # functions
#FIXME: define here your favorite methods to get the values #FIXME: define here your favorite methods to get the values
get_wlan_client_interface() { get_wlan_client_interface() {
echo "wlan0" echo "wlan0"
} }
get_wlan_mesh_interface() { get_wlan_mesh_interface() {
echo "wlan0-1" echo "wlan0-1"
} }
get_eth_client_interface() { get_eth_client_interface() {
echo "" echo ""
} }
get_eth_mesh_interface() { get_eth_mesh_interface() {
echo "" echo ""
} }
get_bridge_interface() { get_bridge_interface() {
echo "br-mesh" echo "br-mesh"
} }
get_batman_interface() { get_batman_interface() {
echo "bat0" echo "bat0"
} }
get_vpn_interface() { get_vpn_interface() {

View File

@ -19,142 +19,139 @@ SINCE=
# functions # functions
debug_output() { debug_output() {
echo "==== DEBUG OUTPUT ====" echo "==== DEBUG OUTPUT ===="
echo "date: $(date)" echo "date: $(date)"
echo "=== INTERFACES ===" echo "=== INTERFACES ==="
ifconfig 2>&1 ifconfig 2>&1
echo "=== BATMAN ===" echo "=== BATMAN ==="
echo "== ORIGINATORS ==" echo "== ORIGINATORS =="
batctl o 2>&1 batctl o 2>&1
echo "== STATISTICS ==" echo "== STATISTICS =="
batctl s 2>&1 batctl s 2>&1
echo "== GATEWAYS ==" echo "== GATEWAYS =="
batctl gwl 2>&1 batctl gwl 2>&1
echo "=== BRIDGE ===" echo "=== BRIDGE ==="
echo "== $BRIDGE_INTERFACE ==" echo "== $BRIDGE_INTERFACE =="
brctl showmacs $BRIDGE_INTERFACE 2>&1 brctl showmacs $BRIDGE_INTERFACE 2>&1
echo "=== CONNECTIVITY TESTS ===" echo "=== CONNECTIVITY TESTS ==="
echo "== PING GATEWAY OVER MESH ==" echo "== PING GATEWAY OVER MESH =="
ping -6 -c3 $(uci get configurator.@api[0].ipv6_address)%$(uci get configurator.@api[0].ipv6_interface) 2>&1 ping -6 -c3 $(uci get configurator.@api[0].ipv6_address)%$(uci get configurator.@api[0].ipv6_interface) 2>&1
echo "== PING HOST OVER INTERNET ==" echo "== PING HOST OVER INTERNET =="
ping -4 -c3 freifunk-ol.de 2>&1 ping -4 -c3 freifunk-ol.de 2>&1
echo "=== WLAN ===" echo "=== WLAN ==="
echo "== $WLAN_CLIENT_INTERFACE ==" echo "== $WLAN_CLIENT_INTERFACE =="
iw dev $WLAN_CLIENT_INTERFACE station dump 2>&1 iw dev $WLAN_CLIENT_INTERFACE station dump 2>&1
echo "== $WLAN_MESH_INTERFACE ==" echo "== $WLAN_MESH_INTERFACE =="
iw dev $WLAN_MESH_INTERFACE station dump 2>&1 iw dev $WLAN_MESH_INTERFACE station dump 2>&1
echo "== SCAN ==" echo "== SCAN =="
iwlist scanning 2>&1 iwlist scanning 2>&1
echo "=== WATCHDOG LOG ===" echo "=== WATCHDOG LOG ==="
cat "/var/log/wlanwatchdog.log" cat "/var/log/wlanwatchdog.log"
} }
get_time() { get_time() {
date +%s date +%s
} }
count_originators() { count_originators() {
local COUNT=0 local COUNT=0
if [ -n "$BATMAN_INTERFACE" ]; then if [ -n "$BATMAN_INTERFACE" ]; then
COUNT=$(tail -n +3 /sys/kernel/debug/batman_adv/$BATMAN_INTERFACE/originators 2> /dev/null | grep -v "nodes in range" | wc -l) COUNT=$(tail -n +3 /sys/kernel/debug/batman_adv/$BATMAN_INTERFACE/originators 2> /dev/null | grep -v "nodes in range" | wc -l)
fi fi
echo $COUNT echo $COUNT
} }
count_clients() { count_clients() {
local COUNT=0 local COUNT=0
local NUMBER= local NUMBER=
if [ -n "$BRIDGE_INTERFACE" ] && [ -n "$WLAN_CLIENT_INTERFACE" ]; then if [ -n "$BRIDGE_INTERFACE" ] && [ -n "$WLAN_CLIENT_INTERFACE" ]; then
NUMBER=$(brctl showstp $BRIDGE_INTERFACE 2> /dev/null | grep $WLAN_CLIENT_INTERFACE | cut -d" " -f2 | tr -d "()") NUMBER=$(brctl showstp $BRIDGE_INTERFACE 2> /dev/null | grep $WLAN_CLIENT_INTERFACE | cut -d" " -f2 | tr -d "()")
fi fi
if [ -n "$BRIDGE_INTERFACE" ] && [ -n "$NUMBER" ]; then if [ -n "$BRIDGE_INTERFACE" ] && [ -n "$NUMBER" ]; then
COUNT=$(brctl showmacs $BRIDGE_INTERFACE 2> /dev/null | grep -v yes | cut -f1 | grep "$NUMBER" | wc -l) COUNT=$(brctl showmacs $BRIDGE_INTERFACE 2> /dev/null | grep -v yes | cut -f1 | grep "$NUMBER" | wc -l)
fi fi
echo $COUNT echo $COUNT
} }
count_neighbours() { count_neighbours() {
local COUNT=0 local COUNT=0
#FIXME: this counts all nodes that accessable via the WLAN mesh interface #FIXME: this counts all nodes that accessable via the WLAN mesh interface
if [ -n "$BATMAN_INTERFACE" ] && [ -n "$WLAN_MESH_INTERFACE" ]; then if [ -n "$BATMAN_INTERFACE" ] && [ -n "$WLAN_MESH_INTERFACE" ]; then
COUNT=$(tail -n +3 /sys/kernel/debug/batman_adv/$BATMAN_INTERFACE/originators | grep "$WLAN_MESH_INTERFACE" | wc -l) COUNT=$(tail -n +3 /sys/kernel/debug/batman_adv/$BATMAN_INTERFACE/originators | grep "$WLAN_MESH_INTERFACE" | wc -l)
fi fi
echo $COUNT echo $COUNT
} }
scan_wlan() { scan_wlan() {
#FIXME: if you can; is there an easier way to get the current frequency? #FIXME: if you can; is there an easier way to get the current frequency?
#FIXME: this should reanimate the wlan driver; do passive and active scanning the job equally well? #FIXME: this should reanimate the wlan driver; do passive and active scanning the job equally well?
local FREQUENCY=$(iwlist $WLAN_MESH_INTERFACE frequency 2> /dev/null | grep -o "Current Frequency=[0-9.]\+ GHz" | grep -o "[0-9.]*" | tr -d ".") local FREQUENCY=$(iwlist $WLAN_MESH_INTERFACE frequency 2> /dev/null | grep -o "Current Frequency=[0-9.]\+ GHz" | grep -o "[0-9.]*" | tr -d ".")
[ -n "$FREQUENCY" ] && iw $WLAN_MESH_INTERFACE scan freq $FREQUENCY passive 1> /dev/null 2> /dev/null [ -n "$FREQUENCY" ] && iw $WLAN_MESH_INTERFACE scan freq $FREQUENCY passive 1> /dev/null 2> /dev/null
} }
fsm_load() { fsm_load() {
if [ -f "$STATEFILE" ] if [ -f "$STATEFILE" ] then
then STATE=""
STATE="" SINCE=""
SINCE="" . "$STATEFILE" || return 1
. "$STATEFILE" || return 1 fi
fi
} }
fsm_save() { fsm_save() {
echo -e "STATE=${STATE}\nSINCE=${SINCE}" > "$STATEFILE" || return 1 echo -e "STATE=${STATE}\nSINCE=${SINCE}" > "$STATEFILE" || return 1
} }
fsm_entry() { fsm_entry() {
SINCE=$(get_time) SINCE=$(get_time)
case $STATE in case $STATE in
pending) pending)
scan_wlan scan_wlan
;; ;;
error) error)
if [ -n "$DEBUG" ] && [ $DEBUG -eq 1 ]; then if [ -n "$DEBUG" ] && [ $DEBUG -eq 1 ]; then
debug_output | gzip > ${DEBUGFILE} debug_output | gzip > ${DEBUGFILE}
fi fi
reboot reboot
;; ;;
esac esac
} }
fsm_transition() { fsm_transition() {
local AGE=-1 local AGE=-1
[ -n "$SINCE" ] && AGE=$(( $(get_time) - $SINCE )) [ -n "$SINCE" ] && AGE=$(( $(get_time) - $SINCE ))
local OLDSTATE=$STATE local OLDSTATE=$STATE
case $STATE in case $STATE in
working) working)
if [ $(count_neighbours) -eq 0 ] && [ $(count_clients) -eq 0 ] if [ $(count_neighbours) -eq 0 ] && [ $(count_clients) -eq 0 ] then
then STATE=pending
STATE=pending fi
fi ;;
;; pending)
pending) if [ $AGE -ge $TIMEOUT_MEDIUM ] then
if [ $AGE -ge $TIMEOUT_MEDIUM ] STATE=error
then elif [ $(count_originators) -eq 0 ] && [ $AGE -ge $TIMEOUT_SHORT ]
STATE=error then
elif [ $(count_originators) -eq 0 ] && [ $AGE -ge $TIMEOUT_SHORT ] STATE=error
then elif [ $(count_neighbours) -gt 0 ] || [ $(count_clients) -gt 0 ]
STATE=error then
elif [ $(count_neighbours) -gt 0 ] || [ $(count_clients) -gt 0 ] STATE=working
then fi
STATE=working ;;
fi *)
;; if [ $AGE -ge $TIMEOUT_LONG ]
*) then
if [ $AGE -ge $TIMEOUT_LONG ] STATE=error
then elif [ $(count_neighbours) -gt 0 ] || [ $(count_clients) -gt 0 ]
STATE=error then
elif [ $(count_neighbours) -gt 0 ] || [ $(count_clients) -gt 0 ] STATE=working
then fi
STATE=working ;;
fi esac
;; if [ ! "$OLDSTATE" == "$STATE" ]
esac then
if [ ! "$OLDSTATE" == "$STATE" ] echo "$(date) '$OLDSTATE' -> '$STATE'"
then fsm_entry
echo "$(date) '$OLDSTATE' -> '$STATE'" fi
fsm_entry
fi
} }
# program # program