1*40e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0 2*40e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3*40e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright 2019 Intel Corporation 47bffdb7eSBernard Wong #pragma once 57bffdb7eSBernard Wong 67bffdb7eSBernard Wong #include <systemd/sd-id128.h> 77bffdb7eSBernard Wong 83ccb3adbSEd Tanous #include <array> 93ccb3adbSEd Tanous #include <string> 103ccb3adbSEd Tanous 117bffdb7eSBernard Wong namespace redfish 127bffdb7eSBernard Wong { 137bffdb7eSBernard Wong 147bffdb7eSBernard Wong namespace systemd_utils 157bffdb7eSBernard Wong { 167bffdb7eSBernard Wong 177bffdb7eSBernard Wong /** 187bffdb7eSBernard Wong * @brief Retrieve service root UUID 197bffdb7eSBernard Wong * 207bffdb7eSBernard Wong * @return Service root UUID 217bffdb7eSBernard Wong */ 227bffdb7eSBernard Wong 233174e4dfSEd Tanous inline std::string getUuid() 247bffdb7eSBernard Wong { 257bffdb7eSBernard Wong std::string ret; 267bffdb7eSBernard Wong // This ID needs to match the one in ipmid 27271584abSEd Tanous sd_id128_t appId{{0Xe0, 0Xe1, 0X73, 0X76, 0X64, 0X61, 0X47, 0Xda, 0Xa5, 28271584abSEd Tanous 0X0c, 0Xd0, 0Xcc, 0X64, 0X12, 0X45, 0X78}}; 29271584abSEd Tanous sd_id128_t machineId{}; 307bffdb7eSBernard Wong 317bffdb7eSBernard Wong if (sd_id128_get_machine_app_specific(appId, &machineId) == 0) 327bffdb7eSBernard Wong { 33d3a9e084SEd Tanous std::array<char, SD_ID128_STRING_MAX> str{}; 347bffdb7eSBernard Wong ret = sd_id128_to_string(machineId, str.data()); 357bffdb7eSBernard Wong ret.insert(8, 1, '-'); 367bffdb7eSBernard Wong ret.insert(13, 1, '-'); 377bffdb7eSBernard Wong ret.insert(18, 1, '-'); 387bffdb7eSBernard Wong ret.insert(23, 1, '-'); 397bffdb7eSBernard Wong } 407bffdb7eSBernard Wong 417bffdb7eSBernard Wong return ret; 427bffdb7eSBernard Wong } 437bffdb7eSBernard Wong 447bffdb7eSBernard Wong } // namespace systemd_utils 457bffdb7eSBernard Wong } // namespace redfish 46