How to convert /etc/machine-id into a default-duid for IPv6 static DHCP?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Hi,

The use-case is deploying C7 VMs with a pre-set machine-id and default-duid based on the machine-id to facilitate static DHCP with IPv6. The default-duid is found in dhclient6-<value>-eth0.lease and IPv6 DHCP uses default-duid like IPv4 DHCP uses MAC addresses for static DHCP.

How does one convert /etc/machine-id to a default-duid (in bash)?

1) /etc/machine-id -> DUID:

<read RFC6355 and try to grasp the NetworkManager code at [0] & [1]>

Use sha256 hash of machine-id, use first 128 bits, add colons and prepend 00:04:

$ MACHINE_ID_SHA256=`cat /etc/machine_id | sha256sum | cut -c1-32`
$ TMPID=$(sed -e 's/.\{2\}/&:/g;s/.$//' <<<$MACHINE_ID_SHA256)
$ DUID=00:04:`echo $TMPID`

Correct?

2) convert $DUID to a default-duid. Example value of default-duid can be found in /var/lib/NetworkManager/dhclient6-<string>-eth0.lease. Will stick the pre-set default-duid in /etc/dhclient6.leases so it gets picked up by NM once the VM is deployed and started.

So going from e.g.
/etc/machine-id 52d8c0f2a04a462a9c9ac1a906446d85
to
duid 00:04:a6:89:54:e8:bf:e2:13:71:82:3d:ea:33:4d:a5:2f:75
to
default-duid ???

example:
default-duid "\000\004%\011\324\251\274\334\001c\304\366\275\314\220\357\255(";

So how does one create the default-duid from the duid? The default-duid seems escaped octal with some chars here and there. The NetworkManager code at [2] that does the duid->default-duid conversion is above my pay grade. Anyone know how do this conversion preferably in bash?

TIA,
Patrick

[0] https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/src/nm-core-utils.c#n2658

[1] https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/src/dhcp-manager/nm-dhcp-client.c#n439

[2] https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/src/dhcp-manager/nm-dhcp-dhclient-utils.c#n356
_______________________________________________
CentOS mailing list
CentOS@xxxxxxxxxx
https://lists.centos.org/mailman/listinfo/centos



[Index of Archives]     [CentOS]     [CentOS Announce]     [CentOS Development]     [CentOS ARM Devel]     [CentOS Docs]     [CentOS Virtualization]     [Carrier Grade Linux]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Linux USB]
  Powered by Linux