base-files: add mtd_get_mac_{ascii,binary} helpers
authorGabor Juhos <juhosg@openwrt.org>
Sat, 16 Feb 2013 11:50:19 +0000 (11:50 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Sat, 16 Feb 2013 11:50:19 +0000 (11:50 +0000)
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 35612

package/base-files/Makefile
package/base-files/files/lib/functions.sh

index 99db435e862534bb8d0c54a036ab4db09ca6bcf8..26fa1b723d6683c4b9269ca623a038b77645e909 100644 (file)
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 include $(INCLUDE_DIR)/version.mk
 
 PKG_NAME:=base-files
-PKG_RELEASE:=131
+PKG_RELEASE:=132
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 PKG_BUILD_DEPENDS:=opkg/host
index ae0257a5c5973fe0eb91a3e43c2d2dc016b543f5..2022e8a3aa7b5e289f8f04bc2eb66bcecfafdcc3 100755 (executable)
@@ -240,6 +240,40 @@ find_mtd_chardev() {
        echo "${INDEX:+$PREFIX$INDEX}"
 }
 
+mtd_get_mac_ascii()
+{
+       local mtdname="$1"
+       local key="$2"
+       local part
+       local mac_dirty
+
+       . /lib/functions.sh
+
+       part=$(find_mtd_part "$mtdname")
+       if [ -z "$part" ]; then
+               echo "mtd_get_mac_ascii: partition $mtdname not found!" >&2
+               return
+       fi
+
+       mac_dirty=$(strings "$part" | sed -n 's/'"$key"'=//p')
+       # "canonicalize" mac
+       printf "%02x:%02x:%02x:%02x:%02x:%02x" 0x${mac_dirty//:/ 0x}
+}
+
+mtd_get_mac_binary() {
+       local mtdname="$1"
+       local offset="$2"
+       local part
+
+       part=$(find_mtd_part "$mtdname")
+       if [ -z "$part" ]; then
+               echo "mtd_get_mac_binary: partition $mtdname not found!" >&2
+               return
+       fi
+
+       dd bs=1 skip=$offset count=6 if=$part 2>/dev/null | hexdump -v -n 6 -e '5/1 "%02x:" 1/1 "%02x"'
+}
+
 strtok() { # <string> { <variable> [<separator>] ... }
        local tmp
        local val="$1"