batman-adv: fix and simplify condition when bonding should be used

Message ID 1407932816-19639-1-git-send-email-sw@simonwunderlich.de (mailing list archive)
State Accepted, archived
Commit 47dc789e7f949b74eef810ca3b48dd2fac0402bf
Headers

Commit Message

Simon Wunderlich Aug. 13, 2014, 12:26 p.m. UTC
  The current condition actually does NOT consider bonding when the
interface the packet came in from is the soft interface, which is the
opposite of what it should do (and the comment describes). Fix that and
slightly simplify the condition.

Reported-by: Ray Gibson <booray@gmail.com>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
---
 routing.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
  

Comments

Marek Lindner Nov. 9, 2014, 4:26 a.m. UTC | #1
On Wednesday 13 August 2014 14:26:56 Simon Wunderlich wrote:
> The current condition actually does NOT consider bonding when the
> interface the packet came in from is the soft interface, which is the
> opposite of what it should do (and the comment describes). Fix that and
> slightly simplify the condition.
> 
> Reported-by: Ray Gibson <booray@gmail.com>
> Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
> ---
>  routing.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)

Applied in revision 47dc789.

Thanks,
Marek
  

Patch

diff --git a/routing.c b/routing.c
index 35f76f2..6648f32 100644
--- a/routing.c
+++ b/routing.c
@@ -443,11 +443,13 @@  batadv_find_router(struct batadv_priv *bat_priv,
 
 	router = batadv_orig_router_get(orig_node, recv_if);
 
+	if (!router)
+		return router;
+
 	/* only consider bonding for recv_if == BATADV_IF_DEFAULT (first hop)
 	 * and if activated.
 	 */
-	if (recv_if == BATADV_IF_DEFAULT || !atomic_read(&bat_priv->bonding) ||
-	    !router)
+	if (!(recv_if == BATADV_IF_DEFAULT && atomic_read(&bat_priv->bonding)))
 		return router;
 
 	/* bonding: loop through the list of possible routers found