The source project of this merge request has been removed.
Wenn Koordinaten gegeben sind und eine Hood für diese Koordinaten existiert aber kein Batman advanced GW in Reichweite ist...
local geo_hood = gethood_by_geo(jhood, geo)
-- Prüfe hood auf fehler
if geo_hood ~= nil then
io.stderr:write('Hole hood bei position\n')
if get_gw_range() then
io.stderr:write('Batman GWs in reichweite\n')
...dann setze die zu den Koordinaten passende Hood nicht. Stattdessen schaue ob ein anderer Freifunk Router in der Nähe ist und setze die Hood dieses Routers. Wenn das nicht erfolgreich ist, dann setze doch noch die Hood passend zu den gegebenen Koordinaten.
Ziel des Tests ist, festzustellen ob ein bereits auf eine Hood konfigurierter Router mit fest eingetragenen Koordinaten physikalisch an eine andere Position in einer anderen Hood gebracht wurde und dadurch keinen Kontakt mehr zur vorher konfigurierten Hood hat. Dieser Test führt im Erfolgsfall zur Rekonfiguration des Routers auf die neue Hood trotz der fest gesetzten alten Position. Im Anschluss kann ein Router auch seine Position automatisch korrigieren da er dann wieder Verbindung zum Internet hat.
Dieser Test ist für reine Mesh-Router gedacht. VPN Router können in dem oben skizzierten Szenario ihre Position per Internet updaten und triggern im Anschluss daran eine Rekonfiguration.
Der Fall, dass ein bereits konfigurierter Router in eine andere Hood getragen wird und dort nur per Mesh angebunden wird ohne dabei die Koordinaten des Routers zu ändern ist ein Spezialfall der auch durch manuelles Setzen der korrekten Koordinaten abgedeckt werden kann. Da der Code nicht seiteneffektfrei ist und ein Knotenbetreiber die Koordinaten sowieso manuell ändern sollte, wenn er seinen Router durch die Gegend trägt, schlage ich vor den Code zu entfernen.
Allgemein kann dieses Problemen meines Wissens nach gar nicht seiteneffektfrei durch Prüfen einer Batman advanced Metrik gelöst werden. Das Prüfen dieser Batman advanced Metrik hat in jedem Fall Seiteneffekte.
Allgemein ist schwer absehbar, was das Programm tut, wenn die Methoden zur Auswahl einer Hood als Fallback die default hood zurückliefern. Dies sollte eine separate Methode tun, die dann aufgerufen wird, wenn alle anderen Konfigurationsversuche fehlgeschlagen sind. Dadurch lässt sich der Programmablauf sauber in drei Schritte (Geoposition->Fallback auf Scanning->Fallback auf Default Hood) gliedern.