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

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


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
> 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>:
> >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
> >> 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>
> >>
> >>
> >> 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>
> >> > Tested-by: Adrian Schmutzler <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 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/2b578d9b/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev