summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0011-Added-enable-disable-control-of-the-Network-Interfac.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0011-Added-enable-disable-control-of-the-Network-Interfac.patch')
-rw-r--r--meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0011-Added-enable-disable-control-of-the-Network-Interfac.patch189
1 files changed, 0 insertions, 189 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0011-Added-enable-disable-control-of-the-Network-Interfac.patch b/meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0011-Added-enable-disable-control-of-the-Network-Interfac.patch
deleted file mode 100644
index 58dcf3f21..000000000
--- a/meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0011-Added-enable-disable-control-of-the-Network-Interfac.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-From 4bfb4ad5ff795d78e06fbeaf1664df6819880f50 Mon Sep 17 00:00:00 2001
-From: Johnathan Mantey <johnathanx.mantey@intel.com>
-Date: Tue, 29 Oct 2019 16:20:28 -0700
-Subject: [PATCH] Added enable/disable control of the Network Interface Card
-
-Implemented enable/disable function to perform
-"ip link set eth(x) up"
-"ip link set eth(x) down"
-functionality from DBus.
-
-Tested:
-
-Confirmed Redfish PATCH commands on the InterfaceEnabled property
-changes the NIC state. Confirmed the NIC is DOWN/UP using "ip link".
-Confirmed "ip link" state changes can be obsserved from dbus-send
-commands, and from Redfish GET actions.
-
-Confirmed the link is inactive after a reboot.
-
-Confirmed link stays down despite assigning an IP manually.
-
-Confirmed link stays down despite enabling DHCP.
-
-Change-Id: I4152b53055e6546f7a6ca81b5a5eef6f689bcc66
-Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
----
- ethernet_interface.cpp | 73 ++++++++++++++++++++++++++++++++++++++++--
- ethernet_interface.hpp | 11 ++++++-
- 2 files changed, 81 insertions(+), 3 deletions(-)
-
-diff --git a/ethernet_interface.cpp b/ethernet_interface.cpp
-index 8b8f698..a2754a4 100644
---- a/ethernet_interface.cpp
-+++ b/ethernet_interface.cpp
-@@ -85,6 +85,7 @@ EthernetInterface::EthernetInterface(sdbusplus::bus::bus& bus,
- EthernetInterfaceIntf::autoNeg(std::get<2>(ifInfo));
- EthernetInterfaceIntf::speed(std::get<0>(ifInfo));
- EthernetInterfaceIntf::linkUp(std::get<3>(ifInfo));
-+ EthernetInterfaceIntf::nICEnabled(std::get<4>(ifInfo));
- #endif
- getChannelPrivilege(intfName);
-
-@@ -323,11 +324,12 @@ InterfaceInfo EthernetInterface::getInterfaceInfo() const
- Autoneg autoneg{0};
- DuplexMode duplex{0};
- LinkUp linkState{false};
-+ NICEnabled nicEnabled{false};
- EthernetIntfSocket eifSocket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
-
- if (eifSocket.sock < 0)
- {
-- return std::make_tuple(speed, duplex, autoneg, linkState);
-+ return std::make_tuple(speed, duplex, autoneg, linkState, nicEnabled);
- }
-
- std::strncpy(ifr.ifr_name, interfaceName().c_str(), IFNAMSIZ - 1);
-@@ -341,9 +343,10 @@ InterfaceInfo EthernetInterface::getInterfaceInfo() const
- autoneg = edata.autoneg;
- }
-
-+ nicEnabled = nICEnabled();
- linkState = linkUp();
-
-- return std::make_tuple(speed, duplex, autoneg, linkState);
-+ return std::make_tuple(speed, duplex, autoneg, linkState, nicEnabled);
- }
- #endif
-
-@@ -548,6 +551,67 @@ bool EthernetInterface::linkUp() const
- log<level::ERR>("ioctl failed for SIOCGIFFLAGS:",
- entry("ERROR=%s", strerror(errno)));
- }
-+ return value;
-+}
-+
-+bool EthernetInterface::nICEnabled() const
-+{
-+ EthernetIntfSocket eifSocket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
-+ bool value = EthernetInterfaceIntf::nICEnabled();
-+
-+ if (eifSocket.sock < 0)
-+ {
-+ return value;
-+ }
-+
-+ ifreq ifr{0};
-+ std::strncpy(ifr.ifr_name, interfaceName().c_str(), IF_NAMESIZE - 1);
-+ if (ioctl(eifSocket.sock, SIOCGIFFLAGS, &ifr) == 0)
-+ {
-+ value = static_cast<bool>(ifr.ifr_flags & IFF_UP);
-+ }
-+ else
-+ {
-+ log<level::ERR>("ioctl failed for SIOCGIFFLAGS:",
-+ entry("ERROR=%s", strerror(errno)));
-+ }
-+ return value;
-+}
-+
-+bool EthernetInterface::nICEnabled(bool value)
-+{
-+ if (value == EthernetInterfaceIntf::nICEnabled())
-+ {
-+ return value;
-+ }
-+
-+ EthernetIntfSocket eifSocket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
-+ if (eifSocket.sock < 0)
-+ {
-+ return EthernetInterfaceIntf::nICEnabled();
-+ }
-+
-+ ifreq ifr{0};
-+ std::strncpy(ifr.ifr_name, interfaceName().c_str(), IF_NAMESIZE - 1);
-+ if (ioctl(eifSocket.sock, SIOCGIFFLAGS, &ifr) != 0)
-+ {
-+ log<level::ERR>("ioctl failed for SIOCGIFFLAGS:",
-+ entry("ERROR=%s", strerror(errno)));
-+ return EthernetInterfaceIntf::nICEnabled();
-+ }
-+
-+ ifr.ifr_flags &= ~IFF_UP;
-+ ifr.ifr_flags |= value ? IFF_UP : 0;
-+
-+ if (ioctl(eifSocket.sock, SIOCSIFFLAGS, &ifr) != 0)
-+ {
-+ log<level::ERR>("ioctl failed for SIOCSIFFLAGS:",
-+ entry("ERROR=%s", strerror(errno)));
-+ return EthernetInterfaceIntf::nICEnabled();
-+ }
-+ EthernetInterfaceIntf::nICEnabled(value);
-+ writeConfigurationFile();
-+ manager.restartSystemdUnit(networkdService);
-
- return value;
- }
-@@ -742,6 +806,11 @@ void EthernetInterface::writeConfigurationFile()
- stream << "MACAddress=" << mac << "\n";
- }
-
-+ if (!nICEnabled())
-+ {
-+ stream << "Unmanaged=yes\n";
-+ }
-+
- // write the network section
- stream << "[Network]\n";
- #ifdef LINK_LOCAL_AUTOCONFIGURATION
-diff --git a/ethernet_interface.hpp b/ethernet_interface.hpp
-index 4e36ae8..104750e 100644
---- a/ethernet_interface.hpp
-+++ b/ethernet_interface.hpp
-@@ -60,9 +60,11 @@ using LinkSpeed = uint16_t;
- using DuplexMode = uint8_t;
- using Autoneg = uint8_t;
- using LinkUp = bool;
-+using NICEnabled = bool;
- using VlanId = uint32_t;
- using InterfaceName = std::string;
--using InterfaceInfo = std::tuple<LinkSpeed, DuplexMode, Autoneg, LinkUp>;
-+using InterfaceInfo =
-+ std::tuple<LinkSpeed, DuplexMode, Autoneg, LinkUp, NICEnabled>;
- using AddressMap = std::map<std::string, std::shared_ptr<IPAddress>>;
- using NeighborMap = std::map<std::string, std::shared_ptr<Neighbor>>;
- using VlanInterfaceMap =
-@@ -190,6 +192,12 @@ class EthernetInterface : public Ifaces
- /** Retrieve Link State */
- bool linkUp() const override;
-
-+ /** Retrieve NIC State */
-+ bool nICEnabled() const override;
-+
-+ /** Set value of NICEnabled */
-+ bool nICEnabled(bool value) override;
-+
- /** @brief sets the MAC address.
- * @param[in] value - MAC address which needs to be set on the system.
- * @returns macAddress of the interface or throws an error.
-@@ -246,6 +254,7 @@ class EthernetInterface : public Ifaces
- using EthernetInterfaceIntf::dHCPEnabled;
- using EthernetInterfaceIntf::interfaceName;
- using EthernetInterfaceIntf::linkUp;
-+ using EthernetInterfaceIntf::nICEnabled;
- using MacAddressIntf::mACAddress;
-
- /** @brief Absolute path of the resolv conf file */
---
-2.24.1
-