| #include "config.h" |
| #include "ethernet_interface.hpp" |
| #include "vlan_interface.hpp" |
| #include "network_manager.hpp" |
| |
| #include <phosphor-logging/log.hpp> |
| #include "xyz/openbmc_project/Common/error.hpp" |
| #include <phosphor-logging/elog-errors.hpp> |
| |
| #include <string> |
| #include <algorithm> |
| #include <fstream> |
| #include <experimental/filesystem> |
| |
| namespace phosphor |
| { |
| namespace network |
| { |
| |
| using namespace phosphor::logging; |
| using namespace sdbusplus::xyz::openbmc_project::Common::Error; |
| |
| VlanInterface::VlanInterface(sdbusplus::bus::bus& bus, |
| const std::string& objPath, |
| bool dhcpEnabled, |
| uint32_t vlanID, |
| EthernetInterface& intf, |
| Manager& parent ) : |
| VlanIntfObject(bus, objPath.c_str(), true), |
| EthernetInterface(bus, objPath, dhcpEnabled, parent, false), |
| parentInterface(intf) |
| { |
| id(vlanID); |
| VlanIface::interfaceName(EthernetInterface::interfaceName()); |
| |
| VlanIntfObject::emit_object_added(); |
| } |
| |
| void VlanInterface::writeDeviceFile() |
| { |
| using namespace std::string_literals; |
| fs::path confPath = manager.getConfDir(); |
| std::string fileName = EthernetInterface::interfaceName() + ".netdev"s; |
| confPath /= fileName; |
| std::fstream stream; |
| try |
| { |
| stream.open(confPath.c_str(), std::fstream::out); |
| } |
| catch (std::ios_base::failure& e) |
| { |
| log<level::ERR>("Unable to open the VLAN device file", |
| entry("FILE=%s", confPath.c_str()), |
| entry("ERROR=%s", e.what())); |
| elog<InternalFailure>(); |
| |
| } |
| |
| stream << "[" << "NetDev" << "]\n"; |
| stream << "Name=" << EthernetInterface::interfaceName() << "\n"; |
| stream << "Kind=vlan" << "\n"; |
| stream << "[VLAN]" << "\n"; |
| stream << "Id=" << id() << "\n"; |
| stream.close(); |
| } |
| |
| }//namespace network |
| }//namespace phosphor |