diff options
author | Dale Hamel <dale.hamel@srvthe.net> | 2014-03-10 18:48:37 -0400 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2014-06-12 17:59:52 +0100 |
commit | 7fe0735170929bcdc8364d4d5529fbb171b1aa79 (patch) | |
tree | e20621c4588f97a7cab3f45c370ac2867afd230f /src | |
parent | bb5a4a111b6cb8b8e05029d6b2e5608477cf420e (diff) | |
download | ipxe-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.h | 17 | ||||
-rw-r--r-- | src/interface/smbios/smbios_settings.c | 12 |
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, +}; |