diff --git a/src/servers/net/AutoconfigLooper.cpp b/src/servers/net/AutoconfigLooper.cpp index 18b7d6a583..bc1b62280a 100644 --- a/src/servers/net/AutoconfigLooper.cpp +++ b/src/servers/net/AutoconfigLooper.cpp @@ -32,7 +32,8 @@ AutoconfigLooper::AutoconfigLooper(BMessenger target, const char* device) : BLooper(device), fTarget(target), fDevice(device), - fCurrentClient(NULL) + fCurrentClient(NULL), + fLastMediaStatus(0) { BMessage ready(kMsgReadyToRun); PostMessage(&ready); @@ -148,11 +149,12 @@ AutoconfigLooper::MessageReceived(BMessage* message) || message->FindInt32("media", &media) != B_OK) break; - if ((media & IFM_ACTIVE) != 0) { + if ((fLastMediaStatus & IFM_ACTIVE) != (media & IFM_ACTIVE)) { // Reconfigure the interface when we have a link again _ConfigureIPv4(); //_ConfigureIPv6(); // TODO: router advertisement and dhcpv6 } + fLastMediaStatus = media; break; default: diff --git a/src/servers/net/AutoconfigLooper.h b/src/servers/net/AutoconfigLooper.h index d08a8ebd52..fef9c2f95c 100644 --- a/src/servers/net/AutoconfigLooper.h +++ b/src/servers/net/AutoconfigLooper.h @@ -34,6 +34,7 @@ private: BMessenger fTarget; BString fDevice; AutoconfigClient* fCurrentClient; + int32 fLastMediaStatus; }; #endif // AUTOCONFIG_LOOPER_H