From f11241f0fcfbcc8900fcac10d1e92b3d425c6281 Mon Sep 17 00:00:00 2001 From: David Bauer Date: Sat, 11 Jul 2020 13:48:40 +0200 Subject: [PATCH] base-files: add function for generating random MAC This adds a function for generating a valid random MAC address (unset MC bit / set locally administered bit). It is necessary for devices which do not have a MAC address programmed by the manufacturer. Signed-off-by: David Bauer --- package/base-files/files/lib/functions/system.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/package/base-files/files/lib/functions/system.sh b/package/base-files/files/lib/functions/system.sh index 7ed62804a0..5ec07bbea7 100755 --- a/package/base-files/files/lib/functions/system.sh +++ b/package/base-files/files/lib/functions/system.sh @@ -115,6 +115,18 @@ macaddr_setbit_la() { printf "%02x:%s" $((0x${mac%%:*} | 0x02)) ${mac#*:} } +macaddr_unsetbit_mc() { + local mac=$1 + + printf "%02x:%s" $((0x${mac%%:*} & ~0x01)) ${mac#*:} +} + +macaddr_random() { + local randsrc=$(get_mac_binary /dev/urandom 0) + + echo "$(macaddr_unsetbit_mc "$(macaddr_setbit_la "${randsrc}")")" +} + macaddr_2bin() { local mac=$1