hostapd: 4addr sta w/ EAP-TLS

Grewal, Ajay (GE Power) Ajay.Grewal at ge.com
Thu Oct 12 12:36:52 PDT 2017


It appears the issue is that the client is bound back to wlan0 on receiving RADIUS message from the server after 4addr mode has been activated previously upon association:

….
Enable 4-address WDS mode for STA 00:06:3d:0a:a8:0a (aid 1)
nl80211: Set WDS STA addr=00:06:3d:0a:a8:0a aid=1 val=1 name=wlan0.sta1
nl80211: Create interface iftype 4 (AP_VLAN)
nl80211: Ignored event (cmd=7) for foreign interface (ifindex 23 wdev 0x0)
nl80211: New interface wlan0.sta1 created: ifindex=23
nl80211: Add own interface ifindex 23 (ifidx_reason -1)
nl80211: if_indices[16]: 11(19) 19(-1) 23(-1)
nl80211: wlan0[19]: set_sta_vlan(00:06:3d:0a:a8:0a, ifname=wlan0.sta1[23], vlan_id=0)
RTM_NEWLINK: ifi_index=23 ifname=wlan0.sta1 operstate=2 linkmode=0 ifi_family=0 ifi_flags=0x1002 ()
….
….
wlan0: RADIUS Received RADIUS message
wlan0: STA 00:06:3d:0a:a8:0a RADIUS: Received RADIUS packet matched with a pending request, round trip time 0.00 sec
RADIUS packet matching with station 00:06:3d:0a:a8:0a
wlan0: STA 00:06:3d:0a:a8:0a IEEE 802.11: binding station to interface 'wlan0'
nl80211: wlan0[19]: set_sta_vlan(00:06:3d:0a:a8:0a, ifname=wlan0[19], vlan_id=0)
MS-MPPE-Send-Key - hexdump(len=32): [REMOVED]
MS-MPPE-Recv-Key - hexdump(len=32): [REMOVED]
…

Following seems to fix the issue:
    
    diff --git a/src/ap/sta_info.c b/src/ap/sta_info.c
index b1fde3c..56e1bf8 100644
--- a/src/ap/sta_info.c
+++ b/src/ap/sta_info.c
@@ -986,6 +986,9 @@ done:
 
 int ap_sta_bind_vlan(struct hostapd_data *hapd, struct sta_info *sta)
 {
+       if (sta->flags & WLAN_STA_WDS)
+               return 0;
+
 #ifndef CONFIG_NO_VLAN
        const char *iface;
        struct hostapd_vlan *vlan = NULL;

Please advise if above is the correct fix or if there is a better alternative.

Thanks
Ajay






More information about the Hostap mailing list