17bffdb7eSBernard Wong /* 27bffdb7eSBernard Wong // Copyright (c) 2019 Intel Corporation 37bffdb7eSBernard Wong // 47bffdb7eSBernard Wong // Licensed under the Apache License, Version 2.0 (the "License"); 57bffdb7eSBernard Wong // you may not use this file except in compliance with the License. 67bffdb7eSBernard Wong // You may obtain a copy of the License at 77bffdb7eSBernard Wong // 87bffdb7eSBernard Wong // http://www.apache.org/licenses/LICENSE-2.0 97bffdb7eSBernard Wong // 107bffdb7eSBernard Wong // Unless required by applicable law or agreed to in writing, software 117bffdb7eSBernard Wong // distributed under the License is distributed on an "AS IS" BASIS, 127bffdb7eSBernard Wong // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137bffdb7eSBernard Wong // See the License for the specific language governing permissions and 147bffdb7eSBernard Wong // limitations under the License. 157bffdb7eSBernard Wong */ 167bffdb7eSBernard Wong #pragma once 177bffdb7eSBernard Wong 187bffdb7eSBernard Wong #include <systemd/sd-id128.h> 197bffdb7eSBernard Wong 207bffdb7eSBernard Wong namespace redfish 217bffdb7eSBernard Wong { 227bffdb7eSBernard Wong 237bffdb7eSBernard Wong namespace systemd_utils 247bffdb7eSBernard Wong { 257bffdb7eSBernard Wong 267bffdb7eSBernard Wong /** 277bffdb7eSBernard Wong * @brief Retrieve service root UUID 287bffdb7eSBernard Wong * 297bffdb7eSBernard Wong * @return Service root UUID 307bffdb7eSBernard Wong */ 317bffdb7eSBernard Wong 323174e4dfSEd Tanous inline std::string getUuid() 337bffdb7eSBernard Wong { 347bffdb7eSBernard Wong std::string ret; 357bffdb7eSBernard Wong // This ID needs to match the one in ipmid 36271584abSEd Tanous sd_id128_t appId{{0Xe0, 0Xe1, 0X73, 0X76, 0X64, 0X61, 0X47, 0Xda, 0Xa5, 37271584abSEd Tanous 0X0c, 0Xd0, 0Xcc, 0X64, 0X12, 0X45, 0X78}}; 38271584abSEd Tanous sd_id128_t machineId{}; 397bffdb7eSBernard Wong 407bffdb7eSBernard Wong if (sd_id128_get_machine_app_specific(appId, &machineId) == 0) 417bffdb7eSBernard Wong { 42*d3a9e084SEd Tanous std::array<char, SD_ID128_STRING_MAX> str{}; 437bffdb7eSBernard Wong ret = sd_id128_to_string(machineId, str.data()); 447bffdb7eSBernard Wong ret.insert(8, 1, '-'); 457bffdb7eSBernard Wong ret.insert(13, 1, '-'); 467bffdb7eSBernard Wong ret.insert(18, 1, '-'); 477bffdb7eSBernard Wong ret.insert(23, 1, '-'); 487bffdb7eSBernard Wong } 497bffdb7eSBernard Wong 507bffdb7eSBernard Wong return ret; 517bffdb7eSBernard Wong } 527bffdb7eSBernard Wong 537bffdb7eSBernard Wong } // namespace systemd_utils 547bffdb7eSBernard Wong } // namespace redfish 55