From patchwork Wed Jul 25 12:24:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [v2] nodewatcher: Change mechanism for client device detection From: Adrian Schmutzler X-Patchwork-Id: 889 Message-Id: <20180725122410.22510-1-freifunk@adrianschmutzler.de> To: franken-dev@freifunk.net Date: Wed, 25 Jul 2018 14:24:10 +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) Signed-off-by: Adrian Schmutzler Reviewed-by: Tim Niemeyer Reviewed-by: Fabian Bläse --- Changes in v2: - use $MESH_INTERFACE - don't suppress error - remove comment about changed behavior --- 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..4eebf20 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/$MESH_INTERFACE/brif" | 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))