fff-nodewatcher: self-detect client interfaces

Signed-off-by: Tim Niemeyer <tim@tn-x.org>
Reviewed-by: Jan Kraus <mayosemmel@gmail.com>
This commit is contained in:
Tim Niemeyer 2016-06-10 23:58:15 +02:00
parent d9d69f55aa
commit 92dc0c647d
30 changed files with 16 additions and 53 deletions

View File

@ -110,7 +110,7 @@ Jetzt gehst du n Kaffee trinken.
### Netzwerkeinstellungen korrekt setzen
Am Ende sollte im bin/ Verzeichnis das Image für v1 und v2 liegen. Das v2 Image wird auf den Router geflasht. Achtung: Eventuell ist das Netzwerk jetzt so falsch eingestellt, dass man nicht mehr über Netzwerk auf den Router zugreifen kann. Am einfachsten ist es den Router dann über eine serielle Konsole zu verwenden. Theoretisch kann man an den unterschiedlichen LAN-Ports mit der IPv6 Link-Local aus der MAC Adresse des Geräts versuchen drauf zu kommen. Es kann auch sein, dass die IPv6 +/- 1 am Ende hat. Letztlich kann das funktionieren, ist aber aufwändig und da am LAN Einstellungen verändert werden sollen, ist die serielle Konsole das Mittel der Wahl!
Wenn man dann auf dem Router drauf ist, muss als erstes festgestellt werden, welches Ethernet-Device für den WAN Port zuständig ist. Mir sind da folgende Möglichkeiten bekannt. a) WAN ist eth0, b) WAN ist eth1, c) WAN ist teil vom Switch eth0. Dementsprechend wird das WANDEV auf dem Router in der /etc/network.tl-wr1043nd-v2 konfiguriert. Wenn WAN ein eigenes ethX hat, dann muss WAN_PORTS="" sein. Dann muss eingestellt werden welches Ethernet-Device an dem internen Switch angeschlossen ist (swconfig list). Dieses wird als SWITCHDEV konfiguriert. Ich glaub CLIENTIF musst nicht angepasst werden. Aber es muss noch eingestellt werden, welches Ethernet oder Wifi Device die MAC Adresse hat, die auch unter dem Gerät steht. Dieses Device wird als ROUTERMAC eingetragen. Nun ist es an der Zeit die Einstellungen zu testen, dafür muss die falsche Netzwerk-Config zurück gesetzt werden:
Wenn man dann auf dem Router drauf ist, muss als erstes festgestellt werden, welches Ethernet-Device für den WAN Port zuständig ist. Mir sind da folgende Möglichkeiten bekannt. a) WAN ist eth0, b) WAN ist eth1, c) WAN ist teil vom Switch eth0. Dementsprechend wird das WANDEV auf dem Router in der /etc/network.tl-wr1043nd-v2 konfiguriert. Wenn WAN ein eigenes ethX hat, dann muss WAN_PORTS="" sein. Dann muss eingestellt werden welches Ethernet-Device an dem internen Switch angeschlossen ist (swconfig list). Dieses wird als SWITCHDEV konfiguriert. Es muss noch eingestellt werden, welches Ethernet oder Wifi Device die MAC Adresse hat, die auch unter dem Gerät steht. Dieses Device wird als ROUTERMAC eingetragen. Nun ist es an der Zeit die Einstellungen zu testen, dafür muss die falsche Netzwerk-Config zurück gesetzt werden:
```
cp /rom/etc/config/network /etc/config/network
reboot

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-network
PKG_VERSION:=0.0.2
PKG_VERSION:=0.0.3
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/fff-network

View File

@ -3,7 +3,6 @@ SWITCHDEV=eth0
CLIENT_PORTS="0t"
WAN_PORTS="0t"
BATMAN_PORTS="0t"
CLIENTIF="w2ap eth0.1"
ETHMESHMAC="w2ap"

View File

@ -2,7 +2,6 @@ WANDEV=eth0
SWITCHDEV=eth1
WAN_PORTS=
CLIENTIF="eth0.1 w2ap"
ETHMESHMAC=eth1
ROUTERMAC=eth0

View File

@ -6,7 +6,6 @@ BATMAN_PORTS=""
. /etc/network.mode
CLIENTIF="w2ap"
ETHMESHMAC=eth0
ROUTERMAC=eth0
@ -23,7 +22,6 @@ if [ "$ETHMODE" = "WAN" ] ; then
uci set network.wan.ifname=$WANDEV
elif [ "$ETHMODE" = "CLIENT" ] ; then
## Activate Client:
CLIENTIF="w2ap eth0"
uci set network.mesh.ifname="bat0 $SWITCHDEV"
else
## Activate BATMAN:

View File

@ -6,7 +6,6 @@ BATMAN_PORTS=""
. /etc/network.mode
CLIENTIF="w2ap"
ETHMESHMAC=
ROUTERMAC=w2mesh
@ -23,7 +22,6 @@ if [ "$ETHMODE" = "WAN" ] ; then
uci set network.wan.ifname=$WANDEV
elif [ "$ETHMODE" = "CLIENT" ] ; then
## Activate Client:
CLIENTIF="w2ap eth0"
uci set network.mesh.ifname="bat0 $SWITCHDEV"
else
## Activate BATMAN:

View File

@ -6,7 +6,6 @@ BATMAN_PORTS=""
. /etc/network.mode
CLIENTIF="w2ap"
ETHMESHMAC=
ROUTERMAC=w2mesh
@ -23,7 +22,6 @@ if [ "$ETHMODE" = "WAN" ] ; then
uci set network.wan.ifname=$WANDEV
elif [ "$ETHMODE" = "CLIENT" ] ; then
## Activate Client:
CLIENTIF="w2ap eth0"
uci set network.mesh.ifname="bat0 $SWITCHDEV"
else
## Activate BATMAN:

View File

@ -4,6 +4,5 @@ CLIENT_PORTS="0t 1 2"
WAN_PORTS=
BATMAN_PORTS="0t 3 4"
CLIENTIF="eth0.1 w2ap w5ap"
ETHMESHMAC=
ROUTERMAC=w2mesh
ROUTERMAC=w2mesh

View File

@ -4,6 +4,5 @@ CLIENT_PORTS="0t 4 5"
WAN_PORTS="0t 1"
BATMAN_PORTS="0t 2 3"
CLIENTIF="eth0.1 w2ap w5ap"
ETHMESHMAC=
ROUTERMAC=w5mesh
ROUTERMAC=w5mesh

View File

@ -4,6 +4,5 @@ CLIENT_PORTS="0t 4 5"
WAN_PORTS="0t 1"
BATMAN_PORTS="0t 2 3"
CLIENTIF="eth0.1 w2ap w5ap"
ETHMESHMAC=
ROUTERMAC=w5mesh
ROUTERMAC=w5mesh

View File

@ -4,6 +4,5 @@ CLIENT_PORTS="0t 4 5"
WAN_PORTS="0t 1"
BATMAN_PORTS="0t 2 3"
CLIENTIF="eth0.1 w2ap w5ap"
ETHMESHMAC=
ROUTERMAC=w5mesh
ROUTERMAC=w5mesh

View File

@ -4,6 +4,5 @@ CLIENT_PORTS="3 4 5t"
WAN_PORTS="0 5t"
BATMAN_PORTS="1 2 5t"
CLIENTIF="eth0.1 w2ap"
ETHMESHMAC=w2ap
ROUTERMAC=eth0
ROUTERMAC=eth0

View File

@ -4,6 +4,5 @@ CLIENT_PORTS="1 2 6t"
WAN_PORTS="5 6t"
BATMAN_PORTS="3 4 6t"
CLIENTIF="eth0.1 w2ap"
ETHMESHMAC=
ROUTERMAC=eth1
ROUTERMAC=eth1

View File

@ -4,6 +4,5 @@ CLIENT_PORTS="1 2 6t"
WAN_PORTS="5 6t"
BATMAN_PORTS="3 4 6t"
CLIENTIF="eth0.1 w2ap"
ETHMESHMAC=
ROUTERMAC=eth1
ROUTERMAC=eth1

View File

@ -5,6 +5,5 @@ CLIENT_PORTS="1 4 0t"
WAN_PORTS=
BATMAN_PORTS="2 3 0t"
CLIENTIF="eth0.1 w2ap"
ETHMESHMAC=eth1
ROUTERMAC=w2mesh
ROUTERMAC=w2mesh

View File

@ -5,6 +5,5 @@ CLIENT_PORTS="1 2 0t"
WAN_PORTS=
BATMAN_PORTS="3 4 0t"
CLIENTIF="eth0.1 w2ap"
ETHMESHMAC=eth1
ROUTERMAC=w2mesh
ROUTERMAC=w2mesh

View File

@ -5,6 +5,5 @@ CLIENT_PORTS="1 4 0t"
WAN_PORTS=
BATMAN_PORTS="2 3 0t"
CLIENTIF="eth0.1 w2ap"
ETHMESHMAC=eth1
ROUTERMAC=w2mesh
ROUTERMAC=w2mesh

View File

@ -6,6 +6,5 @@ CLIENT_PORTS="1 2 0t"
WAN_PORTS=
BATMAN_PORTS="3 4 0t"
CLIENTIF="eth0.1 w2ap"
ETHMESHMAC=eth1
ROUTERMAC=eth0

View File

@ -6,6 +6,5 @@ CLIENT_PORTS="1 2 0t"
WAN_PORTS=
BATMAN_PORTS="3 4 0t"
CLIENTIF="eth0.1 w2ap"
ETHMESHMAC=eth1
ROUTERMAC=eth0

View File

@ -6,6 +6,5 @@ CLIENT_PORTS="1 4 0t"
WAN_PORTS=
BATMAN_PORTS="3 2 0t"
CLIENTIF="eth1.1 w2ap"
ETHMESHMAC=eth0
ROUTERMAC=eth1

View File

@ -6,6 +6,5 @@ CLIENT_PORTS="1 2 0t"
WAN_PORTS=
BATMAN_PORTS="3 4 0t"
CLIENTIF="eth0.1 w2ap"
ETHMESHMAC=eth1
ROUTERMAC=eth0

View File

@ -6,6 +6,5 @@ CLIENT_PORTS="1 2 0t"
WAN_PORTS=
BATMAN_PORTS="3 4 0t"
CLIENTIF="eth0.1 w2ap"
ETHMESHMAC=eth1
ROUTERMAC=wlan0

View File

@ -4,6 +4,5 @@ CLIENT_PORTS="1 4 0t"
WAN_PORTS=
BATMAN_PORTS="3 2 0t"
CLIENTIF="eth1.1 w2ap"
ETHMESHMAC=eth0
ROUTERMAC=eth1

View File

@ -6,7 +6,6 @@ BATMAN_PORTS=""
. /etc/network.mode
CLIENTIF="w2ap"
ETHMESHMAC=
ROUTERMAC=w2mesh
@ -23,7 +22,6 @@ if [ "$ETHMODE" = "WAN" ] ; then
uci set network.wan.ifname=$WANDEV
elif [ "$ETHMODE" = "CLIENT" ] ; then
## Activate Client:
CLIENTIF="w2ap eth0"
uci set network.mesh.ifname="bat0 $SWITCHDEV"
else
## Activate BATMAN:

View File

@ -6,7 +6,6 @@ BATMAN_PORTS=""
. /etc/network.mode
CLIENTIF="w2ap"
ETHMESHMAC=
ROUTERMAC=w2mesh
@ -25,7 +24,6 @@ if [ "$ETHMODE" = "WAN" ] ; then
uci set network.wan.ifname=$WANDEV
elif [ "$ETHMODE" = "CLIENT" ] ; then
## Activate Client:
CLIENTIF="w2ap eth0"
uci set network.mesh.ifname="bat0 $SWITCHDEV"
else
## Activate BATMAN:

View File

@ -6,7 +6,6 @@ BATMAN_PORTS=""
. /etc/network.mode
CLIENTIF="w2ap"
ETHMESHMAC=
ROUTERMAC=w2mesh
@ -23,7 +22,6 @@ if [ "$ETHMODE" = "WAN" ] ; then
uci set network.wan.ifname=$WANDEV
elif [ "$ETHMODE" = "CLIENT" ] ; then
## Activate Client:
CLIENTIF="w2ap eth0"
uci set network.mesh.ifname="bat0 $SWITCHDEV"
else
## Activate BATMAN:

View File

@ -12,12 +12,6 @@
BOARD="$(uci get board.model.name)"
. /etc/network.$BOARD
if ! uci get nodewatcher.@network[0].client_interfaces; then
echo "Setting nodewatchers client interfaces to: $CLIENTIF"
uci set nodewatcher.@network[0].client_interfaces="$CLIENTIF"
uci commit
fi
if ! uci get network.$SWITCHDEV.ifname; then
SWITCHHW=$(swconfig list | awk '{ print $4 }')

View File

@ -4,6 +4,5 @@ CLIENT_PORTS="0t 4 5"
WAN_PORTS="0t 1"
BATMAN_PORTS="0t 2 3"
CLIENTIF="eth0.1 w2ap w5ap"
ETHMESHMAC=
ROUTERMAC=w5mesh
ROUTERMAC=w5mesh

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-nodewatcher
PKG_VERSION:=37
PKG_VERSION:=38
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/fff-nodewatcher

View File

@ -2,7 +2,7 @@
# Netmon Nodewatcher (C) 2010-2012 Freifunk Oldenburg
# License; GPL v3
SCRIPT_VERSION="37"
SCRIPT_VERSION="38"
test -f /tmp/started || exit
@ -13,7 +13,6 @@ if [ -f /etc/config/nodewatcher ];then
SCRIPT_LOGFILE=`uci get nodewatcher.@script[0].logfile`
SCRIPT_DATA_FILE=`uci get nodewatcher.@script[0].data_file`
MESH_INTERFACE=`uci get nodewatcher.@network[0].mesh_interface`
CLIENT_INTERFACES=`uci get nodewatcher.@network[0].client_interfaces`
IFACEBLACKLIST=`uci get nodewatcher.@network[0].iface_blacklist`
IPWHITELIST=`uci get nodewatcher.@network[0].ip_whitelist`
SCRIPT_STATUS_FILE=`uci get nodewatcher.@script[0].status_text_file`
@ -228,6 +227,7 @@ crawl() {
err "`date`: Collecting information about conected clients"
#CLIENTS
client_count=0
CLIENT_INTERFACES=$(bridge link | awk '$2 !~/^bat/{ printf $2" " }')
for clientif in ${CLIENT_INTERFACES}; do
local cc=$(bridge fdb show br $MESH_INTERFACE brport $clientif | grep -v self | grep -v permanent -c)
client_count=$((client_count + $cc))