port-management: populate ports config from device-tree if db does not exist

This commit is contained in:
Sukru Senli 2022-01-27 14:55:41 +01:00
parent 2ddb4fb5fc
commit 431d1fbf34

View file

@ -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