浏览代码

base-files: provide option to specify label MAC address in board.d

For many devices, MAC addresses cannot be retrieved via the
device tree alias.

To still provide the label MAC address for those, this implements
a second mechanism that will put the address into uci config.
Note that this stores the actual MAC address, whereas in DTS
we reference the bearing device.

This is based on the work of Rosy Song <[email protected]>

Signed-off-by: Adrian Schmutzler <[email protected]>
Adrian Schmutzler 6 年之前
父节点
当前提交
469e347f19

+ 5 - 0
package/base-files/files/bin/config_generate

@@ -260,6 +260,11 @@ generate_static_system() {
 				uci -q set "system.@system[-1].hostname=$hostname"
 			fi
 
+			local label_macaddr
+			if json_get_var label_macaddr label_macaddr; then
+				uci -q set "system.@system[-1].label_macaddr=$label_macaddr"
+			fi
+
 			if json_is_a ntpserver array; then
 				local keys key
 				json_get_keys keys ntpserver

+ 1 - 0
package/base-files/files/lib/functions/system.sh

@@ -19,6 +19,7 @@ get_mac_label() {
 
 	[ -n "$macdevice" ] && macaddr=$(get_mac_binary "$basepath/$macdevice/mac-address" 0 2>/dev/null)
 	[ -n "$macaddr" ] || macaddr=$(get_mac_binary "$basepath/$macdevice/local-mac-address" 0 2>/dev/null)
+	[ -n "$macaddr" ] || macaddr=$(uci -q get system.@system[0].label_macaddr)
 	echo $macaddr
 }
 

+ 8 - 0
package/base-files/files/lib/functions/uci-defaults.sh

@@ -307,6 +307,14 @@ ucidef_set_interface_macaddr() {
 	ucidef_set_interface "$network" macaddr "$macaddr"
 }
 
+ucidef_set_label_macaddr() {
+	local macaddr="$1"
+
+	json_select_object system
+		json_add_string label_macaddr "$macaddr"
+	json_select ..
+}
+
 ucidef_add_atm_bridge() {
 	local vpi="$1"
 	local vci="$2"