aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDale Hamel <dale.hamel@srvthe.net>2014-03-10 18:48:37 -0400
committerMichael Brown <mcb30@ipxe.org>2014-06-12 17:59:52 +0100
commit7fe0735170929bcdc8364d4d5529fbb171b1aa79 (patch)
treee20621c4588f97a7cab3f45c370ac2867afd230f /src
parentbb5a4a111b6cb8b8e05029d6b2e5608477cf420e (diff)
downloadipxe-7fe0735170929bcdc8364d4d5529fbb171b1aa79.zip
ipxe-7fe0735170929bcdc8364d4d5529fbb171b1aa79.tar.gz
ipxe-7fe0735170929bcdc8364d4d5529fbb171b1aa79.tar.bz2
[smbios] Expose board serial number as ${board-serial}
With blade servers, the chassis serial number (exposed via ${serial}) may not be unique. Expose ${board-serial} as a named setting to provide easy access to a more meaningful serial number. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r--src/include/ipxe/smbios.h17
-rw-r--r--src/interface/smbios/smbios_settings.c12
2 files changed, 29 insertions, 0 deletions
diff --git a/src/include/ipxe/smbios.h b/src/include/ipxe/smbios.h
index 1a34ac0..ef5892a 100644
--- a/src/include/ipxe/smbios.h
+++ b/src/include/ipxe/smbios.h
@@ -116,6 +116,23 @@ struct smbios_system_information {
/** SMBIOS system information structure type */
#define SMBIOS_TYPE_SYSTEM_INFORMATION 1
+/** SMBIOS base board information structure */
+struct smbios_base_board_information {
+ /** SMBIOS structure header */
+ struct smbios_header header;
+ /** Manufacturer string */
+ uint8_t manufacturer;
+ /** Product string */
+ uint8_t product;
+ /** Version string */
+ uint8_t version;
+ /** Serial number string */
+ uint8_t serial;
+} __attribute__ (( packed ));
+
+/** SMBIOS base board information structure type */
+#define SMBIOS_TYPE_BASE_BOARD_INFORMATION 2
+
/** SMBIOS enclosure information structure */
struct smbios_enclosure_information {
/** SMBIOS structure header */
diff --git a/src/interface/smbios/smbios_settings.c b/src/interface/smbios/smbios_settings.c
index 5dcf002..83e4320 100644
--- a/src/interface/smbios/smbios_settings.c
+++ b/src/interface/smbios/smbios_settings.c
@@ -241,3 +241,15 @@ const struct setting asset_setting __setting ( SETTING_HOST_EXTRA, asset ) = {
.type = &setting_type_string,
.scope = &smbios_settings_scope,
};
+
+/** Board serial number setting (may differ from chassis serial number) */
+const struct setting board_serial_setting __setting ( SETTING_HOST_EXTRA,
+ board_serial ) = {
+ .name = "board-serial",
+ .description = "Base board serial",
+ .tag = SMBIOS_STRING_TAG ( SMBIOS_TYPE_BASE_BOARD_INFORMATION,
+ struct smbios_base_board_information,
+ serial ),
+ .type = &setting_type_string,
+ .scope = &smbios_settings_scope,
+};