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>