Index: source/ariba/communication/networkinfo/NetworkChangeDetection.cpp
===================================================================
--- source/ariba/communication/networkinfo/NetworkChangeDetection.cpp	(revision 10700)
+++ source/ariba/communication/networkinfo/NetworkChangeDetection.cpp	(revision 10767)
@@ -38,4 +38,24 @@
 
 #include "NetworkChangeDetection.h"
+
+#include <string>
+#include <algorithm>
+#include <cerrno>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <boost/bind.hpp>
+#include <sys/socket.h>
+
+extern "C" {
+	#include <linux/netlink.h>
+	#include <linux/rtnetlink.h>
+}
+
+#include "ariba/utility/system/SystemQueue.h"
+
+using std::find;
+using ariba::utility::SystemQueue;
+using ariba::utility::SystemEventType;
 
 namespace ariba {
@@ -123,5 +143,5 @@
 	if( obj->routingSocket < 0 ){
 		logging_error("could not connect to routing socket: " +
-					string(strerror(errno)));
+					std::string(strerror(errno)));
 		return;
 	}
@@ -155,5 +175,5 @@
 	if( ret < 0 ){
 		close( obj->routingSocket );
-		logging_error( "could not bind routing socket: " + string(strerror(errno)) );
+		logging_error( "could not bind routing socket: " + std::string(strerror(errno)) );
 		return;
 	}
@@ -185,5 +205,5 @@
 			// all others are some kind of error
 			logging_error( "could not read from routing socket: " +
-							string(strerror(errno)) );
+							std::string(strerror(errno)) );
 			break;
 		}
Index: source/ariba/communication/networkinfo/NetworkChangeDetection.h
===================================================================
--- source/ariba/communication/networkinfo/NetworkChangeDetection.h	(revision 10700)
+++ source/ariba/communication/networkinfo/NetworkChangeDetection.h	(revision 10767)
@@ -40,37 +40,20 @@
 #define __NETWORK_CHANGE_DETECTION_H
 
-#include <cerrno>
-#include <csignal>
+// Forward declarations
+struct nlmsghdr;
+
 #include <vector>
-#include <algorithm>
-#include <string>
-#include <net/if.h>
-#include <arpa/inet.h>
-#include <linux/types.h>
-#include <linux/netlink.h>
-#include <linux/rtnetlink.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <boost/thread/mutex.hpp>
 #include <boost/thread/thread.hpp>
-#include <boost/utility.hpp>
-#include <boost/bind.hpp>
-#include "ariba/communication/networkinfo/NetworkChangeInterface.h"
-#include "ariba/communication/networkinfo/NetworkInformation.h"
-#include "ariba/utility/system/SystemQueue.h"
+
+#include "NetworkInformation.h"
+#include "NetworkChangeInterface.h"
 #include "ariba/utility/logging/Logging.h"
-
-using std::string;
-using std::vector;
-using std::find;
-using ariba::utility::SystemQueue;
-using ariba::utility::SystemEvent;
-using ariba::utility::SystemEventType;
-using ariba::utility::SystemEventListener;
-using ariba::communication::NetworkInformation;
+#include "ariba/utility/system/SystemEventListener.h"
 
 namespace ariba {
 namespace communication {
+
+using ariba::utility::SystemEvent;
+using ariba::utility::SystemEventListener;
 
 class NetworkChangeDetection : public SystemEventListener {
@@ -87,5 +70,5 @@
 
 private:
-	typedef vector<NetworkChangeInterface*> RegistrationList;
+	typedef std::vector<NetworkChangeInterface*> RegistrationList;
 	RegistrationList registrations;
 
