diff --git a/netmode/files/etc/uci-defaults/40_supported_mode b/netmode/files/etc/uci-defaults/40_netmode_populated_supported_modes similarity index 100% rename from netmode/files/etc/uci-defaults/40_supported_mode rename to netmode/files/etc/uci-defaults/40_netmode_populated_supported_modes diff --git a/netmode/files/etc/uci-defaults/40_netmode_set_default_netmode b/netmode/files/etc/uci-defaults/40_netmode_set_default_netmode new file mode 100644 index 000000000..8dc83e303 --- /dev/null +++ b/netmode/files/etc/uci-defaults/40_netmode_set_default_netmode @@ -0,0 +1,29 @@ +#!/bin/sh + +enabled="$(uci -q get netmode.global.enabled)" +[ "$enabled" == "1" ] || exit 0 + +mode="$(uci -q get netmode.global.mode)" +[ -n "$mode" ] && exit 0 + +[ -f /etc/netmodes/supported_modes.json ] || exit 0 + +# NetMode is enabled without a Mode being set +# Figure out the current mode from network config +wanproto=$(uci -q get network.wan.proto) +curmode="" +case "$wanproto" in + dhcp) curmode="routed-dhcp" ;; + pppoe) curmode="routed-pppoe" ;; + static) curmode="routed-static" ;; +esac + +found=0 +for md in $(jsonfilter -i /etc/netmodes/supported_modes.json -e "@.supported_modes.*.name"); do + [ "$md" == "$curmode" ] && found=1 +done + +if [ $found -eq 1 ]; then + uci -q set netmode.global.mode="$curmode" + echo "$curmode" > /etc/netmodes/.last_mode +fi