Index: source/ariba/communication/networkinfo/AddressDiscovery.hpp
===================================================================
--- source/ariba/communication/networkinfo/AddressDiscovery.hpp	(revision 5284)
+++ 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_ */
