Merge pull request #386 from ecsv/batadv-17.01
lede-17.01: batman-adv: add patches from 2018.1-maint 2018-06-12
This commit is contained in:
commit
01005bf2e2
|
@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
|
|||
PKG_NAME:=batman-adv
|
||||
|
||||
PKG_VERSION:=2016.5
|
||||
PKG_RELEASE:=8
|
||||
PKG_RELEASE:=9
|
||||
PKG_MD5SUM:=6717a933a08dd2a01b00df30cb9f16a8
|
||||
PKG_HASH:=d0a0fc90c4f410b57d043215e253bb0b855efa5edbe165d87c17bfdcfafd0db7
|
||||
|
||||
|
|
|
@ -204,3 +204,22 @@ static inline int batadv_nla_put_u64_64bit(struct sk_buff *skb, int attrtype,
|
|||
#define __ro_after_init
|
||||
|
||||
#endif /* < KERNEL_VERSION(4, 10, 0) */
|
||||
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0)
|
||||
|
||||
#include <net/cfg80211.h>
|
||||
|
||||
/* cfg80211 fix: https://patchwork.kernel.org/patch/10449857/ */
|
||||
static inline int batadv_cfg80211_get_station(struct net_device *dev,
|
||||
const u8 *mac_addr,
|
||||
struct station_info *sinfo)
|
||||
{
|
||||
memset(sinfo, 0, sizeof(*sinfo));
|
||||
return cfg80211_get_station(dev, mac_addr, sinfo);
|
||||
}
|
||||
|
||||
#define cfg80211_get_station(dev, mac_addr, sinfo) \
|
||||
batadv_cfg80211_get_station(dev, mac_addr, sinfo)
|
||||
|
||||
#endif /* < KERNEL_VERSION(4, 18, 0) */
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
From: Linus Lüssing <linus.luessing@c0d3.blue>
|
||||
Date: Thu, 7 Jun 2018 00:46:23 +0200
|
||||
Subject: [PATCH] batman-adv: Avoid storing non-TT-sync flags on singular entries too
|
||||
|
||||
Since commit 382d020fe3fa ("batman-adv: fix TT sync flag inconsistencies")
|
||||
TT sync flags and TT non-sync'd flags are supposed to be stored
|
||||
separately.
|
||||
|
||||
The previous patch missed to apply this separation on a TT entry with
|
||||
only a single TT orig entry.
|
||||
|
||||
This is a minor fix because with only a single TT orig entry the DDoS
|
||||
issue the former patch solves does not apply.
|
||||
|
||||
Fixes: 382d020fe3fa ("batman-adv: fix TT sync flag inconsistencies")
|
||||
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
|
||||
Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
|
||||
Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/beb6246b2339852b6a429ae9259a8eb30a685041
|
||||
---
|
||||
net/batman-adv/translation-table.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
|
||||
index 743963bf39dca73f7554f9f85fffd57fd6a3c963..a8b4d9bcb318656022a30f742ede4f38a646d0d1 100644
|
||||
--- a/net/batman-adv/translation-table.c
|
||||
+++ b/net/batman-adv/translation-table.c
|
||||
@@ -1695,7 +1695,8 @@ static bool batadv_tt_global_add(struct batadv_priv *bat_priv,
|
||||
ether_addr_copy(common->addr, tt_addr);
|
||||
common->vid = vid;
|
||||
|
||||
- common->flags = flags;
|
||||
+ common->flags = flags & (~BATADV_TT_SYNC_MASK);
|
||||
+
|
||||
tt_global_entry->roam_at = 0;
|
||||
/* node must store current time in case of roaming. This is
|
||||
* needed to purge this entry out on timeout (if nobody claims
|
|
@ -0,0 +1,46 @@
|
|||
From: Linus Lüssing <linus.luessing@c0d3.blue>
|
||||
Date: Thu, 7 Jun 2018 00:46:24 +0200
|
||||
Subject: [PATCH] batman-adv: Fix multicast TT issues with bogus ROAM flags
|
||||
|
||||
When a (broken) node wrongly sends multicast TT entries with a ROAM
|
||||
flag then this causes any receiving node to drop all entries for the
|
||||
same multicast MAC address announced by other nodes, leading to
|
||||
packet loss.
|
||||
|
||||
Fix this DoS vector by only storing TT sync flags. For multicast TT
|
||||
non-sync'ing flag bits like ROAM are unused so far anyway.
|
||||
|
||||
Fixes: 405cc1e5a81e ("batman-adv: Modified forwarding behaviour for multicast packets")
|
||||
Reported-by: Leonardo Mörlein <me@irrelefant.net>
|
||||
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
|
||||
Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
|
||||
Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/c7054ffae0c3b08bb4bef3cffee1e0a543e14096
|
||||
---
|
||||
net/batman-adv/translation-table.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
|
||||
index a8b4d9bcb318656022a30f742ede4f38a646d0d1..143a00f90d1d925aad7113f897d06f435f28dcd8 100644
|
||||
--- a/net/batman-adv/translation-table.c
|
||||
+++ b/net/batman-adv/translation-table.c
|
||||
@@ -1695,7 +1695,8 @@ static bool batadv_tt_global_add(struct batadv_priv *bat_priv,
|
||||
ether_addr_copy(common->addr, tt_addr);
|
||||
common->vid = vid;
|
||||
|
||||
- common->flags = flags & (~BATADV_TT_SYNC_MASK);
|
||||
+ if (!is_multicast_ether_addr(common->addr))
|
||||
+ common->flags = flags & (~BATADV_TT_SYNC_MASK);
|
||||
|
||||
tt_global_entry->roam_at = 0;
|
||||
/* node must store current time in case of roaming. This is
|
||||
@@ -1759,7 +1760,8 @@ static bool batadv_tt_global_add(struct batadv_priv *bat_priv,
|
||||
* TT_CLIENT_TEMP, therefore they have to be copied in the
|
||||
* client entry
|
||||
*/
|
||||
- common->flags |= flags & (~BATADV_TT_SYNC_MASK);
|
||||
+ if (!is_multicast_ether_addr(common->addr))
|
||||
+ common->flags |= flags & (~BATADV_TT_SYNC_MASK);
|
||||
|
||||
/* If there is the BATADV_TT_CLIENT_ROAM flag set, there is only
|
||||
* one originator left in the list and we previously received a
|
Loading…
Reference in New Issue