mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
batman-adv: do_bcast has to be true for broadcast packets only
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 43676ab590c3f8686fd047d34c3e33803eef71f0 Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
This commit is contained in:
parent
322a8b0340
commit
8b267b312d
@ -565,7 +565,7 @@ static int interface_tx(struct sk_buff *skb, struct net_device *soft_iface)
|
|||||||
struct orig_node *orig_node = NULL;
|
struct orig_node *orig_node = NULL;
|
||||||
int data_len = skb->len, ret;
|
int data_len = skb->len, ret;
|
||||||
short vid = -1;
|
short vid = -1;
|
||||||
bool do_bcast = false;
|
bool do_bcast;
|
||||||
|
|
||||||
if (atomic_read(&bat_priv->mesh_state) != MESH_ACTIVE)
|
if (atomic_read(&bat_priv->mesh_state) != MESH_ACTIVE)
|
||||||
goto dropped;
|
goto dropped;
|
||||||
@ -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);
|
tt_local_add(soft_iface, ethhdr->h_source);
|
||||||
|
|
||||||
orig_node = transtable_search(bat_priv, ethhdr->h_dest);
|
orig_node = transtable_search(bat_priv, ethhdr->h_dest);
|
||||||
if (is_multicast_ether_addr(ethhdr->h_dest) ||
|
do_bcast = is_multicast_ether_addr(ethhdr->h_dest);
|
||||||
(orig_node && orig_node->gw_flags)) {
|
if (do_bcast || (orig_node && orig_node->gw_flags)) {
|
||||||
ret = gw_is_target(bat_priv, skb, orig_node);
|
ret = gw_is_target(bat_priv, skb, orig_node);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto dropped;
|
goto dropped;
|
||||||
|
|
||||||
if (ret == 0)
|
if (ret)
|
||||||
do_bcast = true;
|
do_bcast = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ethernet packet should be broadcasted */
|
/* ethernet packet should be broadcasted */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user