[PATCH] 4addr: fix reconnecting client on connection lost
Matthias May
matthias.may at neratec.com
Sun Jul 24 14:03:30 PDT 2016
On 07/23/2016 08:01 PM, Jouni Malinen wrote:
> On Tue, Jul 05, 2016 at 03:00:43PM +0200, Matthias May wrote:
>> When a 4addr client suddenly looses its connection (no deauth/deassoc)
>> the AP still thinks it is connected.
>> If the client reconnects before the AP timeoutes the client, traffic
>> cannot flow.
>>
>> Fix this by making sure the WLAN_STA_WDS flag is unset in the sta->flags
>> when the client completes association.
>
>> diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
>> @@ -2829,6 +2829,7 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
>> new_assoc = 0;
>> sta->flags |= WLAN_STA_ASSOC;
>> sta->flags &= ~WLAN_STA_WNM_SLEEP_MODE;
>> + sta->flags &= ~WLAN_STA_WDS;
>
> This looks a bit strange taken into account this same handle_assoc_cb()
> function is using the WLAN_STA_WDS flag just below this:
>
> if (sta->flags & WLAN_STA_WDS) {
> int ret;
> char ifname_wds[IFNAMSIZ + 1];
>
> ret = hostapd_set_wds_sta(hapd, ifname_wds, sta->addr,
> sta->aid, 1);
> if (!ret)
> hostapd_set_wds_encryption(hapd, sta, ifname_wds);
> }
>
>
> All that would become dead code if this patch were applied. Is this code
> really supposed to be removed? If so, these lines should be deleted as
> well. If not, this issue would likely need to be fixed in some other
> manner.
>
>
Yes this looks a bit strange.
ieee802_11_rx_from_unknown is the function which sets WLAN_STA_WDS bit
once the WLAN_STA_ASSOC is set.
Wouldn't this mean that this is already dead code now?
BR
Matthias
More information about the Hostap
mailing list