diff options
author | Ratan Gupta <ratagupt@in.ibm.com> | 2017-04-21 08:45:23 +0530 |
---|---|---|
committer | Ratan Gupta <ratagupt@in.ibm.com> | 2017-05-23 12:16:52 +0530 |
commit | 82549ccaa0f6373f664b260c7461adfd9f7665ba (patch) | |
tree | d183620e29632d2ed6c95ba9f8186f3965d09663 /network_manager.cpp | |
parent | db81a8acba51722b81ceeb22d0e6a3f688b652ad (diff) | |
download | phosphor-networkd-82549ccaa0f6373f664b260c7461adfd9f7665ba.tar.gz phosphor-networkd-82549ccaa0f6373f664b260c7461adfd9f7665ba.zip |
Implement create interface for ipaddress
Change-Id: Ia4598c27c11667dafb70a8af58871661b7042d0f
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
Diffstat (limited to 'network_manager.cpp')
-rw-r--r-- | network_manager.cpp | 34 |
1 files changed, 19 insertions, 15 deletions
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 phosphor { 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 @@ details::IntfAddrMap Manager::getInterfaceAndaddrs() const 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); } } |