1*7bffdb7eSBernard Wong /* 2*7bffdb7eSBernard Wong // Copyright (c) 2019 Intel Corporation 3*7bffdb7eSBernard Wong // 4*7bffdb7eSBernard Wong // Licensed under the Apache License, Version 2.0 (the "License"); 5*7bffdb7eSBernard Wong // you may not use this file except in compliance with the License. 6*7bffdb7eSBernard Wong // You may obtain a copy of the License at 7*7bffdb7eSBernard Wong // 8*7bffdb7eSBernard Wong // http://www.apache.org/licenses/LICENSE-2.0 9*7bffdb7eSBernard Wong // 10*7bffdb7eSBernard Wong // Unless required by applicable law or agreed to in writing, software 11*7bffdb7eSBernard Wong // distributed under the License is distributed on an "AS IS" BASIS, 12*7bffdb7eSBernard Wong // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*7bffdb7eSBernard Wong // See the License for the specific language governing permissions and 14*7bffdb7eSBernard Wong // limitations under the License. 15*7bffdb7eSBernard Wong */ 16*7bffdb7eSBernard Wong #pragma once 17*7bffdb7eSBernard Wong 18*7bffdb7eSBernard Wong #include <systemd/sd-id128.h> 19*7bffdb7eSBernard Wong 20*7bffdb7eSBernard Wong namespace redfish 21*7bffdb7eSBernard Wong { 22*7bffdb7eSBernard Wong 23*7bffdb7eSBernard Wong namespace systemd_utils 24*7bffdb7eSBernard Wong { 25*7bffdb7eSBernard Wong 26*7bffdb7eSBernard Wong /** 27*7bffdb7eSBernard Wong * @brief Retrieve service root UUID 28*7bffdb7eSBernard Wong * 29*7bffdb7eSBernard Wong * @return Service root UUID 30*7bffdb7eSBernard Wong */ 31*7bffdb7eSBernard Wong 32*7bffdb7eSBernard Wong const std::string getUuid() 33*7bffdb7eSBernard Wong { 34*7bffdb7eSBernard Wong std::string ret; 35*7bffdb7eSBernard Wong // This ID needs to match the one in ipmid 36*7bffdb7eSBernard Wong sd_id128_t appId = SD_ID128_MAKE(e0, e1, 73, 76, 64, 61, 47, da, a5, 0c, d0, 37*7bffdb7eSBernard Wong cc, 64, 12, 45, 78); 38*7bffdb7eSBernard Wong sd_id128_t machineId = SD_ID128_NULL; 39*7bffdb7eSBernard Wong 40*7bffdb7eSBernard Wong if (sd_id128_get_machine_app_specific(appId, &machineId) == 0) 41*7bffdb7eSBernard Wong { 42*7bffdb7eSBernard Wong std::array<char, SD_ID128_STRING_MAX> str; 43*7bffdb7eSBernard Wong ret = sd_id128_to_string(machineId, str.data()); 44*7bffdb7eSBernard Wong ret.insert(8, 1, '-'); 45*7bffdb7eSBernard Wong ret.insert(13, 1, '-'); 46*7bffdb7eSBernard Wong ret.insert(18, 1, '-'); 47*7bffdb7eSBernard Wong ret.insert(23, 1, '-'); 48*7bffdb7eSBernard Wong } 49*7bffdb7eSBernard Wong 50*7bffdb7eSBernard Wong return ret; 51*7bffdb7eSBernard Wong } 52*7bffdb7eSBernard Wong 53*7bffdb7eSBernard Wong } // namespace systemd_utils 54*7bffdb7eSBernard Wong } // namespace redfish 55