From patchwork Mon Jul 23 13:39:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: nodewatcher: Change mechanism for client device detection From: Adrian Schmutzler X-Patchwork-Id: 887 Message-Id: <20180723133929.12942-1-freifunk@adrianschmutzler.de> To: franken-dev@freifunk.net Date: Mon, 23 Jul 2018 15:39:29 +0200 This is simpler than the previous approach and does not rely on parsing. This fixes: - Interfaces being accounted for multiple times for certain devices - Errors when output of bridge function changes (as with the current OpenWrt master) Behavior change: Only br-mesh is evaluated, in contrast to all bridge devices as before. Signed-off-by: Adrian Schmutzler Tested-by: Adrian Schmutzler --- src/packages/fff/fff-nodewatcher/Makefile | 2 +- src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/packages/fff/fff-nodewatcher/Makefile b/src/packages/fff/fff-nodewatcher/Makefile index 633ec71..12ccb0f 100644 --- a/src/packages/fff/fff-nodewatcher/Makefile +++ b/src/packages/fff/fff-nodewatcher/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=fff-nodewatcher -PKG_VERSION:=47 +PKG_VERSION:=48 PKG_RELEASE:=1 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) diff --git a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher index 3b60500..f655e5e 100755 --- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher +++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher @@ -2,7 +2,7 @@ # Netmon Nodewatcher (C) 2010-2012 Freifunk Oldenburg # License; GPL v3 -SCRIPT_VERSION="47" +SCRIPT_VERSION="48" test -f /tmp/started || exit @@ -260,7 +260,7 @@ crawl() { #CLIENTS client_count=0 dataclient="" - CLIENT_INTERFACES=$(bridge link | awk '$2 !~/^bat/{ printf $2" " }') + CLIENT_INTERFACES=$(ls /sys/class/net/br-mesh/brif 2>/dev/null | grep -v '^bat') 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))