Implement create interface for ipaddress

Change-Id: Ia4598c27c11667dafb70a8af58871661b7042d0f
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
diff --git a/network_manager.cpp b/network_manager.cpp
index 479e8a4..7362943 100644
--- a/network_manager.cpp
+++ b/network_manager.cpp
@@ -4,7 +4,7 @@
 #include <phosphor-logging/log.hpp>
 
 #include <algorithm>
-
+#include <experimental/filesystem>
 #include <arpa/inet.h>
 #include <dirent.h>
 #include <net/if.h>
@@ -14,34 +14,38 @@
 {
 namespace network
 {
+
 using namespace phosphor::logging;
+namespace fs = std::experimental::filesystem;
 
 Manager::Manager(sdbusplus::bus::bus& bus, const char* objPath):
     details::VLANCreateIface(bus, objPath, true)
 {
-    auto interfaceInfoList = getInterfaceAndaddrs();
+    auto interfaceInfoList = getInterfaceAddrs();
 
     for( const auto& intfInfo : interfaceInfoList )
     {
-        std::string  objectPath = std::string(OBJ_NETWORK) + "/" + intfInfo.first;
+
+        fs::path objectPath = std::string(OBJ_NETWORK);
+        objectPath /= intfInfo.first;
 
         this->interfaces.emplace(std::make_pair(
                                  intfInfo.first,
                                  std::make_unique<
                                  phosphor::network::EthernetInterface >
                                  (bus, objectPath.c_str(),
-                                 false)));
+                                 false,intfInfo.second)));
     }
 }
 
-void Manager::vLAN(details::IntfName interfaceName, uint16_t id)
+void Manager::vLAN(IntfName interfaceName, uint16_t id)
 {
 }
 
-details::IntfAddrMap Manager::getInterfaceAndaddrs() const
+IntfAddrMap Manager::getInterfaceAddrs() const
 {
-    details::IntfAddrMap intfMap;
-    details::AddrList addrList;
+    IntfAddrMap intfMap;
+    AddrList addrList;
     struct ifaddrs* ifaddr;
     // attempt to fill struct with ifaddrs
     if (getifaddrs(&ifaddr) == -1)
@@ -86,28 +90,28 @@
                 addrList.clear();
             }
             intfName = ifa->ifa_name;
-            details::AddrInfo info;
-            char tmp[INET6_ADDRSTRLEN] = { 0 };
+            AddrInfo info;
+            char ip[INET6_ADDRSTRLEN] = { 0 };
 
             if (ifa->ifa_addr->sa_family == AF_INET)
             {
 
                 inet_ntop(ifa->ifa_addr->sa_family,
                           &(((struct sockaddr_in*)(ifa->ifa_addr))->sin_addr),
-                          tmp,
-                          sizeof(tmp));
+                          ip,
+                          sizeof(ip));
             }
             else
             {
                 inet_ntop(ifa->ifa_addr->sa_family,
                           &(((struct sockaddr_in6*)(ifa->ifa_addr))->sin6_addr),
-                          tmp,
-                          sizeof(tmp));
+                          ip,
+                          sizeof(ip));
 
             }
 
             info.addrType = ifa->ifa_addr->sa_family;
-            info.ipaddress = tmp;
+            info.ipaddress = ip;
             addrList.emplace_back(info);
         }
     }