diff options
-rw-r--r-- | package/base-files/Makefile | 2 | ||||
-rwxr-xr-x | package/base-files/files/lib/functions.sh | 35 |
2 files changed, 35 insertions, 2 deletions
diff --git a/package/base-files/Makefile b/package/base-files/Makefile index 31c6e984bc..0160e41f88 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/version.mk PKG_NAME:=base-files -PKG_RELEASE:=148 +PKG_RELEASE:=149 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ PKG_BUILD_DEPENDS:=opkg/host diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index 6cb6df92fd..85ebc2aeb1 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -257,7 +257,7 @@ mtd_get_mac_ascii() mac_dirty=$(strings "$part" | sed -n 's/^'"$key"'=//p') # "canonicalize" mac - [ -n "$mac_dirty" ] && echo ${mac_dirty} | tr [A-F] [a-f] + [ -n "$mac_dirty" ] && macaddr_canonicalize "$mac_dirty" } mtd_get_mac_binary() { @@ -310,6 +310,39 @@ macaddr_2bin() echo -ne \\x${mac//:/\\x} } +macaddr_canonicalize() +{ + local mac="$1" + local canon="" + + [ ${#mac} -gt 17 ] && return + [ -n "${mac//[a-fA-F0-9\.: -]/}" ] && return + + for octet in ${mac//[\.:-]/ }; do + case "${#octet}" in + 1) + octet="0${octet}" + ;; + 2) + ;; + 4) + octet="${octet:0:2} ${octet:2:2}" + ;; + 12) + octet="${octet:0:2} ${octet:2:2} ${octet:4:2} ${octet:6:2} ${octet:8:2} ${octet:10:2}" + ;; + *) + return + ;; + esac + canon=${canon}${canon:+ }${octet} + done + + [ ${#canon} -ne 17 ] && return + + printf "%02x:%02x:%02x:%02x:%02x:%02x" 0x${canon// / 0x} 2>/dev/null +} + strtok() { # <string> { <variable> [<separator>] ... } local tmp local val="$1" |