{{:Design Warning}}
In DHCPv6, the identifier shifts from MAC address of the specific interface to a system wide DUID. Given the goal of trying to preserve current general behavior, xCAT will have to examine and modify supported install images to generate a consistent DUID that spans installations. Depending on mechanism, it may also be required that xCAT modify stateful installed image to re-source DUID from a secondary source on every boot prior to network bringup to avoid DUID cloning. Four options are possible:
For each existing platform, must pre-populate DUID prior to network bringup.
For dhcp6c systems (RHEL5, SLES11, and similar vintage):
For Windows Vista/2k8 and newer:
For ISC DHCP 4+ clients (i.e. RHEL6, ESXi4.1):
Modify dhclient6.leases to have a 'defualt-duid' setting amenable to our needs. For example, if a system had UUID c4b72aec-bdd3-42a3-8d47-76b79a8a9c95:
default-duid "\000\004\304\267*\354\275\323B\243\215Gv\267\232\212\234\225";
Rough perl code to convert hex UUID to this string format:
$uuid =~ s/-//g;
$uuid =~ s/://g;
$uuid =~ s/(..)/\1:/g;
my @uuid = split /:/,$uuid;
foreach (@uuid) {
$ = hex($);
if ($_
More useful shell code to extract and convert UUID that could be executed from the stock RHEL6 install initrd:
duid='default-duid "\000\004';
for i in sed -e s/-//g -e 's/\(..\)/\1 /g' /sys/devices/virtual/dmi/id/product_uuid; do
num=printf "%d" 0x$i
octnum=printf "\\%03o" 0x$i
if [ $num -lt 127 -a $num -gt 31 ]; then
octnum=printf $octnum
fi
duid=$duid$octnum
done
duid=$duid'";'
echo $duid > <leasefilehere>
Extracting UUID: