Index: source/ariba/communication/BaseCommunication.cpp
===================================================================
--- source/ariba/communication/BaseCommunication.cpp	(revision 5404)
+++ source/ariba/communication/BaseCommunication.cpp	(revision 5406)
@@ -84,5 +84,5 @@
 
 	logging_info( "Searching for local locators ..." );
-	discoverEndpoints(localDescriptor.getEndpoints());
+	discover_endpoints(localDescriptor.getEndpoints());
 	logging_info( "Done. Local endpoints = " << localDescriptor.toString() );
 
Index: source/ariba/communication/EndpointDescriptor.h
===================================================================
--- source/ariba/communication/EndpointDescriptor.h	(revision 5404)
+++ source/ariba/communication/EndpointDescriptor.h	(revision 5406)
@@ -111,10 +111,10 @@
 	bool operator==(const EndpointDescriptor& rh) const {
 		if (rh.isUnspecified() && isUnspecified()) return true;
-		return false;
+		return endpoints == rh.endpoints;
 	}
 
 	bool operator!=(const EndpointDescriptor& rh) const {
 		if (!rh.isUnspecified() && !isUnspecified()) return true;
-		return false;
+		return endpoints != rh.endpoints;
 	}
 
Index: source/ariba/communication/networkinfo/AddressDiscovery.hpp
===================================================================
--- source/ariba/communication/networkinfo/AddressDiscovery.hpp	(revision 5404)
+++ source/ariba/communication/networkinfo/AddressDiscovery.hpp	(revision 5406)
@@ -6,8 +6,18 @@
 #include <sys/types.h>
 #include <sys/socket.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+
 #include <arpa/inet.h>
+
 #include <netinet/in.h>
+
 #include <net/if.h>
+
 #include <ifaddrs.h>
+
+#include <bluetooth/bluetooth.h>
+#include <bluetooth/hci.h>
+#include <bluetooth/hci_lib.h>
 
 using namespace ariba::addressing;
@@ -26,5 +36,22 @@
 }
 
-void discoverEndpoints( endpoint_set& endpoints ) {
+
+int dev_info(int s, int dev_id, long arg) {
+	endpoint_set* set = (endpoint_set*)arg;
+	struct hci_dev_info di;
+	di.dev_id = dev_id;
+	if (ioctl(s, HCIGETDEVINFO, (void *) &di)) return 0;
+	mac_address mac;
+	mac.bluetooth( di.bdaddr );
+	address_vf vf = mac;
+	set->add(vf);
+	return 0;
+}
+
+void discover_bluetooth( endpoint_set& endpoints ) {
+	hci_for_each_dev(HCI_UP, &dev_info, (long)&endpoints );
+}
+
+void discover_ip_addresses( endpoint_set& endpoints ) {
 	struct ifaddrs* ifaceBuffer = NULL;
 	struct ifaddrs* tmpAddr     = NULL;
@@ -63,8 +90,13 @@
 			mac_address mac = getMacFromIF(i->ifa_name);
 			address_vf vf = mac;
-			endpoints.add( vf );
+//			endpoints.add( vf );
 		}
 	}
 }
 
+void discover_endpoints( endpoint_set& endpoints ) {
+	discover_ip_addresses( endpoints );
+	discover_bluetooth( endpoints );
+}
+
 #endif /* ADDRESSDISCOVERY_HPP_ */
