From f6d219a166a127cb7e4de2486445e7d189207124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 15 Dec 2006 14:10:25 +0000 Subject: [PATCH] When removing an interface, we must make sure it's not still up (ie. we need to bring it down in that case). This fixes the problem that you couldn't bring an ethernet interface up again, after you deleted it once. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19524 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/network/stack/interfaces.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/add-ons/kernel/network/stack/interfaces.cpp b/src/add-ons/kernel/network/stack/interfaces.cpp index 340f28f94e..08e473d4e6 100644 --- a/src/add-ons/kernel/network/stack/interfaces.cpp +++ b/src/add-ons/kernel/network/stack/interfaces.cpp @@ -157,6 +157,12 @@ create_interface(net_domain *domain, const char *name, const char *baseName, void delete_interface(net_interface_private *interface) { + if ((interface->flags & IFF_UP) != 0) { + // the interface is still up - we need to change that before deleting it + interface->flags &= ~IFF_UP; + interface->device_interface->module->down(interface->device_interface->device); + } + put_device_interface(interface->device_interface); free(interface->address);