The date has to be updated when a patch touches the README. Therefore, nearly
every feature will modify this date. It can happens quite often that not only
one feature is currently in development or waiting on the mailinglist. This
creates merge conflicts when applying a patchset.
The date itself doesn't provide any additional information when this file is
only available in a release tarball or as part of a SCM repository.
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
---
README | 2 --
1 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/README b/README
index ddc9569..58d3473 100644
--- a/README
+++ b/README
@@ -1,5 +1,3 @@
-[state: 13-11-2011]
-
BATMAN-ADV
----------
--
1.7.7.3
From: Sven Eckelmann <sven(a)narfation.org>
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
---
translation-table.c | 42 ++++++++++++++++++++++--------------------
1 files changed, 22 insertions(+), 20 deletions(-)
diff --git a/translation-table.c b/translation-table.c
index d542b9d..a1be7ef 100644
--- a/translation-table.c
+++ b/translation-table.c
@@ -657,29 +657,31 @@ void tt_global_del(struct bat_priv *bat_priv,
struct tt_local_entry *tt_local_entry = NULL;
tt_global_entry = tt_global_hash_find(bat_priv, addr);
- if (!tt_global_entry)
+ if (!tt_global_entry || tt_global_entry->orig_node != orig_node)
goto out;
- if (tt_global_entry->orig_node == orig_node) {
- if (roaming) {
- /* if we are deleting a global entry due to a roam
- * event, there are two possibilities:
- * 1) the client roamed from node A to node B => we mark
- * it with TT_CLIENT_ROAM, we start a timer and we
- * wait for node B to claim it. In case of timeout
- * the entry is purged.
- * 2) the client roamed to us => we can directly delete
- * the global entry, since it is useless now. */
- tt_local_entry = tt_local_hash_find(bat_priv,
- tt_global_entry->common.addr);
- if (!tt_local_entry) {
- tt_global_entry->common.flags |= TT_CLIENT_ROAM;
- tt_global_entry->roam_at = jiffies;
- goto out;
- }
- }
- _tt_global_del(bat_priv, tt_global_entry, message);
+ if (!roaming)
+ goto out_del;
+
+ /* if we are deleting a global entry due to a roam
+ * event, there are two possibilities:
+ * 1) the client roamed from node A to node B => we mark
+ * it with TT_CLIENT_ROAM, we start a timer and we
+ * wait for node B to claim it. In case of timeout
+ * the entry is purged.
+ * 2) the client roamed to us => we can directly delete
+ * the global entry, since it is useless now. */
+ tt_local_entry = tt_local_hash_find(bat_priv,
+ tt_global_entry->common.addr);
+ if (!tt_local_entry) {
+ tt_global_entry->common.flags |= TT_CLIENT_ROAM;
+ tt_global_entry->roam_at = jiffies;
+ goto out;
}
+
+out_del:
+ _tt_global_del(bat_priv, tt_global_entry, message);
+
out:
if (tt_global_entry)
tt_global_entry_free_ref(tt_global_entry);
--
1.7.5.4
Hi,
next round for the selectable routing algorithm patches. The major change
which comes with this patchset is the module parameter that allows to set
the routing algorithm. This setting only affects batX interfaces created
after the change has been made. The list of available routing algorithms
moved to the batman-adv debugfs root directory, so that it is visible
even before the first batX interface has been created. The sysfs entry
still shows the configured routing algorithm but does not allow to change
it.
Big kudos to Sven for helping me out with the compat macros.
Cheers,
Marek
The long line was introduced with b26e478f8f.
Signed-off-by: Marek Lindner <lindner_marek(a)yahoo.de>
---
net/batman-adv/translation-table.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
index ab8dea8..58361ed 100644
--- a/net/batman-adv/translation-table.c
+++ b/net/batman-adv/translation-table.c
@@ -679,7 +679,7 @@ void tt_global_del(struct bat_priv *bat_priv,
* 2) the client roamed to us => we can directly delete
* the global entry, since it is useless now. */
tt_local_entry = tt_local_hash_find(bat_priv,
- tt_global_entry->common.addr);
+ tt_global_entry->common.addr);
if (!tt_local_entry) {
tt_global_entry->common.flags |= TT_CLIENT_ROAM;
tt_global_entry->roam_at = jiffies;
--
1.7.5.4
Hi David,
here comes the next batch I'd like to get the pulled into net-next-2.6/3.3.
We have a couple of minor fixes for unregister_netdevice(), compat flags,
return value checks and a readme update. Plus the regression fix from Dan
that addresses a bug introduced with the previous batch. Security
researcher Paul Kot checked our kernelland / user space communication and
found a subtle bug which would make batman-adv write to memory locations
it should not write to. However, he did not find a way to exploit this
bug, therefore we classified it as "non-critical". Please let us know if
that is not ok with you.
Thanks,
Marek
The following changes since commit 76e8d7b0d1b0091929e8cd18551a87b6bb6ef2c1:
batman-adv: Fix range check for expected packets (2011-11-20 13:08:35 +0100)
are available in the git repository at:
git://git.open-mesh.org/linux-merge.git batman-adv/next
Antonio Quartulli (3):
batman-adv: create a common substructure for tt_global/local_entry
batman-adv: generalise tt_local_reset_flags()
batman-adv: format multi-line if in the correct way
Dan Carpenter (1):
batman-adv: remove extra negation in gw_out_of_range()
Marek Lindner (2):
batman-adv: report compat_version in version field in case of version mismatch
batman-adv: readme update (mention ap isolation and new log level)
Paul Kot (1):
batman-adv: bat_socket_read missing checks
Simon Wunderlich (2):
batman-adv: check return value for hash_add()
batman-adv: use unregister_netdevice() when softif_create fails
Sven Eckelmann (2):
batman-adv: Directly check read of icmp packet in copy_from_user
batman-adv: Only write requested number of byte to user buffer
Documentation/networking/batman-adv.txt | 7 +-
net/batman-adv/gateway_client.c | 2 +-
net/batman-adv/icmp_socket.c | 14 +-
net/batman-adv/routing.c | 3 +-
net/batman-adv/soft-interface.c | 2 +-
net/batman-adv/translation-table.c | 336 ++++++++++++++++++-------------
net/batman-adv/types.h | 14 +-
net/batman-adv/vis.c | 6 +-
8 files changed, 216 insertions(+), 168 deletions(-)
Signed-off-by: Marek Lindner <lindner_marek(a)yahoo.de>
---
Thanks to Sven we even have a 'nice' compat.h workaround. :)
compat.h | 1 +
hard-interface.c | 8 ++++++++
2 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/compat.h b/compat.h
index 964c066..dcd92d1 100644
--- a/compat.h
+++ b/compat.h
@@ -52,6 +52,7 @@
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36)
#define __rcu
+#define IFF_BRIDGE_PORT 0 || (hard_iface->net_dev->br_port ? 1 : 0)
#endif /* < KERNEL_VERSION(2, 6, 36) */
diff --git a/hard-interface.c b/hard-interface.c
index d3e0e32..68b667c 100644
--- a/hard-interface.c
+++ b/hard-interface.c
@@ -281,6 +281,14 @@ int hardif_enable_interface(struct hard_iface *hard_iface,
if (!atomic_inc_not_zero(&hard_iface->refcount))
goto out;
+ /* hard-interface is part of a bridge */
+ if (hard_iface->net_dev->priv_flags & IFF_BRIDGE_PORT)
+ pr_err("You are about to enable batman-adv on '%s' which "
+ "already is part of a bridge. Unless you know exactly "
+ "what you are doing this is probably wrong and won't "
+ "work the way you think it would.\n",
+ hard_iface->net_dev->name);
+
soft_iface = dev_get_by_name(&init_net, iface_name);
if (!soft_iface) {
--
1.7.5.4