Search Linux Wireless

[PATCH] mac80211: allow sending multicast frames through virtual ports

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When reworking the port access control code, I forgot multicast frames
and those are now always rejected because the destination station is
not known. This changes the code to allow through multicast frames and
also avoid the sta hash lookup (which is bound to fail) for them.

Signed-off-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>
---
Even though this is a fix, there's no need to apply this patch to
non-development kernels, the problem cannot trigger unless you're
in master mode which isn't supported yet.

 net/mac80211/tx.c |   21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

--- everything.orig/net/mac80211/tx.c	2008-01-25 13:39:39.446496582 +0100
+++ everything/net/mac80211/tx.c	2008-01-25 13:43:11.856498535 +0100
@@ -1449,10 +1449,17 @@ int ieee80211_subif_start_xmit(struct sk
 		goto fail;
 	}
 
-	sta = sta_info_get(local, hdr.addr1);
-	if (sta) {
-		sta_flags = sta->flags;
-		sta_info_put(sta);
+	/*
+	 * There's no need to try to look up the destination
+	 * if it is a multicast address (which can only happen
+	 * in AP mode)
+	 */
+	if (!is_multicast_ether_addr(hdr.addr1)) {
+		sta = sta_info_get(local, hdr.addr1);
+		if (sta) {
+			sta_flags = sta->flags;
+			sta_info_put(sta);
+		}
 	}
 
 	/* receiver is QoS enabled, use a QoS type frame */
@@ -1462,10 +1469,12 @@ int ieee80211_subif_start_xmit(struct sk
 	}
 
 	/*
-	 * If port access control is enabled, drop frames to unauthorised
-	 * stations unless they are EAPOL frames from the local station.
+	 * If port access control is enabled, drop unicast frames to
+	 * unauthorised stations unless they are EAPOL frames from the
+	 * local station.
 	 */
 	if (unlikely(sdata->ieee802_1x_pac &&
+		     !is_multicast_ether_addr(hdr.addr1) &&
 		     !(sta_flags & WLAN_STA_AUTHORIZED) &&
 		     !(ethertype == ETH_P_PAE &&
 		       compare_ether_addr(dev->dev_addr,


-
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux