[PATCH v3] nodewatcher: only add direct batman originators
Tobias Klaus
tk+ff at meskal.net
So Okt 11 11:57:12 CEST 2015
Danke!
Dank dieser Erklärung :-) :
Reviewed-by: Tobias Klaus <tk+ff at meskal.net>
Am Samstag, 10. Oktober 2015, 16:46:39 schrieb Tim Niemeyer:
> This is a normal scenario:
> --- %< ---
> originator last-seen (quality) nexthop [interface]: .. possible nexthops ..
> A 0.270s (134) A [ w2mesh]: C ( 79) A (134)
> B 0.170s (245) B [ w2mesh]: B (245)
> C 1.850s (152) C [ w2mesh]: A ( 83) C (152)
> --- >% ---
> Nodewatcher will send only the originator, last-seen, quality, nexthop
> and the interface. Nothing about the possible nexthops. Because Netmon
> can't show every Originator (to bad performance), we need some filtering,
> to only see direct neighbors. At the moment Netmon stores only
> originator == nexthop entries. And there is no other way to filter,
> because Netmon has only this information.
>
> But this may fail. The problem occurs, if A has a better connection
> (e.g. via eth0) with leads to an quality of 255:
> --- %< ---
> A 0.270s (255) A [ eth0]: C ( 79) A (255)
> B 0.170s (245) B [ w2mesh]: B (245)
> C 1.850s (204) A [ eth0]: A (204) C (152)
> --- >% ---
> In this example, Netmon wouldn't show the connection to C.
>
> This patch doesn't use the originator == nexthop filter. Instead a
> filter like "originator is anywhere in the possible nexthops" is used.
> With this, we can disable the filtering in Netmon and show at least that
> there is directly connection. With the "batctl o" command it is not
> possible to show the correct interface for this direct connection.
>
> Signed-off-by: Tim Niemeyer <tim.niemeyer at mastersword.de>
> ---
>
> Changes in v3:
> - Add comments to AWK
> - Add better commit log
> - Increment the script version
>
> bsp/default/root_file_system/etc/nodewatcher.sh | 19 ++++++++++++-------
> 1 file changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/bsp/default/root_file_system/etc/nodewatcher.sh
> b/bsp/default/root_file_system/etc/nodewatcher.sh index 1c85cc0..3516a7f
> 100755
> --- a/bsp/default/root_file_system/etc/nodewatcher.sh
> +++ b/bsp/default/root_file_system/etc/nodewatcher.sh
> @@ -2,7 +2,7 @@
> # Netmon Nodewatcher (C) 2010-2012 Freifunk Oldenburg
> # License; GPL v3
>
> -SCRIPT_VERSION="31"
> +SCRIPT_VERSION="32"
>
> test -f /tmp/started || exit
>
> @@ -168,17 +168,22 @@ crawl() {
>
> BATMAN_ADV_INTERFACES=$BATMAN_ADV_INTERFACES"<$iface><name>$iface</name><st
> atus>$status</status></$iface>" done
>
> + # Build a list of direct neighbors
> batman_adv_originators=$(awk \
> - 'BEGIN { FS=" "; i=0 }
> - /O/ { next }
> - /B/ { next }
> - { sub("\\(", "", $0)
> + '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)
> - printf
> "<originator_"i"><originator>"$1"</originator><link_quality>"$3"</link_qual
> ity><nexthop>"$4"</nexthop><last_seen>"$2"</last_seen><outgoing_interface>"$
> 5"</outgoing_interface></originator_"i">" - i++
> + 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) + {
> + printf
> "<originator_"i"><originator>"$1"</originator><link_quality>"$3"</link_qual
> ity><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)
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 819 bytes
Beschreibung: This is a digitally signed message part.
URL : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20151011/501d3f95/attachment-0002.sig>
Mehr Informationen über die Mailingliste franken-dev