mirror of
https://git.proxmox.com/git/fwupd
synced 2025-05-18 03:09:07 +00:00

Redfish is an open industry standard specification and schema that helps enable simple and secure management of modern scalable platform hardware. This has only ever been tested using an emulator and not on real hardware.
61 lines
1.4 KiB
C
61 lines
1.4 KiB
C
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
|
|
*
|
|
* Copyright (C) 2017-2018 Richard Hughes <richard@hughsie.com>
|
|
*
|
|
* SPDX-License-Identifier: LGPL-2.1+
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include "fwupd-error.h"
|
|
|
|
#include "fu-redfish-common.h"
|
|
|
|
GBytes *
|
|
fu_redfish_common_get_evivar_raw (efi_guid_t guid, const gchar *name, GError **error)
|
|
{
|
|
gsize sz = 0;
|
|
guint32 attribs = 0;
|
|
guint8 *data = NULL;
|
|
|
|
if (efi_get_variable (guid, name, &data, &sz, &attribs) < 0) {
|
|
g_autofree gchar *guid_str = NULL;
|
|
efi_guid_to_str (&guid, &guid_str);
|
|
g_set_error (error,
|
|
FWUPD_ERROR,
|
|
FWUPD_ERROR_INVALID_FILE,
|
|
"failed to get efivar for %s %s",
|
|
guid_str, name);
|
|
return NULL;
|
|
}
|
|
return g_bytes_new_take (data, sz);
|
|
}
|
|
|
|
gchar *
|
|
fu_redfish_common_buffer_to_ipv4 (const guint8 *buffer)
|
|
{
|
|
GString *str = g_string_new (NULL);
|
|
for (guint i = 0; i < 4; i++) {
|
|
g_string_append_printf (str, "%u", buffer[i]);
|
|
if (i != 3)
|
|
g_string_append (str, ".");
|
|
}
|
|
return g_string_free (str, FALSE);
|
|
}
|
|
|
|
gchar *
|
|
fu_redfish_common_buffer_to_ipv6 (const guint8 *buffer)
|
|
{
|
|
GString *str = g_string_new (NULL);
|
|
for (guint i = 0; i < 16; i += 4) {
|
|
g_string_append_printf (str, "%02x%02x%02x%02x",
|
|
buffer[i+0], buffer[i+1],
|
|
buffer[i+2], buffer[i+3]);
|
|
if (i != 12)
|
|
g_string_append (str, ":");
|
|
}
|
|
return g_string_free (str, FALSE);
|
|
}
|
|
|
|
/* vim: set noexpandtab: */
|