Repository : ssh://git@diktynna/batctl
On branch : master
commit 5d465bfd9a19c4bda20fb4e36c6e4b22c56ceb17 Author: Sven Eckelmann sven@narfation.org Date: Fri Jan 15 23:38:31 2021 +0100
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
5d465bfd9a19c4bda20fb4e36c6e4b22c56ceb17 interface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/interface.c b/interface.c index d0d9435..f7397b8 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));