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

More information about the Hostap mailing list