aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRosy Song <rosysong@rosinson.com>2019-11-04 20:44:41 +0100
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>2019-11-07 17:13:18 +0100
commit6170c46b477d4953f91b99e805a276de444913cf (patch)
tree323d7cb101d84fa1adaf52d9079dbe7a284556d8
parenta6fbdd3a7837ea93d65115a62001ab96d5ff0b67 (diff)
downloadupstream-6170c46b477d4953f91b99e805a276de444913cf.tar.gz
upstream-6170c46b477d4953f91b99e805a276de444913cf.tar.bz2
upstream-6170c46b477d4953f91b99e805a276de444913cf.zip
base-files: rename hostname with EUI of mac address
If a label MAC address is provided for device, system will rename the hostname with OpenWrt_{eui mac address}. This helps to distinguish between different devices. Since it's no good idea to nest json_* functions, this code does not use get_mac_label directly, but only get_mac_label_dt as external resource. Signed-off-by: Rosy Song <rosysong@rosinson.com> [merged with commit introducing macaddr_geteui, rebased on updated label MAC address storage, extended commit message] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
-rwxr-xr-xpackage/base-files/files/bin/config_generate16
-rw-r--r--package/base-files/files/lib/functions/system.sh7
2 files changed, 22 insertions, 1 deletions
diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate
index 3ca035ca8b..b473eba9e9 100755
--- a/package/base-files/files/bin/config_generate
+++ b/package/base-files/files/bin/config_generate
@@ -3,6 +3,7 @@
CFG=/etc/board.json
. /usr/share/libubox/jshn.sh
+. /lib/functions/system.sh
[ -s $CFG ] || /bin/board_detect || exit 1
[ -s /etc/config/network -a -s /etc/config/system ] && exit 0
@@ -253,9 +254,22 @@ generate_static_system() {
add_list system.ntp.server='3.openwrt.pool.ntp.org'
EOF
+ local label_macaddr=$(get_mac_label_dt)
+ local hostname
+
+ if json_is_a system object; then
+ json_select system
+ [ -n "$label_macaddr" ] || json_get_var label_macaddr label_macaddr
+ json_select ..
+ fi
+
+ if [ -n "$label_macaddr" ]; then
+ hostname="OpenWrt-$(macaddr_geteui $label_macaddr)"
+ uci -q set "system.@system[-1].hostname=$hostname"
+ fi
+
if json_is_a system object; then
json_select system
- local hostname
if json_get_var hostname hostname; then
uci -q set "system.@system[-1].hostname=$hostname"
fi
diff --git a/package/base-files/files/lib/functions/system.sh b/package/base-files/files/lib/functions/system.sh
index be7efe4e2e..c4dc3cc3a9 100644
--- a/package/base-files/files/lib/functions/system.sh
+++ b/package/base-files/files/lib/functions/system.sh
@@ -144,6 +144,13 @@ macaddr_add() {
echo $oui:$nic
}
+macaddr_geteui() {
+ local mac=$1
+ local sep=$2
+
+ echo ${mac:9:2}$sep${mac:12:2}$sep${mac:15:2}
+}
+
macaddr_setbit_la() {
local mac=$1