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