edca4d2 network: rework network status callbacks
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit 28ca76d29bc0703474fd44815ceca6bd7b28efe6)
10fb043 network: dump detail on ping pong received
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit 1f60c232966b12b2f6e35a2705dc63883eec61c2)
bb362db datastorage: fix ap_array_unlink_entry always returns NULL
47e98ef network: ping pong keepalive for tcp connections
eba0354 network: add timeout for client connections
In the dawn config the con_timeout needs to be added:
option con_timeout '60'
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit 204fd77bbc810e64602bbd758af4bef6c76844b1)
e596ff1 ubus.c: only add nr entries matching our own SSID
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit bb0d45ed355264ca606d01699ca59edaf6848eab)
Some users report that DAWN sometimes crashes after a while. Mostly
this happens after the new update has been rolled out.
Since I would not like to go back to the older version, I add as
a workaround for now that DAWN automatically respawned.
Workaround for:
https://github.com/berlin-open-wireless-lab/DAWN/issues/151
Signed-off-by: Nick Hainke <vincent@systemli.org>
* c70773a - datastorage: use signal strength as a metric
* 14e0f83 - Don't display debugging output with DAWN_NO_OUTPUT
* 97e5de1 - uci: add neighbor list priority options
* 2b1a53c - dawn_uci: set default values
* 6eb747b - Use separate configs for 802.11g & 802.11a bands
* 1e34357 - Verify compatibility before parsing config message
* a7a8309 - List all neighbors with same score when kicking
* 3ba0fa4 - Change beacon request fields to appropriate values
* 009aab9 - Change mode config parameter from int to string
Signed-off-by: Nick Hainke <vincent@systemli.org>
555268b ubus: filter neighbors by SSID when preparing nr
3db9607 data storage: match SSID when searching ap entry
a22f5a7 storage: ensure SSID strings are NULL-terminated
Signed-off-by: Nick Hainke <vincent@systemli.org>
faster to compile.
A small selection of packages was tested going from:
Executed in 696.30 secs fish external
usr time 82.98 mins 395.00 micros 82.98 mins
sys time 9.02 mins 0.00 micros 9.02 mins
to:
Executed in 592.20 secs fish external
usr time 84.84 mins 361.00 micros 84.84 mins
sys time 8.85 mins 57.00 micros 8.85 mins
Tested by running make -j 12 and wiping staging/build_dir/target_x
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Includes:
- dawn_uci: fix crashing when uci config is received
- tcpsocket: add option to add server ip
A new config option allows to add a server ip
option server_ip '10.0.0.2'
However, this server does not send anything back. Therefore it is not
possible to change the node configuration. This will probably be added
soon. The main goal of this commit is to allow monitoring of all nodes
in a network with DAWN, e.g. clients, channel utilization, ...
Also a network option (3) has been added which allows to use TCP but
not to announce your daemon in the broadcast domain. This allows you to
create a monitor-only node that holds only the local information and
forwards it to the central server.
A monitor-only node could be configured like
option server_ip '10.0.0.1'
option tcp_port '1026'
option network_option '3'
Another possible config is
option server_ip '10.0.0.1'
option tcp_port '1026'
option network_option '2'
Here, the node shares information with a central server, which can be
located outside the broadcast domain. Nevertheless, it also shares
information within its broadcast domain and can therefore perform
client steering.
Signed-off-by: Nick Hainke <vincent@systemli.org>
test_storage: fix compilation with musl 1.2.0
datastorage/test: improve scalability and performance
datastorage: fixed use of wrong client search
general: add memory auditing
memory auditing: bug fixes to memory auditing and hearing map
datastorage: fixes to linked list handling
tcpsocket: fix read callback function and arbitrary memory allocations
tcpsocket: leave loop if we read 0 byte
Furthermore, you can now dump the memory usage by sending a SIGHUP to
dawn process.
Signed-off-by: Nick Hainke <vincent@systemli.org>
Includes:
- dawn_uci: no need uci_alloc_context on each uci_set_network call
- test_storage: extend test harness; datastorage: two bug fixes
- tcpsocket: free con after ustream write error and make list each safe
list_each is not safe against removal of list entry
Signed-off-by: Nick Hainke <vincent@systemli.org>
Includes:
- test_storage: further refactoring, added test functionality, and TESTING.md to describe testing approach
- tcpsocket: implement client_read_cb with ustream_read my wheels are much worse than offical wheels.
- Revert "tcpsocket: implement client_read_cb with ustream_read my wheels are much worse than offical wheels."
- uci: fix arm64 compiling
Fixes: #12488
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Includes:
- uci: truncate hostname at first dot
- ubus/uci/datastorage: add iface and hostname
- ubus: use strncpy and add backwards compatibility
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
I tried Dawn and it whined at me because it didn't understand its
own packets from a different-endian host.
Mon Jun 8 10:49:12 2020 daemon.err dawn[19742]: not complete msg, len:308, expected len:872480768
Mon Jun 8 10:49:12 2020 daemon.err dawn[19742]: not complete msg, len:708, expected len:3288465408
https://github.com/berlin-open-wireless-lab/DAWN/issues/92
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Includes:
- ubus/datastorage: don't repeatedly ask devices for beacon reports if
don't support it
- uci: fix loading of config
- utils/ubus: fix memory leak at blobmsg_format_json
- ubus: add local flag to network overview
- ubus: fix network overview
- network/tcpsocket: make sure every msg is complete before handle
- datastorage: refactor to support scalability testing
- network/tcpsocket: make sure every msg is complete before handle
- ubus: fix network overview
- ubus: add local flag to network overview
Signed-off-by: Nick Hainke <vincent@systemli.org>
Includes:
- dawn_iwinfo: fix whitespace
- dawn_iwinfo: indentation
- dawn_iwinfo: iwinfo_finish();
- dawn_iwinfo: filter out global interface
- dawn_iwinfo: release iwinfo after usage
- tcpsocket: fix port print
- github: set CONFIG_SRC_TREE_OVERRIDE in actions CI
- github: fix link to dawn source
- github: use v2 for checkout action
- github: add GitHub Actions CI
- ubus: only update TCP socket list when using TCP connections
- add notice that full wpad is requirement
- fix link to luci-app-dawn
- update readme and install instructions
Signed-off-by: Nick Hainke <vincent@systemli.org>
If set_hostapd_nr config flag is set, dawn will insert the nr reports
to allow the hostapd to answer to nr requests from clients.
Improve the synchronization of rcpi and rsni in the network.
Further, clients with bad 802.11k were sending beacon reports with
bssid 00:00:00:00:00:00. Catch those corner cases.
Signed-off-by: Nick Hainke <vincent@systemli.org>
DAWN has a race condition with umdns that prevents dawn from surviving
a reboot.
Increase procd start and stop of dawn to 81.
Further, network is sometimes not ready. Add utimer to check if socket
binds correctly.
Signed-off-by: Nick Hainke <vincent@systemli.org>
Dawn is a decentralized WiFi controller.
Just install dawn and the APs will find each other via umdns.
They periodically exchange information about connected clients, wireless
statistics and other needed information. With that, the daemon load
balances clients between different APs through association control.
Further, the daemon exposes through ubus the hearing map and the
complete wireless network overview. The hearing map is the list of all
probe requests seen from a client from all APs that are running the
controller.
Hearing map:
ubus call dawn get_hearing_map
Network overview:
ubus call dawn get_network
Dawn has a graphical user interface called luci-app-dawn. With that, the
load balancing and other useful settings can be controlled.
Signed-off-by: Nick Hainke <vincent@systemli.org>