/lib/functions.sh: move rarely used mtd and macaddr related functions to /lib/functio...
authorFelix Fietkau <nbd@openwrt.org>
Mon, 7 Apr 2014 10:29:47 +0000 (10:29 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 7 Apr 2014 10:29:47 +0000 (10:29 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 40411

package/base-files/files/etc/init.d/boot
package/base-files/files/etc/preinit
package/base-files/files/lib/functions.sh
package/base-files/files/lib/functions/system.sh [new file with mode: 0644]
package/base-files/files/lib/upgrade/common.sh
package/base-files/files/sbin/sysupgrade
target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
target/linux/mpc85xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom

index b44c1a6..d210fdc 100755 (executable)
@@ -5,6 +5,8 @@ START=10
 STOP=98
 
 uci_apply_defaults() {
+       . /lib/functions/system.sh
+
        cd /etc/uci-defaults || return 0
        files="$(ls)"
        [ -z "$files" ] && return 0
index a8662ea..9cc8a9a 100755 (executable)
@@ -25,6 +25,7 @@ pi_init_cmd="/sbin/init"
 
 . /lib/functions.sh
 . /lib/functions/preinit.sh
+. /lib/functions/system.sh
 
 boot_hook_init preinit_essential
 boot_hook_init preinit_main
index 018fe2c..7beea0e 100755 (executable)
@@ -186,13 +186,6 @@ include() {
        done
 }
 
-find_mtd_index() {
-       local PART="$(grep "\"$1\"" /proc/mtd | awk -F: '{print $1}')"
-       local INDEX="${PART##mtd}"
-
-       echo ${INDEX}
-}
-
 find_mtd_part() {
        local INDEX=$(find_mtd_index "$1")
        local PREFIX=/dev/mtdblock
@@ -201,136 +194,6 @@ find_mtd_part() {
        echo "${INDEX:+$PREFIX$INDEX}"
 }
 
-find_mtd_chardev() {
-       local INDEX=$(find_mtd_index "$1")
-       local PREFIX=/dev/mtd
-
-       [ -d /dev/mtd ] && PREFIX=/dev/mtd/
-       echo "${INDEX:+$PREFIX$INDEX}"
-}
-
-mtd_get_mac_ascii()
-{
-       local mtdname="$1"
-       local key="$2"
-       local part
-       local mac_dirty
-
-       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
-       [ -n "$mac_dirty" ] && macaddr_canonicalize "$mac_dirty"
-}
-
-mtd_get_blob()
-{
-       local mtdname="$1"
-       local offset="$2"
-       local count="$3"
-       local firmware="$4"
-       local part
-
-       part=$(find_mtd_part "$mtdname")
-       if [ -z "$part" ]; then
-               echo "mtd_get_blob: partition $mtdname not found!" >&2
-               return 1
-       fi
-
-       dd if=$part of=$firmware bs=1 skip=$offset count=$count 2>/dev/null || {
-               echo "mtd_get_blob: failed to extract $firmware from $part" >&2
-               return 1
-       }
-}
-
-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"'
-}
-
-mtd_get_part_size() {
-       local part_name=$1
-       local first dev size erasesize name
-       while read dev size erasesize name; do
-               name=${name#'"'}; name=${name%'"'}
-               if [ "$name" = "$part_name" ]; then
-                       echo $((0x$size))
-                       break
-               fi
-       done < /proc/mtd
-}
-
-macaddr_add() {
-       local mac=$1
-       local val=$2
-       local oui=${mac%:*:*:*}
-       local nic=${mac#*:*:*:}
-
-       nic=$(printf "%06x" $((0x${nic//:/} + $val & 0xffffff)) | sed 's/^\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)/\1:\2:\3/')
-       echo $oui:$nic
-}
-
-macaddr_setbit_la()
-{
-       local mac=$1
-
-       printf "%02x:%s" $((0x${mac%%:*} | 0x02)) ${mac#*:}
-}
-
-macaddr_2bin()
-{
-       local mac=$1
-
-       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
-}
-
 group_add() {
        local name="$1"
        local gid="$2"
diff --git a/package/base-files/files/lib/functions/system.sh b/package/base-files/files/lib/functions/system.sh
new file mode 100644 (file)
index 0000000..7655460
--- /dev/null
@@ -0,0 +1,118 @@
+# Copyright (C) 2006-2013 OpenWrt.org
+
+find_mtd_index() {
+       local PART="$(grep "\"$1\"" /proc/mtd | awk -F: '{print $1}')"
+       local INDEX="${PART##mtd}"
+
+       echo ${INDEX}
+}
+
+find_mtd_chardev() {
+       local INDEX=$(find_mtd_index "$1")
+       local PREFIX=/dev/mtd
+
+       [ -d /dev/mtd ] && PREFIX=/dev/mtd/
+       echo "${INDEX:+$PREFIX$INDEX}"
+}
+
+mtd_get_mac_ascii()
+{
+       local mtdname="$1"
+       local key="$2"
+       local part
+       local mac_dirty
+
+       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
+       [ -n "$mac_dirty" ] && macaddr_canonicalize "$mac_dirty"
+}
+
+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"'
+}
+
+mtd_get_part_size() {
+       local part_name=$1
+       local first dev size erasesize name
+       while read dev size erasesize name; do
+               name=${name#'"'}; name=${name%'"'}
+               if [ "$name" = "$part_name" ]; then
+                       echo $((0x$size))
+                       break
+               fi
+       done < /proc/mtd
+}
+
+macaddr_add() {
+       local mac=$1
+       local val=$2
+       local oui=${mac%:*:*:*}
+       local nic=${mac#*:*:*:}
+
+       nic=$(printf "%06x" $((0x${nic//:/} + $val & 0xffffff)) | sed 's/^\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)/\1:\2:\3/')
+       echo $oui:$nic
+}
+
+macaddr_setbit_la()
+{
+       local mac=$1
+
+       printf "%02x:%s" $((0x${mac%%:*} | 0x02)) ${mac#*:}
+}
+
+macaddr_2bin()
+{
+       local mac=$1
+
+       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
+}
index 90a00e4..2963c37 100644 (file)
@@ -69,7 +69,7 @@ run_ramfs() { # <command> [...]
        for file in $RAMFS_COPY_BIN; do
                install_bin $file
        done
-       install_file /etc/resolv.conf /lib/functions.sh /lib/functions.sh /lib/upgrade/*.sh $RAMFS_COPY_DATA
+       install_file /etc/resolv.conf /lib/functions.sh /lib/functions/*.sh /lib/upgrade/*.sh $RAMFS_COPY_DATA
 
        supivot $RAM_ROOT /mnt || {
                echo "Failed to switch over to ramfs. Please reboot."
index e6588bf..cd224c6 100755 (executable)
@@ -1,5 +1,6 @@
 #!/bin/sh
 . /lib/functions.sh
+. /lib/functions/system.sh
 
 # initialize defaults
 RAMFS_COPY_BIN=""      # extra programs for temporary ramfs root
index a6f9c91..0baec28 100644 (file)
@@ -14,6 +14,7 @@ ath9k_eeprom_extract() {
        local mtd
 
        . /lib/functions.sh
+       . /lib/functions/system.sh
 
        mtd=$(find_mtd_chardev $part)
        [ -n "$mtd" ] || \
@@ -29,6 +30,7 @@ tpl_set_wireless_mac()
        local mac
 
        . /lib/functions.sh
+       . /lib/functions/system.sh
 
        mac=$(mtd_get_mac_binary u-boot 326656)
        mac=$(macaddr_add $mac $offset)