[PATCH] batman-adv: Move from DEBUGFS to batctl

Adrian Schmutzler mail at adrianschmutzler.de
Fr Mär 22 13:58:48 CET 2019


Nochmal ich,

 

hab jetzt doch mal nachgelesen, korrekt wäre:

 

$((`batctl tg -H | cut -b 40-56 | sort | uniq | wc -l 2>/dev/null`+1))

 

Transglobal enthält alle Wege zu Clients und wir zählen die „vias“, also welche Knoten es gibt.

 

wc -l zählt offenbar die letzte Zeile (ohne Newline) mit?

 

Noch nicht ganz klar ist mir plus eins am Schluss. Ich habe den Eindruck, dass batctl tg die eigenen Clients nicht anzeigt, und daher das „+1“ lediglich den lokalen Knoten noch dazuzählt. Evtl. kann man statt „Nachbarknoten“ und „Bekannte Knoten“ auch „Lokale Nachbarn“ und „Alle Nachbarn“ schreiben, dann könnte man das plus 1 einfach weglassen …

 

Grüße

 

Adrian

 

From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf Of Adrian Schmutzler
Sent: Freitag, 22. März 2019 13:37
To: 'Robert Langhammer' <rlanghammer at web.de>; franken-dev at freifunk.net
Subject: RE: [PATCH] batman-adv: Move from DEBUGFS to batctl

 

Hallo Robert, 

> -----Original Message----- 
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf Of 
> Robert Langhammer 
> Sent: Freitag, 22. März 2019 13:25 
> To: franken-dev at freifunk.net <mailto:franken-dev at freifunk.net>  
> Subject: RE: [PATCH] batman-adv: Move from DEBUGFS to batctl 
> 
> 
> 
> Am 22. März 2019 13:14:12 MEZ schrieb Adrian Schmutzler 
> <mail at adrianschmutzler.de <mailto:mail at adrianschmutzler.de> >: 
> >Hallo Robert, 
> > 
> >> -----Original Message----- 
> >> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf 
> >Of 
> >> robert 
> >> Sent: Freitag, 22. März 2019 09:03 
> >> To: franken-dev at freifunk.net <mailto:franken-dev at freifunk.net>  
> >> Subject: Re: [PATCH] batman-adv: Move from DEBUGFS to batctl 
> >> 
> >> Hallo Adrian, 
> >> schaut gut aus. Ich gehe mal davon aus, dass du die cut-Bytes richtig 
> >> gezaehlt hast ;-) 
> >> Inkonsequent ist die Verwendung des absoluten Pfades zu batctl. Was 
> >aber 
> > 
> >Ich hatte es zuerst komplett ohne, aber der nodewatcher wird ja als 
> >einziger vom micron.d gestartet, deshalb habe ich da sicherheitshalber 
> >die absoluten Pfade genommen. Die anderen Sachen werden immer nur vom 
> >user ausgeführt. 
> > 
> >> egal ist, da /etc/profile gelesen wird und der Pfad bekannt ist. Und 
> >> /usr/sbin wird auch in Zukunft nicht rausfliegen. 
> >> 
> >> Reviewed-by: Robert Langhammer <rlanghammer at web.de <mailto:rlanghammer at web.de> > 
> >> 
> >> 
> >> ps. Da sind ja noch backsticks drin. 
> > 
> >Was meinst du? 
> Weiter unten sind noch gemixte nested kommandsubstitutions mit $() und 
> backsticks. Altlasten, hat mit dem Patch nix zu tun. Ist mir nur aufgefallen. 

Meinst du backticks? 

> $((`cat /sys/kernel/debug/batman_adv/bat0/transtable_global | grep '^ [^ ]' | cut -b 39-55 | sort | uniq | wc -l 2>/dev/null`+1))

> $((`batctl tg -H | grep '^ [^ ]' | cut -b 40-56 | sort | uniq | wc -l 2>/dev/null`+1)) 

Bei dem bin ich mir ohnehin nicht sicher, ob das überhaupt noch richtig gerechnet hat. Ich denke auch, dass wir den grep rausschmeißen könnten, weil der wohl nur für die Header-Zeilen gedacht war.

Beides habe ich nicht angefasst, weil ich keine Lust hatte, die Tabelle ganz zu verstehen und das ja auch nicht Aufgabe meines Patches war.

Wie würde ich das ordentlich ohne Backticks machen? 

Grüße 

Adrian 

> > 
> >Grüße 
> > 
> >Adrian 
> > 
> >> 
> >> 
> >> Am 21.03.19 um 13:50 schrieb Adrian Schmutzler: 
> >> > The debug filesystem will be deprecated and disabled by default 
> >> > in newer versions of B.A.T.M.A.N. 
> >> > 
> >> > This patch switches our code to the batctl, as recommended. 
> >> > 
> >> > Since batctl can suppress headers, this actually makes our life 
> >> > easier ... 
> >> > 
> >> > Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de <mailto:freifunk at adrianschmutzler.de> > 
> >> > Tested-by: Adrian Schmutzler <freifunk at adrianschmutzler.de <mailto:freifunk at adrianschmutzler.de> > 
> >> > --- 
> >> >  src/packages/fff/fff-nodewatcher/Makefile          |  3 +-- 
> >> >  .../fff/fff-nodewatcher/files/usr/sbin/nodewatcher | 23 
> >++++++++++--------- 
> >> --- 
> >> >  src/packages/fff/fff-support/Makefile              |  3 +-- 
> >> >  .../fff/fff-support/files/usr/sbin/show_info       |  6 +++--- 
> >> >  src/packages/fff/fff-web/Makefile                  |  3 +-- 
> >> >  .../fff-web/files/www/public/cgi-bin/status.html   |  6 +++--- 
> >> >  .../fff/fff-web/files/www/ssl/cgi-bin/home.html    |  6 +++--- 
> >> >  7 files changed, 22 insertions(+), 28 deletions(-) 
> >> > 
> >> > diff --git a/src/packages/fff/fff-nodewatcher/Makefile 
> >b/src/packages/fff/fff- 
> >> nodewatcher/Makefile 
> >> > index eea86ae6..f6bdbb52 100644 
> >> > --- a/src/packages/fff/fff-nodewatcher/Makefile 
> >> > +++ b/src/packages/fff/fff-nodewatcher/Makefile 
> >> > @@ -1,8 +1,7 @@ 
> >> >  include $(TOPDIR)/rules.mk 
> >> > 
> >> >  PKG_NAME:=fff-nodewatcher 
> >> > -PKG_VERSION:=51 
> >> > -PKG_RELEASE:=1 
> >> > +PKG_RELEASE:=52 
> >> > 
> >> >  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 9d96b07b..5e75f032 100755 
> >> > --- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher 
> >> > +++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher 
> >> > @@ -12,7 +12,7 @@ if ! lock -n "$lockfile"; then 
> >> >  fi 
> >> >  trap "lock -u \"$lockfile\"" INT TERM EXIT 
> >> > 
> >> > -SCRIPT_VERSION="51" 
> >> > +SCRIPT_VERSION="52" 
> >> > 
> >> >  #Get the configuration from the uci configuration file 
> >> >  #If it does not exists, then get it from a normal bash file with 
> >variables. 
> >> > @@ -227,14 +227,13 @@ crawl() { 
> >> >          done 
> >> > 
> >> >          # Build a list of direct neighbors 
> >> > -        batman_adv_originators=$(awk \ 
> >> > +        batman_adv_originators=$(/usr/sbin/batctl o -H | awk \ 
> >> >              'BEGIN { FS=" "; i=0 } # set the delimiter to " " 
> >> > -            /O/ { next } # ignore lines with O (will remove second 
> >line) 
> >> > -            /B/ { next } # ignore line with B (will remove first 
> >line) 
> >> >              {   sub("\\(", "", $0) # remove parentheses 
> >> >                  sub("\\)", "", $0) 
> >> >                  sub("\\[", "", $0) 
> >> > -                sub("\\]:", "", $0) 
> >> > +                sub("\\]", "", $0) 
> >> > +                sub("\\*", "", $0) 
> >> >                  sub("  ", " ", $0) 
> >> >                  o=$1".*"$1 # build a regex to find lines that 
> >contains the $1 
> >> (=originator) twice 
> >> >                  if ($0 ~ o) # filter for this regex (will remove 
> >entries without direct 
> >> neighbor) 
> >> > @@ -242,24 +241,22 @@ crawl() { 
> >> >                      printf 
> >> 
> >"<originator_"i"><originator>"$1"</originator><link_quality>"$3"</link_qualit 
> y 
> >> 
> >><nexthop>"$4"</nexthop><last_seen>"$2"</last_seen><outgoing_interfac 
> e 
> >> >"$5"</outgoing_interface></originator_"i">" 
> >> >                      i++ 
> >> >                  } 
> >> > -            }' /sys/kernel/debug/batman_adv/bat0/originators) 
> >> > +            }') 
> >> > 
> >> > -        batman_adv_gateway_mode=$(batctl gw) 
> >> > +        batman_adv_gateway_mode=$(/usr/sbin/batctl gw) 
> >> > 
> >> > -        batman_adv_gateway_list=$(awk \ 
> >> > +        batman_adv_gateway_list=$(/usr/sbin/batctl gwl -H | awk \ 
> >> >              'BEGIN { FS=" "; i=0 } 
> >> > -            /B.A.T.M.A.N./ { next } 
> >> > -            /Gateway/ { next } 
> >> >              /No gateways/ { next } 
> >> >              {   sub("\\(", "", $0) 
> >> >                  sub("\\)", "", $0) 
> >> >                  sub("\\[ *", "", $0) 
> >> >                  sub("\\]:", "", $0) 
> >> > -                sub("=> ", "true ", $0) 
> >> > -                sub("   ", "false ", $0) 
> >> > +                sub("\\* ", "true ", $0) 
> >> > +                sub("  ", "false ", $0) 
> >> >                  printf 
> >> 
> >"<gateway_"i"><selected>"$1"</selected><gateway>"$2"</gateway><link_q 
> u 
> >> 
> >ality>"$3"</link_quality><nexthop>"$4"</nexthop><outgoing_interface>"$5" 
> < 
> >> /outgoing_interface><gw_class>"$6" "$7" 
> >"$8"</gw_class></gateway_"i">" 
> >> >                  i++ 
> >> > -            }' /sys/kernel/debug/batman_adv/bat0/gateways) 
> >> > +            }') 
> >> >      fi 
> >> >      err "$(date): Collecting information about conected clients" 
> >> >      #CLIENTS 
> >> > diff --git a/src/packages/fff/fff-support/Makefile 
> >b/src/packages/fff/fff- 
> >> support/Makefile 
> >> > index 73066adb..56e35740 100644 
> >> > --- a/src/packages/fff/fff-support/Makefile 
> >> > +++ b/src/packages/fff/fff-support/Makefile 
> >> > @@ -1,8 +1,7 @@ 
> >> >  include $(TOPDIR)/rules.mk 
> >> > 
> >> >  PKG_NAME:=fff-support 
> >> > -PKG_VERSION:=0.0.1 
> >> > -PKG_RELEASE:=1 
> >> > +PKG_RELEASE:=2 
> >> > 
> >> >  PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) 
> >> > 
> >> > diff --git a/src/packages/fff/fff-support/files/usr/sbin/show_info 
> >> b/src/packages/fff/fff-support/files/usr/sbin/show_info 
> >> > index 7a75966d..f2cf016b 100755 
> >> > --- a/src/packages/fff/fff-support/files/usr/sbin/show_info 
> >> > +++ b/src/packages/fff/fff-support/files/usr/sbin/show_info 
> >> > @@ -98,8 +98,8 @@ echo "-> SYSTEM" 
> >> >  echo "Name: ${HOSTNAME}" 
> >> >  echo "Modell: $(cat /tmp/sysinfo/model 2>/dev/null)" 
> >> >  echo "MAC-Adresse: $(cat /sys/class/net/br-mesh/address)" 
> >> > -echo "Bekannte Knoten: $((`cat 
> >> /sys/kernel/debug/batman_adv/bat0/transtable_global | grep '^ [^ ]' | 
> >cut -b 
> >> 39-55 | sort | uniq | wc -l 2>/dev/null`+1))" 
> >> > -echo "Nachbarknoten: $(cat 
> >> /sys/kernel/debug/batman_adv/bat0/originators | grep '^[0-9a-f]' | 
> >cut -b 37- 
> >> 53 | sort | uniq | wc -l 2>/dev/null)" 
> >> > +echo "Bekannte Knoten: $((`batctl tg -H | grep '^ [^ ]' | cut -b 
> >40-56 | sort | 
> >> uniq | wc -l 2>/dev/null`+1))" 
> >> > +echo "Nachbarknoten: $(batctl o -H | cut -b 40-56 | sort | uniq | 
> >wc -l 
> >> 2>/dev/null)" 
> >> >  echo "VPN via fastd: ${vpn_active}" 
> >> >  echo "VPN via L2TP: ${l2tp_active}" 
> >> >  echo "Laufzeit: ${uptime}" 
> >> > @@ -128,7 +128,7 @@ echo "Fastd Version: $(fastd --version 2> 
> >/dev/null | 
> >> cut -d' ' -f 2)" 
> >> > 
> >> >  echo "" 
> >> >  echo "-> Netz: FREIFUNK" 
> >> > -echo "Nutzer: $(cat 
> >/sys/kernel/debug/batman_adv/bat0/transtable_local 2> 
> >> /dev/null | grep -c 'W')" 
> >> > +echo "Nutzer: $(batctl tl -H 2> /dev/null | grep -c 'W')" 
> >> >  echo "Empfangen: $(cat /sys/class/net/br-mesh/statistics/rx_bytes 
> >2> 
> >> /dev/null | human_bytes)" 
> >> >  echo "Gesendet: $(cat /sys/class/net/br-mesh/statistics/tx_bytes 
> >2> 
> >> /dev/null | human_bytes)" 
> >> >  echo "IPv4 Adressen: $(addr 4 br-mesh)" 
> >> > diff --git a/src/packages/fff/fff-web/Makefile 
> >b/src/packages/fff/fff- 
> >> web/Makefile 
> >> > index 7a3c4e38..9bb10f71 100644 
> >> > --- a/src/packages/fff/fff-web/Makefile 
> >> > +++ b/src/packages/fff/fff-web/Makefile 
> >> > @@ -1,8 +1,7 @@ 
> >> >  include $(TOPDIR)/rules.mk 
> >> > 
> >> >  PKG_NAME:=fff-web 
> >> > -PKG_VERSION:=6 
> >> > -PKG_RELEASE:=2 
> >> > +PKG_RELEASE:=7 
> >> > 
> >> >  PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) 
> >> > 
> >> > diff --git 
> >a/src/packages/fff/fff-web/files/www/public/cgi-bin/status.html 
> >> b/src/packages/fff/fff-web/files/www/public/cgi-bin/status.html 
> >> > index 96d657b8..ca0f42fe 100755 
> >> > --- a/src/packages/fff/fff-web/files/www/public/cgi-bin/status.html 
> >> > +++ b/src/packages/fff/fff-web/files/www/public/cgi-bin/status.html 
> >> > @@ -61,9 +61,9 @@ contact="$(uci -q get "fff.system.contact")" 
> >> >                                                          <legend>Status</legend> 
> >> >                                                          <table> 
> >> > 
> >>    <tr><th>Hood:</th><td><% echo "$hood" %></td></tr> 
> >> > - 
> >>    <tr><th>Nachbarknoten:</th><td><% echo -n $(cat 
> >> /sys/kernel/debug/batman_adv/bat0/originators | grep '^[0-9a-f]' | 
> >cut -b 37- 
> >> 53 | sort | uniq | wc -l 2> /dev/null) %></td></tr> 
> >> > - 
> >>    <tr><th>Bekannte Knoten:</th><td><% echo -n $((`cat 
> >> /sys/kernel/debug/batman_adv/bat0/transtable_global | grep '^ [^ ]' | 
> >cut -b 
> >> 39-55 | sort | uniq | wc -l 2> /dev/null`+1)) %></td></tr> 
> >> > -                                                                <tr><th>Lokale 
> >> Clients:</th><td><% echo -n $(cat 
> >> /sys/kernel/debug/batman_adv/bat0/transtable_local 2> /dev/null | 
> >grep -c 
> >> 'W') %></td></tr> 
> >> > + 
> >>    <tr><th>Nachbarknoten:</th><td><% echo -n $(batctl o -H | cut -b 40- 
> >> 56 | sort | uniq | wc -l 2> /dev/null) %></td></tr> 
> >> > + 
> >>    <tr><th>Bekannte Knoten:</th><td><% echo -n $((`batctl tg -H | grep 
> >> '^ [^ ]' | cut -b 40-56 | sort | uniq | wc -l 2> /dev/null`+1)) 
> >%></td></tr> 
> >> > +                                                                <tr><th>Lokale 
> >> Clients:</th><td><% echo -n $(batctl tl -H 2> /dev/null | grep -c 
> >'W') 
> >> %></td></tr> 
> >> >                                                          </table> 
> >> >                                                  </fieldset> 
> >> >                                          </td></tr> 
> >> > diff --git 
> >a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/home.html 
> >> b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/home.html 
> >> > index 45b618d4..cd1892b3 100755 
> >> > --- a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/home.html 
> >> > +++ b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/home.html 
> >> > @@ -59,8 +59,8 @@ fi 
> >> >                  <tr><th>Name:</th><td><%= ${HOSTNAME} %></td></tr> 
> >> >                  <tr><th>Modell:</th><td><% cat /tmp/sysinfo/model 
> >> 2>/dev/null %></td></tr> 
> >> >                  <tr><th>MAC-Adresse:</th><td><%= $(cat /sys/class/net/br- 
> >> mesh/address) %></td></tr> 
> >> > -                <tr><th>Bekannte Knoten:</th><td><%= $((`cat 
> >> /sys/kernel/debug/batman_adv/bat0/transtable_global | grep '^ [^ ]' | 
> >cut -b 
> >> 39-55 | sort | uniq | wc -l 2>/dev/null`+1)) %></td></tr> 
> >> > -                <tr><th>Nachbarknoten:</th><td><%= $(cat 
> >> /sys/kernel/debug/batman_adv/bat0/originators | grep '^[0-9a-f]' | 
> >cut -b 37- 
> >> 53 | sort | uniq | wc -l 2>/dev/null) %></td></tr> 
> >> > +                <tr><th>Bekannte Knoten:</th><td><%= $((`batctl tg -H | grep 
> >> '^ [^ ]' | cut -b 40-56 | sort | uniq | wc -l 2>/dev/null`+1)) 
> >%></td></tr> 
> >> > +                <tr><th>Nachbarknoten:</th><td><%= $(batctl o -H | cut -b 40- 
> >> 56 | sort | uniq | wc -l 2>/dev/null) %></td></tr> 
> >> >                  <tr><th>VPN via fastd:</th><td><%= ${vpn_active} 
> >> %></td></tr> 
> >> >                  <tr><th>VPN via L2TP:</th><td><%= ${l2tp_active} 
> >> %></td></tr> 
> >> >                  <tr><th>Laufzeit:</th><td><%= ${uptime} %></td></tr> 
> >> > @@ -71,7 +71,7 @@ fi 
> >> >  <fieldset style="padding-bottom:12px"> 
> >> >          <legend>Netz: Freifunk</legend> 
> >> >          <table> 
> >> > -                <tr><th>Nutzer:</th><td><% cat 
> >> /sys/kernel/debug/batman_adv/bat0/transtable_local 2> /dev/null | 
> >grep -c 'W' 
> >> %></td></tr> 
> >> > +                <tr><th>Nutzer:</th><td><% batctl tl -H 2> /dev/null | grep -c 
> >> 'W' %></td></tr> 
> >> >                  <tr><th>Empfangen:</th><td><% cat /sys/class/net/br- 
> >> mesh/statistics/rx_bytes 2> /dev/null | human_bytes %></td></tr> 
> >> >                  <tr><th>Gesendet:</th><td><% cat /sys/class/net/br- 
> >> mesh/statistics/tx_bytes 2> /dev/null | human_bytes %></td></tr> 
> >> >                  <tr><th>IPv4 Adressen:</th><td><% addr 4 br-mesh 
> >> %></td></tr> 
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <https://{'listname': 'franken-dev-freifunk.net', 'hostname': 'lists.freifunk.net'}/pipermail/franken-dev-freifunk.net/attachments/20190322/022460c1/attachment.html>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 834 bytes
Beschreibung: nicht verfügbar
URL         : <https://{'listname': 'franken-dev-freifunk.net', 'hostname': 'lists.freifunk.net'}/pipermail/franken-dev-freifunk.net/attachments/20190322/022460c1/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev