batctl: Don't stop when create_interface detected existing interface

Message ID 20210115223831.18027-1-sven@narfation.org (mailing list archive)
State Accepted, archived
Delegated to: Simon Wunderlich
Headers
Series batctl: Don't stop when create_interface detected existing interface |

Commit Message

Sven Eckelmann Jan. 15, 2021, 10:38 p.m. UTC
  "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.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
 interface.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Patch

diff --git a/interface.c b/interface.c
index 77ca1a0..7f77459 100644
--- a/interface.c
+++ b/interface.c
@@ -526,7 +526,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, &create_params);
-		if (ret < 0) {
+		if (ret < 0 && ret != -EEXIST) {
 			fprintf(stderr,
 				"Error - failed to create batman-adv interface: %s\n",
 				strerror(-ret));