diff mbox

[35/44] FT: check destination mac addr on RRB receive

Message ID 1456314830-12935-36-git-send-email-michael-dev@fami-braun.de
State Accepted
Headers show

Commit Message

michael-dev Feb. 24, 2016, 11:53 a.m. UTC
From: Michael Braun <michael-dev@fami-braun.de>

As the linux variant of l2_packet_init does not use its own_addr argument
and l2_packet_receive does not filter on destination mac, this needs to be
checked in the callback.

If there are multiple BSS listening for FT RRB packets, all their BSSID
need to be local to the bridge interface. As l2_packet_init is going to
receive all of them going for any local address, those RRB messages
started turning up on BSS not destinated for and least cluttering logs.

Signed-off-by: Michael Braun <michael-dev@fami-braun.de>
---
 src/ap/wpa_auth_glue.c | 3 +++
 1 file changed, 3 insertions(+)
diff mbox

Patch

diff --git a/src/ap/wpa_auth_glue.c b/src/ap/wpa_auth_glue.c
index 116c4fb..69aba7b 100644
--- a/src/ap/wpa_auth_glue.c
+++ b/src/ap/wpa_auth_glue.c
@@ -775,6 +775,9 @@  static void hostapd_rrb_receive(void *ctx, const u8 *src_addr, const u8 *buf,
 	ethhdr = (struct l2_ethhdr *) buf;
 	wpa_printf(MSG_DEBUG, "FT: RRB received packet " MACSTR " -> "
 		   MACSTR, MAC2STR(ethhdr->h_source), MAC2STR(ethhdr->h_dest));
+	if ((!is_multicast_ether_addr(ethhdr->h_dest)) &&
+	    (os_memcmp(hapd->own_addr, ethhdr->h_dest, ETH_ALEN) != 0))
+		return;
 	wpa_ft_rrb_rx(hapd->wpa_auth, ethhdr->h_source, buf + sizeof(*ethhdr),
 		      len - sizeof(*ethhdr));
 }