forked from freifunk-franken/firmware
bsp/default: remove wlanwatchdog and dependencies
Signed-off-by: Tim Niemeyer <tim.niemeyer@mastersword.de> Reviewed-by: Steffen Pankratz <kratz00@gmx.de>
This commit is contained in:
parent
d443b28ec8
commit
c85e42988f
|
@ -1,7 +1,7 @@
|
||||||
*/5 * * * * sh /etc/fastdstart.sh; sh /etc/nodewatcher.sh; sh /etc/configurator.sh; sh /etc/wlanwatchdog.sh >> /var/log/wlanwatchdog.log 2>&1
|
*/5 * * * * sh /etc/fastdstart.sh; sh /etc/nodewatcher.sh; sh /etc/configurator.sh
|
||||||
*/1 * * * * /usr/sbin/batctl gw off; sleep 1; /usr/sbin/batctl gw client
|
*/1 * * * * /usr/sbin/batctl gw off; sleep 1; /usr/sbin/batctl gw client
|
||||||
|
|
||||||
#15 01 * * * rdate -s time.fu-berlin.de > /dev/null
|
#15 01 * * * rdate -s time.fu-berlin.de > /dev/null
|
||||||
|
|
||||||
#Enable zapp script if you are running a gateway
|
#Enable zapp script if you are running a gateway
|
||||||
#*/1 * * * * /etc/init.d/zapp
|
#*/1 * * * * /etc/init.d/zapp
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
#!/bin/ash
|
|
||||||
|
|
||||||
# functions
|
|
||||||
#FIXME: define here your favorite methods to get the values
|
|
||||||
get_wlan_client_interface() {
|
|
||||||
echo "wlan0"
|
|
||||||
}
|
|
||||||
|
|
||||||
get_wlan_mesh_interface() {
|
|
||||||
echo "wlan0-1"
|
|
||||||
}
|
|
||||||
|
|
||||||
get_eth_client_interface() {
|
|
||||||
echo ""
|
|
||||||
}
|
|
||||||
|
|
||||||
get_eth_mesh_interface() {
|
|
||||||
echo ""
|
|
||||||
}
|
|
||||||
|
|
||||||
get_bridge_interface() {
|
|
||||||
echo "br-mesh"
|
|
||||||
}
|
|
||||||
|
|
||||||
get_batman_interface() {
|
|
||||||
echo "bat0"
|
|
||||||
}
|
|
||||||
|
|
||||||
get_vpn_interface() {
|
|
||||||
test -f /etc/fastdstart.sh || exit;
|
|
||||||
local $(grep -o project=.* /etc/fastdstart.sh)
|
|
||||||
echo ${project}VPN | tr -d '"'
|
|
||||||
}
|
|
||||||
|
|
||||||
get_debug_level() {
|
|
||||||
echo "0"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_definitions() {
|
|
||||||
echo "# interfaces"
|
|
||||||
echo "WLAN_CLIENT_INTERFACE=$(get_wlan_client_interface)"
|
|
||||||
echo "WLAN_MESH_INTERFACE=$(get_wlan_mesh_interface)"
|
|
||||||
echo "ETH_CLIENT_INTERFACE=$(get_eth_client_interface)"
|
|
||||||
echo "ETH_MESH_INTERFACE=$(get_eth_mesh_interface)"
|
|
||||||
echo "BRIDGE_INTERFACE=$(get_bridge_interface)"
|
|
||||||
echo "BATMAN_INTERFACE=$(get_batman_interface)"
|
|
||||||
echo "VPN_INTERFACE=$(get_vpn_interface)"
|
|
||||||
echo ""
|
|
||||||
echo "# variables"
|
|
||||||
echo "DEBUG=$(get_debug_level)"
|
|
||||||
}
|
|
||||||
|
|
||||||
# program
|
|
||||||
print_definitions
|
|
|
@ -25,9 +25,6 @@ fi
|
||||||
|
|
||||||
. /etc/network.sh
|
. /etc/network.sh
|
||||||
|
|
||||||
# collect environment info and write to dot-script
|
|
||||||
/etc/environment.sh > /tmp/environment
|
|
||||||
|
|
||||||
# Starting NTP-Client Daemon after 30s to ensure that the interface is up
|
# Starting NTP-Client Daemon after 30s to ensure that the interface is up
|
||||||
( sleep 30 ; ntpd -p ${NTPD_IP} ) &
|
( sleep 30 ; ntpd -p ${NTPD_IP} ) &
|
||||||
|
|
||||||
|
@ -42,4 +39,4 @@ httpd -h /tmp/crawldata
|
||||||
|
|
||||||
touch /tmp/started
|
touch /tmp/started
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -1,173 +0,0 @@
|
||||||
#!/bin/ash
|
|
||||||
|
|
||||||
test -f /tmp/started || exit
|
|
||||||
|
|
||||||
# environment
|
|
||||||
. "/tmp/environment" || exit 1
|
|
||||||
|
|
||||||
# constants
|
|
||||||
MINUTE=60
|
|
||||||
HOUR=3600
|
|
||||||
DAY=86400
|
|
||||||
TIMEOUT_SHORT=$((4*$MINUTE))
|
|
||||||
TIMEOUT_MEDIUM=$((29*$MINUTE))
|
|
||||||
TIMEOUT_LONG=$DAY
|
|
||||||
ORIGINATOR_QUALITY_MIN=50
|
|
||||||
CLIENT_AGE_MAX=60
|
|
||||||
STATEFILE="/tmp/wlanwatchdogstate"
|
|
||||||
DEBUGFILE="/root/wlanwatchdog_debug.log.gz"
|
|
||||||
|
|
||||||
# variables
|
|
||||||
STATE=
|
|
||||||
SINCE=
|
|
||||||
|
|
||||||
# functions
|
|
||||||
debug_output() {
|
|
||||||
echo "==== DEBUG OUTPUT ===="
|
|
||||||
echo "date: $(date)"
|
|
||||||
echo "=== INTERFACES ==="
|
|
||||||
ifconfig 2>&1
|
|
||||||
echo "=== BATMAN ==="
|
|
||||||
echo "== ORIGINATORS =="
|
|
||||||
batctl o 2>&1
|
|
||||||
echo "== STATISTICS =="
|
|
||||||
batctl s 2>&1
|
|
||||||
echo "== GATEWAYS =="
|
|
||||||
batctl gwl 2>&1
|
|
||||||
echo "=== BRIDGE ==="
|
|
||||||
echo "== $BRIDGE_INTERFACE =="
|
|
||||||
brctl showmacs $BRIDGE_INTERFACE 2>&1
|
|
||||||
echo "=== CONNECTIVITY TESTS ==="
|
|
||||||
echo "== PING GATEWAY OVER MESH =="
|
|
||||||
ping -6 -c3 $(uci get configurator.@api[0].ipv6_address)%$(uci get configurator.@api[0].ipv6_interface) 2>&1
|
|
||||||
echo "== PING HOST OVER INTERNET =="
|
|
||||||
ping -4 -c3 freifunk-ol.de 2>&1
|
|
||||||
echo "=== WLAN ==="
|
|
||||||
echo "== $WLAN_CLIENT_INTERFACE =="
|
|
||||||
iw dev $WLAN_CLIENT_INTERFACE station dump 2>&1
|
|
||||||
echo "== $WLAN_MESH_INTERFACE =="
|
|
||||||
iw dev $WLAN_MESH_INTERFACE station dump 2>&1
|
|
||||||
echo "== SCAN =="
|
|
||||||
iwlist scanning 2>&1
|
|
||||||
echo "=== WATCHDOG LOG ==="
|
|
||||||
cat "/var/log/wlanwatchdog.log"
|
|
||||||
}
|
|
||||||
|
|
||||||
get_time() {
|
|
||||||
date +%s
|
|
||||||
}
|
|
||||||
|
|
||||||
count_originators() {
|
|
||||||
local COUNT=0
|
|
||||||
if [ -n "$BATMAN_INTERFACE" ]; then
|
|
||||||
COUNT=$(tail -n +3 /sys/kernel/debug/batman_adv/$BATMAN_INTERFACE/originators 2> /dev/null | \
|
|
||||||
grep "$1" | \
|
|
||||||
grep -o "^\([0-9a-f]\{2\}:\?\)\+[[:space:]]\+[0-9.]\+s[[:space:]]\+([ 0-9]\+)" | \
|
|
||||||
cut -d\( -f2 | \
|
|
||||||
cut -d\) -f1 | \
|
|
||||||
tr -d " " | \
|
|
||||||
awk -vlimit=$ORIGINATOR_QUALITY_MIN '$1>=limit{print $1}' | \
|
|
||||||
wc -l)
|
|
||||||
fi
|
|
||||||
echo $COUNT
|
|
||||||
}
|
|
||||||
|
|
||||||
count_clients() {
|
|
||||||
local COUNT=0
|
|
||||||
local NUMBER=
|
|
||||||
if [ -n "$BRIDGE_INTERFACE" ] && [ -n "$WLAN_CLIENT_INTERFACE" ]; then
|
|
||||||
NUMBER=$(brctl showstp $BRIDGE_INTERFACE 2> /dev/null | \
|
|
||||||
grep -e "^$WLAN_CLIENT_INTERFACE " | \
|
|
||||||
cut -d" " -f2 | \
|
|
||||||
tr -d "()")
|
|
||||||
fi
|
|
||||||
if [ -n "$BRIDGE_INTERFACE" ] && [ -n "$NUMBER" ]; then
|
|
||||||
COUNT=$(brctl showmacs "^$BRIDGE_INTERFACE " 2> /dev/null | \
|
|
||||||
grep -o "^[[:space:]]*$NUMBER[[:space:]]\+\([0-9a-f]\{2\}:\?\)\+[[:space:]]\+no[[:space:]]\+[0-9]\+" | \
|
|
||||||
tr "\t" " " | \
|
|
||||||
tr -s " " | \
|
|
||||||
cut -d" " -f5 | \
|
|
||||||
awk -vlimit=$CLIENT_AGE_MAX '$1<=limit{print $1}' | \
|
|
||||||
wc -l)
|
|
||||||
fi
|
|
||||||
echo $COUNT
|
|
||||||
}
|
|
||||||
|
|
||||||
count_neighbours() {
|
|
||||||
count_originators "$WLAN_MESH_INTERFACE"
|
|
||||||
}
|
|
||||||
|
|
||||||
scan_wlan() {
|
|
||||||
#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?
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
fsm_load() {
|
|
||||||
if [ -f "$STATEFILE" ]; then
|
|
||||||
STATE=""
|
|
||||||
SINCE=""
|
|
||||||
. "$STATEFILE" || return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
fsm_save() {
|
|
||||||
echo -e "STATE=${STATE}\nSINCE=${SINCE}" > "$STATEFILE" || return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
fsm_entry() {
|
|
||||||
SINCE=$(get_time)
|
|
||||||
case $STATE in
|
|
||||||
pending)
|
|
||||||
scan_wlan
|
|
||||||
;;
|
|
||||||
error)
|
|
||||||
if [ -n "$DEBUG" ] && [ "$DEBUG" -eq "1" ]; then
|
|
||||||
debug_output | gzip > ${DEBUGFILE}
|
|
||||||
fi
|
|
||||||
reboot
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
fsm_transition() {
|
|
||||||
local AGE=-1
|
|
||||||
[ -n "$SINCE" ] && AGE=$(( $(get_time) - $SINCE ))
|
|
||||||
local OLDSTATE=$STATE
|
|
||||||
case $STATE in
|
|
||||||
working)
|
|
||||||
if [ "$(count_neighbours)" -eq "0" ] && [ "$(count_clients)" -eq "0" ]; then
|
|
||||||
STATE=pending
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
pending)
|
|
||||||
if [ "$AGE" -ge "$TIMEOUT_MEDIUM" ]; then
|
|
||||||
STATE=error
|
|
||||||
elif [ "$(count_originators)" -eq "0" ] && [ "$AGE" -ge "$TIMEOUT_SHORT" ]; then
|
|
||||||
STATE=error
|
|
||||||
elif [ "$(count_neighbours)" -gt "0" ] || [ "$(count_clients)" -gt "0" ]; then
|
|
||||||
STATE=working
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
if [ "$AGE" -ge "$TIMEOUT_LONG" ]; then
|
|
||||||
STATE=error
|
|
||||||
elif [ "$(count_neighbours)" -gt "0" ] || [ "$(count_clients)" -gt "0" ]; then
|
|
||||||
STATE=working
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
if [ ! "$OLDSTATE" = "$STATE" ]; then
|
|
||||||
echo "$(date) '$OLDSTATE' -> '$STATE'"
|
|
||||||
fsm_entry
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# program
|
|
||||||
fsm_load
|
|
||||||
fsm_transition
|
|
||||||
fsm_save
|
|
Loading…
Reference in New Issue