Skip to content

Commit

Permalink
batman-adv: do_bcast has to be true for broadcast packets only
Browse files Browse the repository at this point in the history
corrects a critical bug of the GW feature. This bug made all the unicast
packets destined to a GW to be sent as broadcast. This bug is present even if
the sender GW feature is configured as OFF. It's an urgent bug fix and should
be committed as soon as possible.

This was a regression introduced by 43676ab

Signed-off-by: Antonio Quartulli <ordex@autistici.org>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
  • Loading branch information
Antonio Quartulli authored and Marek Lindner committed Sep 22, 2011
1 parent 322a8b0 commit 8b267b3
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions net/batman-adv/soft-interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -565,7 +565,7 @@ static int interface_tx(struct sk_buff *skb, struct net_device *soft_iface)
struct orig_node *orig_node = NULL;
int data_len = skb->len, ret;
short vid = -1;
bool do_bcast = false;
bool do_bcast;

if (atomic_read(&bat_priv->mesh_state) != MESH_ACTIVE)
goto dropped;
Expand Down Expand Up @@ -598,15 +598,15 @@ static int interface_tx(struct sk_buff *skb, struct net_device *soft_iface)
tt_local_add(soft_iface, ethhdr->h_source);

orig_node = transtable_search(bat_priv, ethhdr->h_dest);
if (is_multicast_ether_addr(ethhdr->h_dest) ||
(orig_node && orig_node->gw_flags)) {
do_bcast = is_multicast_ether_addr(ethhdr->h_dest);
if (do_bcast || (orig_node && orig_node->gw_flags)) {
ret = gw_is_target(bat_priv, skb, orig_node);

if (ret < 0)
goto dropped;

if (ret == 0)
do_bcast = true;
if (ret)
do_bcast = false;
}

/* ethernet packet should be broadcasted */
Expand Down

0 comments on commit 8b267b3

Please sign in to comment.