[PATCH 2/2] batctl: interface: return fail for non-existing interface

Sven Eckelmann <[email protected]> Sun, 05 Jul 2026 15:04:27 +0200
Newsgroups org.open-mesh.lists.batman
Message-ID <[email protected]>
The add/del loop skips a non-existent interface name with a plain continue
and returns a success when no other error class was detected. Which causes
scripts (depending on the return value) to miss the problem.

Remember that a name could not be resolved and return EXIT_FAILURE at
the end, while still processing the remaining interfaces.

Signed-off-by: Sven Eckelmann <[email protected]>
---
 interface.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/interface.c b/interface.c
index c734eda..03f2e45 100644
--- a/interface.c
+++ b/interface.c
@@ -405,6 +405,7 @@ static int set_master_interface(const char *iface, unsigned int ifmaster)
 static int interface(struct state *state, int argc, char **argv)
 {
 	struct interface_create_params create_params = {};
+	bool iface_error = false;
 	bool manual_mode = false;
 	unsigned int ifmaster;
 	unsigned int ifindex;
@@ -532,6 +533,7 @@ static int interface(struct state *state, int argc, char **argv)
 
 		if (!ifindex) {
 			fprintf(stderr, "Error - interface does not exist: %s\n", rest_argv[i]);
+			iface_error = true;
 			continue;
 		}
 
@@ -562,6 +564,9 @@ static int interface(struct state *state, int argc, char **argv)
 				state->mesh_iface, state->mesh_iface);
 	}
 
+	if (iface_error)
+		return EXIT_FAILURE;
+
 	return EXIT_SUCCESS;
 
 err:

-- 
2.47.3