+dhcp6c_write_duid() {
+ local mac="${1:-$(ifconfig "$client_device" | sed -ne 's/[[:space:]]*$//; s/.*HWaddr //p')}"
+ local pat="[0-9A-F][0-9A-F]"
+
+ case "$mac" in
+ $pat:$pat:$pat:$pat:$pat:$pat:$pat:$pat:$pat:$pat)
+ printf $(echo "$mac" | sed -e 's/^/\\x/; s/:/\\x/g')
+ logger -t dhcp6c "Using user provided DUID $mac"
+ ;;
+ $pat:$pat:$pat:$pat:$pat:$pat)
+ local oIFS="$IFS"; IFS=":"; set -- $mac; IFS="$oIFS"
+
+ # low endian
+ if [ "$(printf \\1 | hexdump -n1 -ve '8/2 "%04x"')" = "0001" ]; then
+ printf \\x0a\\x00
+
+ # big endian
+ else
+ printf \\x00\\x0a
+ fi
+
+ printf \\x00\\x03\\x00\\x06\\x$1\\x$2\\x$3\\x$4\\x$5\\x$6
+ logger -t dhcp6c "Using MAC address DUID 00:03:00:06:$1:$2:$3:$4:$5:$6"
+ ;;
+ *)
+ logger -t dhcp6c "Unable to derive DUID from interface '$client_device' and no valid user DUID given"
+ ;;
+ esac