If available, take UUID from smbios.system.uuid, if not fall back to

software-generated UUID. Store the result in /etc/hostid and use it in
the future. Perform simple UUID format check, as there is a lot of
hardware with broken UUIDs. The check should be improved to also eliminate
fake UUIDs like 00000000-0000-0000-0000-000000000000.

Requested by:	many
This commit is contained in:
pjd 2007-04-11 00:05:25 +00:00
parent c22a6a4408
commit 1e6e7c9b8c

View File

@ -54,9 +54,26 @@ hostid_set()
${SYSCTL_W} kern.hostid=${id} >/dev/null
}
hostid_hardware()
{
uuid=`kenv smbios.system.uuid 2>/dev/null`
x="[0-9a-zA-Z]"
y=$x$x$x$x
case "${uuid}" in
$y$y-$y-$y-$y-$y$y$y)
echo "${uuid}"
;;
esac
}
hostid_reset()
{
uuid=`uuidgen`
# First look for UUID in hardware.
uuid=`hostid_hardware`
if [ -z ${uuid} ]; then
# If not found, fall back to software-generated UUID.
uuid=`uuidgen`
fi
# Store newly generated UUID in ${hostid_file}.
echo $uuid > ${hostid_file}
if [ $? -ne 0 ]; then