[PATCH] 4addr: fix reconnecting client on connection lost

Jouni Malinen j at w1.fi
Sat Jul 23 11:01:21 PDT 2016


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.
 
-- 
Jouni Malinen                                            PGP id EFC895FA



More information about the Hostap mailing list