Re-land "[shill] Add hardware address to Device objects."

Forgot some headers...

BUG=chromium-os:17744
TEST=unit

This reverts commit 0fda552b0fec3498403336acb9e89dd7799cac74.

Change-Id: I1cd05e47d29bc7ea2a065cabf1d81dd37f74c0f8
Reviewed-on: http://gerrit.chromium.org/gerrit/6270
Reviewed-by: Chris Masone <cmasone@chromium.org>
Tested-by: Chris Masone <cmasone@chromium.org>
diff --git a/device.cc b/device.cc
index 851c922..838f311 100644
--- a/device.cc
+++ b/device.cc
@@ -45,9 +45,11 @@
                EventDispatcher *dispatcher,
                Manager *manager,
                const string &link_name,
+               const string &address,
                int interface_index)
     : powered_(true),
       reconnect_(true),
+      hardware_address_(address),
       interface_index_(interface_index),
       running_(false),
       link_name_(link_name),
@@ -136,6 +138,9 @@
 string Device::GetStorageIdentifier() {
   string id = GetRpcIdentifier();
   ControlInterface::RpcIdToStorageId(&id);
+  size_t needle = id.find('_');
+  LOG_IF(ERROR, needle == string::npos) << "No _ in storage id?!?!";
+  id.replace(id.begin() + needle + 1, id.end(), hardware_address_);
   return id;
 }