On 6/2/20 12:56 PM, Daniel P. Berrangé wrote:
On Tue, Jun 02, 2020 at 12:53:18PM +0200, Michal Privoznik wrote:
Setting OEM strings for a domain was introduced in
v4.1.0-rc1~315. However, any application that wanted to use them
(e.g. to point to an URL where a config file is stored) had to
'dmidecode -u --oem-string N' (where N is index of the string).
Well, we can expose them under our <sysinfo/> XML and if the
domain is running Libvirt inside it can be obtained using
virConnectGetSysinfo() API.
Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx>
---
src/util/virsysinfo.c | 60 ++++++++++++++++++++++++++++-
tests/sysinfodata/x86sysinfo.data | 10 +++++
tests/sysinfodata/x86sysinfo.expect | 10 +++++
3 files changed, 79 insertions(+), 1 deletion(-)
diff --git a/tests/sysinfodata/x86sysinfo.data b/tests/sysinfodata/x86sysinfo.data
index 426261041d..5615e144fb 100644
--- a/tests/sysinfodata/x86sysinfo.data
+++ b/tests/sysinfodata/x86sysinfo.data
@@ -81,3 +81,13 @@ Memory Device
Serial Number: 29057112
Asset Tag: 0839
Part Number: IMSH2GS13A1F1C-10F
+
+OEM Strings
+ String 1: Default string
+ String 2: Default string
+ String 3: MIAMI
+ String 4: Default string
+ String 5: FFFFFFFFFFFFF
+ String 6: FFFFFFFFFFFFF
+ String 7: FFFFFFFFFFFFF
+ String 8: Default string
What does dmidecode do for escaping (if anything) if I set a string
value of
"Ha ha ha try parsing\n String 3: this correctly\n String 4:then"
This is what I put into domain XML:
<sysinfo type='smbios'>
<oemStrings>
<entry>Hello</entry>
<entry>World</entry>
<entry>Ha ha ha try parsing\n
String 3: this correctly\n
String 4:then</entry>
<entry>This is, more tricky value=escaped</entry>
</oemStrings>
</sysinfo>
This is how it appeared on the cmd line:
-smbios 'type=11,value=Hello,value=World,value=Ha ha ha try parsing\n
String 3: this correctly\n
String 4:then,value=This is,, more tricky value=escaped' \
Now, inside the guest, plain dmidecode replaces \n with a dot:
# dmidecode -t 11
Handle 0x0E00, DMI type 11, 5 bytes
OEM Strings
String 1: Hello
String 2: World
String 3: Ha ha ha try parsing\n. String 3: this
correctly\n. String 4:then
String 4: This is, more tricky value=escaped
But if I tell it to not decode entries, then it displays the string
correctly:
# dmidecode -u --oem-string 3
Ha ha ha try parsing\n
String 3: this correctly\n
String 4:then
So maybe we should use the latter instead? We could use 'dmidecode -u
--oem-string count' to get the number of strings and then iterate
through each one of them.
Michal