batman-adv: only drop packets of known wifi clients

Message ID 1340205365-25052-1-git-send-email-lindner_marek@yahoo.de (mailing list archive)
State Accepted, archived
Commit 03a0e3d6098b1bb3b2f43aaf0249a2e471dace61
Headers

Commit Message

Marek Lindner June 20, 2012, 3:16 p.m. UTC
  If the source or destination mac address of an ethernet packet
could not be found in the translation table the packet was
dropped if AP isolation was turned on. This behavior would
make it impossible to send broadcast packets over the mesh as
the broadcast address will never enter the translation table.

Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
---

This patch is for maint and possibly for stable.

 translation-table.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
  

Comments

Antonio Quartulli June 20, 2012, 3:34 p.m. UTC | #1
On Wed, Jun 20, 2012 at 05:16:05 +0200, Marek Lindner wrote:
> If the source or destination mac address of an ethernet packet
> could not be found in the translation table the packet was
> dropped if AP isolation was turned on. This behavior would
> make it impossible to send broadcast packets over the mesh as
> the broadcast address will never enter the translation table.
> 
> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>

Acked-by: Antonio Quartulli <ordex@autistici.org>
  
Marek Lindner June 22, 2012, 6:19 p.m. UTC | #2
On Wednesday, June 20, 2012 17:34:03 Antonio Quartulli wrote:
>   On Wed, Jun 20, 2012 at 05:16:05 +0200, Marek Lindner wrote:
> > If the source or destination mac address of an ethernet packet
> > could not be found in the translation table the packet was
> > dropped if AP isolation was turned on. This behavior would
> > make it impossible to send broadcast packets over the mesh as
> > the broadcast address will never enter the translation table.
> >
> > Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
> 
> Acked-by: Antonio Quartulli <ordex@autistici.org>

Applied in revision 03a0e3d.

Regards,
Marek
  

Patch

diff --git a/translation-table.c b/translation-table.c
index a66c2dc..660c40f 100644
--- a/translation-table.c
+++ b/translation-table.c
@@ -2031,10 +2031,10 @@  bool is_ap_isolated(struct bat_priv *bat_priv, uint8_t *src, uint8_t *dst)
 {
 	struct tt_local_entry *tt_local_entry = NULL;
 	struct tt_global_entry *tt_global_entry = NULL;
-	bool ret = true;
+	bool ret = false;
 
 	if (!atomic_read(&bat_priv->ap_isolation))
-		return false;
+		goto out;
 
 	tt_local_entry = tt_local_hash_find(bat_priv, dst);
 	if (!tt_local_entry)
@@ -2044,10 +2044,10 @@  bool is_ap_isolated(struct bat_priv *bat_priv, uint8_t *src, uint8_t *dst)
 	if (!tt_global_entry)
 		goto out;
 
-	if (_is_ap_isolated(tt_local_entry, tt_global_entry))
+	if (!_is_ap_isolated(tt_local_entry, tt_global_entry))
 		goto out;
 
-	ret = false;
+	ret = true;
 
 out:
 	if (tt_global_entry)