summaryrefslogtreecommitdiffstats
path: root/chassishandler.cpp
Commit message (Collapse)AuthorAgeFilesLines
* ipmid: update chassis identify commandVernon Mauery2019-04-091-26/+16
| | | | | | | | | | | | Modify to use the new provider API. One by one, change calls to remove any legacy API constructs. Tested-by: ipmitool chassis identify ipmitool chassis identify 0 ipmitool chassis identify force Change-Id: I91bc21fdaef74eb32f297e0fa54edbc2e1bf4c2b Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* Only include ipmid/api.hpp for the new APIVernon Mauery2019-04-081-1/+1
| | | | | | | | | | | | | | After some feedback from users of the new IPMI API, they wanted to see two things: 1) don't require ipmid/api.hpp and ipmid/registration.hpp to be able to write new handlers 2) only require including ipmid/api.hpp (instead of ipmid/api.h) So now, by simply including ipmid/api.hpp instead of ipmid/api.h (deprecated), handlers incorporating the new IPMI API can be written. Change-Id: I446dcce70cff03d4ecc28c658292d052485f77fc Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* remove legacy ipmid.cpp and ipmid.hppVernon Mauery2019-04-011-1/+0
| | | | | | | These two files have now been replaced with newer APIs and can be removed. Change-Id: If60227b24188c6796211ca43379169f9a95c9cb3 Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* Remove experimental filesystem spliceVernon Mauery2019-03-281-13/+1
| | | | | | | | | | In order to be compatible with older versions of GCC that did not have the experimental filesystem moved over to the standard paths, the code would splice the experimental code into the std namespace. This is no longer necessary with yocto 2.6 and the latest versions of GCC. Change-Id: I2db13c52a91456318795819f2d45c3386b4c56d2 Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* move types.hpp to ipmid/types.hpp for exportVernon Mauery2019-03-251-1/+1
| | | | | | | | | | types.hpp is required by utility.hpp, which is exported, so it needs to be exported as well. This moves it to the include/libipmid directory, changes the Makefile to export it, and changes all the files that include it so it can be found in the right place. Change-Id: I30ec365446e4de466c266ec4faa327478460ec05 Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* Move util.cpp/util.hpp to libipmidVernon Mauery2019-03-251-1/+1
| | | | | | | | | | | | | | | | These are functions that are used widely by ipmid providers, so it makes sense to put them in libipmi.so (the library that all providers must link against). Tested-by: use nm to inspect the binaries to see that the symbols are in the expected library. arm-openbmc-linux-gnueabi-nm libipmid.so.0.0.0 \ | grep getDbusObject 0001063c T _ZN4ipmi13getDbusObjectERN9sdbusplus.... Change-Id: I1221f807f2711c5301c5574623564ea1ae48a437 Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* Extra Bytes in response data for chassis Identify commandJia, Chunhui2019-03-041-0/+1
| | | | | | | | | | From IPMI spec, response should be complete code only. Tested: ipmitool raw 0x00 0x04 0x02 0x00 Change-Id: I48a9f71e01c89ee1125d515c50e3e2655510d0ce Signed-off-by: Jia, Chunhui <chunhui.jia@linux.intel.com>
* Set init_priority attribute for global variables in shared libLei YU2019-02-121-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | The code gets unspecified initializatio order for the global/static variables in a shared library. If unluck, a global/static variable may be initialized in *constructor* function, and then initialized by the default contructor. For exmaple, if `std::unique_ptr<xxx> var{nullptr};` is initialized in constructor function, below init order may occur: 1. It is initialized in constructor; 2. Then it is initialized as nullptr; And eventually when the code is to use the variable, we got nullptr. We met such issues before on openbmc/openbmc#1581, and the technical details could be found at [this SO question][1] and [this gcc email][2] The solution is to specify the init_priority attribute, to make the global/staic variables inititalize earlier than the contructors. [1]: https://stackoverflow.com/questions/43941159/global-static-variables-initialization-issue-with-attribute-constructor-i [2]: https://gcc.gnu.org/ml/gcc-patches/2017-03/msg00863.html Change-Id: I901a6a5cddec12aec9512fe58b16735fa2ad90d7 Signed-off-by: Lei YU <mine260309@gmail.com>
* Create libipmid and libipmid-hostWilliam A. Kennington III2019-02-071-1/+1
| | | | | | | | | | | | | | | | | | | This starts a transition to common ipmid libraries that providers can link against. It will allow for a cleaner separation between common ipmid functionality and daemon type specific code. This is needed so we can resolve all of the symbols in the providers at link time instead of discovering bad linkage by building and running a full ipmi daemon. In future commits libraries will be packaged for libipmid and libipmid-host which provide all of the symbols used by the current set of ipmid providers. This is the first step, it just separates and renames the headers. Legacy symlinks are still kept around for compatability. It also adds stub libraries so that external users can start linking as intended. Change-Id: I6bbd7a146362012d26812a7b039d1c4075862cbd Signed-off-by: William A. Kennington III <wak@google.com>
* Changes to align with IPMI specYong Li2019-02-051-4/+5
| | | | | | | | | | | | IPMI Spec Section 19.2: Unless otherwise noted, Reserved bits and fields in commands(request messages) and responses shall be written as '0'. Return "out of range" error for unsupported power policy and also return the supported policies on success. Change-Id: I51d63b86ef0d3076438649abc49c63267c57cbd5 Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
* Remove unused legacy code referencing org.openbmc.settings.HostTom Joseph2018-12-201-134/+0
| | | | | | | Resolves openbmc/phosphor-host-ipmid#115 Change-Id: Iab7f878b8b3011caa95f532f99062af9cbc1c33c Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
* Implement set chassis capabilities IPMI commandsYong Li2018-12-111-26/+183
| | | | | | | | | | | | Create a new dbus interface for the chassis capabilities, and store the chassis capabilities using phosphor settings manager Tested By: ipmitool -H $BMCIP -U root -P 0penBmc -I lanplus raw 0 5 0 2 4 6 8 0xa ipmitool -H $BMCIP -U root -P 0penBmc -I lanplus raw 0 0 Change-Id: Id01555358adfec3814fd03b3e6d422916c861039 Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
* Convert variant usage to std interfaceWilliam A. Kennington III2018-10-181-16/+20
| | | | | | | | | | | | | This is just a refactoring to use the c++17 std::variant interfaces instead of the mapbox::variant specific ones. We should be able to use mapbox::variant and std::variant interchangeably now. Tested: Built against sdbusplus with mapbox::variant and sbusplus using std::variant. Both variant compile and test out. Change-Id: I6fbaad3d12dd34968db6a10f3d74a65e07d0f0cc Signed-off-by: William A. Kennington III <wak@google.com>
* Use the common timer classVernon Mauery2018-10-181-12/+10
| | | | | | | | | The common timer class from sdbusplus offers all the timer goodness that we currently use. The unit test is also no longer needed (and has been added to sdbusplus's version of the timer.hpp implementation). Change-Id: I278817489433a29ca739f70fdacd8bb897797d66 Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
* add std namespace prefix to common methodsPatrick Venture2018-09-251-28/+30
| | | | | | | | Standard clib methods should be explicitly grabbed from the standard namespace. Change-Id: I8bcfcb260a99180d535ec8102c1a24c318cbc209 Signed-off-by: Patrick Venture <venture@google.com>
* move filesystem inclusion to bottom of listPatrick Venture2018-09-251-15/+14
| | | | | Change-Id: I4aa3c984992236bb5b4a5c62c3d42a33c12d55de Signed-off-by: Patrick Venture <venture@google.com>
* replaced c headers with cpp where applicablePatrick Venture2018-09-251-4/+0
| | | | | Change-Id: I23a70eb540ccde5d2aba467426769feffb07b516 Signed-off-by: Patrick Venture <venture@google.com>
* rename headers to match stylePatrick Venture2018-09-251-4/+5
| | | | | | | | | | | | | | | | | | Moving headers from ".h" to ".hpp" Reworked the header inclusion a bit so that host-ipmid is treated as a library, and local headers aren't. renamed apphandler.h => apphandler.hpp renamed chassishandler.h => chassishandler.hpp renamed globalhandler.h => globalhandler.hpp renamed sensorhandler.h => sensorhandler.hpp renamed storageaddsel.h => storageaddsel.hpp renamed storagehandler.h => storagehandler.hpp renamed systemintfcmds.h => systemintfcmds.hpp Change-Id: I9d4ce3dd57e2e996800f9020a10cc10cdf2c3914 Signed-off-by: Patrick Venture <venture@google.com>
* Implement chassis set power restore policy commandYong Li2018-09-251-0/+91
| | | | | | | | | | | | | | | | | | Implement the IPMI set power restore policy command 0x06. This command can be used to configure the power restore policy. This configuration parameter is kept in nonvolatile storage. The power restore policy determines how the system or chassis behaves when AC power returns after an AC power loss Tested: Run the below command to check the current Power Restore Policy: ipmitool -H <IP> -P 0penBmc -I lanplus chassis status Run the below command to change it: ipmitool -H <IP> -P 0penBmc -I lanplus chassis policy always-off Change-Id: I224912890f9a9e8b4dc98f840cd6f223c9f7dfe5 Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
* add .clang-formatPatrick Venture2018-09-071-365/+365
| | | | | Change-Id: I7c2a527b4751a560703a61fcbe9638b150546af5 Signed-off-by: Patrick Venture <venture@google.com>
* Handle the case to turn off the Chassis Identify LEDTom Joseph2018-08-081-0/+6
| | | | | | | Resolves openbmc/openbmc#3327 Change-Id: Ib0cbfccdd91b6cdd2267a48b312d2736a4ce8fbc Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
* Standardize use of filesystemVernon Mauery2018-08-081-1/+11
| | | | | | | | | If <filesystem> exists, use that, if it doesn't, try <experimental/filesystem>. Either way, access it from std via a namespace splice. Change-Id: I5b35ee9f74b88e188cb3ca3fed9abaec64933697 Signed-off-by: Vernon Mauery <vernon.mauery@intel.com>
* Fix D-Bus error from callback method invoked from async threadMarri Devender Rao2018-05-231-74/+105
| | | | | | | | | | | | | Noticed D-bus method invoked as part of the callback method invoked from async thread returns error Switching to use sd_event loop timer for callback after timer expiry Resolves openbmc/openbmc#3130 Change-Id: Ibe87a6b3aa179cc887593c7dea635c11d9ea844c Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Implement Get POH Counter commandNagaraju Goruganti2018-05-211-0/+71
| | | | | | | | | | It returns a counter value proportional to the system operating power-on hours. Partially Resolves openbmc/openbmc#2979 Change-Id: Ib0cd43fe5cbc055ae84991577d766bedae58d775 Signed-off-by: Nagaraju Goruganti <ngorugan@in.ibm.com>
* Fix get boot options returning unexpected resultsMarri Devender Rao2018-05-081-0/+16
| | | | | | | | | | | | | | | | | | | | | | | Get boot options is returning wrong value when boot device is set to cdrom followed by setting boot device to bios. In the IPMI spec the boot device selector has options for both "boot source" (default/disk/crdom/network) and "boot mode" (default/bios/safe/diag). Since this isn't a bit field, you can't override for eg both the source and mode at the same time. The solution is if a set boot device is mapping to a boot source, then reset the boot mode D-Bus property to default, or vice versa. This way the ipmid code can determine which property is not at the default value Resolves openbmc/openbmc#3067 Resolves openbmc/openbmc#3068 Change-Id: I072c82a161d56f118510fe1f9e5c75cb5c610295 Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Add set boot source and boot mode methods for reuseMarri Devender Rao2018-05-081-39/+62
| | | | | | | | | setBootMode and setBootSource methods are introduced by refactoring code from ipmi_chassis_set_sys_boot_options for code reuse. Change-Id: I30b641239686b0411a0995468d098f5ad3d61754 Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Reducing IPMI logging footprintAditya Saripalli2018-04-181-40/+39
| | | | | | | | | | | | -host-ipmid is very noisy in terms of journal logging. A small step towards cleaning that up. -Also converted printfs to phosphor-logging. Partially Resolves openbmc/openbmc#2507 Change-Id: I749c19c18d1cabf6f0216830c8cb0a08ee43d6de Signed-off-by: Aditya Saripalli <aditya0124@gmail.com> Signed-off-by: Nagaraju Goruganti <ngorugan@in.ibm.com>
* Revert "Revert "Add chassis identify ipmi command.""Tom Joseph2018-04-041-0/+115
| | | | | | | | | | This reverts commit 82feb17d0c244ed04b82b0fbed3c0a9456986a86. The fix for armv5 futures is provided in yocto 2.4 Resolves openbmc/openbmc#3010 Change-Id: Ifc7e224f6f1fa115e0299642e8866b82d6e4f38c
* Revert "Add chassis identify ipmi command."Joel Stanley2018-02-281-115/+0
| | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 5bfbde351aabe2096de99ee959a8a2e50edcf84c. See https://github.com/openbmc/openbmc/issues/2740 for details. This commit causes ipmid to fail to load. From github user artemsen: > ipmid[995]: ERROR opening [/usr/lib/host-ipmid/libapphandler.so.0]: > /usr/lib/host-ipmid/libapphandler.so.0: undefined symbol: _ZTINSt13__future_base12_Result_baseE As reported by Lei: > This issue prevent all P8 systems (with ast2400) booting with latest > OpenBMC, because ipmid fails to load libapphandler.so and cause watchdog > will not be kicked and always timeout on power on. As suggested by James Feist: > We probably should just revert the changes until we update to yocto > 2.4 which has the newer version of GCC with the fix for armv5 futures > as the backport seemed to fail. Change-Id: I0059cc3f939c1e3e5f88531fcb14ae3faa451387 Tested: Booted a ast2400 machine and checked journal Signed-off-by: Joel Stanley <joel@jms.id.au>
* Add chassis identify ipmi command.James Feist2017-12-131-0/+115
| | | | | | | | | Add command with support for chassis identify. Resolves openbmc/openbmc#2621 Change-Id: Ie656b71eba68141117838363456c6e075225e3e6 Signed-off-by: James Feist <james.feist@linux.intel.com>
* Spelling fixesGunnar Mills2017-10-311-1/+1
| | | | | | | | | Spelling errors found using github.com/lucasdemarchi/codespell A tool to fix common misspellings. This tool is licensed under GNU General Public License, version 2. Change-Id: I78e9d126f19fd9fb2e3f2fa9fe8c2404dc505f82 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* boot policy: Support boot parameter #4 (boot info)Tom Joseph2017-10-041-2/+9
| | | | | | | Resolves openbmc/openbmc#2356 Change-Id: If775a01a97f29a60575c03f26d32bba0315af920 Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
* boot policy: Correct the logic of setting the boot policyTom Joseph2017-09-281-53/+34
| | | | | | | Resolves openbmc/openbmc#2355 Change-Id: Ic7b0efb35887c987a1626e5d88f8a9513d22004f Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
* boot settings: use the new 'one time' settingDeepak Kodihalli2017-09-081-117/+174
| | | | | | | Resolves openbmc/openbmc#2008. Change-Id: Id79d1f61a3e627fef28b071e2a415e94de14634f Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
* settings: handle multiple objects/interfacesDeepak Kodihalli2017-09-081-5/+5
| | | | | | | | | Handle the fact that a settings object can now implement multiple interfaces, and also the fact that multiple settings objects can implement the same interface. Change-Id: Icf55b08fe2d355a10f7007489dfddb128e05d90e Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
* Support IPMI Chassis Soft Power Off commandVishwanatha Subbanna2017-08-141-11/+24
| | | | | | | Fixes openbmc/openbmc#1947 Change-Id: I099bd308f5e0ee92b7addf9727afd641d45730ea Signed-off-by: Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com>
* Move generic network constants to types.hppRatan Gupta2017-08-131-17/+10
| | | | | Change-Id: Ic6de2d3d82d6e55c6abf73bae2fc0a23a36286b9 Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Take bus as input parameter in util functionRatan Gupta2017-08-111-18/+24
| | | | | Change-Id: I2de92a1d82939a539e19aca69561ad58a171a5d0 Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Move dbus utility function to utilsRatan Gupta2017-08-111-225/+25
| | | | | Change-Id: Ief3d9ab2311a597670767cf9931913e5afef4fee Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Initialise the sdbus connectionTom Joseph2017-08-091-0/+2
| | | | | | | Resolves openbmc/openbmc#2128 Change-Id: If2927d14adb3a9332b2a2ea595b57bd4b34671bc Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
* Don't send blank network override to hostRatan Gupta2017-08-081-21/+53
| | | | | | | | | | | if bmc is not configured with host network data then don't send the blank override,send the ipmi error. Resolves openbmc/openbmc#2033 Change-Id: Idbbb9a81df568be376f2111cd2bafd4c04e13097 Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* power_policy: switch to new settings APIDeepak Kodihalli2017-07-311-41/+39
| | | | | Change-Id: I5a54c32fe13f7f0314f0d6a902193b16ca4556fd Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
* boot_flags: switch to new settings APIDeepak Kodihalli2017-07-311-84/+165
| | | | | Change-Id: If7cd999889b3ce19b746c3223012920d79e63099 Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
* Add IPV6 handling for host network settingsRatan Gupta2017-07-251-34/+100
| | | | | Change-Id: I41a35d274476f69681c2516b84900f0e0c358181 Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Make changes as per the new settings infrastructureRatan Gupta2017-07-191-251/+383
| | | | | | | | | | Host network config will be referring to xyz settings namespace. Resolves openbmc/openbmc#1678 Resolves openbmc/openbmc#556 Change-Id: I77e4b015595990b3f44733ff4977b462ddf9a70a Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Fix space and newline for boot policy printGeorge Keishing2017-06-161-1/+1
| | | | | | | Resolves openbmc/openbmc#1777 Change-Id: I78df77abeca8f37cc1cdb6ae8e1e2d4b3690dc52 Signed-off-by: George Keishing <gkeishin@in.ibm.com>
* Call softoff dbus interface directlyAndrew Geissler2017-06-081-10/+17
| | | | | | | | | | | | | | | | | | | The host response can be extremely fast when requesting a soft power off. So fast in fact, that it may respond before the obmc mapper has registered the softoff dbus object and interface. When this happens, ipmid does not see softoff running so it goes down a different (and incorrect) shutdown path. This code change has the host response go directly to the softoff dbus interface (instead of using mapper). Once mapper is refactored in openbmc/openbmc#1661, this software can go back to using it. Resolves openbmc/openbmc#1743 Change-Id: I08df84783adef80c4eb91277d8d7aa6dc264730d Signed-off-by: Andrew Geissler <andrewg@us.ibm.com>
* Create file to indicate host requested off/rebootAndrew Geissler2017-06-061-8/+55
| | | | | | | | | | Create a file to ensure the soft power off service is not run when the host is requesting a power off or reboot. There's no need to notify the host (i.e. soft power off) when they are initiating it. Change-Id: Ic9f8e7110d30f477ceae38bba9d684559d9503d3 Signed-off-by: Andrew Geissler <andrewg@us.ibm.com>
* Remove tabs and fix indents in chassishandler.cppAndrew Geissler2017-06-011-185/+205
| | | | | | | Formatting only change Change-Id: Ide817b09af864adc20c090311e4b6083e3044212 Signed-off-by: Andrew Geissler <andrewg@us.ibm.com>
* IPMI: Update the dbus object for soft power off with underscoresVishwanatha Subbanna2017-04-041-5/+4
| | | | | | | Fixes openbmc/phosphor-host-ipmid#102 Change-Id: I3e7456401b7265a51578f9aa08bef2ae3f326849 Signed-off-by: Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com>
OpenPOWER on IntegriCloud