Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
alfred [06.02.2016 07:44] – havelock | alfred [17.07.2017 22:08] – havelock | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
siehe: http:// | siehe: http:// | ||
- | Es gibt bereits | + | Produktiv wird die Version |
- | Wir setzen sie aber noch nicht für den Produktivbetrieb ein: | + | |
- | <wrap em>Die o.a. Versionen funktionieren nicht und werden den Fehler: | + | Ab der Version 2015.1 gibt es anscheinend Probleme: |
- | can't bind: Cannot assign requested address | + | can't bind: Cannot assign requested address |
- | Failed to open interfaces | + | Failed to open interfaces |
+ | |||
+ | Das Verhalten tritt auf, wenn die Link-Lokale IPv6-Adresse des Bridge-Interfaces (über den Parameter '' | ||
+ | |||
+ | Wenn man das nicht macht, führt das Hinzufügen von '' | ||
+ | die Bridge die MAC vom '' | ||
+ | |||
+ | Details: In der Funktion '' | ||
+ | mit '' | ||
+ | Insbesondere bei Bridge-Interfaces schlägt dieses aus o.a. Gründen fehl. | ||
- | Eventuell irgendetwas mit Multicast... | ||
- | </ | ||
Voraussetzungen | Voraussetzungen | ||
aptitude install git cmake pkg-config ca-certificates | aptitude install git cmake pkg-config ca-certificates | ||
+ | |||
+ | Für Version 2016.5 zusätzlich: | ||
+ | aptitude install libnl-genl-3-dev | ||
Quellen herunterladen und entpacken | Quellen herunterladen und entpacken | ||
< | < | ||
- | cd /usr/src | + | cd /usr/local/src |
aptitude install libcap-dev | aptitude install libcap-dev | ||
- | wget http:// | + | wget http:// |
- | tar xzf alfred-2015.0.tar.gz | + | tar xzf alfred-2017.1.tar.gz |
- | cd alfred-2015.0 | + | cd alfred-2017.1 |
+ | </ | ||
+ | |||
+ | ++++ Patch für alfred >= 2016.5 | | ||
+ | <file patch ffpi.patch> | ||
+ | diff --git a/netsock.c b/ | ||
+ | index 86db8a6..9b137f1 100644 | ||
+ | --- a/ | ||
+ | +++ b/ | ||
+ | @@ -25,6 +25,7 @@ | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | +#include < | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | @@ -210,6 +211,30 @@ out: | ||
+ | | ||
+ | } | ||
+ | |||
+ | +static int get_link_local_addr(uint32_t scope_id, struct in6_addr *addr) | ||
+ | +{ | ||
+ | + struct ifaddrs *ifaddr, *ifa; | ||
+ | + | ||
+ | + if (getifaddrs(& | ||
+ | + perror(" | ||
+ | + return -1; | ||
+ | + } | ||
+ | + for (ifa = ifaddr; ifa != NULL; ifa = ifa-> | ||
+ | + if (ifa-> | ||
+ | + continue; | ||
+ | + if (ifa-> | ||
+ | + continue; | ||
+ | + | ||
+ | + struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) ifa-> | ||
+ | + if (sin6-> | ||
+ | + memcpy(addr, | ||
+ | + break; | ||
+ | + } | ||
+ | + } | ||
+ | + freeifaddrs(ifaddr); | ||
+ | + return | ||
+ | +} | ||
+ | + | ||
+ | | ||
+ | { | ||
+ | int sock; | ||
+ | @@ -256,7 +281,10 @@ static int netsock_open(struct interface *interface) | ||
+ | | ||
+ | | ||
+ | | ||
+ | - memcpy(& | ||
+ | + if (get_link_local_addr(interface-> | ||
+ | + perror(" | ||
+ | + goto err; | ||
+ | + } | ||
+ | | ||
+ | |||
+ | | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | Anschließend bauen. Den [[GPS]]-Daemon brauchen wir nicht | ||
+ | < | ||
+ | git apply -v ffpi.patch | ||
+ | make CONFIG_ALFRED_GPSD=n | ||
+ | make install CONFIG_ALFRED_GPSD=n | ||
</ | </ | ||
Zeile 50: | Zeile 126: | ||
</ | </ | ||
++++ | ++++ | ||
- | |||
- | Anschließend bauen. Den GPS-Daemon brauchen wir nicht | ||
- | < | ||
- | make CONFIG_ALFRED_GPSD=n | ||
- | make install CONFIG_ALFRED_GPSD=n | ||
- | </ | ||
Zeile 62: | Zeile 132: | ||
Wird nur auf dem Server benötigt wo der Meshviewer läuft. | Wird nur auf dem Server benötigt wo der Meshviewer läuft. | ||
Schadet ansonsten aber auch nicht. | Schadet ansonsten aber auch nicht. | ||
+ | |||
+ | Wichtig: Bei einem fehlerhaften JSON wird eine Warnung ausgegeben. Dieses Verhalten sollte | ||
+ | noch verbessert werden, indem: | ||
+ | * ein Schalter '' | ||
+ | * der Fehler genauer eingegrenzt wird, damit der betreffende Knoten ggf. markiert werden kann | ||
Tip: Falls das klonen mit Git einen CA SSL Fehler wirft, kann man den umgehen mit: | Tip: Falls das klonen mit Git einen CA SSL Fehler wirft, kann man den umgehen mit: | ||
Zeile 76: | Zeile 151: | ||
make install | make install | ||
</ | </ | ||
+ | |||
+ | Tests: | ||
+ | * '' | ||
===== Übersicht über die Alfred-Datenstrukturen ===== | ===== Übersicht über die Alfred-Datenstrukturen ===== |