batman-adv: Keep batadv netdev when hardif disappears

Message ID 1468158477-10941-1-git-send-email-sven@narfation.org (mailing list archive)
State Accepted, archived
Commit be7cd9d9bb5d8e4131f224253cf0386d690d6571
Delegated to: Marek Lindner
Headers

Commit Message

Sven Eckelmann July 10, 2016, 1:47 p.m. UTC
  Switch-like virtual interfaces like bridge or openvswitch don't destroy
itself when all their attached netdevices dissappear. Instead they only
remove the link to the unregistered device and keep working until they get
removed manually.

This has the benefit that all configurations for this interfaces are kept
and daemons reacting to rtnl events can just add new slave interfaces
without going through the complete configuration of the switch-like
netdevice.

Handling unregister events of client devices similar in batman-adv allows
users to drop their current workaround of dummy netdevices attached to
batman-adv soft-interfaces.

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

Comments

Marek Lindner July 22, 2016, 8:54 a.m. UTC | #1
On Sunday, July 10, 2016 15:47:57 Sven Eckelmann wrote:
> Switch-like virtual interfaces like bridge or openvswitch don't destroy
> itself when all their attached netdevices dissappear. Instead they only
> remove the link to the unregistered device and keep working until they get
> removed manually.
> 
> This has the benefit that all configurations for this interfaces are kept
> and daemons reacting to rtnl events can just add new slave interfaces
> without going through the complete configuration of the switch-like
> netdevice.
> 
> Handling unregister events of client devices similar in batman-adv allows
> users to drop their current workaround of dummy netdevices attached to
> batman-adv soft-interfaces.
> 
> Signed-off-by: Sven Eckelmann <sven@narfation.org>
> ---
>  net/batman-adv/hard-interface.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied in revision be7cd9d.

Thanks,
Marek
  

Patch

diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c
index 714af8e..c409534 100644
--- a/net/batman-adv/hard-interface.c
+++ b/net/batman-adv/hard-interface.c
@@ -691,7 +691,7 @@  static void batadv_hardif_remove_interface(struct batadv_hard_iface *hard_iface)
 	/* first deactivate interface */
 	if (hard_iface->if_status != BATADV_IF_NOT_IN_USE)
 		batadv_hardif_disable_interface(hard_iface,
-						BATADV_IF_CLEANUP_AUTO);
+						BATADV_IF_CLEANUP_KEEP);
 
 	if (hard_iface->if_status != BATADV_IF_NOT_IN_USE)
 		return;