--- /dev/null
+set_netdev_labels() {
+ local dir
+ local label
+ local netdev
+
+ for dir in /sys/class/net/*; do
+ [ -r "$dir/device/of_node/label" ] || continue
+ read -r label < "$dir/device/of_node/label"
+ netdev="${dir##*/}"
+ [ "$netdev" = "$label" ] && continue
+ ip link set "$netdev" name "$label"
+ done
+
+ for dir in /sys/class/net/*; do
+ [ -r "$dir/device/of_node/openwrt,netdev-name" ] || continue
+ read -r label < "$dir/device/of_node/openwrt,netdev-name"
+ netdev="${dir##*/}"
+ [ "$netdev" = "$label" ] && continue
+ ip link set "$netdev" name "$label"
+ done
+}
+
+boot_hook_add preinit_main set_netdev_labels