From a271028e375978ed2f623ae500536101a4ec996b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 12 Aug 2010 13:27:50 +0000 Subject: [PATCH] * Also create a new address for B_SOCKET_SET_ALIAS if the index is -1 - this now has an almost equivalent logic to the old setters like SIOCSIFADDR. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38054 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/network/stack/interfaces.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/add-ons/kernel/network/stack/interfaces.cpp b/src/add-ons/kernel/network/stack/interfaces.cpp index da9148a92f..60c5d9345d 100644 --- a/src/add-ons/kernel/network/stack/interfaces.cpp +++ b/src/add-ons/kernel/network/stack/interfaces.cpp @@ -724,6 +724,19 @@ Interface::Control(net_domain* domain, int32 option, ifreq& request, // Find first address for family address = FirstForFamily(domain->family); } + if (address == NULL) { + // Create new on the fly + address = new(std::nothrow) InterfaceAddress(this, domain); + if (address == NULL) + return B_NO_MEMORY; + + status_t status = AddAddress(address); + if (status != B_OK) + return status; + + // Note, even if setting the address failed, the empty + // address added here will still be added to the interface. + } } else address = AddressAt(aliasRequest.ifra_index);