From 0444fa61fa43112c8a3d1025223ea1821ed21d97 Mon Sep 17 00:00:00 2001 From: Ondrej Čerman Date: Sat, 16 Oct 2021 23:37:45 +0200 Subject: devices/storage - added WWN/EUI Identifier and IEEE OUI --- modules/devices/storage.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'modules/devices/storage.c') diff --git a/modules/devices/storage.c b/modules/devices/storage.c index 8bbb524d..fd5132da 100644 --- a/modules/devices/storage.c +++ b/modules/devices/storage.c @@ -87,7 +87,7 @@ gboolean __scan_udisks2_devices(void) { gchar *udisks2_storage_list = NULL, *features = NULL, *moreinfo = NULL; gchar *devid, *size, *tmp = NULL, *media_comp = NULL, *ven_tag = NULL; const gchar *url, *media_label, *alabel, *icon, *media_curr = NULL; - int n = 0, i, j; + int n = 0, i, j, m; // http://storaged.org/doc/udisks2-api/latest/gdbus-org.freedesktop.UDisks2.Drive.html#gdbus-property-org-freedesktop-UDisks2-Drive.MediaCompatibility static struct { @@ -304,6 +304,33 @@ gboolean __scan_udisks2_devices(void) { if (disk->connection_bus && strlen(disk->connection_bus) > 0) { moreinfo = h_strdup_cprintf(_("Connection bus=%s\n"), moreinfo, disk->connection_bus); } + + tmp = NULL; + if (disk->wwid) { + m = strlen(disk->wwid); + if (m > 2 && m % 2 == 0){ + for (j = 4; j < m; j = j + 2) { + tmp = h_strdup_cprintf("%s%c%c", tmp, j > 4 ? "-": "", disk->wwid[j], disk->wwid[j+1]); + } + } + moreinfo = h_strdup_cprintf("%s=%s\n", moreinfo, + g_str_has_prefix(disk->wwid, "nna.") ? _("WWN"): + (g_str_has_prefix(disk->wwid, "eui.") ? _("EUI "): "Unknown ID"), + tmp); + g_free(tmp); + } + else{ + moreinfo = h_strdup_cprintf("%s=%s\n", moreinfo, _("WWN / EUI"), _("(None)")); + } + + if (ext->wwid_oui.oui) { + moreinfo = h_strdup_cprintf(_("$^$%s=[%s] %s\n"), + moreinfo, + _("IEEE OUI"), ext->wwid_oui.oui, + ext->wwid_oui.vendor ? + ext->wwid_oui.vendor : _("(Unknown)")); + } + if (ext->nvme_controller) { gchar *nvme = nvme_pci_sections(ext->nvme_controller); if (nvme) -- cgit v1.2.3