BUILD_BATCTL = $(MAKE) -C $(PKG_TOOL_BUILD_DIR) $(MAKE_BATCTL_ARGS)
endif
+KPATCH ?= $(PATCH)
define Build/DoPatch
@if [ -d "$(2)" ]; then \
if [ "$$$$(ls $(2) | grep -Ec $(3))" -gt 0 ]; then \
- $(PATCH) "$(1)" "$(2)" "$(3)"; \
+ $(KPATCH) "$(1)" "$(2)" "$(3)"; \
fi; \
fi
endef
--- /dev/null
+From: Antonio Quartulli <ordex@autistici.org>
+
+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>
+---
+ soft-interface.c | 10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+--- a/soft-interface.c
++++ b/soft-interface.c
+@@ -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;
+@@ -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 */
+--
+1.7.5.4
+