diff options
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network')
2 files changed, 17 insertions, 128 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0003-Adding-channel-specific-privilege-to-network.patch b/meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0003-Adding-channel-specific-privilege-to-network.patch index f21283a75..153480728 100644 --- a/meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0003-Adding-channel-specific-privilege-to-network.patch +++ b/meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0003-Adding-channel-specific-privilege-to-network.patch @@ -1,4 +1,4 @@ -From 145778897e36f407773844b3b96847ff10306ee8 Mon Sep 17 00:00:00 2001 +From eacd73a119e55599d1f8837d04b4fa40452e5653 Mon Sep 17 00:00:00 2001 From: AppaRao Puli <apparao.puli@linux.intel.com> Date: Thu, 2 Apr 2020 17:06:07 +0530 Subject: [PATCH] Adding channel specific privilege to network @@ -23,11 +23,11 @@ Signed-off-by: Ramya Narayana <ramyax.narayana@intel.com> src/ethernet_interface.cpp | 124 +++++++++++++++++++++++++++++++++++++ src/ethernet_interface.hpp | 37 ++++++++++- src/network_manager.cpp | 102 ++++++++++++++++++++++++++++++ - src/network_manager.hpp | 9 +++ - 4 files changed, 271 insertions(+), 1 deletion(-) + src/network_manager.hpp | 7 +++ + 4 files changed, 269 insertions(+), 1 deletion(-) diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp -index 2e15803..1145773 100644 +index 44f46f6..61eb8de 100644 --- a/src/ethernet_interface.cpp +++ b/src/ethernet_interface.cpp @@ -48,6 +48,10 @@ constexpr auto PROPERTY_INTERFACE = "org.freedesktop.DBus.Properties"; @@ -49,7 +49,7 @@ index 2e15803..1145773 100644 // Emit deferred signal. if (emitSignal) -@@ -1322,5 +1327,124 @@ std::string EthernetInterface::defaultGateway6(std::string gateway) +@@ -1319,5 +1324,124 @@ std::string EthernetInterface::defaultGateway6(std::string gateway) return gw; } @@ -175,7 +175,7 @@ index 2e15803..1145773 100644 } // namespace network } // namespace phosphor diff --git a/src/ethernet_interface.hpp b/src/ethernet_interface.hpp -index 0fe3778..fa5c889 100644 +index 8928455..0f54814 100644 --- a/src/ethernet_interface.hpp +++ b/src/ethernet_interface.hpp @@ -2,11 +2,14 @@ @@ -233,7 +233,7 @@ index 0fe3778..fa5c889 100644 using EthernetInterfaceIntf::interfaceName; using EthernetInterfaceIntf::linkUp; using EthernetInterfaceIntf::mtu; -@@ -372,6 +387,26 @@ class EthernetInterface : public Ifaces +@@ -363,6 +378,26 @@ class EthernetInterface : public Ifaces * @returns true/false value if the NIC is enabled */ bool queryNicEnabled() const; @@ -261,10 +261,10 @@ index 0fe3778..fa5c889 100644 } // namespace network diff --git a/src/network_manager.cpp b/src/network_manager.cpp -index fe59f0b..01a99a3 100644 +index 19e4673..1c8bf3b 100644 --- a/src/network_manager.cpp +++ b/src/network_manager.cpp -@@ -39,6 +39,13 @@ extern std::unique_ptr<Timer> refreshObjectTimer; +@@ -39,6 +39,13 @@ extern std::unique_ptr<Timer> reloadTimer; using namespace phosphor::logging; using namespace sdbusplus::xyz::openbmc_project::Common::Error; @@ -381,27 +381,25 @@ index fe59f0b..01a99a3 100644 bool Manager::createDefaultNetworkFiles(bool force) diff --git a/src/network_manager.hpp b/src/network_manager.hpp -index fb3cc32..0c3d49b 100644 +index f574891..49f1cfa 100644 --- a/src/network_manager.hpp +++ b/src/network_manager.hpp -@@ -156,6 +156,12 @@ class Manager : public details::VLANCreateIface - return routeTable; +@@ -170,6 +170,11 @@ class Manager : public details::VLANCreateIface + { + reloadPreHooks.push_back(std::move(hook)); } - + /** supported privilege list **/ + std::vector<std::string> supportedPrivList; + + /** @brief initializes the supportedPrivilege List */ + void initSupportedPrivilges(); -+ + protected: /** @brief Persistent sdbusplus DBus bus connection. */ - sdbusplus::bus::bus& bus; -@@ -181,6 +187,9 @@ class Manager : public details::VLANCreateIface +@@ -199,6 +204,8 @@ class Manager : public details::VLANCreateIface - /** @brief The routing table */ - route::Table routeTable; -+ + /** @brief List of hooks to execute during the next reload */ + std::vector<fu2::unique_function<void()>> reloadPreHooks; + /** Get the user management service name dynamically **/ + std::string getUserServiceName(); }; diff --git a/meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0004-Fix-for-updating-MAC-address-from-RedFish.patch b/meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0004-Fix-for-updating-MAC-address-from-RedFish.patch deleted file mode 100644 index 90bbc1d5b..000000000 --- a/meta-openbmc-mods/meta-common/recipes-network/network/phosphor-network/0004-Fix-for-updating-MAC-address-from-RedFish.patch +++ /dev/null @@ -1,109 +0,0 @@ -From cbd034daf844529eb7f098c990dc8f44c12f6b97 Mon Sep 17 00:00:00 2001 -From: sunitakx <sunitax.kumari@linux.intel.com> -Date: Tue, 13 Jul 2021 12:54:01 +0000 -Subject: [PATCH] Fix for updating MAC address from RedFish - -Issue: When IP address source for an interface is DHCP and its MAC -address is patched using RedFish, response code is not reaching the -RedFish request initiator (client). - -RootCause: After bmcweb patches the MAC address, immediately IP address -of that interface also changes to new value (because of DHCP). -Due to this, success response from bmcweb is not reaching the client as -expected. - -Fix: Do MAC-ADDR patching after validating the request and responding -"200 OK" to RedFish client. i.e Start a timer which will modify the -MAC-ADDR at the end of its expiry. - -Tested: -Update the MAC address from RedFish. -PATCH: https://<bmc_ip>/redfish/v1/Managers/bmc/EthernetInterfaces/eth0 -Body: - {"MACAddress": "xx:xx:xx:xx:xx:xx"} - -Response code: {"200 OK"} received. - -Signed-off-by: sunitakx <sunitax.kumari@linux.intel.com> -Signed-off-by: Ramya Narayana <ramyax.narayana@intel.com> ---- - src/ethernet_interface.cpp | 17 ++++++++++++----- - src/ethernet_interface.hpp | 5 +++++ - 2 files changed, 17 insertions(+), 5 deletions(-) - -diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp -index 1145773..129905e 100644 ---- a/src/ethernet_interface.cpp -+++ b/src/ethernet_interface.cpp -@@ -143,6 +143,8 @@ EthernetInterface::EthernetInterface(sdbusplus::bus::bus& bus, - { - this->emit_object_added(); - } -+ macUpdateTimer = std::make_unique<phosphor::Timer>( -+ [this](void) { macAddressTimeoutHandler(); }); - } - - static IP::Protocol convertFamily(int family) -@@ -1209,8 +1211,17 @@ void EthernetInterface::writeDHCPSection(std::fstream& stream) - } - } - -+void EthernetInterface::macAddressTimeoutHandler() -+{ -+ macUpdateTimer->stop(); -+ // The MAC and LLADDRs will only update if the NIC is already down -+ EthernetIntfSocket eifSocket(PF_INET, SOCK_DGRAM, IPPROTO_IP); -+ setNICAdminState(eifSocket.sock, interfaceName().c_str(), false); -+ manager.reloadConfigs(); -+} - std::string EthernetInterface::macAddress(std::string value) - { -+ std::chrono::seconds usec(defaultTimeout); - ether_addr newMAC; - try - { -@@ -1244,12 +1255,8 @@ std::string EthernetInterface::macAddress(std::string value) - intf->MacAddressIntf::macAddress(validMAC); - } - MacAddressIntf::macAddress(validMAC); -- -+ macUpdateTimer->start(usec); - writeConfigurationFile(); -- // The MAC and LLADDRs will only update if the NIC is already down -- EthernetIntfSocket eifSocket(PF_INET, SOCK_DGRAM, IPPROTO_IP); -- setNICAdminState(eifSocket.sock, interface.c_str(), false); -- manager.reloadConfigs(); - } - - #ifdef HAVE_UBOOT_ENV -diff --git a/src/ethernet_interface.hpp b/src/ethernet_interface.hpp -index fa5c889..70f4756 100644 ---- a/src/ethernet_interface.hpp -+++ b/src/ethernet_interface.hpp -@@ -11,11 +11,14 @@ - #include <sdbusplus/bus.hpp> - #include <sdbusplus/bus/match.hpp> - #include <sdbusplus/server/object.hpp> -+#include <sdbusplus/timer.hpp> - #include <string> - #include <xyz/openbmc_project/Collection/DeleteAll/server.hpp> - #include <xyz/openbmc_project/Network/EthernetInterface/server.hpp> - #include <xyz/openbmc_project/Network/MACAddress/server.hpp> - -+static constexpr const uint32_t defaultTimeout = 1; -+ - namespace phosphor - { - namespace network -@@ -84,6 +87,8 @@ class EthernetInterface : public Ifaces - EthernetInterface& operator=(EthernetInterface&&) = delete; - virtual ~EthernetInterface() = default; - -+ std::unique_ptr<phosphor::Timer> macUpdateTimer; -+ void macAddressTimeoutHandler(); - /** @brief Constructor to put object onto bus at a dbus path. - * @param[in] bus - Bus to attach to. - * @param[in] objPath - Path to attach at. --- -2.17.1 - |