OLSR debuggen
Ich debugge gerade, warum olsr ncht auf meinem Router läuft. Das erste, was ich feststelle, wenn ich SmartGateway ausschalte:
root@254-150-heinrich-von-kleist:~# /etc/init.d/olsrd start
olsrd: /etc/init.d/olsrd: olsrd_write_loadplugin() Warning: Plugin library 'olsrd_txtinfo.so.0.1' not found, skipped
olsrd: /etc/init.d/olsrd: olsrd_write_loadplugin() Warning: Plugin library 'olsrd_watchdog.so.0.1' not found, skipped
olsrd: /etc/init.d/olsrd: startup-error: check via: '/usr/sbin/olsrd -f "/var/etc/olsrd.conf" -nofork'
ich bekomme die Möglichkeit, den “olsr log file” bzw. den Output von OLSR zu sehen, wenn ich es so starte:
/usr/sbin/olsrd -f "/var/etc/olsrd.conf" -nofork
Vorher habe ich es so gestartet:
/etc/init.d/olsrd start
Nach einer Weile verschwindet der Prozess.
Das Problem ist, dass eine Assertion failed:
/usr/sbin/olsrd -f "/var/etc/olsrd.conf" -nofork
[...]
Assertion failed: multi_gateway_mode() (src/gateway.c: doRoutesMultiGw: 2371)
Google nach “olsr source code”. Dann finde ich den Code, der das Problem veursacht:
assert(multi_gateway_mode());
static INLINE bool multi_gateway_mode(void) {
return (olsr_cnf->smart_gw_use_count > 1);
}
struct olsrd_config {
[...]
uint8_t smart_gw_use_count;
[...]
}
olsr_cnf->smart_gw_use_count = $2->integer;
Ich kann schlussfolgern, dass der Wert in der Konfiguration gesetzt wird.
Ich habe eine Issue geöffnet, da Assertions eigendlich nicht auftreten dürfen.
Darin wird empfohlen, Version 0.9.6.1 von olsrd zu benutzen.
Ich benutze 0.9.5.
Dafür compile ich die Freifunkfirmware selbst.
In firmware/lede/feeds/routing/olsrd/Makefile
steht nach dem ersten anstoßen von make
die olsrd configuration.
Diese kann ich ändern, indem ich 0.9.5 durch 0.9.6.1 ersetze:
PKG_VERSION:=0.9.6.1
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/OLSR/olsrd.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=v0.9.6.1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
Das gibt Compileprobleme, wenn ich es manuell mache. Deswegen wird der Feed geändert:
diff --git a/feeds.conf b/feeds.conf
index 5d641d8..dfbdf91 100644
--- a/feeds.conf
+++ b/feeds.conf
@@ -1,6 +1,6 @@
src-git packages https://github.com/openwrt/packages.git^ed90827282851ad93294e370860320f1af428bb2
src-git luci https://github.com/openwrt/luci.git^a100738163585ae1edc24d832ca9bef1f34beef0
-src-git routing https://github.com/openwrt-routing/packages.git^dd36dd47bbd75defcb3c517cafe7a19ee425f0af
+src-git routing https://github.com/openwrt-routing/packages.git^a881d5d4a6c4d0a5d9c515525eb83774516d038c
src-git packages_berlin https://github.com/freifunk-berlin/firmware-packages.git^3186386056cf52ebea3c7298b0a57fa8eafc851e
##
Dieser enthält alle Pakete. OLSR Meshing geht. Das JSON-Plugin und die weboberfläche zeigen aber leider keinen Status an. Siehe Pull-Request.