Add SMBIOS 3.0 compatibility to version check

As per SMBIOS specification (DSP0134 Section 5.2.2) SMBIOS 3.0 requires
a different Entry Point Structure, including a different Anchor String
check.

Tested:
After appending the Entry Point Structure to the end of the SMBIOS
table, this code started working. We will most likely want to document
this somewhere as it's not industry standard to have the entry point
structure appended to the back like this.

Jan 01 00:01:03 smbiosmdrv2app[902]: SMBIOS 2.1 Anchor String not found. Looking for SMBIOS 3.0
Jan 01 00:03:05 smbiosmdrv2app[1680]: SMBIOS VERSION - 3.2
Jan 01 00:03:06 smbiosmdrv2app[1680]: VERSION INFO - BIOS - 99.99.99.99

Resolves: openbmc/smbios-mdr#3
Signed-off-by: Brandon Kim <brandonkim@google.com>
Change-Id: Ied5e0df545ec046cc1e0823d9f48317881493325
diff --git a/include/smbios_mdrv2.hpp b/include/smbios_mdrv2.hpp
index ed3cf34..3ebe8ab 100644
--- a/include/smbios_mdrv2.hpp
+++ b/include/smbios_mdrv2.hpp
@@ -125,7 +125,7 @@
     uint8_t minorVersion;
 } SMBIOSVersion;
 
-struct EntryPointStructure
+struct EntryPointStructure21
 {
     uint32_t anchorString;
     uint8_t epChecksum;
@@ -142,6 +142,19 @@
     uint8_t smbiosBDCRevision;
 } __attribute__((packed));
 
+struct EntryPointStructure30
+{
+    uint8_t anchorString[5];
+    uint8_t epChecksum;
+    uint8_t epLength;
+    SMBIOSVersion smbiosVersion;
+    uint8_t smbiosDocRev;
+    uint8_t epRevision;
+    uint8_t reserved;
+    uint32_t structTableMaxSize;
+    uint64_t structTableAddr;
+} __attribute__((packed));
+
 static constexpr const char* cpuPath =
     "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu";