[v2] nodewatcher: Change mechanism for client device detection

Submitted by Adrian Schmutzler on July 25, 2018, 12:24 p.m.

Details

Message ID 20180725122410.22510-1-freifunk@adrianschmutzler.de
State Accepted
Headers show

Commit Message

Adrian Schmutzler July 25, 2018, 12:24 p.m.
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 <freifunk@adrianschmutzler.de>

---

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(-)

Patch hide | download patch | download mbox

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))

Comments

Tim Niemeyer July 25, 2018, 12:31 p.m.
Hi

Danke fürs anpassen.

Reviewed-by: Tim Niemeyer <tim@tn-x.org>

Tim

Am Mittwoch, den 25.07.2018, 14:24 +0200 schrieb Adrian Schmutzler:
> 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 <freifunk@adrianschmutzler.de>
> 
> ---
> 
> 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))
Fabian Blaese July 25, 2018, 1:24 p.m.
Jo.

Reviewed-by: Fabian Bläse <fabian@blaese.de>

Fabian

> On 25. Jul 2018, at 14:24, Adrian Schmutzler <freifunk@adrianschmutzler.de> wrote:
> 
> 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 <freifunk@adrianschmutzler.de>
> 
> ---
> 
> 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))
> --
> 2.11.0
>
Tim Niemeyer July 26, 2018, 7:23 a.m.
Moin

Und applied.

Tim

Am Mittwoch, den 25.07.2018, 14:24 +0200 schrieb Adrian Schmutzler:
> 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 <freifunk@adrianschmutzler.de>
> 
> ---
> 
> 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))