Router Initialisierung

Dominik Heidler dominik at heidler.eu
Mi Aug 26 13:56:49 CEST 2015


Hi,

ich versuche momentan den Initialisierungsprozess der Router zu
verstehen - also wenn sie frisch geflasht zum ersten mal gestartet werden.

Bitte verbessert mich, wenn ich mir etwas falsch zusammengereimt habe.

Mir ist aufgefallen, dass die /etc/config/network die aufgedruckte MAC
Adresse des Routers enthält:

> config interface 'mesh'
>         option type 'bridge'
>         option auto '1'
>         option ifname 'eth0.1 bat0'
>         option macaddr 'f8:d1:11:58:8b:a2'

Da diese vom Router abhängig ist, muss ja beim ersten Bootvorgang von
irgendeinem Script in dieser Datei eingetragen werden.

Welches Script könnte das sein? - Ist das von uns oder macht OpenWRT das
automatisch?

Und bekommt das br-mesh immer die aufgedruckte MAC?


Dann - wenn also alle Netzwerk interfaces soweit konfiguriert sind -
wird fastdstart ausgeführt - aber nur wenn der router via ethernet über
den WAN Port am Internet hängt. Dazu kontaktiert er den keyexchange und
bekommt die Verbindungsconfig für das default hood (und später, wenn er
im Netmon seine Position eingetragen hat, gibt der keyexchange diesem
Router automatisch die config für das dieser Position entsprechende Hood
- Netmon übermittelt diese Daten also im Hintergrund an den keyexchange,
oder?)

Fastd wird gestartet, wenn das wan Interface ein link-up event bekommt,
aber es wird auch per cron ausgeführt.

Wird es auch auf Routern gestartet, die nur via BATMAN-WLAN aber nicht
via WAN am Internet hängen?


Das Nodewatcher wurde mittlerweile besstimmt schon mindestens 1x von
cron aufgerufen und somit wurde die /tmp/crawldata/node.data erzeugt.


Einige Zeit später besteht entweder via BATMAN-WLAN oder via
BATMAN-FASTD-VPN eine Verbindung zum Freifunk Netz, sodass das Netmon
API unter fe80::ff:feee:1 erreicht werden kann.


Dann wird der configurator ausgeführt.

Dieser schickt die "F8D111588BA2;" an Netmon (der API call heißt
test_login_strings).
Das Netmon API antwortet entweder mit "success;F8D111588BA2" oder
"error;login_string_not_found". Der error hat aber keinerlei Auswirkung,
da der Router im Fehlerfall den login_string einfach selbst generiert
(indem er das ; am Ende entfernt) statt die (im Erfolgsfall identische)
Antwort vom Server zu übernehmen.

Der Sinn dieses Schrittes erschließt sich mir nicht.


Der nächste API call router_auto_assign fügt den Router in die Liste der
nicht zugewiesenen Router ein und liefert einen Fehler zurück, solange
der Router noch nicht via Netmon zugewiesen wurde.

Wurde der Router zugewiesen, gibt dieser API call eine Erfolgsmeldung
sowie den update_hash, die router_id und den api_key für den Router
zurück, die dieser dann abspeichert.

Dann wird netmon noch die IPv6 Adresse vom br-mesh Interface via
autoadd_ipv6_address API call mitgeteilt. Ab jetzt kann Netmon diesen
Router crawlen.

Zuletzt wird mit einem get_hostname API call der im Netmon eingestellte
hostname abgerufen und gesetzt.


Dann ruft cron noch den wlanwatchdog auf. Was der genau macht weiß ich
auch nicht.


Cron ruft außerdem noch den libremap-agent auf, was allerdings dank
nicht vorhandenem lua Interpreter nicht funktioniert. (Vllt fehlt lua
aufgrund von Speichermangel nur in der 741er firmware...)



Grüße,
Dominik



Mehr Informationen über die Mailingliste franken-dev