base-files: add function to get mac as text from flash
authorMathias Kresin <dev@kresin.me>
Sat, 11 Aug 2018 08:10:21 +0000 (10:10 +0200)
committerMathias Kresin <dev@kresin.me>
Sat, 11 Aug 2018 19:36:27 +0000 (21:36 +0200)
Add a function to get a mac stored as text from flash. The octets of
the mac address need to be separated by any separator supported by
macaddr_canonicalize().

Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
Signed-off-by: Mathias Kresin <dev@kresin.me>
package/base-files/files/lib/functions/system.sh

index e178f26f39ac00f235b9bc3706c816dd6e8001b3..7ed62804a081fcd799188e185e00e48f79dfbdac 100644 (file)
@@ -38,6 +38,29 @@ mtd_get_mac_ascii() {
        [ -n "$mac_dirty" ] && macaddr_canonicalize "$mac_dirty"
 }
 
+mtd_get_mac_text() {
+       local mtdname=$1
+       local offset=$2
+       local part
+       local mac_dirty
+
+       part=$(find_mtd_part "$mtdname")
+       if [ -z "$part" ]; then
+               echo "mtd_get_mac_text: partition $mtdname not found!" >&2
+               return
+       fi
+
+       if [ -z "$offset" ]; then
+               echo "mtd_get_mac_text: offset missing!" >&2
+               return
+       fi
+
+       mac_dirty=$(dd if="$part" bs=1 skip="$offset" count=17 2>/dev/null)
+
+       # "canonicalize" mac
+       [ -n "$mac_dirty" ] && macaddr_canonicalize "$mac_dirty"
+}
+
 mtd_get_mac_binary() {
        local mtdname="$1"
        local offset="$2"