batman-adv: upgrade package to latest release 2013.1.0 & batman-adv script removal

With the netifd integration the batman-adv script broke. This script
can safely be removed because '/etc/init.d/network' reloads the
batman-adv interfaces as well (thanks to netifd).
    
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>



git-svn-id: svn://svn.openwrt.org/openwrt/packages/net/batman-adv@35867 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
Marek Lindner 2013-03-04 02:12:11 +00:00
parent 349a6b4ea0
commit 9e7914a367
6 changed files with 5 additions and 224 deletions

View File

@ -10,11 +10,11 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=batman-adv
PKG_VERSION:=2013.0.0
BATCTL_VERSION:=2013.0.0
PKG_RELEASE:=3
PKG_MD5SUM:=37f4aa02f393daad3d87cead2bc28ed9
BATCTL_MD5SUM:=6ea4bcd8a9332d586bb06b5063f882cd
PKG_VERSION:=2013.1.0
BATCTL_VERSION:=2013.1.0
PKG_RELEASE:=1
PKG_MD5SUM:=fe1fd32eddde1f91575d7a7ec21d5782
BATCTL_MD5SUM:=767bf36c77c517e1d321169bf9a7fae5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION)
@ -115,7 +115,6 @@ define KernelPackage/batman-adv/install
$(INSTALL_DATA) ./files/lib/batman-adv/config.sh $(1)/lib/batman-adv
$(INSTALL_BIN) ./files/etc/hotplug.d/net/99-batman-adv $(1)/etc/hotplug.d/net
$(INSTALL_BIN) ./files/lib/netifd/proto/batadv.sh $(1)/lib/netifd/proto
$(INSTALL_BIN) ./files/usr/sbin/batman-adv $(1)/usr/sbin
$(BATCTL_INSTALL)
endef

View File

@ -1,60 +0,0 @@
#!/bin/sh
# Copyright (C) 2011 OpenWrt.org
. /lib/functions.sh
. /lib/batman-adv/config.sh
start_mesh() {
local mesh="$1"
local ifaces=$(awk -F':' '{if (NR > 2) print $1}' /proc/net/dev)
for iface in $ifaces; do
[ -d /sys/class/net/$iface/batman_adv/ ] && bat_add_interface "$mesh" "$iface"
done
bat_config "$mesh"
}
stop_mesh() {
local mesh="$1"
local ifaces=$(awk -F':' '{if (NR > 2) print $1}' /proc/net/dev)
for iface in $ifaces; do
[ -d /sys/class/net/$iface/batman_adv/ ] && bat_del_interface "$mesh" "$iface"
done
}
# can also be used with "batman-adv start bat0"
start() {
bat_load_module
config_load batman-adv
if [ -n "$1" ]; then
start_mesh $1
else
config_foreach start_mesh mesh
fi
}
# can also be used with "batman-adv stop bat0"
stop () {
config_load batman-adv
if [ -n "$1" ]; then
stop_mesh $1
else
config_foreach stop_mesh mesh
fi
}
restart() {
stop $1
start $1
}
case "$1" in
start) start $2 ;;
stop) stop $2 ;;
restart) restart $2 ;;
*) echo "Usage: batman-adv <start|stop|restart> [mesh instance]"
esac

View File

@ -1,33 +0,0 @@
From 977d8c6f9253ad71e4bd8e4be2705c3bee684feb Mon Sep 17 00:00:00 2001
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Wed, 23 Jan 2013 18:11:53 +0100
Subject: [PATCH 1/4] batman-adv: fix skb leak in
batadv_dat_snoop_incoming_arp_reply()
The callers of batadv_dat_snoop_incoming_arp_reply() assume the skb has been
freed when it returns true; fix this by calling kfree_skb before returning as
it is done in batadv_dat_snoop_incoming_arp_request().
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Acked-by: Antonio Quartulli <ordex@autistici.org>
---
distributed-arp-table.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/distributed-arp-table.c b/distributed-arp-table.c
index 7485a78..9f4cff3 100644
--- a/distributed-arp-table.c
+++ b/distributed-arp-table.c
@@ -1012,6 +1012,8 @@ bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv,
*/
ret = !batadv_is_my_client(bat_priv, hw_dst);
out:
+ if (ret)
+ kfree_skb(skb);
/* if ret == false -> packet has to be delivered to the interface */
return ret;
}
--
1.7.10.4

View File

@ -1,36 +0,0 @@
From 3b24193d7cfc18f0cc005811ca4aab3479c2f1c6 Mon Sep 17 00:00:00 2001
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Thu, 24 Jan 2013 18:18:26 +0100
Subject: [PATCH 2/4] batman-adv: check for more types of invalid IP addresses
in DAT
There are more types of IP addresses that may appear in ARP packets that we
don't want to process. While some of these should never appear in sane ARP
packets, a 0.0.0.0 source is used for duplicate address detection and thus seen
quite often.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Acked-by: Antonio Quartulli <ordex@autistici.org>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
---
distributed-arp-table.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/distributed-arp-table.c b/distributed-arp-table.c
index 9f4cff3..be3be28 100644
--- a/distributed-arp-table.c
+++ b/distributed-arp-table.c
@@ -777,7 +777,9 @@ static uint16_t batadv_arp_get_type(struct batadv_priv *bat_priv,
ip_src = batadv_arp_ip_src(skb, hdr_size);
ip_dst = batadv_arp_ip_dst(skb, hdr_size);
if (ipv4_is_loopback(ip_src) || ipv4_is_multicast(ip_src) ||
- ipv4_is_loopback(ip_dst) || ipv4_is_multicast(ip_dst))
+ ipv4_is_loopback(ip_dst) || ipv4_is_multicast(ip_dst) ||
+ ipv4_is_zeronet(ip_src) || ipv4_is_lbcast(ip_src) ||
+ ipv4_is_zeronet(ip_dst) || ipv4_is_lbcast(ip_dst))
goto out;
type = ntohs(arphdr->ar_op);
--
1.7.10.4

View File

@ -1,51 +0,0 @@
From ab361a9ccc584e7501c06bfe1c00cb0411feebaf Mon Sep 17 00:00:00 2001
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Thu, 24 Jan 2013 18:18:27 +0100
Subject: [PATCH 3/4] batman-adv: filter ARP packets with invalid MAC
addresses in DAT
We never want multicast MAC addresses in the Distributed ARP Table, so it's
best to completely ignore ARP packets containing them where we expect unicast
addresses.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Acked-by: Antonio Quartulli <ordex@autistici.org>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
---
distributed-arp-table.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/distributed-arp-table.c b/distributed-arp-table.c
index be3be28..ea0bd31 100644
--- a/distributed-arp-table.c
+++ b/distributed-arp-table.c
@@ -738,6 +738,7 @@ static uint16_t batadv_arp_get_type(struct batadv_priv *bat_priv,
struct arphdr *arphdr;
struct ethhdr *ethhdr;
__be32 ip_src, ip_dst;
+ uint8_t *hw_src, *hw_dst;
uint16_t type = 0;
/* pull the ethernet header */
@@ -782,6 +783,18 @@ static uint16_t batadv_arp_get_type(struct batadv_priv *bat_priv,
ipv4_is_zeronet(ip_dst) || ipv4_is_lbcast(ip_dst))
goto out;
+ hw_src = batadv_arp_hw_src(skb, hdr_size);
+ if (is_zero_ether_addr(hw_src) || is_multicast_ether_addr(hw_src))
+ goto out;
+
+ /* we don't care about the destination MAC address in ARP requests */
+ if (arphdr->ar_op != htons(ARPOP_REQUEST)) {
+ hw_dst = batadv_arp_hw_dst(skb, hdr_size);
+ if (is_zero_ether_addr(hw_dst) ||
+ is_multicast_ether_addr(hw_dst))
+ goto out;
+ }
+
type = ntohs(arphdr->ar_op);
out:
return type;
--
1.7.10.4

View File

@ -1,38 +0,0 @@
From 9f1fb6914d66e282c2b1f51aa2d4a231c84df84d Mon Sep 17 00:00:00 2001
From: Pau Koning <paukoning@gmail.com>
Date: Fri, 15 Feb 2013 00:18:56 +0100
Subject: [PATCH 4/4] batman-adv: Fix NULL pointer dereference in DAT hash
collision avoidance
An entry in DAT with the hashed position of 0 can cause a NULL pointer
dereference when the first entry is checked by batadv_choose_next_candidate.
This first candidate automatically has the max value of 0 and the max_orig_node
of NULL. Not checking max_orig_node for NULL in batadv_is_orig_node_eligible
will lead to a NULL pointer dereference when checking for the lowest address.
This problem was added in 785ea1144182c341b8b85b0f8180291839d176a8
("batman-adv: Distributed ARP Table - create DHT helper functions").
Signed-off-by: Pau Koning <paukoning@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
---
distributed-arp-table.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/distributed-arp-table.c b/distributed-arp-table.c
index ea0bd31..761a590 100644
--- a/distributed-arp-table.c
+++ b/distributed-arp-table.c
@@ -440,7 +440,7 @@ static bool batadv_is_orig_node_eligible(struct batadv_dat_candidate *res,
/* this is an hash collision with the temporary selected node. Choose
* the one with the lowest address
*/
- if ((tmp_max == max) &&
+ if ((tmp_max == max) && max_orig_node &&
(batadv_compare_eth(candidate->orig, max_orig_node->orig) > 0))
goto out;
--
1.7.10.4