mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-01-18 19:04:02 -05:00
hostapd: Propagate ACS errors to iface setup
Otherwise hostapd might hang doing nothing anymore. Propagate ACS errors so we can fail gracefully. Signed-hostap: Helmut Schaa <helmut.schaa@googlemail.com>
This commit is contained in:
parent
0e1d0b370f
commit
3645fd5aae
17
src/ap/acs.c
17
src/ap/acs.c
@ -655,6 +655,7 @@ static void acs_study(struct hostapd_iface *iface)
|
|||||||
ideal_chan = acs_find_ideal_chan(iface);
|
ideal_chan = acs_find_ideal_chan(iface);
|
||||||
if (!ideal_chan) {
|
if (!ideal_chan) {
|
||||||
wpa_printf(MSG_ERROR, "ACS: Failed to compute ideal channel");
|
wpa_printf(MSG_ERROR, "ACS: Failed to compute ideal channel");
|
||||||
|
err = -1;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -663,24 +664,20 @@ static void acs_study(struct hostapd_iface *iface)
|
|||||||
if (iface->conf->ieee80211ac)
|
if (iface->conf->ieee80211ac)
|
||||||
acs_adjust_vht_center_freq(iface);
|
acs_adjust_vht_center_freq(iface);
|
||||||
|
|
||||||
|
err = 0;
|
||||||
|
fail:
|
||||||
/*
|
/*
|
||||||
* hostapd_setup_interface_complete() will return -1 on failure,
|
* hostapd_setup_interface_complete() will return -1 on failure,
|
||||||
* 0 on success and 0 is HOSTAPD_CHAN_VALID :)
|
* 0 on success and 0 is HOSTAPD_CHAN_VALID :)
|
||||||
*/
|
*/
|
||||||
switch (hostapd_acs_completed(iface)) {
|
if (hostapd_acs_completed(iface, err) == HOSTAPD_CHAN_VALID) {
|
||||||
case HOSTAPD_CHAN_VALID:
|
|
||||||
acs_cleanup(iface);
|
acs_cleanup(iface);
|
||||||
return;
|
return;
|
||||||
case HOSTAPD_CHAN_INVALID:
|
|
||||||
case HOSTAPD_CHAN_ACS:
|
|
||||||
default:
|
|
||||||
/* This can possibly happen if channel parameters (secondary
|
|
||||||
* channel, center frequencies) are misconfigured */
|
|
||||||
wpa_printf(MSG_ERROR, "ACS: Possibly channel configuration is invalid, please report this along with your config file.");
|
|
||||||
goto fail;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fail:
|
/* This can possibly happen if channel parameters (secondary
|
||||||
|
* channel, center frequencies) are misconfigured */
|
||||||
|
wpa_printf(MSG_ERROR, "ACS: Possibly channel configuration is invalid, please report this along with your config file.");
|
||||||
acs_fail(iface);
|
acs_fail(iface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#ifdef CONFIG_ACS
|
#ifdef CONFIG_ACS
|
||||||
|
|
||||||
enum hostapd_chan_status acs_init(struct hostapd_iface *iface);
|
enum hostapd_chan_status acs_init(struct hostapd_iface *iface);
|
||||||
int hostapd_acs_completed(struct hostapd_iface *iface);
|
int hostapd_acs_completed(struct hostapd_iface *iface, int err);
|
||||||
|
|
||||||
#else /* CONFIG_ACS */
|
#else /* CONFIG_ACS */
|
||||||
|
|
||||||
|
@ -758,10 +758,13 @@ static void hostapd_notify_bad_chans(struct hostapd_iface *iface)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int hostapd_acs_completed(struct hostapd_iface *iface)
|
int hostapd_acs_completed(struct hostapd_iface *iface, int err)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
|
if (err)
|
||||||
|
goto out;
|
||||||
|
|
||||||
switch (hostapd_check_chans(iface)) {
|
switch (hostapd_check_chans(iface)) {
|
||||||
case HOSTAPD_CHAN_VALID:
|
case HOSTAPD_CHAN_VALID:
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user