diff options
author | Ratan Gupta <ratagupt@in.ibm.com> | 2017-07-25 13:47:13 +0530 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2017-08-13 11:32:30 +0000 |
commit | 5978dd11cba74452d6550399191195c9617c2984 (patch) | |
tree | 31afca0f99c2f8e21d6de8747f671922be567939 /ethernet_interface.cpp | |
parent | 255d514ef2a61125670ed6a5cdf942a287315749 (diff) | |
download | phosphor-networkd-5978dd11cba74452d6550399191195c9617c2984.tar.gz phosphor-networkd-5978dd11cba74452d6550399191195c9617c2984.zip |
Create the VLAN Interface Object
Change-Id: I118fc4bbcad2a478a8aad976e0619537780c1227
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
Diffstat (limited to 'ethernet_interface.cpp')
-rw-r--r-- | ethernet_interface.cpp | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/ethernet_interface.cpp b/ethernet_interface.cpp index d7648a2..ef7b9df 100644 --- a/ethernet_interface.cpp +++ b/ethernet_interface.cpp @@ -1,6 +1,7 @@ #include "config.h" #include "ipaddress.hpp" #include "ethernet_interface.hpp" +#include "vlan_interface.hpp" #include "network_manager.hpp" #include "routing_table.hpp" @@ -36,15 +37,17 @@ EthernetInterface::EthernetInterface(sdbusplus::bus::bus& bus, Manager& parent, bool emitSignal) : Ifaces(bus, objPath.c_str(), true), + confDir(NETWORK_CONF_DIR), bus(bus), manager(parent), objPath(objPath) { auto intfName = objPath.substr(objPath.rfind("/") + 1); + std::replace(intfName.begin(), intfName.end(), '_', '.'); interfaceName(intfName); dHCPEnabled(dhcpEnabled); mACAddress(getMACAddress()); - createIPAddressObjects(); + // Emit deferred signal. if (emitSignal) { @@ -58,9 +61,11 @@ void EthernetInterface::createIPAddressObjects() addrs.clear(); auto addrs = getInterfaceAddrs()[interfaceName()]; + IP::Protocol addressType = IP::Protocol::IPv4; IP::AddressOrigin origin = IP::AddressOrigin::Static; route::Table routingTable; + for (auto& addr : addrs) { if (addr.addrType == AF_INET6) @@ -284,8 +289,13 @@ std::string EthernetInterface::generateObjectPath(IP::Protocol addressType, bool EthernetInterface::dHCPEnabled(bool value) { + if (value == EthernetInterfaceIntf::dHCPEnabled()) + { + return value; + } + EthernetInterfaceIntf::dHCPEnabled(value); - if (value == true) + if (value) { manager.writeToConfigurationFile(); createIPAddressObjects(); @@ -293,5 +303,30 @@ bool EthernetInterface::dHCPEnabled(bool value) return value; } +void EthernetInterface::createVLAN(VlanId id) +{ + std::string vlanInterfaceName = interfaceName() + "." + + std::to_string(id); + std::string path = objPath; + path += "_" + std::to_string(id); + + + auto vlanIntf = std::make_unique<phosphor::network::VlanInterface>( + bus, + path.c_str(), + EthernetInterfaceIntf::dHCPEnabled(), + id, + *this, + manager); + + // write the device file for the vlan interface. + vlanIntf->writeDeviceFile(); + + this->vlanInterfaces.emplace(std::move(vlanInterfaceName), + std::move(vlanIntf)); + // write the new vlan device entry to the configuration(network) file. + manager.writeToConfigurationFile(); + +} }//namespace network }//namespace phosphor |