batctl: Merge bugfixes from 2021.0

* Don't stop when create_interface detected existing interface
* Fix retrieval of meshif ap_isolation

Signed-off-by: Sven Eckelmann <sven@narfation.org>
This commit is contained in:
Sven Eckelmann 2021-01-28 21:34:50 +01:00
parent 59e8d5fa8c
commit 862a2dfb5f
3 changed files with 58 additions and 1 deletions

View File

@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=batctl
PKG_VERSION:=2019.2
PKG_RELEASE:=7
PKG_RELEASE:=8
PKG_HASH:=fb656208ff7d4cd8b1b422f60c9e6d8747302a347cbf6c199d7afa9b80f80ea3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz

View File

@ -0,0 +1,31 @@
From: Sven Eckelmann <sven@narfation.org>
Date: Fri, 15 Jan 2021 23:38:31 +0100
Subject: batctl: Don't stop when create_interface detected existing interface
"batctl meshif bat0 interface add ..." should never be called in parallel.
But when something still does this, it could be that the code first detects
the missing meshif and then tries to create it - which fails when another
process requested the creation of the same interface slightly before batctl
did it.
But this should not prevent batctl to add the lower interface to the
meshif. It is not really important that the batctl process was the one
which created it - only that it exists is important.
Fixes: 25022e0b154d ("batctl: Use rtnl to add/remove interfaces")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Origin: upstream, https://git.open-mesh.org/batctl.git/commit/5d465bfd9a19c4bda20fb4e36c6e4b22c56ceb17
diff --git a/interface.c b/interface.c
index 138a6cd45744081a04f986fe4be67901b3305b74..2c6a78ad17cb716fbb7f6a1c78e0076494397b01 100644
--- a/interface.c
+++ b/interface.c
@@ -479,7 +479,7 @@ static int interface(struct state *state, int argc, char **argv)
ifmaster = if_nametoindex(state->mesh_iface);
if (!manual_mode && !ifmaster && rest_argv[0][0] == 'a') {
ret = create_interface(state->mesh_iface);
- if (ret < 0) {
+ if (ret < 0 && ret != -EEXIST) {
fprintf(stderr,
"Error - failed to create batman-adv interface: %s\n",
strerror(-ret));

View File

@ -0,0 +1,26 @@
From: Sven Eckelmann <sven@narfation.org>
Date: Sat, 31 Oct 2020 18:00:26 +0100
Subject: batctl: Fix retrieval of meshif ap_isolation
The batadv command to retrieve the attributes is called
BATADV_CMD_GET_MESH. The used BATADV_CMD_SET_MESH will only return the
current settings via the "config" multicast group which is not evaluated by
the ap_isolation command.
Fixes: c56a63a5f12a ("batctl: Support generic netlink for ap_isolation command")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Origin: upstream, https://git.open-mesh.org/batctl.git/commit/107cee536a0f8024208923f49a2a548b40bfc432
diff --git a/ap_isolation.c b/ap_isolation.c
index 36fd4d607d03768251150951ebe450740501d446..4854bcd1d6514a02786388dc014966f326818122 100644
--- a/ap_isolation.c
+++ b/ap_isolation.c
@@ -36,7 +36,7 @@ static int get_attrs_ap_isolation(struct nl_msg *msg, void *arg)
static int get_ap_isolation(struct state *state)
{
- enum batadv_nl_commands nl_cmd = BATADV_CMD_SET_MESH;
+ enum batadv_nl_commands nl_cmd = BATADV_CMD_GET_MESH;
if (state->selector == SP_VLAN)
nl_cmd = BATADV_CMD_GET_VLAN;