mirror of
https://github.com/berlin-open-wireless-lab/DAWN.git
synced 2025-03-09 15:40:12 +00:00
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 '3' 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.
151 lines
3.9 KiB
C
151 lines
3.9 KiB
C
#ifndef __DAWN_UBUS_H
|
|
#define __DAWN_UBUS_H
|
|
|
|
#include <libubox/blobmsg_json.h>
|
|
#include <libubox/uloop.h>
|
|
|
|
#include "datastorage.h"
|
|
|
|
// 802.11 Status codes
|
|
#define WLAN_STATUS_SUCCESS 0
|
|
#define WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA 17
|
|
#define WLAN_STATUS_DENIED_NOT_HT_SUPPORT 27
|
|
#define WLAN_STATUS_DENIED_NOT_VHT_SUPPORT 104
|
|
|
|
// Disassociation Reason
|
|
#define UNSPECIFIED_REASON 0
|
|
#define NO_MORE_STAS 5
|
|
|
|
/**
|
|
* Init ubus.
|
|
* Setup tcp socket.
|
|
* Start ubus timer.
|
|
* @param ubus_socket
|
|
* @param hostapd_dir
|
|
* @return
|
|
*/
|
|
int dawn_init_ubus(const char *ubus_socket, const char *hostapd_dir);
|
|
|
|
/**
|
|
* Start the umdns timer for updating the zeroconfiguration properties.
|
|
*/
|
|
void start_tcp_con_update();
|
|
|
|
/**
|
|
* Call umdns update to update the TCP connections.
|
|
* @return
|
|
*/
|
|
int ubus_call_umdns();
|
|
|
|
/**
|
|
* Parse to authentication request.
|
|
* @param msg
|
|
* @param auth_req
|
|
* @return
|
|
*/
|
|
int parse_to_auth_req(struct blob_attr *msg, auth_entry *auth_req);
|
|
|
|
/**
|
|
* Parse to association request.
|
|
* @param msg
|
|
* @param assoc_req
|
|
* @return
|
|
*/
|
|
int parse_to_assoc_req(struct blob_attr *msg, assoc_entry *assoc_req);
|
|
|
|
/**
|
|
* Kick client from all hostapd interfaces.
|
|
* @param client_addr - the client adress of the client to kick.
|
|
* @param reason - the reason to kick the client.
|
|
* @param deauth - if the client should be deauthenticated.
|
|
* @param ban_time - the ban time the client is not allowed to connect again.
|
|
*/
|
|
void del_client_all_interfaces(const struct dawn_mac client_addr, uint32_t reason, uint8_t deauth, uint32_t ban_time);
|
|
|
|
/**
|
|
* Update the hostapd sockets.
|
|
* @param t
|
|
*/
|
|
void update_hostapd_sockets(struct uloop_timeout *t);
|
|
|
|
void ubus_send_beacon_report(struct dawn_mac client, int id);
|
|
|
|
void uloop_add_data_cbs();
|
|
|
|
int uci_send_via_network();
|
|
|
|
int build_hearing_map_sort_client(struct blob_buf* b);
|
|
|
|
int build_network_overview(struct blob_buf* b);
|
|
|
|
int ap_get_nr(struct blob_buf* b, struct dawn_mac own_bssid_addr);
|
|
|
|
int parse_add_mac_to_file(struct blob_attr* msg);
|
|
|
|
int handle_auth_req(struct blob_attr* msg);
|
|
|
|
/**
|
|
* Send probe message via the network.
|
|
* @param probe_entry
|
|
* @return
|
|
*/
|
|
int ubus_send_probe_via_network(struct probe_entry_s *probe_entry);
|
|
|
|
/**
|
|
* Add mac to a list that contains addresses of clients that can not be controlled.
|
|
* @param buf
|
|
* @param name
|
|
* @param addr
|
|
*/
|
|
void blobmsg_add_macaddr(struct blob_buf *buf, const char *name, const struct dawn_mac addr);
|
|
|
|
/**
|
|
* Send message via network.
|
|
* @param msg
|
|
* @param method
|
|
* @return
|
|
*/
|
|
int send_blob_attr_via_network(struct blob_attr* msg, char* method);
|
|
|
|
/**
|
|
* Set client timer for updating the clients.
|
|
* @param time
|
|
*/
|
|
void add_client_update_timer(time_t time);
|
|
|
|
/**
|
|
* Kick client from hostapd interface.
|
|
* @param id - the ubus id.
|
|
* @param client_addr - the client adress of the client to kick.
|
|
* @param reason - the reason to kick the client.
|
|
* @param deauth - if the client should be deauthenticated.
|
|
* @param ban_time - the ban time the client is not allowed to connect again.
|
|
*/
|
|
void del_client_interface(uint32_t id, const struct dawn_mac client_addr, uint32_t reason, uint8_t deauth, uint32_t ban_time);
|
|
|
|
/**
|
|
* Function to set the probe counter to the min probe request.
|
|
* This allows that the client is able to connect directly without sending multiple probe requests to the Access Point.
|
|
* @param client_addr
|
|
* @return
|
|
*/
|
|
int send_set_probe(struct dawn_mac client_addr);
|
|
|
|
/**
|
|
* Function to tell a client that it is about to be disconnected.
|
|
* @param id
|
|
* @param client_addr
|
|
* @param dest_ap
|
|
* @param duration
|
|
* @return - 0 = asynchronous (client has been told to remove itself, and caller should manage arrays); 1 = synchronous (caller should assume arrays are updated)
|
|
*/
|
|
int wnm_disassoc_imminent(uint32_t id, const struct dawn_mac client_addr, char* dest_ap, uint32_t duration);
|
|
|
|
/**
|
|
* Send control message to all hosts to add the mac to a don't control list.
|
|
* @param client_addr
|
|
* @return
|
|
*/
|
|
int send_add_mac(struct dawn_mac client_addr);
|
|
|
|
#endif
|