1cab87e9cSJagpal Singh Gill #pragma once 2cab87e9cSJagpal Singh Gill 3cab87e9cSJagpal Singh Gill #include "config.h" 4cab87e9cSJagpal Singh Gill 5cab87e9cSJagpal Singh Gill #include "flash.hpp" 6cab87e9cSJagpal Singh Gill #include "utils.hpp" 7cab87e9cSJagpal Singh Gill #include "xyz/openbmc_project/Software/ActivationProgress/server.hpp" 8cab87e9cSJagpal Singh Gill #include "xyz/openbmc_project/Software/RedundancyPriority/server.hpp" 9cab87e9cSJagpal Singh Gill 10cab87e9cSJagpal Singh Gill #include <sdbusplus/server.hpp> 11cab87e9cSJagpal Singh Gill #include <xyz/openbmc_project/Association/Definitions/server.hpp> 12cab87e9cSJagpal Singh Gill #include <xyz/openbmc_project/Software/Activation/server.hpp> 13cab87e9cSJagpal Singh Gill #include <xyz/openbmc_project/Software/ActivationBlocksTransition/server.hpp> 14cab87e9cSJagpal Singh Gill #include <xyz/openbmc_project/Software/ApplyTime/common.hpp> 15cab87e9cSJagpal Singh Gill 16cab87e9cSJagpal Singh Gill #ifdef WANT_SIGNATURE_VERIFY 17cab87e9cSJagpal Singh Gill #include <filesystem> 18cab87e9cSJagpal Singh Gill #endif 19cab87e9cSJagpal Singh Gill 20cab87e9cSJagpal Singh Gill namespace phosphor 21cab87e9cSJagpal Singh Gill { 22cab87e9cSJagpal Singh Gill namespace software 23cab87e9cSJagpal Singh Gill { 24cab87e9cSJagpal Singh Gill namespace updater 25cab87e9cSJagpal Singh Gill { 26cab87e9cSJagpal Singh Gill 27cab87e9cSJagpal Singh Gill #ifdef WANT_SIGNATURE_VERIFY 28cab87e9cSJagpal Singh Gill namespace fs = std::filesystem; 29cab87e9cSJagpal Singh Gill #endif 30cab87e9cSJagpal Singh Gill 31cab87e9cSJagpal Singh Gill using AssociationList = 32cab87e9cSJagpal Singh Gill std::vector<std::tuple<std::string, std::string, std::string>>; 33cab87e9cSJagpal Singh Gill using ActivationInherit = sdbusplus::server::object_t< 34cab87e9cSJagpal Singh Gill sdbusplus::server::xyz::openbmc_project::software::Activation, 35cab87e9cSJagpal Singh Gill sdbusplus::server::xyz::openbmc_project::association::Definitions>; 36cab87e9cSJagpal Singh Gill using ActivationBlocksTransitionInherit = 37cab87e9cSJagpal Singh Gill sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project:: 38cab87e9cSJagpal Singh Gill software::ActivationBlocksTransition>; 39cab87e9cSJagpal Singh Gill using RedundancyPriorityInherit = sdbusplus::server::object_t< 40cab87e9cSJagpal Singh Gill sdbusplus::server::xyz::openbmc_project::software::RedundancyPriority>; 41cab87e9cSJagpal Singh Gill using ActivationProgressInherit = sdbusplus::server::object_t< 42cab87e9cSJagpal Singh Gill sdbusplus::server::xyz::openbmc_project::software::ActivationProgress>; 43cab87e9cSJagpal Singh Gill using ApplyTimeIntf = 44cab87e9cSJagpal Singh Gill sdbusplus::common::xyz::openbmc_project::software::ApplyTime; 45cab87e9cSJagpal Singh Gill 46cab87e9cSJagpal Singh Gill constexpr auto applyTimeImmediate = 47cab87e9cSJagpal Singh Gill "xyz.openbmc_project.Software.ApplyTime.RequestedApplyTimes.Immediate"; 48cab87e9cSJagpal Singh Gill constexpr auto applyTimeIntf = "xyz.openbmc_project.Software.ApplyTime"; 49cab87e9cSJagpal Singh Gill constexpr auto dbusPropIntf = "org.freedesktop.DBus.Properties"; 50cab87e9cSJagpal Singh Gill constexpr auto applyTimeObjPath = "/xyz/openbmc_project/software/apply_time"; 51cab87e9cSJagpal Singh Gill constexpr auto applyTimeProp = "RequestedApplyTime"; 52cab87e9cSJagpal Singh Gill 53cab87e9cSJagpal Singh Gill namespace sdbusRule = sdbusplus::bus::match::rules; 54cab87e9cSJagpal Singh Gill 55cab87e9cSJagpal Singh Gill class ItemUpdater; 56cab87e9cSJagpal Singh Gill class Activation; 57cab87e9cSJagpal Singh Gill class RedundancyPriority; 58cab87e9cSJagpal Singh Gill 59cab87e9cSJagpal Singh Gill /** @class RedundancyPriority 60cab87e9cSJagpal Singh Gill * @brief OpenBMC RedundancyPriority implementation 61cab87e9cSJagpal Singh Gill * @details A concrete implementation for 62cab87e9cSJagpal Singh Gill * xyz.openbmc_project.Software.RedundancyPriority DBus API. 63cab87e9cSJagpal Singh Gill */ 64cab87e9cSJagpal Singh Gill class RedundancyPriority : public RedundancyPriorityInherit 65cab87e9cSJagpal Singh Gill { 66cab87e9cSJagpal Singh Gill public: 67cab87e9cSJagpal Singh Gill /** @brief Constructs RedundancyPriority. 68cab87e9cSJagpal Singh Gill * 69cab87e9cSJagpal Singh Gill * @param[in] bus - The Dbus bus object 70cab87e9cSJagpal Singh Gill * @param[in] path - The Dbus object path 71cab87e9cSJagpal Singh Gill * @param[in] parent - Parent object. 72cab87e9cSJagpal Singh Gill * @param[in] value - The redundancyPriority value 73cab87e9cSJagpal Singh Gill * @param[in] freePriority - Call freePriorioty, default to true 74cab87e9cSJagpal Singh Gill */ RedundancyPriority(sdbusplus::bus_t & bus,const std::string & path,Activation & parent,uint8_t value,bool freePriority=true)75cab87e9cSJagpal Singh Gill RedundancyPriority(sdbusplus::bus_t& bus, const std::string& path, 76cab87e9cSJagpal Singh Gill Activation& parent, uint8_t value, 77cab87e9cSJagpal Singh Gill bool freePriority = true) : 78cab87e9cSJagpal Singh Gill RedundancyPriorityInherit(bus, path.c_str(), 79cab87e9cSJagpal Singh Gill action::emit_interface_added), 80cab87e9cSJagpal Singh Gill parent(parent) 81cab87e9cSJagpal Singh Gill { 82cab87e9cSJagpal Singh Gill // Set Property 83cab87e9cSJagpal Singh Gill if (freePriority) 84cab87e9cSJagpal Singh Gill { 85cab87e9cSJagpal Singh Gill priority(value); 86cab87e9cSJagpal Singh Gill } 87cab87e9cSJagpal Singh Gill else 88cab87e9cSJagpal Singh Gill { 89cab87e9cSJagpal Singh Gill sdbusPriority(value); 90cab87e9cSJagpal Singh Gill } 91cab87e9cSJagpal Singh Gill } 92cab87e9cSJagpal Singh Gill 93cab87e9cSJagpal Singh Gill /** @brief Overridden Priority property set function, calls freePriority 94cab87e9cSJagpal Singh Gill * to bump the duplicated priority values. 95cab87e9cSJagpal Singh Gill * 96cab87e9cSJagpal Singh Gill * @param[in] value - uint8_t 97cab87e9cSJagpal Singh Gill * 98cab87e9cSJagpal Singh Gill * @return Success or exception thrown 99cab87e9cSJagpal Singh Gill */ 100cab87e9cSJagpal Singh Gill uint8_t priority(uint8_t value) override; 101cab87e9cSJagpal Singh Gill 102cab87e9cSJagpal Singh Gill /** @brief Non-Overriden Priority property set function 103cab87e9cSJagpal Singh Gill * 104cab87e9cSJagpal Singh Gill * @param[in] value - uint8_t 105cab87e9cSJagpal Singh Gill * 106cab87e9cSJagpal Singh Gill * @return Success or exception thrown 107cab87e9cSJagpal Singh Gill */ 108cab87e9cSJagpal Singh Gill uint8_t sdbusPriority(uint8_t value); 109cab87e9cSJagpal Singh Gill 110cab87e9cSJagpal Singh Gill /** @brief Priority property get function 111cab87e9cSJagpal Singh Gill * 112cab87e9cSJagpal Singh Gill * @returns uint8_t - The Priority value 113cab87e9cSJagpal Singh Gill */ 114cab87e9cSJagpal Singh Gill using RedundancyPriorityInherit::priority; 115cab87e9cSJagpal Singh Gill 116cab87e9cSJagpal Singh Gill /** @brief Parent Object. */ 117cab87e9cSJagpal Singh Gill Activation& parent; 118cab87e9cSJagpal Singh Gill }; 119cab87e9cSJagpal Singh Gill 120cab87e9cSJagpal Singh Gill /** @class ActivationBlocksTransition 121cab87e9cSJagpal Singh Gill * @brief OpenBMC ActivationBlocksTransition implementation. 122cab87e9cSJagpal Singh Gill * @details A concrete implementation for 123cab87e9cSJagpal Singh Gill * xyz.openbmc_project.Software.ActivationBlocksTransition DBus API. 124cab87e9cSJagpal Singh Gill */ 125cab87e9cSJagpal Singh Gill class ActivationBlocksTransition : public ActivationBlocksTransitionInherit 126cab87e9cSJagpal Singh Gill { 127cab87e9cSJagpal Singh Gill public: 128cab87e9cSJagpal Singh Gill /** @brief Constructs ActivationBlocksTransition. 129cab87e9cSJagpal Singh Gill * 130cab87e9cSJagpal Singh Gill * @param[in] bus - The Dbus bus object 131cab87e9cSJagpal Singh Gill * @param[in] path - The Dbus object path 132cab87e9cSJagpal Singh Gill */ ActivationBlocksTransition(sdbusplus::bus_t & bus,const std::string & path)133cab87e9cSJagpal Singh Gill ActivationBlocksTransition(sdbusplus::bus_t& bus, const std::string& path) : 134cab87e9cSJagpal Singh Gill ActivationBlocksTransitionInherit(bus, path.c_str(), 135cab87e9cSJagpal Singh Gill action::emit_interface_added), 136cab87e9cSJagpal Singh Gill bus(bus) 137cab87e9cSJagpal Singh Gill { 138cab87e9cSJagpal Singh Gill enableRebootGuard(); 139cab87e9cSJagpal Singh Gill } 140cab87e9cSJagpal Singh Gill ~ActivationBlocksTransition()141cab87e9cSJagpal Singh Gill ~ActivationBlocksTransition() override 142cab87e9cSJagpal Singh Gill { 143cab87e9cSJagpal Singh Gill disableRebootGuard(); 144cab87e9cSJagpal Singh Gill } 145cab87e9cSJagpal Singh Gill 146cab87e9cSJagpal Singh Gill ActivationBlocksTransition(const ActivationBlocksTransition&) = delete; 147*eae5ec9eSPatrick Williams ActivationBlocksTransition& operator=(const ActivationBlocksTransition&) = 148*eae5ec9eSPatrick Williams delete; 149cab87e9cSJagpal Singh Gill ActivationBlocksTransition(ActivationBlocksTransition&&) = delete; 150*eae5ec9eSPatrick Williams ActivationBlocksTransition& operator=(ActivationBlocksTransition&&) = 151*eae5ec9eSPatrick Williams delete; 152cab87e9cSJagpal Singh Gill 153cab87e9cSJagpal Singh Gill private: 154cab87e9cSJagpal Singh Gill sdbusplus::bus_t& bus; 155cab87e9cSJagpal Singh Gill 156cab87e9cSJagpal Singh Gill /** @brief Enables a Guard that blocks any BMC reboot commands */ 157cab87e9cSJagpal Singh Gill void enableRebootGuard(); 158cab87e9cSJagpal Singh Gill 159cab87e9cSJagpal Singh Gill /** @brief Disables any guard that was blocking the BMC reboot */ 160cab87e9cSJagpal Singh Gill void disableRebootGuard(); 161cab87e9cSJagpal Singh Gill }; 162cab87e9cSJagpal Singh Gill 163cab87e9cSJagpal Singh Gill class ActivationProgress : public ActivationProgressInherit 164cab87e9cSJagpal Singh Gill { 165cab87e9cSJagpal Singh Gill public: 166cab87e9cSJagpal Singh Gill /** @brief Constructs ActivationProgress. 167cab87e9cSJagpal Singh Gill * 168cab87e9cSJagpal Singh Gill * @param[in] bus - The Dbus bus object 169cab87e9cSJagpal Singh Gill * @param[in] path - The Dbus object path 170cab87e9cSJagpal Singh Gill */ ActivationProgress(sdbusplus::bus_t & bus,const std::string & path)171cab87e9cSJagpal Singh Gill ActivationProgress(sdbusplus::bus_t& bus, const std::string& path) : 172cab87e9cSJagpal Singh Gill ActivationProgressInherit(bus, path.c_str(), 173cab87e9cSJagpal Singh Gill action::emit_interface_added) 174cab87e9cSJagpal Singh Gill { 175cab87e9cSJagpal Singh Gill progress(0); 176cab87e9cSJagpal Singh Gill } 177cab87e9cSJagpal Singh Gill }; 178cab87e9cSJagpal Singh Gill 179cab87e9cSJagpal Singh Gill /** @class Activation 180cab87e9cSJagpal Singh Gill * @brief OpenBMC activation software management implementation. 181cab87e9cSJagpal Singh Gill * @details A concrete implementation for 182cab87e9cSJagpal Singh Gill * xyz.openbmc_project.Software.Activation DBus API. 183cab87e9cSJagpal Singh Gill */ 184cab87e9cSJagpal Singh Gill class Activation : public ActivationInherit, public Flash 185cab87e9cSJagpal Singh Gill { 186cab87e9cSJagpal Singh Gill public: 187cab87e9cSJagpal Singh Gill /** @brief Constructs Activation Software Manager 188cab87e9cSJagpal Singh Gill * 189cab87e9cSJagpal Singh Gill * @param[in] bus - The Dbus bus object 190cab87e9cSJagpal Singh Gill * @param[in] path - The Dbus object path 191cab87e9cSJagpal Singh Gill * @param[in] parent - Parent object. 192cab87e9cSJagpal Singh Gill * @param[in] versionId - The software version id 193cab87e9cSJagpal Singh Gill * @param[in] activationStatus - The status of Activation 194cab87e9cSJagpal Singh Gill * @param[in] assocs - Association objects 195cab87e9cSJagpal Singh Gill */ Activation(sdbusplus::bus_t & bus,const std::string & path,ItemUpdater & parent,std::string & versionId,sdbusplus::server::xyz::openbmc_project::software::Activation::Activations activationStatus,AssociationList & assocs)196cab87e9cSJagpal Singh Gill Activation(sdbusplus::bus_t& bus, const std::string& path, 197cab87e9cSJagpal Singh Gill ItemUpdater& parent, std::string& versionId, 198cab87e9cSJagpal Singh Gill sdbusplus::server::xyz::openbmc_project::software::Activation:: 199cab87e9cSJagpal Singh Gill Activations activationStatus, 200cab87e9cSJagpal Singh Gill AssociationList& assocs) : 201cab87e9cSJagpal Singh Gill ActivationInherit(bus, path.c_str(), 202cab87e9cSJagpal Singh Gill ActivationInherit::action::defer_emit), 203cab87e9cSJagpal Singh Gill bus(bus), path(path), parent(parent), versionId(versionId), 204cab87e9cSJagpal Singh Gill systemdSignals( 205cab87e9cSJagpal Singh Gill bus, 206cab87e9cSJagpal Singh Gill sdbusRule::type::signal() + sdbusRule::member("JobRemoved") + 207cab87e9cSJagpal Singh Gill sdbusRule::path("/org/freedesktop/systemd1") + 208cab87e9cSJagpal Singh Gill sdbusRule::interface("org.freedesktop.systemd1.Manager"), 209cab87e9cSJagpal Singh Gill std::bind(std::mem_fn(&Activation::unitStateChange), this, 210cab87e9cSJagpal Singh Gill std::placeholders::_1)) 211cab87e9cSJagpal Singh Gill { 212cab87e9cSJagpal Singh Gill // Set Properties. 213cab87e9cSJagpal Singh Gill activation(activationStatus); 214cab87e9cSJagpal Singh Gill associations(assocs); 215cab87e9cSJagpal Singh Gill 216cab87e9cSJagpal Singh Gill // Emit deferred signal. 217cab87e9cSJagpal Singh Gill emit_object_added(); 218cab87e9cSJagpal Singh Gill } 219cab87e9cSJagpal Singh Gill 220cab87e9cSJagpal Singh Gill /** @brief Overloaded Activation property setter function 221cab87e9cSJagpal Singh Gill * 222cab87e9cSJagpal Singh Gill * @param[in] value - One of Activation::Activations 223cab87e9cSJagpal Singh Gill * 224cab87e9cSJagpal Singh Gill * @return Success or exception thrown 225cab87e9cSJagpal Singh Gill */ 226cab87e9cSJagpal Singh Gill Activations activation(Activations value) override; 227cab87e9cSJagpal Singh Gill 228cab87e9cSJagpal Singh Gill /** @brief Activation */ 229cab87e9cSJagpal Singh Gill using ActivationInherit::activation; 230cab87e9cSJagpal Singh Gill 231cab87e9cSJagpal Singh Gill /** @brief Overloaded requestedActivation property setter function 232cab87e9cSJagpal Singh Gill * 233cab87e9cSJagpal Singh Gill * @param[in] value - One of Activation::RequestedActivations 234cab87e9cSJagpal Singh Gill * 235cab87e9cSJagpal Singh Gill * @return Success or exception thrown 236cab87e9cSJagpal Singh Gill */ 237*eae5ec9eSPatrick Williams RequestedActivations requestedActivation( 238*eae5ec9eSPatrick Williams RequestedActivations value) override; 239cab87e9cSJagpal Singh Gill 240cab87e9cSJagpal Singh Gill /** @brief Overloaded write flash function */ 241cab87e9cSJagpal Singh Gill void flashWrite() override; 242cab87e9cSJagpal Singh Gill 243cab87e9cSJagpal Singh Gill /** 244cab87e9cSJagpal Singh Gill * @brief Handle the success of the flashWrite() function 245cab87e9cSJagpal Singh Gill * 246cab87e9cSJagpal Singh Gill * @details Perform anything that is necessary to mark the activation 247cab87e9cSJagpal Singh Gill * successful after the image has been written to flash. Sets the Activation 248cab87e9cSJagpal Singh Gill * value to Active. 249cab87e9cSJagpal Singh Gill */ 250cab87e9cSJagpal Singh Gill void onFlashWriteSuccess(); 251cab87e9cSJagpal Singh Gill 252cab87e9cSJagpal Singh Gill #ifdef HOST_BIOS_UPGRADE 253cab87e9cSJagpal Singh Gill /* @brief write to Host flash function */ 254cab87e9cSJagpal Singh Gill void flashWriteHost(); 255cab87e9cSJagpal Singh Gill 256cab87e9cSJagpal Singh Gill /** @brief Function that acts on Bios upgrade service file state changes */ 257cab87e9cSJagpal Singh Gill void onStateChangesBios(sdbusplus::message_t& /*msg*/); 258cab87e9cSJagpal Singh Gill #endif 259cab87e9cSJagpal Singh Gill 260cab87e9cSJagpal Singh Gill /** @brief Overloaded function that acts on service file state changes */ 261cab87e9cSJagpal Singh Gill void onStateChanges(sdbusplus::message_t& /*msg*/) override; 262cab87e9cSJagpal Singh Gill 263cab87e9cSJagpal Singh Gill /** @brief Check if systemd state change is relevant to this object 264cab87e9cSJagpal Singh Gill * 265cab87e9cSJagpal Singh Gill * Instance specific interface to handle the detected systemd state 266cab87e9cSJagpal Singh Gill * change 267cab87e9cSJagpal Singh Gill * 268cab87e9cSJagpal Singh Gill * @param[in] msg - Data associated with subscribed signal 269cab87e9cSJagpal Singh Gill * 270cab87e9cSJagpal Singh Gill */ 271cab87e9cSJagpal Singh Gill void unitStateChange(sdbusplus::message_t& msg); 272cab87e9cSJagpal Singh Gill 273cab87e9cSJagpal Singh Gill /** 274cab87e9cSJagpal Singh Gill * @brief subscribe to the systemd signals 275cab87e9cSJagpal Singh Gill * 276cab87e9cSJagpal Singh Gill * This object needs to capture when it's systemd targets complete 277cab87e9cSJagpal Singh Gill * so it can keep it's state updated 278cab87e9cSJagpal Singh Gill * 279cab87e9cSJagpal Singh Gill */ 280cab87e9cSJagpal Singh Gill void subscribeToSystemdSignals(); 281cab87e9cSJagpal Singh Gill 282cab87e9cSJagpal Singh Gill /** 283cab87e9cSJagpal Singh Gill * @brief unsubscribe from the systemd signals 284cab87e9cSJagpal Singh Gill * 285cab87e9cSJagpal Singh Gill * systemd signals are only of interest during the activation process. 286cab87e9cSJagpal Singh Gill * Once complete, we want to unsubscribe to avoid unnecessary calls of 287cab87e9cSJagpal Singh Gill * unitStateChange(). 288cab87e9cSJagpal Singh Gill * 289cab87e9cSJagpal Singh Gill */ 290cab87e9cSJagpal Singh Gill void unsubscribeFromSystemdSignals(); 291cab87e9cSJagpal Singh Gill 292cab87e9cSJagpal Singh Gill /** 293cab87e9cSJagpal Singh Gill * @brief Deletes the version from Image Manager and the 294cab87e9cSJagpal Singh Gill * untar image from image upload dir. 295cab87e9cSJagpal Singh Gill */ 296cab87e9cSJagpal Singh Gill void deleteImageManagerObject(); 297cab87e9cSJagpal Singh Gill 298cab87e9cSJagpal Singh Gill /** 299cab87e9cSJagpal Singh Gill * @brief Determine the configured image apply time value 300cab87e9cSJagpal Singh Gill * 301cab87e9cSJagpal Singh Gill * @return true if the image apply time value is immediate 302cab87e9cSJagpal Singh Gill **/ 303cab87e9cSJagpal Singh Gill bool checkApplyTimeImmediate(); 304cab87e9cSJagpal Singh Gill 305cab87e9cSJagpal Singh Gill /** 306cab87e9cSJagpal Singh Gill * @brief Reboot the BMC. Called when ApplyTime is immediate. 307cab87e9cSJagpal Singh Gill * 308cab87e9cSJagpal Singh Gill * @return none 309cab87e9cSJagpal Singh Gill **/ 310cab87e9cSJagpal Singh Gill void rebootBmc(); 311cab87e9cSJagpal Singh Gill 312cab87e9cSJagpal Singh Gill /** @brief Persistent sdbusplus DBus bus connection */ 313cab87e9cSJagpal Singh Gill sdbusplus::bus_t& bus; 314cab87e9cSJagpal Singh Gill 315cab87e9cSJagpal Singh Gill /** @brief Persistent DBus object path */ 316cab87e9cSJagpal Singh Gill std::string path; 317cab87e9cSJagpal Singh Gill 318cab87e9cSJagpal Singh Gill /** @brief Parent Object. */ 319cab87e9cSJagpal Singh Gill ItemUpdater& parent; 320cab87e9cSJagpal Singh Gill 321cab87e9cSJagpal Singh Gill /** @brief Version id */ 322cab87e9cSJagpal Singh Gill std::string versionId; 323cab87e9cSJagpal Singh Gill 324cab87e9cSJagpal Singh Gill /** @brief Persistent ActivationBlocksTransition dbus object */ 325cab87e9cSJagpal Singh Gill std::unique_ptr<ActivationBlocksTransition> activationBlocksTransition; 326cab87e9cSJagpal Singh Gill 327cab87e9cSJagpal Singh Gill /** @brief Persistent RedundancyPriority dbus object */ 328cab87e9cSJagpal Singh Gill std::unique_ptr<RedundancyPriority> redundancyPriority; 329cab87e9cSJagpal Singh Gill 330cab87e9cSJagpal Singh Gill /** @brief Persistent ActivationProgress dbus object */ 331cab87e9cSJagpal Singh Gill std::unique_ptr<ActivationProgress> activationProgress; 332cab87e9cSJagpal Singh Gill 333cab87e9cSJagpal Singh Gill /** @brief Apply time */ 334cab87e9cSJagpal Singh Gill ApplyTimeIntf::RequestedApplyTimes applyTime; 335cab87e9cSJagpal Singh Gill 336cab87e9cSJagpal Singh Gill /** @brief Used to subscribe to dbus systemd signals **/ 337cab87e9cSJagpal Singh Gill sdbusplus::bus::match_t systemdSignals; 338cab87e9cSJagpal Singh Gill 339cab87e9cSJagpal Singh Gill /** @brief Tracks whether the read-write volume has been created as 340cab87e9cSJagpal Singh Gill * part of the activation process. **/ 341cab87e9cSJagpal Singh Gill bool rwVolumeCreated = false; 342cab87e9cSJagpal Singh Gill 343cab87e9cSJagpal Singh Gill /** @brief Tracks whether the read-only volume has been created as 344cab87e9cSJagpal Singh Gill * part of the activation process. **/ 345cab87e9cSJagpal Singh Gill bool roVolumeCreated = false; 346cab87e9cSJagpal Singh Gill 347cab87e9cSJagpal Singh Gill /** @brief Tracks if the service that updates the U-Boot environment 348cab87e9cSJagpal Singh Gill * variables has completed. **/ 349cab87e9cSJagpal Singh Gill bool ubootEnvVarsUpdated = false; 350cab87e9cSJagpal Singh Gill 351cab87e9cSJagpal Singh Gill #ifdef WANT_SIGNATURE_VERIFY 352cab87e9cSJagpal Singh Gill private: 353cab87e9cSJagpal Singh Gill /** @brief Verify signature of the images. 354cab87e9cSJagpal Singh Gill * 355cab87e9cSJagpal Singh Gill * @param[in] imageDir - The path of images to verify 356cab87e9cSJagpal Singh Gill * @param[in] confDir - The path of configs for verification 357cab87e9cSJagpal Singh Gill * 358cab87e9cSJagpal Singh Gill * @return true if verification successful and false otherwise 359cab87e9cSJagpal Singh Gill */ 360cab87e9cSJagpal Singh Gill static bool verifySignature(const fs::path& imageDir, 361cab87e9cSJagpal Singh Gill const fs::path& confDir); 362cab87e9cSJagpal Singh Gill 363cab87e9cSJagpal Singh Gill /** @brief Called when image verification fails. */ 364cab87e9cSJagpal Singh Gill void onVerifyFailed(); 365cab87e9cSJagpal Singh Gill #endif 366cab87e9cSJagpal Singh Gill }; 367cab87e9cSJagpal Singh Gill 368cab87e9cSJagpal Singh Gill } // namespace updater 369cab87e9cSJagpal Singh Gill } // namespace software 370cab87e9cSJagpal Singh Gill } // namespace phosphor 371