node: add methods to access nodes by bssid
Add methods which returns a given node for a provided BSSID. This is required to retrieve the node object from information available with a neighbor report. Signed-off-by: David Bauer <mail@david-bauer.net>
This commit is contained in:
13
local_node.c
13
local_node.c
@@ -79,6 +79,19 @@ usteer_free_node(struct ubus_context *ctx, struct usteer_local_node *ln)
|
|||||||
free(ln);
|
free(ln);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct usteer_local_node *usteer_local_node_by_bssid(uint8_t *bssid) {
|
||||||
|
struct usteer_local_node *ln;
|
||||||
|
struct usteer_node *n;
|
||||||
|
|
||||||
|
for_each_local_node(n) {
|
||||||
|
ln = container_of(n, struct usteer_local_node, node);
|
||||||
|
if (!memcmp(n->bssid, bssid, 6))
|
||||||
|
return ln;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
usteer_handle_remove(struct ubus_context *ctx, struct ubus_subscriber *s,
|
usteer_handle_remove(struct ubus_context *ctx, struct ubus_subscriber *s,
|
||||||
uint32_t id)
|
uint32_t id)
|
||||||
|
26
node.c
26
node.c
@@ -20,6 +20,32 @@
|
|||||||
#include "node.h"
|
#include "node.h"
|
||||||
#include "usteer.h"
|
#include "usteer.h"
|
||||||
|
|
||||||
|
struct usteer_remote_node *usteer_remote_node_by_bssid(uint8_t *bssid) {
|
||||||
|
struct usteer_remote_node *rn;
|
||||||
|
|
||||||
|
for_each_remote_node(rn) {
|
||||||
|
if (!memcmp(rn->node.bssid, bssid, 6))
|
||||||
|
return rn;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct usteer_node *usteer_node_by_bssid(uint8_t *bssid) {
|
||||||
|
struct usteer_remote_node *rn;
|
||||||
|
struct usteer_local_node *ln;
|
||||||
|
|
||||||
|
rn = usteer_remote_node_by_bssid(bssid);
|
||||||
|
if (rn)
|
||||||
|
return &rn->node;
|
||||||
|
|
||||||
|
ln = usteer_local_node_by_bssid(bssid);
|
||||||
|
if (ln)
|
||||||
|
return &ln->node;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void usteer_node_set_blob(struct blob_attr **dest, struct blob_attr *val)
|
void usteer_node_set_blob(struct blob_attr **dest, struct blob_attr *val)
|
||||||
{
|
{
|
||||||
int new_len;
|
int new_len;
|
||||||
|
4
usteer.h
4
usteer.h
@@ -307,6 +307,10 @@ static inline const char *usteer_node_name(struct usteer_node *node)
|
|||||||
}
|
}
|
||||||
void usteer_node_set_blob(struct blob_attr **dest, struct blob_attr *val);
|
void usteer_node_set_blob(struct blob_attr **dest, struct blob_attr *val);
|
||||||
|
|
||||||
|
struct usteer_local_node *usteer_local_node_by_bssid(uint8_t *bssid);
|
||||||
|
struct usteer_remote_node *usteer_remote_node_by_bssid(uint8_t *bssid);
|
||||||
|
struct usteer_node *usteer_node_by_bssid(uint8_t *bssid);
|
||||||
|
|
||||||
struct usteer_node *usteer_node_get_next_neighbor(struct usteer_node *current_node, struct usteer_node *last);
|
struct usteer_node *usteer_node_get_next_neighbor(struct usteer_node *current_node, struct usteer_node *last);
|
||||||
bool usteer_check_request(struct sta_info *si, enum usteer_event_type type);
|
bool usteer_check_request(struct sta_info *si, enum usteer_event_type type);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user