olsr / olsrd Goto Github PK
View Code? Open in Web Editor NEWOLSR.org main repository - olsrd v1 - maintained by Freifunk Berlin
License: Other
OLSR.org main repository - olsrd v1 - maintained by Freifunk Berlin
License: Other
http://www.olsr.org/mediawiki/index.php/Releases
This seems to contradict the GitHub repo which says 0.9.6.2 is the latest.
And then in http://www.olsr.org/releases/0.9 the greatest version available is 0.9.6.1.
So which of the following is the latest release
0.9.0.3
0.9.6.1
0.9.6.2
something else
Sorry to bother you but I'm confused about three lines in mpr.c.
494 if ((dup_neighbor != NULL) && (dup_neighbor->status != NOT_SYM)) {
495 continue;
496 }
But they are at the end of the cycle, so I wonder that what's its meaning...
The server svn.debian.org does not exist anymore. Therefore it is quite difficult to make debian packages.
Luckily I still had a copy of the svn debian-build repository. I have saved it as a tar in https://github.com/pmelange/Temporary-Files/blob/master/OLSRd-packages/debian/olsrd-debian-build.tar
Hello,
I am using olsrd within EMANE using the ETCE framework and using the IEEE 802.11abg radio model. I am running all this software within a Docker container.
EMANE version: 1.3.3
olsrd version: 0.9.8
1 or a few nodes will not come up in my scenario due to olsrd shutting down on the corresponding lxc containers. (I can observe this by checking with the command: ps aux) When I ssh into those nodes to rerun olsrd with logs on, (e.g. /usr/local/sbin/olsrd -f /tmp/etce/current_test/node-7/olsrd.conf -d 3) , I get the following assertion error in approximately 2-3 minutes and the node turns red in the OLSR Link Viewer again:
Here is my olsrd.conf for all the nodes in my scenario:
DebugLevel 0
# IP version to use (4 or 6)
IpVersion 4
LockFile "${etce_log_path}/olsrd.lock"
# Clear the screen each time the internal state changes
ClearScreen yes
LinkQualityAging 0.2
Interface "emane0" "emane1" "eth2"
{
HelloInterval 1.0
HelloValidityTime 5.0
}
LoadPlugin "olsrd_txtinfo.so.1.1"
{
PlParam "accept" "0.0.0.0"
}
LoadPlugin "olsrd_bmf.so.1.7.0"
{
PlParam "DoLocalBroadcast" "no"
PlParam "CapturePacketsOnOlsrInterfaces" "yes"
PlParam "BmfMechanism" "Broadcast"
#PlParam "NonOlsrIf" "eth2"
PlParam "FanOutLimit" "0"
PlParam "BroadcastRetransmitCount" "1"
}
I get this same assertion failure for all the shutdowns I'm observing. What are the possible causes of this error and how could I avoid it? Is it a configuration issue or even a performance issue?
Thank you so much for your help!
hna_groups
is a list. Actually the finish function should iterate over the list and free ping_hosts
and hna_list
for every hna_group entry
.
(not tested or compiled)
void olsrd_plugin_fini(void) {
while(hna_groups) {
while (hna_groups->ping_hosts) {
struct ping_list* next = hna_groups->ping_hosts->next;
free(hna_groups->ping_hosts->ping_address);
free(hna_groups->ping_hosts);
hna_groups->ping_hosts = next;
}
while (hna_groups->hna_list) {
struct hna_list * next = hna_groups->hna_list->next;
free(hna_groups->hna_list);
hna_groups->hna_list = next;
}
struct hna_group* next = hna_groups->next;
free(hna_groups);
hna_groups = next;
}
}
https://github.com/OLSR/olsrd/blob/master/lib/dyn_gw/src/olsrd_dyn_gw.c#L313
I just faced this assertion. I am new to olsrd and so I would like to know, if you are interested in working with me on this issue (olsrd terminates).
root@254-150-heinrich-von-kleist:~# /usr/sbin/olsrd -f "/var/etc/olsrd.conf" -nofork
*** olsr.org - 0.9.5-git_ac733df-hash_7ecf2269d677d893faf38d35ca771e01 ***
Build date: 2017-03-03 23:04:13 on ubuntu
http://www.olsr.org
Parsing file: "/var/etc/olsrd.conf"
Debug level: 0
Noint set to 1
IpVersion: 4
FIBMetric: flat
TC redundancy 2
Smart gateway threshold: 50
Pollrate 0.03
RtTable: 111
RtTableDefault: 112
RtTableTunnel: 113
RtTableTunnelPriority: 100000
RtTableDefaultOlsrPriority: 20000
Link quality level 2
LQ Algorithm: etx_ffeth
OlsrPort: 698
Willingness: 3
Smart gateway system: enabled
Smart gateway uplink: both
Plugin: olsrd_arprefresh.so.0.1
Plugin: olsrd_nameservice.so.0.3
Plugin param key:"name" val: "254-150-heinrich-von-kleist"
Plugin param key:"lat" val: "52.386401040873885"
Plugin param key:"lon" val: "13.098001241651218"
Plugin param key:"suffix" val: ".olsr"
Plugin param key:"hosts-file" val: "/tmp/hosts/olsr"
Plugin param key:"latlon-file" val: "/var/run/latlon.js"
Plugin param key:"services-file" val: "/var/etc/services.olsr"
Plugin: olsrd_jsoninfo.so.0.0
Plugin param key:"accept" val: "0.0.0.0"
Plugin: olsrd_dyn_gw.so.0.5
Plugin param key:"Ping" val: "85.214.20.141"
Plugin param key:"Ping" val: "213.73.91.35"
Plugin param key:"Ping" val: "194.150.168.168"
MID validity: 500.00
TC interval: 2.00
HNA validity: 125.00
HELLO validity: 125.00
TC validity: 500.00
IPv4 broadcast: 255.255.255.255
MID interval: 25.00
HELLO interval: 3.00
HNA interval: 10.00
Mode: mesh
Interface Defaultssetting ifs_in_curr_cfg = 0
Mode: mesh
No policy rule for rt_table_pri
Choose priority 100010 for rt_table_default_pri
IPv4 broadcast/multicast : 255.255.255.255
Mode : mesh (d)
IPv6 multicast : ff02::6d
HELLO emission/validity : 3.00 (d)/125.00 (d)
TC emission/validity : 2.00 (d)/500.00 (d)
MID emission/validity : 25.00 (d)/500.00 (d)
HNA emission/validity : 10.00 (d)/125.00 (d)
Autodetect changes : yes
IPv4 broadcast/multicast : AUTO
Mode : mesh (d)
IPv6 multicast : ::
HELLO emission/validity : 0.00/0.00
TC emission/validity : 0.00/0.00
MID emission/validity : 0.00/0.00
HNA emission/validity : 0.00/0.00
Autodetect changes : no
OLSRD dyn_gw plugin (v17.01.0-dirty)
OLSRD jsoninfo plugin (v17.01.0-dirty)
OLSRD nameservice plugin (v17.01.0-dirty)
OLSRD arprefresh plugin (v17.01.0-dirty)
Assertion failed: multi_gateway_mode() (src/gateway.c: doRoutesMultiGw: 2371)
I will now see if I can change the config files so this does not happen. But - this might not be the way to go for you since this is an assertion failing.
im crosscompiling for mips/mipsel and bulding packages for debian and for this i need olsrd to look for plugins in path /usr/lib/olsrd/ instead of /usr/lib/ (debian-way).
from official debian package olsrd_0.6.6.2-1_mipsel.deb i found 230-usr-lib-olsrd.patch which just adds "olsrd" folder to libdir path, but this does not seem to work properly with recent olsrd from git.
"hardcoding" the path in libdir variable works then as expected.
### search plugins in /usr/lib/olsrd/ (instead /usr/lib/)
# something is wrong with there variables, olsrd does not look in /usr/lib/olsrd/ with this settings...
#sed -i 's/^LIBDIR.*/LIBDIR ?= $(USRDIR)\/lib\/olsrd/' olsrd/Makefile.inc
#sed -i 's/^libdir.*/libdir ?= $(prefix)\/lib\/olsrd/' olsrd/make/Makefile.linux
#sed -i 's/^LIBDIR.*/LIBDIR = $(DESTDIR)$(libdir)\/olsrd/' olsrd/make/Makefile.linux
# so dont rely on variables and hardcode the path
sed -i 's/^LIBDIR.*/LIBDIR ?= \/usr\/lib\/olsrd/' olsrd/Makefile.inc
sed -i 's/^libdir.*/libdir ?= \/usr\/lib\/olsrd/' olsrd/make/Makefile.linux
sed -i 's/^LIBDIR.*/LIBDIR = \/usr\/lib\/olsrd/' olsrd/make/Makefile.linux
when crosscompiling olsrd from git using emdebian toolchain i get two warnings.
for olsr_switch i also get a similar warning (see below).
olsrd:
[CC] src/common/autobuf.c
[CC] src/common/avl.c
[CC] src/common/list.c
[CC] src/common/string_handling.c
[CC] src/build_msg.c
[CC] src/cli.c
[CC] src/duplicate_handler.c
[CC] src/duplicate_set.c
[CC] src/egressFile.c
[CC] src/fpm.c
[CC] src/gateway.c
[CC] src/gateway_costs.c
[CC] src/gateway_default_handler.c
[CC] src/gateway_list.c
[CC] src/generate_msg.c
[CC] src/hashing.c
[CC] src/hna_set.c
[CC] src/hysteresis.c
[CC] src/interfaces.c
[CC] src/ipcalc.c
[CC] src/ipc_frontend.c
[CC] src/link_set.c
[CC] src/lock_file.c
[CC] src/lq_mpr.c
[CC] src/lq_packet.c
[CC] src/lq_plugin.c
[CC] src/lq_plugin_default_ff.c
[CC] src/lq_plugin_default_ffeth.c
[CC] src/lq_plugin_default_float.c
[CC] src/lq_plugin_default_fpm.c
[CC] src/main.c
[CC] src/mantissa.c
[CC] src/mid_set.c
[CC] src/mpr.c
[CC] src/mpr_selector_set.c
[CC] src/neighbor_table.c
[CC] src/net_olsr.c
[CC] src/olsr.c
[CC] src/olsr_cookie.c
[CC] src/olsr_niit.c
[CC] src/olsr_spf.c
[CC] src/packet.c
[CC] src/parser.c
[CC] src/pid_file.c
[CC] src/plugin_loader.c
[CC] src/plugin_util.c
[CC] src/process_package.c
[CC] src/process_routes.c
[CC] src/rebuild_packet.c
[CC] src/routing_table.c
[CC] src/scheduler.c
[CC] src/superfasthash.c
src/superfasthash.c: In function ‘hash_inc’:
src/superfasthash.c:54: warning: declaration of ‘hash’ shadows a global declaration
src/superfasthash.c:49: warning: shadowed declaration is here
[CC] src/tc_set.c
[CC] src/two_hop_neighbor_table.c
[CC] src/linux/apm.c
[CC] src/linux/kernel_routes_nl.c
[CC] src/linux/kernel_tunnel.c
[CC] src/linux/lq_plugin_ffeth_nl80211.c
[CC] src/linux/net.c
[CC] src/linux/nl80211_link_info.c
[CC] src/unix/ifnet.c
[CC] src/unix/log.c
[CC] src/unix/misc.c
[CC] src/cfgparser/olsrd_conf.c
src/cfgparser/olsrd_conf.c: In function ‘olsrd_sanity_check_cnf’:
src/cfgparser/olsrd_conf.c:709: warning: declaration of ‘index’ shadows a global declaration
/usr/mipsel-linux-gnu/include/string.h:487: warning: shadowed declaration is here
[CC] src/cfgparser/olsrd_conf_checksum.c
[BISON] src/cfgparser/oparse.c
[CC] src/cfgparser/oparse.c
[FLEX] src/cfgparser/oscan.c
[CC] src/cfgparser/oscan.c
[CC] src/cfgparser/cfgfile_gen.c
[CREATE] builddata.txt
[CC] src/builddata.c
[LD] olsrd
olsr_switch:
[CC] link_rules.c
link_rules.c: In function ‘add_link’:
link_rules.c:109: warning: declaration of ‘link’ shadows a global declaration
/usr/mipsel-linux-gnu/include/unistd.h:806: warning: shadowed declaration is here
[CC] main.c
[CC] ohs_cmd.c
[LD] ../../olsr_switch
using debian crosscompile toolchains:
https://wiki.debian.org/CrossToolchains#Installation
http://emdebian.org/crosstools.html
export CC="mipsel-linux-gnu-gcc"
make libs
...
make[2]: Entering directory `/home/onetrix/olsrd/lib/pud/nmealib'
[CC] src/context.c
cc1: error: unrecognized command line option "-Wdouble-promotion"
cc1: error: unrecognized command line option "-Wtrampolines"
cc1: error: unrecognized command line option "-Wjump-misses-init"
make[2]: *** [build/context.o] Error 1
make[2]: Leaving directory `/home/onetrix/olsrd/lib/pud/nmealib'
make[1]: *** [nmealib] Error 2
make[1]: Leaving directory `/home/onetrix/olsrd/lib/pud'
make: *** [libs] Error 2
onetrix@debian7dev:~/olsrd$ grep -r double-promotion *
lib/pud/nmealib/Makefile.inc: -Wswitch-default -Wswitch-enum -Wconversion -Wdouble-promotion \
Makefile.inc:WARNINGS += -Wdouble-promotion
onetrix@debian7dev:~/olsrd$ grep -r trampolines *
lib/pud/nmealib/Makefile.inc:GCCCFLAGS += $(COMMONCFLAGS) -fearly-inlining -finline-functions-called-once -finline-limit=350 -Wtrampolines \
Makefile.inc:WARNINGS += -Wtrampolines
onetrix@debian7dev:~/olsrd$ grep -r jump-misses-init *
lib/pud/nmealib/Makefile.inc: -Wsync-nand -Wlogical-op -Wjump-misses-init -Werror
Makefile.inc:WARNINGS += -Wjump-misses-init
It has been more than three years since last release, requesting a new release so that we can get rid of some patches on the homebrew side. Thanks!
also relates to Homebrew/homebrew-core#120328
At Freifunk Berlin we had some issue with the scheduler of OLSRd in conjunction with the nameservice plugin. In result, We've seen the bug, that on some nodes there wasn't updates to the services-file for a very long time.
For convenience, I am going to cite from our downstram issue:
Actually we found out, that due to a programming error, file-write-option has nearly no effect on the daemon writing data, even if it changed. There's need for one change in the olsrd-code, which you can see here:
#114Basically the amendment of jitter in the scheduler call made OLSR to add an amount of seconds to the intervall of 5 seconds. These amount can range from 0 to INT_MAX. If we get INT_MAX or something a bit below that value, it can take days until olsrd will write the next update to the file. Thus we made that PR. But before going into upstreams master-branch we wanted to test it further.
Lines 601 to 622 in 1e771b4
Unfortunately we didn't come to test the change until now, as it involves packaging and installing OLSRd in a custom version on one of out nodes.
Help with testing this change is highly appreciated! (See #114)
I just wonder if it would be more consistent to name this new parameter "writefiles_interval", as it affects the interval when following files are written:
referencing to commit (
olsrd/lib/nameservice/src/nameservice.c
Line 544 in 9a0d5db
Seen on OpenWrt 21.02, that olsrd crashed during shutdown
olsrd[4304]: olsr.org - pre-0.9.9-git_0000000-hash_d67158ab6e850fd1910c489045f47dda stopped
olsrd[4304]: crash (logging a stack trace is not supported on this platform)
olsrd[4304]: nested shutdown: exiting immediately (logging a stack trace is not supported on this platform)
This code seems to get triggered on a SIGSEGV, so seems to be an "unintended" memory-access. Maybe not ideal for a program running as root.
while running current master, this happens after about 10-20minutes:
TC: chg edge entry 78.41.118.231 > 78.41.119.87, cost (0.497/1.000) 2.008
TC: chg edge entry 78.41.118.231 > 193.238.156.166, cost (1.000/1.000) 1.000
*** glibc detected *** /usr/sbin/olsrd: munmap_chunk(): invalid pointer: 0x00a9e2f0 ***
Received signal Aborted - shutting down
Deleting all routes...
RIB: del prefix 78.41.112.3/32 from 78.41.112.3
TC: del edge entry 78.41.112.3 > 78.41.112.40, cost (0.815/1.000) 1.226
...
TC: del edge entry 193.238.158.254 > 78.41.113.201, cost (1.000/1.000) 1.000
Closing sockets...
Closing plugins...
Restoring network state
Free all memory...
*** glibc detected *** /usr/sbin/olsrd: munmap_chunk(): invalid pointer: 0x00a9e300 ***
Received signal Aborted - shutting down
trying to debug in gdb, it runs not more than 1-2 minutes:
*** olsr.org - pre-0.9.7-git_2158276-hash_25fd74c507b25572b2c38787c39ddb5d ***
--- 10:53:37.276781 ---------------------------------------------------- LINKS
IP address hyst LQ ETX
193.238.159.151 0.000 0.748/1.000 1.335
193.238.158.160 0.000 0.732/1.000 1.363
--- 10:53:37.277110 ------------------------------------------------ NEIGHBORS
IP address Hyst LQ ETX SYM MPR MPRS will
193.238.158.160 0.000 0.732/1.000 1.363 YES YES NO 3
193.238.159.151 0.000 0.748/1.000 1.335 YES NO NO 3
--- 10:53:37.277437 ----------------------- TWO-HOP NEIGHBORS
IP addr (2-hop) IP addr (1-hop) Total cost
193.238.158.160 193.238.159.151 2.335
78.41.119.97 193.238.158.160 2.363
193.238.159.151 193.238.158.160 2.363
Program received signal SIGPIPE, Broken pipe.
0x77e93d78 in send () from /lib/mipsel-linux-gnu/libc.so.6
(gdb) bt
#0 0x77e93d78 in send () from /lib/mipsel-linux-gnu/libc.so.6
#1 0x77d344f4 in write_data (unused=0x0) at olsrd_info.c:377
#2 0x00459cec in walk_timers (last_run=0x4a59c0) at src/scheduler.c:711
#3 0x004593d0 in olsr_scheduler () at src/scheduler.c:559
#4 0x0043c9f4 in main (argc=7, argv=0x7fffe914) at src/main.c:775
(gdb)
I am using Mininet emulator wherein there are stations in multiple LAN AND I want to route 2 stations which are in different LAN.I am able to do that using olsrd2_static when I "xterm" to that station.But when I try to write same command within the script ,the olsrd2_static works fine bute after sometime it stops.
jsoninfo plugin does not update the IP address in "lastHopIP" and "destinationIP" fileds. To solve this modify olsr_change_myself_tc function:
void
olsr_change_myself_tc(void)
{
if (tc_myself)
{
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Added by Ala
struct ipaddr_str buf;
struct olsr_if *tmp_if;
bool mainIPCahnged = true;
int numIPs=0;
// Run trough all interfaces and count number of valid interfaces
for (tmp_if = olsr_cnf->interfaces; tmp_if != NULL; tmp_if = tmp_if->next)
{
if(tmp_if->interf)
{
if(inet_ntoa(tmp_if->interf->int_addr.sin_addr) !=0 )
{
numIPs++;
}
}
else
{
OLSR_PRINTF(1, "Interface has no address\n");
}
}
if(numIPs == 0)
{
OLSR_PRINTF(1, "error no active interface\n");
}
else if(numIPs == 1)
// Run trough all interfaces again and check if olsr_cnf->main_addr is still valid
for (tmp_if = olsr_cnf->interfaces; tmp_if != NULL; tmp_if = tmp_if->next)
if(tmp_if->interf)
{
if(inet_ntoa(tmp_if->interf->int_addr.sin_addr) !=0 )
{
if(strcmp(inet_ntoa(tmp_if->interf->int_addr.sin_addr), ip4_to_string(&buf, olsr_cnf->main_addr.v4))==0)
{
OLSR_PRINTF(1, "main IP still valid\n");
mainIPCahnged = false;
}
else // reset the new main ip address
{
OLSR_PRINTF(1, "reset olsr_cnf->main_addr to new IP \n");
olsr_cnf->main_addr.v4 = tmp_if->interf->int_addr.sin_addr;
}
}
}
else
{
OLSR_PRINTF(1, "interface has no address\n");
}
else if(numIPs == 2)
{
// change here if you find some future bugs
OLSR_PRINTF(1, "two active interfaces\n");
}
if(mainIPCahnged)
{
OLSR_PRINTF(1, "modified olsr_cnf->main_addr:%s\n", ip4_to_string(&buf, olsr_cnf->main_addr.v4));
}
// End by Ala
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (ipequal(&tc_myself->addr, &olsr_cnf->main_addr))
{
return;
}
/*
* Flush our own tc_entry.
*/
olsr_delete_tc_entry(tc_myself);
}
/*
* The old entry for ourselves is gone, generate a new one and trigger SPF.
*/
tc_myself = olsr_add_tc_entry(&olsr_cnf->main_addr);
changes_topology = true;
}
using txtinfo 1.1 a 404 error is returned when using /neigh or /link or /topo
but using /nei or /lin or /top the expected information is returned.
I just saw that the openwrt folder and found a lot of files also in the official openwrt-routing-feed.
So I wonder if it might be a good idea, to rely only on the routing-feed for OpenWrt-packages. This seems to be better maintained and used by more ppl.
In addition, the currently given feed-URL here is broken, as of the missing branch "stable"
we experience seldom hangs on our vpn server running olsrd
it is used to connect 20-40 DSL routers via vtund and interconnect 3 vpn servers via tinc
olsrd is still running. routes are present. no output of txt plugin on port 2006 - this is how we detect it
/usr/local/sbin/olsrd -v
*** olsr.org - 0.9.6.2-git_0000000-hash_d5e58380549049dc3b9ecdb8c093b522 ***
Build date: 2018-09-24 10:45:22 on vpn3
problem occours every 2 - 4 weeks
we have a strace log for one case:
http://3.v.weimarnetz.de/freifunk/vpn/log_strace_olsrd_1902091326
after crash:
http://3.v.weimarnetz.de/freifunk/vpn/log_strace_olsrd_1902091426
greetings
cstorch
On my node I was not able to access the internet via SmartGateway.
ip route
returned no default route even a Smartgateway was avail in the net (direct neighbour 10.36.217.96). I found the logfile full of following messages:
Sun Jun 28 16:29:25 2020 daemon.err olsrd[6735]: Cannot add tunnel tnl_0a24d960 to 10.36.217.96: File exists (17)
Sun Jun 28 16:29:25 2020 daemon.err olsrd[6735]: Cannot create tunnel tnl_0a24d960
Sun Jun 28 16:29:43 2020 daemon.err olsrd[6735]: Cannot add tunnel tnl_0a24d960 to 10.36.217.96: File exists (17)
Sun Jun 28 16:29:43 2020 daemon.err olsrd[6735]: Cannot create tunnel tnl_0a24d960
Sun Jun 28 16:29:50 2020 daemon.info odhcpd[848]: Using a RA lifetime of 0 seconds on br-dhcp
Sun Jun 28 16:29:51 2020 daemon.err olsrd[6735]: Cannot add tunnel tnl_0a24d960 to 10.36.217.96: File exists (17)
Sun Jun 28 16:29:51 2020 daemon.err olsrd[6735]: Cannot create tunnel tnl_0a24d960
Sun Jun 28 16:29:59 2020 daemon.err olsrd[6735]: Cannot add tunnel tnl_0a24d960 to 10.36.217.96: File exists (17)
Sun Jun 28 16:29:59 2020 daemon.err olsrd[6735]: Cannot create tunnel tnl_0a24d960
This was seen running OpenWrt (Freifunk "Firmware Berlin (Hedy 1.0.6)")
Hi there, I have OLSR version 0.6.6.2 running on a raspberry Pi B+, on Raspian Jessie Lite OS. I have 4 nodes running OLSR and everything seems to work fine but i cannot get hops to show when using traceroute command. Is this because the raspberry pi's are placed close together?
In originators section it does show all my nodes, and when doing a traceroute from my primary node (first node) to my end node (last node), traceroute or ping shows no hops, it looks like the packet is sent directly to the end node without being routed through nodes 2 and nodes 3. Any help is appreciated! thanks
Hi,
We very regularly experience olsrd to crash on a failed assertion in gateway.c:2371.
Attached are the config, the tcpdump, the gdb backtrace and the debug output.
gdb.txt
run.txt
tcpdump.txt
olsrd.conf.txt
This is on a Raspberry Pi 3 onboard wlan and with Raspbian 4.9 kernel.
If you need any more information to help get this fixed, please ask.
Maarten
In b869571 ("scheduler: use the monotonic clock") calls to clock_gettime
were introduced which are not available on mac os x:
src/scheduler.c:134:7: warning: implicit declaration of function 'clock_gettime' is invalid in C99 [-Wimplicit-function-declaration]
if (clock_gettime(CLOCK_MONOTONIC, &tv) != 0) {
^
src/scheduler.c:134:21: error: use of undeclared identifier 'CLOCK_MONOTONIC'
if (clock_gettime(CLOCK_MONOTONIC, &tv) != 0) {
^
src/scheduler.c:631:21: error: use of undeclared identifier 'CLOCK_MONOTONIC'
if (clock_gettime(CLOCK_MONOTONIC, &first_tv)) {
Would bringing the old code back when defined __APPLE__
be a viable option? I might be able to put a PR together if this sounds reasonable.
In set_default_ifcnfs, we do ifs->cnf = olsr_malloc(sizeof(struct if_config_options),"Set default config");
. However, that is not freed in the remove function? https://github.com/OLSR/olsrd/blob/master/src/interfaces.c#L379
This is a copy of issue freifunk-berlin/firmware#628
On 22.11.2019 all of the routers on the entire Berlin Backbone started printing the following error messages, repeating every second.
Thu Nov 22 13:53:08 2018 daemon.info olsrd[7015]: Received netlink error
code Invalid argument (-22)
Thu Nov 22 13:53:08 2018 daemon.err olsrd[7015]: . error: del route to
171.159.48.121/254.0.0.0 via 0.0.0.0 dev void onlink (Resource
temporarily unavailable 11)
Thu Nov 22 13:53:08 2018 daemon.err olsrd[7015]: Delete route
171.159.48.121/7 via 0.0.0.0: Resource temporarily unavailable
The only known methods to stop the error messages was to restart the OLSR4 service or to reboot the router.
This also effected every router attach to the BBB-VPN.
Every version of the OLSR daemon was hit by this problem. From 0.6.x to the latest 0.9.6.2
The cause of this message is unknown.
I have the same issue as #89.
The suggestion in the above was to build all the plugins as that may be caused by missing plugins. For that use "make build_all". When I did that the make ended in an error "gps.h not found".
A simple "yum install libgps-dev" did not work.
I tried the following -
wget https://rpmfind.net/linux/fedora/linux/development/rawhide/Everything/aarch64/os/Packages/g/gpsd-devel-3.25-7.fc39.aarch64.rpm
sudo yum install gpsd-devel
That fixed "gps.h" not found
When I do "make build_all" but now I get
[CC] src/configuration.c
In file included from src/configuration.h:50,
from src/configuration.c:46:
src/gpsdclient.h:67:24: error: field ‘source’ has incomplete type
67 | struct fixsource_t source;
| ^~~~~~
make[1]: *** [../../Makefile.inc:358: src/configuration.o] Error 1
make[1]: Leaving directory '/home/SA32009/olsrd/lib/pud'
make: *** [Makefile:251: libs] Error 2
Please help
I am testing a new emane installation on on Ubuntu 20 server, and while running through the emane-tutorials I am noticing that the olsrd process is terminating right after it initially loads on each emane node, which in tern causes the olsrlinkviewer to not display any links between the nodes or gps information. I have not had this issue on previous installs using CentOS7, or older versions of Debian. I have tried using both the latest GIT sources as well as the most recent release version in the wiki (0.9.8). The output below is for 0.9.8, but is the same on the latest github sources.
sudo olsrd -f routing1.conf
*** olsr.org - 0.9.8-git_0000000-hash_10144e50aca230a4127a3772519ad24e ***
http://www.olsr.org
Parsing file: "routing1.conf"
Debug level: 0
IpVersion: 4
Lock file /usr/local/src/emane-tutorial/0/persist/1/var/run/olsrd.lock
Clear screen enabled
Link quality aging factor 0.200000
setting ifs_in_curr_cfg = 0
HELLO interval: 1.00
HELLO validity: 5.00
Plugin:
Plugin param key:"accept" val: "0.0.0.0"
Plugin: olsrd_bmf.so.1.7.0
Plugin param key:"DoLocalBroadcast" val: "no"
Plugin param key:"CapturePacketsOnOlsrInterfaces" val: "no"
Plugin param key:"BmfMechanism" val: "Broadcast"
Plugin param key:"NonOlsrIf" val: "eth2"
Plugin param key:"FanOutLimit" val: "0"
Plugin param key:"BroadcastRetransmitCount" val: "1"
IPv4 broadcast/multicast : AUTO
Mode : mesh
IPv6 multicast : ::
HELLO emission/validity : 1.00 (d)/5.00 (d)
TC emission/validity : 0.00/0.00
MID emission/validity : 0.00/0.00
HNA emission/validity : 0.00/0.00
Autodetect changes : no
IPv4 broadcast/multicast : AUTO
Mode : mesh
IPv6 multicast : ::
HELLO emission/validity : 1.00 (d)/5.00 (d)
TC emission/validity : 0.00/0.00
MID emission/validity : 0.00/0.00
HNA emission/validity : 0.00/0.00
Autodetect changes : no
olsr.org - 0.9.8-git_0000000-hash_10144e50aca230a4127a3772519ad24e detaching from the current process...
And the olsrd process does not show up in the process list:
ps -ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 init
8 ? Ss 0:00 sshd: /usr/sbin/sshd -o PidFile=/usr/local/src/emane-tutorial/0/persist/2/var/run/ssh.pid [listener] 0 of 10-100 startups
9 ? Ss 0:00 sshd: me [priv]
63 ? R 0:00 sshd: me@pts/1
64 pts/1 Ss 0:00 -bash
82 ? Ssl 0:00 emane platform2.xml -r -d -l 3 -f persist/2/var/log/emane.log
109 pts/1 R+ 0:00 ps -ax
(crosscompiled olsrd for mipsel)
when enabling txtinfo plugin with following configuration, olsrd segfaults after random time of about 5min-30min.
this does happen since release v0.9.6, but not in v0.9.5 with olsrd_txtinfo.so.0.1.
LoadPlugin "olsrd_txtinfo.so.1.1"
{
PlParam "port" "2006"
PlParam "accept" "0.0.0.0"
}
debug log:
TC: chg edge entry 78.41.119.87 > 78.41.118.231, cost (1.000/0.497) 2.008
TC: chg edge entry 78.41.119.87 > 78.41.113.252, cost (0.729/1.000) 1.370
*** olsr.org - 0.9.6-git_0000000-hash_112d0c2e2adaf476af74389bf7b777ef (2017-09-28 22:41:49 on debian7dev) ***
--- 08:53:35.230712 ---------------------------------------------------- LINKS
IP address hyst LQ ETX
193.238.158.160 0.000 1.000/1.000 1.000
--- 08:53:35.230837 ------------------------------------------------ NEIGHBORS
IP address Hyst LQ ETX SYM MPR MPRS will
193.238.158.160 0.000 1.000/1.000 1.000 YES YES NO 3
--- 08:53:35.230996 ----------------------- TWO-HOP NEIGHBORS
IP addr (2-hop) IP addr (1-hop) Total cost
78.41.119.97 193.238.158.160 2.000
Received signal Segmentation fault - shutting down
Deleting all routes...
RIB: del prefix 78.41.113.2/32 from 78.41.113.2
TC: del edge entry 78.41.113.2 > 193.238.156.8, cost (1.000/1.000) 1.000
TC: del edge entry 78.41.113.2 > 193.238.159.23, cost (1.000/1.000) 1.000
...
TC: del edge entry 193.238.159.253 > 78.41.118.89, cost (1.000/1.000) 1.000
RIB: del prefix 78.41.118.254/32 from 78.41.118.254
TC: del edge entry 78.41.118.254 > 78.41.118.253, cost (1.000/1.000) 1.000
Closing sockets...
/etc/init.d/olsrd: line 41: 16115 Segmentation fault start-stop-daemon --start --quiet --exec $DAEMON --pidfile $PID_FILE -- $DAEMON_OPTS
Since Debian11/bullseye (and also Ubuntu 20.04) the package libgps23 is not available anymore.
Thus it is not possible to install olsrd-plugins 0.9.8 in those distributions (but olsrd 0.9.8 installed ok).
Instead since Debian11/bullseye the package libgps28 and since Ubuntu 20.04 the package libgps26 is available.
I guess there is a migration required, similar like migrate to using bison 3.7.1 ?
LinkQualityMult values not working anymore.
tested with olsr v.0.9.5 and v.0.9.6
it was working at least with olsr v.0.9.0.3
details: see olsr-dev mailinglist
While building release/tag version 0.9.8 I get the following error:
dh_installdocs: Cannot find (any matches for) "lib/mdns/README" (tried in .)
I guess this is due to this commit: mdns: rename readme file
Building release/tag version 0.9.7 worked without issues for me.
(btw. may I ask for a current release/tag as there are some interesting fixes since 0.9.8 ? )
In the freifunk-berlin network we have set up a way to allow mesh islands to mesh with the main mesh network though a vpn. One of the features we find necessary is that gw HNA's are not passed trough the vpn. To do this, in the past, we have used a hack in hns_set.c. Now it has been rewritten as a plugin.
My question to the OLSR dev crew is: should I submit the patch to the main OLSR branch? Is anyone interested in using this plugin?
Currently there is a PR to upgrade gprsd to version 3.19 in the master branch of openwrt (openwrt/packages#9588). With the upgrade from 3.17 to 3.19 the function call gps_read() has changed from
gps_read(struct gps_data_t *gpsdata)
to
gps_read(struct gps_data_t *, char *message, int message_len)
--
for a bit more background, openwrt has migrated to python3 (openwrt/openwrt@316c8b5) and therefore the upgrade from gpsd v3.17 to v3.19 is necessary.
in libgps_core.c, the function has the following comments:
/* read from a gpsd connection
*
* parameters:
* gps_data_t *gpsdata -- structure for GPS data
* char *message -- NULL, or optional buffer for received JSON
* int message_len -- zero, or sizeof(message)
*/
int gps_read(struct gps_data_t *gpsdata CONDITIONALLY_UNUSED,
char *message, int message_len)
There is already a patch written for OLSRd to make the required changes openwrt/routing#490
Hi there. When can we expect to close the "pre" stage an change version from pre-0.9.7 to 0.9.7 in olsrd/Makefile?
As explained in the title, olsr in its version 0.9.0.3 doesn't build with the musl C library, see:
[CC] src/linux/kernel_tunnel.c
In file included from src/kernel_tunnel.h:11:0,
from src/linux/kernel_tunnel.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if.h:79:2: error: expected identifier before numeric constant
IFF_UP = 1<<0, /* sysfs */
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:5:0,
from src/linux/kernel_tunnel.c:60:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if.h:189:8: error: redefinition of ‘struct ifmap’
struct ifmap {
^
In file included from src/kernel_tunnel.h:11:0,
from src/linux/kernel_tunnel.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/net/if.h:64:8: note: originally defined here
struct ifmap {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:5:0,
from src/linux/kernel_tunnel.c:60:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if.h:226:8: error: redefinition of ‘struct ifreq’
struct ifreq {
^
In file included from src/kernel_tunnel.h:11:0,
from src/linux/kernel_tunnel.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/net/if.h:76:8: note: originally defined here
struct ifreq {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:5:0,
from src/linux/kernel_tunnel.c:60:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if.h:278:8: error: redefinition of ‘struct ifconf’
struct ifconf {
^
In file included from src/kernel_tunnel.h:11:0,
from src/linux/kernel_tunnel.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/net/if.h:116:8: note: originally defined here
struct ifconf {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:7:0,
from src/linux/kernel_tunnel.c:60:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:32:8: error: redefinition of ‘struct in6_addr’
struct in6_addr {
^
In file included from src/defs.h:49:0,
from src/kernel_tunnel.h:18,
from src/linux/kernel_tunnel.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:23:8: note: originally defined here
struct in6_addr {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:7:0,
from src/linux/kernel_tunnel.c:60:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:49:8: error: redefinition of ‘struct sockaddr_in6’
struct sockaddr_in6 {
^
In file included from src/defs.h:49:0,
from src/kernel_tunnel.h:18,
from src/linux/kernel_tunnel.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:34:8: note: originally defined here
struct sockaddr_in6 {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:7:0,
from src/linux/kernel_tunnel.c:60:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:59:8: error: redefinition of ‘struct ipv6_mreq’
struct ipv6_mreq {
^
In file included from src/defs.h:49:0,
from src/kernel_tunnel.h:18,
from src/linux/kernel_tunnel.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:42:8: note: originally defined here
struct ipv6_mreq {
^
Makefile.inc:268: recipe for target 'src/linux/kernel_tunnel.o' failed
make[2]: *** [src/linux/kernel_tunnel.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from src/routing_table.h:49:0,
from src/kernel_routes.h:46,
from src/linux/kernel_routes_nl.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if.h:79:2: error: expected identifier before numeric constant
IFF_UP = 1<<0, /* sysfs */
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:5:0,
from src/linux/kernel_routes_nl.c:59:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if.h:189:8: error: redefinition of ‘struct ifmap’
struct ifmap {
^
In file included from src/routing_table.h:49:0,
from src/kernel_routes.h:46,
from src/linux/kernel_routes_nl.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/net/if.h:64:8: note: originally defined here
struct ifmap {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:5:0,
from src/linux/kernel_routes_nl.c:59:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if.h:226:8: error: redefinition of ‘struct ifreq’
struct ifreq {
^
In file included from src/routing_table.h:49:0,
from src/kernel_routes.h:46,
from src/linux/kernel_routes_nl.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/net/if.h:76:8: note: originally defined here
struct ifreq {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:5:0,
from src/linux/kernel_routes_nl.c:59:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if.h:278:8: error: redefinition of ‘struct ifconf’
struct ifconf {
^
In file included from src/routing_table.h:49:0,
from src/kernel_routes.h:46,
from src/linux/kernel_routes_nl.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/net/if.h:116:8: note: originally defined here
struct ifconf {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:7:0,
from src/linux/kernel_routes_nl.c:59:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:32:8: error: redefinition of ‘struct in6_addr’
struct in6_addr {
^
In file included from src/defs.h:49:0,
from src/kernel_routes.h:45,
from src/linux/kernel_routes_nl.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:23:8: note: originally defined here
struct in6_addr {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:7:0,
from src/linux/kernel_routes_nl.c:59:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:49:8: error: redefinition of ‘struct sockaddr_in6’
struct sockaddr_in6 {
^
In file included from src/defs.h:49:0,
from src/kernel_routes.h:45,
from src/linux/kernel_routes_nl.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:34:8: note: originally defined here
struct sockaddr_in6 {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:7:0,
from src/linux/kernel_routes_nl.c:59:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:59:8: error: redefinition of ‘struct ipv6_mreq’
struct ipv6_mreq {
^
In file included from src/defs.h:49:0,
from src/kernel_routes.h:45,
from src/linux/kernel_routes_nl.c:44:
/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:42:8: note: originally defined here
struct ipv6_mreq {
^
In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_tunnel.h:5:0,
from src/linux/kernel_routes_nl.c:59:
src/linux/kernel_routes_nl.c: In function ‘netlink_process_link’:
src/linux/kernel_routes_nl.c:124:42: error: ‘IFF_UP’ undeclared (first use in this function)
if (iface == NULL && (ifi->ifi_flags & IFF_UP) == IFF_UP) {
^
src/linux/kernel_routes_nl.c:124:42: note: each undeclared identifier is reported only once for each function it appears in
src/linux/kernel_routes_nl.c: In function ‘rtnetlink_read’:
src/linux/kernel_routes_nl.c:158:5: warning: initialization makes integer from pointer without a cast [-Wint-conversion]
NULL,
^
src/linux/kernel_routes_nl.c:158:5: note: (near initialization for ‘msg.__pad1’)
Makefile.inc:268: recipe for target 'src/linux/kernel_routes_nl.o' failed
make[2]: *** [src/linux/kernel_routes_nl.o] Error 1
I tested new txtinfo (1.1) and see no http-headers, nor when requested by url (localhost:2006/http/ver), neigher when activated by plugin-parameter "httpheaders".
ubnt@wehr-router:~$ curl -I localhost:2006/http/ver
error: 404 Not Found
ubnt@wehr-router:~$ curl localhost:2006/http/ver
Version: olsr.org - pre-0.9.7-git_a24e20a-hash_3d83b56712d547acaa693fc988197192
We need a simple README.md which has copy & paste instructions.
[CC] src/context.c
In file included from /home/build/openwrt/staging_dir/toolchain-arc_archs_gcc-8.4.0_glibc/include/bits/libc-header-start.h:33,
from /home/build/openwrt/staging_dir/toolchain-arc_archs_gcc-8.4.0_glibc/include/stdlib.h:25,
from ./include/nmealib/util.h:23,
from src/context.c:20:
/home/build/openwrt/staging_dir/toolchain-arc_archs_gcc-8.4.0_glibc/include/features.h:397:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp]
# warning _FORTIFY_SOURCE requires compiling with optimization (-O)
^~~~~~~
cc1: all warnings being treated as errors
[CC] src/Bmf.c
In file included from src/Bmf.c:70:
/home/nick/openwrt/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
#warning redirecting incorrect #include <sys/poll.h> to <poll.h>
around d8ffc6f I was running this code on some Freifunk-nodes and experienced that the routes are not stable. Some routes went of the routing table and came back every few seconds.
A test on my local-node with looping ip route sh table olsr|wc -l
gave changing number of routes, even the network was stable / no changes in the local mesh.
I used the exact same config as for olsrd 0.9.0.3, where all was running normally before and after checking with 0.9.6.
just tried to build d244667 on LEDE and packaging fails with
install -d -m0755 /mnt/hosts/build/src/openwrt/freifunk/lede/lede/build_dir/target-i386_pentium4_musl-1.1.15/olsrd-20170104/ipkg-i386_pentium4/olsrd/etc/hotplug.d/iface
install -m0755 ./files/olsrd.hotplug.sh /mnt/hosts/build/src/openwrt/freifunk/lede/lede/build_dir/target-i386_pentium4_musl-1.1.15/olsrd-20170104/ipkg-i386_pentium4/olsrd/etc/hotplug.d/iface/50-olsrd
find /mnt/hosts/build/src/openwrt/freifunk/lede/lede/build_dir/target-i386_pentium4_musl-1.1.15/olsrd-20170104/ipkg-i386_pentium4/olsrd -name 'CVS' -o -name '.svn' -o -name '.#' -o -name '~'| xargs -r rm -rf
Package olsrd is missing dependencies for the following libraries:
libcrypto.so.1.0.0
Makefile:295: recipe for target '/mnt/hosts/build/src/openwrt/freifunk/lede/lede/bin/packages/i386_pentium4/routing/olsrd_20170104-463463d66b2fe8a1662ecd5f1687ed237da33e78_i386_pentium4.ipk' failed
It seems to be one of the commits from 4. Jan 2017 (6c50a72 ... 463463d)
Platform: Ubiquiti Edgerouter Lite (mips64)
Kernel: Linux ubnt 3.10.20-UBNT
Libc: 2.13-38+deb7u8
Olsr : pre-0.9.1-git_564e1b1-hash_cdb27b6747bc38fef73115019dc168ab
The olsr daemon crash after some random time with this message:
*** glibc detected *** /usr/local/sbin/olsrd: realloc(): invalid next size: 0x004b6560 ***
Received signal Aborted - shutting down
Deleting all routes...
The gdb backtrace will follow soon.
I would like to address the OLSRD Flooding events, recently in SoCali and SF Mesh network. Possible cause is still being studied. A few Ideas: Latency lag between tunnel servers connecting over Comcast Network. Network outages events / Network Saturation in Disaster events. TC messages floods (across tunnels --->Rf Hubs nodes) cause nodes to crash. RF topography adjacent to the node is slightly affected nodes don't crash. Networks with topography that relies on tunnel node links that do pass thru an ISP, or Cellular system experience OLSRD over loads on its systems memory. Systems may stall and or crashes on the node running a tunnel. This doesn't effect the Raw RF <---> RF nodes.
Q: Might running multiple instances of OLSRD for each interface, each with a different timing metric config help limit the overload? Or Is it time to migrate to OLSRD2??? Then tune it?
Network storms are the result of the OLSR demon on nodes restarting. A restart randomly resets the sequence number that will be used for new messages. Under certain circumstances these new sequence numbered messages can interact with old messages from the same source which are still in the network and create a message storm. The combined old and new messages confuse the deduplication code so that messages will always appear new, regardless of how many times a node received them, and will always be duplicated to their neighbors. This will continue until all copies of messages time-to-live expires on all nodes.
Full explanation and proposed solutions can be found here: https://docs.google.com/document/d/1OgURb2O36lWF518dKydJLBEEUTYt7khRTVzX8QChwqw/edit?usp=sharing
The fixsource_t
definition got changed in the gpsd 3.25 release
-/* describe a data source */
-struct fixsource_t {
- char spec[PATH_MAX]; /* working space, will be modified */
- char *server; /* pointer into spec field */
- char *port; /* pointer into spec field */
- char *device; /* pointer into spec field */
-};
+ // describe a gpsd source
+ struct fixsource_t
+ {
+ char spec[512]; // original string
+ const char *server; // server name, maybe IP
+ const char *server_ip; // server IP as string, maybe IPv4 or IPv6
+ const char *port;
+ const char *device;
+ };
also the file got moved from gpsdclient.h into gps.h, ntpsec/gpsd@35fe488
[CC] src/gpsdclient.c
src/gpsdclient.c: In function 'nmeaInfoFromGpsd':
src/gpsdclient.c:373:20: error: 'struct gps_fix_t' has no member named 'status'; did you mean 'datum'?
if (gpsdata->fix.status == STATUS_NO_FIX) {
^~~~~~
datum
../../Makefile.inc:357: recipe for target 'src/gpsdclient.o' failed
make[5]: *** [src/gpsdclient.o] Error 1
make[5]: Leaving directory '/home/douding/develop/lede/build_dir/target-x86_64_musl/olsrd-2020-06-18-84400e5c/lib/pud'
using emdebian toolchain to crosscompile olsrd from git for mips/mipsel, i get following error when building nmealib plugin.
installing package libgps-dev and/or libomhacks-dev (which provide a gps.h) doesn't fix the problem:
In file included from src/configuration.h:50,
from src/state.c:49:
src/gpsdclient.h:49:17: error: gps.h: No such file or directory
In file included from src/configuration.h:50,
from src/receiver.c:51:
src/gpsdclient.h:49:17: error: gps.h: No such file or directory
In file included from src/configuration.h:50,
from src/pudOlsrdPlugin.h:50,
from src/pudOlsrdPlugin.c:46:
src/gpsdclient.h:49:17: error: gps.h: No such file or directory
In file included from src/configuration.h:50,
from src/pud.c:51:
src/gpsdclient.h:49:17: error: gps.h: No such file or directory
In file included from src/configuration.h:50,
from src/networkInterfaces.c:50:
src/gpsdclient.h:49:17: error: gps.h: No such file or directory
In file included from src/gpsdclient.c:46:
src/gpsdclient.h:49:17: error: gps.h: No such file or directory
In file included from src/configuration.h:50,
from src/gpsConversion.c:50:
src/gpsdclient.h:49:17: error: gps.h: No such file or directory
In file included from src/configuration.h:50,
from src/configuration.c:46:
src/gpsdclient.h:49:17: error: gps.h: No such file or directory
make[1]: Entering directory `/home/user/olsrd-dev/mipsel/olsrd/lib/pud/nmealib'
make[1]: Leaving directory `/home/user/olsrd-dev/mipsel/olsrd/lib/pud/nmealib'
make[1]: Entering directory `/home/user/olsrd-dev/mipsel/olsrd/lib/pud/nmealib'
[CC] src/context.c
cc1: error: unrecognized command line option "-Wdouble-promotion"
cc1: error: unrecognized command line option "-Wtrampolines"
cc1: error: unrecognized command line option "-Wjump-misses-init"
make[1]: *** [build/context.o] Error 1
make[1]: Leaving directory `/home/user/olsrd-dev/mipsel/olsrd/lib/pud/nmealib'
make: *** [nmealib] Error 2
I was wondering if there is a way to run olsrd without root privilege.
I understand that olsrd has to change the routing table and that's why it requires root privilege. However, I just want to run olsrd to discover the network topology (i.e., by using json info plugin). So, is there a way to do that?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.