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

robert rlanghammer at web.de
Di Mär 26 19:04:09 CET 2019


Hallo Adrian,

klar!

Reviewed-by: Robert Langhammer <rlanghammer at web.de>

Am 26.03.19 um 15:47 schrieb Adrian Schmutzler:
> Robert, schickst du gelegentlich nochmal ein Review für die V2?
>
>> -----Original Message-----
>> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf Of
>> Adrian Schmutzler
>> Sent: Montag, 25. März 2019 13:10
>> To: franken-dev at freifunk.net
>> Subject: [PATCH v2] batman-adv: Move from DEBUGFS to batctl
>>
>> 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>
>>
>> ---
>>
>> Changes in v2:
>> - Fixed/reformatted batctl tg lines
>> - Used same order in WebUI
>> ---
>>  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_quality
>>> <nexthop>"$4"</nexthop><last_seen>"$2"</last_seen><outgoing_interface
>>> "$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_qu
>> 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..d7ec8247 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 | 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..88ae1921 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>Bekannte Knoten:</th><td><% echo -n $(($(batctl tg -H | cut -
>> b 40-56 | sort | uniq | wc -l 2> /dev/null)+1)) %></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>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..4d1cc93f 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 | 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>
>> --
>> 2.11.0


Mehr Informationen über die Mailingliste franken-dev