Clarify AP mode Action frame handling
Include only one of hostapd_mgmt_rx() and hostapd_action_rx() functions in the build. Previously, NEED_AP_MLME builds (i.e., cases where hostapd AP MLME implementation is included) included both of these functions and both were tried in sequence. In addition to being difficult to understand, that could result in unexpected behavior if hostapd_mgmt_rx() rejected a frame and return 0 to allow hostapd_action_rx() to attempt to process the frame. All the operations included in hostapd_action_rx() are supposed to be available through the hostapd_mgmt_rx() call in handle_action() and those should result in the exact same Category/Action-based handler function to be called in the end. As such, this should not result in different behavior. And if there is a difference, that would be pointing at a hidden bug that would need to be fixed anyway. Furthermore, builds without NEED_AP_MLME would not have any difference in behavior or contents of the binary either. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
cc833a236c
commit
4d379be4a9
1 changed files with 5 additions and 3 deletions
|
@ -1073,6 +1073,7 @@ fail:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef NEED_AP_MLME
|
||||||
static void hostapd_action_rx(struct hostapd_data *hapd,
|
static void hostapd_action_rx(struct hostapd_data *hapd,
|
||||||
struct rx_mgmt *drv_mgmt)
|
struct rx_mgmt *drv_mgmt)
|
||||||
{
|
{
|
||||||
|
@ -1145,6 +1146,7 @@ static void hostapd_action_rx(struct hostapd_data *hapd,
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_DPP */
|
#endif /* CONFIG_DPP */
|
||||||
}
|
}
|
||||||
|
#endif /* NEED_AP_MLME */
|
||||||
|
|
||||||
|
|
||||||
#ifdef NEED_AP_MLME
|
#ifdef NEED_AP_MLME
|
||||||
|
@ -1606,10 +1608,10 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
|
||||||
if (!data->rx_mgmt.frame)
|
if (!data->rx_mgmt.frame)
|
||||||
break;
|
break;
|
||||||
#ifdef NEED_AP_MLME
|
#ifdef NEED_AP_MLME
|
||||||
if (hostapd_mgmt_rx(hapd, &data->rx_mgmt) > 0)
|
hostapd_mgmt_rx(hapd, &data->rx_mgmt);
|
||||||
break;
|
#else /* NEED_AP_MLME */
|
||||||
#endif /* NEED_AP_MLME */
|
|
||||||
hostapd_action_rx(hapd, &data->rx_mgmt);
|
hostapd_action_rx(hapd, &data->rx_mgmt);
|
||||||
|
#endif /* NEED_AP_MLME */
|
||||||
break;
|
break;
|
||||||
case EVENT_RX_PROBE_REQ:
|
case EVENT_RX_PROBE_REQ:
|
||||||
if (data->rx_probe_req.sa == NULL ||
|
if (data->rx_probe_req.sa == NULL ||
|
||||||
|
|
Loading…
Reference in a new issue