Get rid of direct hostapd_for_each_interface() calls
src/ap/*.c must not call functions in hostapd or wpa_supplicant directories directly, so avoid this by using a callback function pointer.
This commit is contained in:
parent
70db2ab308
commit
1b56c26c40
5 changed files with 15 additions and 27 deletions
|
@ -43,9 +43,9 @@ struct hapd_interfaces {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
int hostapd_for_each_interface(struct hapd_interfaces *interfaces,
|
static int hostapd_for_each_interface(struct hapd_interfaces *interfaces,
|
||||||
int (*cb)(struct hostapd_iface *iface,
|
int (*cb)(struct hostapd_iface *iface,
|
||||||
void *ctx), void *ctx)
|
void *ctx), void *ctx)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -190,6 +190,7 @@ static struct hostapd_iface * hostapd_init(const char *config_file)
|
||||||
goto fail;
|
goto fail;
|
||||||
hapd_iface->ctrl_iface_init = hostapd_ctrl_iface_init;
|
hapd_iface->ctrl_iface_init = hostapd_ctrl_iface_init;
|
||||||
hapd_iface->ctrl_iface_deinit = hostapd_ctrl_iface_deinit;
|
hapd_iface->ctrl_iface_deinit = hostapd_ctrl_iface_deinit;
|
||||||
|
hapd_iface->for_each_interface = hostapd_for_each_interface;
|
||||||
|
|
||||||
conf = hostapd_config_read(hapd_iface->config_fname);
|
conf = hostapd_config_read(hapd_iface->config_fname);
|
||||||
if (conf == NULL)
|
if (conf == NULL)
|
||||||
|
|
|
@ -228,6 +228,10 @@ struct hostapd_iface {
|
||||||
|
|
||||||
int (*ctrl_iface_init)(struct hostapd_data *hapd);
|
int (*ctrl_iface_init)(struct hostapd_data *hapd);
|
||||||
void (*ctrl_iface_deinit)(struct hostapd_data *hapd);
|
void (*ctrl_iface_deinit)(struct hostapd_data *hapd);
|
||||||
|
|
||||||
|
int (*for_each_interface)(struct hapd_interfaces *interfaces,
|
||||||
|
int (*cb)(struct hostapd_iface *iface,
|
||||||
|
void *ctx), void *ctx);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* hostapd.c */
|
/* hostapd.c */
|
||||||
|
@ -242,11 +246,6 @@ void hostapd_interface_deinit(struct hostapd_iface *iface);
|
||||||
void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
|
void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
|
||||||
int reassoc);
|
int reassoc);
|
||||||
|
|
||||||
/* main.c */
|
|
||||||
int hostapd_for_each_interface(struct hapd_interfaces *interfaces,
|
|
||||||
int (*cb)(struct hostapd_iface *iface,
|
|
||||||
void *ctx), void *ctx);
|
|
||||||
|
|
||||||
/* utils.c */
|
/* utils.c */
|
||||||
int hostapd_register_probereq_cb(struct hostapd_data *hapd,
|
int hostapd_register_probereq_cb(struct hostapd_data *hapd,
|
||||||
void (*cb)(void *ctx, const u8 *sa,
|
void (*cb)(void *ctx, const u8 *sa,
|
||||||
|
|
|
@ -82,6 +82,7 @@ void hostapd_prune_associations(struct hostapd_data *hapd, const u8 *addr)
|
||||||
struct prune_data data;
|
struct prune_data data;
|
||||||
data.hapd = hapd;
|
data.hapd = hapd;
|
||||||
data.addr = addr;
|
data.addr = addr;
|
||||||
hostapd_for_each_interface(hapd->iface->interfaces,
|
if (hapd->iface->for_each_interface)
|
||||||
prune_associations, &data);
|
hapd->iface->for_each_interface(hapd->iface->interfaces,
|
||||||
|
prune_associations, &data);
|
||||||
}
|
}
|
||||||
|
|
|
@ -281,10 +281,12 @@ static int hostapd_wpa_auth_for_each_auth(
|
||||||
{
|
{
|
||||||
struct hostapd_data *hapd = ctx;
|
struct hostapd_data *hapd = ctx;
|
||||||
struct wpa_auth_iface_iter_data data;
|
struct wpa_auth_iface_iter_data data;
|
||||||
|
if (hapd->iface->for_each_interface == NULL)
|
||||||
|
return -1;
|
||||||
data.cb = cb;
|
data.cb = cb;
|
||||||
data.cb_ctx = cb_ctx;
|
data.cb_ctx = cb_ctx;
|
||||||
return hostapd_for_each_interface(hapd->iface->interfaces,
|
return hapd->iface->for_each_interface(hapd->iface->interfaces,
|
||||||
wpa_auth_iface_iter, &data);
|
wpa_auth_iface_iter, &data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,21 +34,6 @@
|
||||||
#include "ap.h"
|
#include "ap.h"
|
||||||
|
|
||||||
|
|
||||||
struct hapd_interfaces {
|
|
||||||
size_t count;
|
|
||||||
struct hostapd_iface **iface;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
int hostapd_for_each_interface(struct hapd_interfaces *interfaces,
|
|
||||||
int (*cb)(struct hostapd_iface *iface,
|
|
||||||
void *ctx), void *ctx)
|
|
||||||
{
|
|
||||||
/* TODO */
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int wpa_supplicant_conf_ap(struct wpa_supplicant *wpa_s,
|
static int wpa_supplicant_conf_ap(struct wpa_supplicant *wpa_s,
|
||||||
struct wpa_ssid *ssid,
|
struct wpa_ssid *ssid,
|
||||||
struct hostapd_config *conf)
|
struct hostapd_config *conf)
|
||||||
|
|
Loading…
Reference in a new issue