batman-adv: Don't handle address updates when bla is disabled
Commit Message
From: Simon Wunderlich <simon@open-mesh.com>
The bridge loop avoidance has a hook to handle address updates of the
originator. These should not be handled when bridge loop avoidance is
disabled - it might send some bridge loop avoidance packets which should
not appear if bla is disabled.
Signed-off-by: Simon Wunderlich <simon@open-mesh.com>
---
bridge_loop_avoidance.c | 4 ++++
1 file changed, 4 insertions(+)
Comments
On Fri, Jun 07, 2013 at 04:52:05PM +0200, Simon Wunderlich wrote:
> From: Simon Wunderlich <simon@open-mesh.com>
>
> The bridge loop avoidance has a hook to handle address updates of the
> originator. These should not be handled when bridge loop avoidance is
> disabled - it might send some bridge loop avoidance packets which should
> not appear if bla is disabled.
>
> Signed-off-by: Simon Wunderlich <simon@open-mesh.com>
Since this is a fix and not a new feature, it should target maint.
Cheers,
On Saturday, June 08, 2013 00:46:49 Antonio Quartulli wrote:
> On Fri, Jun 07, 2013 at 04:52:05PM +0200, Simon Wunderlich wrote:
> > From: Simon Wunderlich <simon@open-mesh.com>
> >
> > The bridge loop avoidance has a hook to handle address updates of the
> > originator. These should not be handled when bridge loop avoidance is
> > disabled - it might send some bridge loop avoidance packets which should
> > not appear if bla is disabled.
> >
> > Signed-off-by: Simon Wunderlich <simon@open-mesh.com>
>
> Since this is a fix and not a new feature, it should target maint.
Applied in revision 518fba1.
Thanks,
Marek
@@ -1073,6 +1073,10 @@ void batadv_bla_update_orig_address(struct batadv_priv *bat_priv,
group = htons(crc16(0, primary_if->net_dev->dev_addr, ETH_ALEN));
bat_priv->bla.claim_dest.group = group;
+ /* purge everything when bridge loop avoidance is turned off. */
+ if (!atomic_read(&bat_priv->bridge_loop_avoidance))
+ oldif = NULL;
+
if (!oldif) {
batadv_bla_purge_claims(bat_priv, NULL, 1);
batadv_bla_purge_backbone_gw(bat_priv, 1);