mirror of
https://git.openwrt.org/openwrt/openwrt.git/
synced 2025-10-05 23:42:55 +02:00
hostapd: skip dynamic reconfiguration while not in enabled state
Interface might be down or scanning. Better do a full restart in order to avoid messing up the runtime state. Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
@@ -538,6 +538,11 @@ function iface_reload_config(name, phydev, config, old_config)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (iface.state() != "ENABLED") {
|
||||
hostapd.printf(`Interface ${iface_name} is not fully configured`);
|
||||
return false;
|
||||
}
|
||||
|
||||
let first_bss = get_config_bss(name, old_config, 0);
|
||||
if (!first_bss) {
|
||||
hostapd.printf(`Could not find bss of previous interface ${iface_name}`);
|
||||
|
@@ -380,6 +380,35 @@ uc_hostapd_bss_delete(uc_vm_t *vm, size_t nargs)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static uc_value_t *
|
||||
uc_hostapd_iface_state(uc_vm_t *vm, size_t nargs)
|
||||
{
|
||||
#define hapd_state(name) [HAPD_IFACE_##name] = #name
|
||||
static const char * const hapd_state_name[] = {
|
||||
hapd_state(UNINITIALIZED),
|
||||
hapd_state(DISABLED),
|
||||
hapd_state(COUNTRY_UPDATE),
|
||||
hapd_state(ACS),
|
||||
hapd_state(HT_SCAN),
|
||||
hapd_state(DFS),
|
||||
hapd_state(NO_IR),
|
||||
hapd_state(ENABLED),
|
||||
};
|
||||
struct hostapd_iface *iface = uc_fn_thisval("hostapd.iface");
|
||||
const char *state = NULL;
|
||||
|
||||
if (!iface)
|
||||
return NULL;
|
||||
|
||||
if (iface->state < ARRAY_SIZE(hapd_state_name))
|
||||
state = hapd_state_name[iface->state];
|
||||
if (!state)
|
||||
state = "unknown";
|
||||
|
||||
return ucv_string_new(state);
|
||||
}
|
||||
|
||||
|
||||
static uc_value_t *
|
||||
uc_hostapd_iface_add_bss(uc_vm_t *vm, size_t nargs)
|
||||
{
|
||||
@@ -930,6 +959,7 @@ int hostapd_ucode_init(struct hapd_interfaces *ifaces)
|
||||
{ "delete", uc_hostapd_bss_delete },
|
||||
};
|
||||
static const uc_function_list_t iface_fns[] = {
|
||||
{ "state", uc_hostapd_iface_state },
|
||||
{ "set_bss_order", uc_hostapd_iface_set_bss_order },
|
||||
{ "add_bss", uc_hostapd_iface_add_bss },
|
||||
{ "stop", uc_hostapd_iface_stop },
|
||||
|
Reference in New Issue
Block a user