From 431d1fbf340d5ac6c2297cb5138e0c3c8d9222b6 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Thu, 27 Jan 2022 14:55:41 +0100 Subject: [PATCH] port-management: populate ports config from device-tree if db does not exist --- .../etc/uci-defaults/15-ports-config-generate | 58 ++++++++++++++----- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/port-management/files/etc/uci-defaults/15-ports-config-generate b/port-management/files/etc/uci-defaults/15-ports-config-generate index 7a3267527..cab0d4199 100644 --- a/port-management/files/etc/uci-defaults/15-ports-config-generate +++ b/port-management/files/etc/uci-defaults/15-ports-config-generate @@ -1,19 +1,9 @@ #!/bin/sh -. /lib/network/utils.sh +populate_config_from_db() { + . /lib/network/utils.sh -populate_config(){ - if [ -s "/etc/config/ports" ]; then - if uci -q get ports.@ethport[0] >/dev/null; then - # return if there is any valid content - return 0 - else - rm -f /etc/config/ports - fi - fi - touch /etc/config/ports - - local portorder="$(db -q get hw.board.ethernetPortOrder)" + portorder="$(db -q get hw.board.ethernetPortOrder)" for port in $portorder; do uci add ports ethport uci rename ports.@ethport[-1]="$(get_port_name $port)" @@ -35,4 +25,44 @@ populate_config(){ uci commit ports } -[ -f /sbin/db -a -f /etc/board-db/config/hw ] && populate_config +populate_config_from_device_tree() { + for port in $(find /proc/device-tree/ -name "port@*"); do + port="$(cat $port/label)" + [ -n "$port" ] || continue + [ "$port" = "cpu" ] && continue + PORT="$(echo $port | tr '[a-z]' '[A-Z]')" + uci add ports ethport + uci rename ports.@ethport[-1]="$PORT" + uci set ports.@ethport[-1].enabled=1 + uci set ports.@ethport[-1].name="$PORT" + uci set ports.@ethport[-1].ifname="$port" + uci set ports.@ethport[-1].speed=1000 + uci set ports.@ethport[-1].duplex="full" + uci set ports.@ethport[-1].autoneg=1 + uci set ports.@ethport[-1].eee=0 + if [ "$port" = "wan" ]; then + uci set ports.@ethport[-1].pause=1 + uci set ports.@ethport[-1].uplink=1 + else + uci set ports.@ethport[-1].pause=0 + fi + done + uci commit ports +} + +if [ -s "/etc/config/ports" ]; then + if uci -q get ports.@ethport[0] >/dev/null; then + # exit if there is any valid content + exit 0 + else + rm -f /etc/config/ports + fi +fi + +touch /etc/config/ports + +if [ -f /sbin/db ] && [ -f /etc/board-db/config/hw ]; then + populate_config_from_db +elif [ -d /proc/device-tree/ ]; then + populate_config_from_device_tree +fi