Add multi-host support to handle IPMI restriction mode.

Added multi-host and IPMI based devices to support the IPMI
whitelist restriction mode in ipmid.

The machine specific .yml file has the default restriction
mode dbus path. Ex. Whitelist. These restriction modes dbus
paths added for all the hosts and other IPMI devices Ex.
ocp_debug_card. These information will be displayed in the
setting manager dbus objects.

Ipmid reads hostIdx from the command request. These hostIdx
values are getting from ipmb-channels.json. This ipmb-channels
entires can configure from machine layer.

busctl tree xyz.openbmc_project.Settings | grep restriction
| | |-/xyz/openbmc_project/control/host1/restriction_mode
| | |-/xyz/openbmc_project/control/host2/restriction_mode
| | |-/xyz/openbmc_project/control/host3/restriction_mode
| | |-/xyz/openbmc_project/control/host4/restriction_mode
|-/xyz/openbmc_project/control/ocp_debug_card/restriction_mode

The mapping between IPMI based devices and restriction mode
dbus objects from settings manager is filtered with restriction
mode dbus interface as like above. The mapping is based on the
config file(json, yml) file entries.

Can configure .yml and .json entries based on the order and
IPMI devices and restriction mode dbus object mapping.

TESTED : Built Facebook YosemiteV2 images and loaded on the
target hardware. Verified restriction mode enabled for all
four hosts and ocp_debug_card.

Signed-off-by: Kumar Thangavel <thangavel.k@hcl.com>
Change-Id: I3d338b6cd37a817653ca981c5322a77e60d3f992
1 file changed
tree: ed2f01ae6f84022e7cf8b3e807aa3b2c993909ab
  1. app/
  2. dbus-sdr/
  3. docs/
  4. include/
  5. libipmid/
  6. libipmid-host/
  7. scripts/
  8. softoff/
  9. subprojects/
  10. test/
  11. user_channel/
  12. xyz/
  13. .build.sh
  14. .clang-format
  15. .gitignore
  16. .shellcheck
  17. .travis.yml
  18. apphandler.cpp
  19. apphandler.hpp
  20. chassishandler.cpp
  21. chassishandler.hpp
  22. dcmihandler.cpp
  23. dcmihandler.hpp
  24. elog-errors.hpp
  25. entity_map_json.cpp
  26. entity_map_json.hpp
  27. error-HostEvent.hpp
  28. fruread.hpp
  29. generate_whitelist.sh
  30. generate_whitelist_create.sh
  31. globalhandler.cpp
  32. globalhandler.hpp
  33. groupext.cpp
  34. host-cmd-manager.cpp
  35. host-cmd-manager.hpp
  36. host-interface.cpp
  37. host-interface.hpp
  38. host-ipmid-whitelist.conf
  39. ipmi_fru_info_area.cpp
  40. ipmi_fru_info_area.hpp
  41. ipmid-new.cpp
  42. ipmisensor.cpp
  43. ipmiwhitelist.hpp
  44. LICENSE
  45. meson.build
  46. meson_options.txt
  47. OWNERS
  48. read_fru_data.cpp
  49. read_fru_data.hpp
  50. README.md
  51. selutility.cpp
  52. selutility.hpp
  53. sensordatahandler.cpp
  54. sensordatahandler.hpp
  55. sensorhandler.cpp
  56. sensorhandler.hpp
  57. settings.cpp
  58. settings.hpp
  59. storageaddsel.cpp
  60. storageaddsel.hpp
  61. storagehandler.cpp
  62. storagehandler.hpp
  63. sys_info_param.cpp
  64. sys_info_param.hpp
  65. systemintfcmds.cpp
  66. systemintfcmds.hpp
  67. testaddsel.cpp
  68. testit.cpp
  69. transporthandler.cpp
  70. transporthandler.hpp
  71. whitelist-filter.cpp
README.md

Compile ipmid with default options:

meson builddir
ninja -C builddir

Compile ipmid with yocto defaults:

meson builddir -Dbuildtype=minsize -Db_lto=true -Dtests=disabled
ninja -C builddir

If any of the dependencies are not found on the host system during configuration, meson automatically gets them via its wrap dependencies mentioned in ipmid/subprojects.

Enable/Disable meson wrap feature

meson builddir -Dwrap_mode=nofallback
ninja -C builddir

Enable debug traces

meson builddir -Dbuildtype=debug
ninja -C builddir

Generate test coverage report:

meson builddir -Db_coverage=true -Dtests=enabled
ninja -C builddir test
ninja -C builddir coverage