[openwrt/openwrt] base-files: add function for generating random MAC

LEDE Commits lede-commits at lists.infradead.org
Tue Jul 28 10:02:12 EDT 2020


blocktrron pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/c3e252d08032de80e7c82759cc9763a310a97144

commit c3e252d08032de80e7c82759cc9763a310a97144
Author: David Bauer <mail at david-bauer.net>
AuthorDate: Sat Jul 11 13:48:40 2020 +0200

    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 <mail at david-bauer.net>
---
 package/base-files/Makefile                      |  2 +-
 package/base-files/files/lib/functions/system.sh | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 284899bd69..d32bae8635 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/version.mk
 include $(INCLUDE_DIR)/feeds.mk
 
 PKG_NAME:=base-files
-PKG_RELEASE:=223
+PKG_RELEASE:=224
 PKG_FLAGS:=nonshared
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
diff --git a/package/base-files/files/lib/functions/system.sh b/package/base-files/files/lib/functions/system.sh
index f3c901ff79..80e417182a 100644
--- a/package/base-files/files/lib/functions/system.sh
+++ b/package/base-files/files/lib/functions/system.sh
@@ -174,6 +174,18 @@ macaddr_setbit_la() {
 	macaddr_setbit $1 7
 }
 
+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
 



More information about the lede-commits mailing list