base-files: add ucidef_set_interface_netdev_range function
authorTil Kaiser <[email protected]>
Fri, 22 Nov 2024 14:20:10 +0000 (15:20 +0100)
committerRobert Marko <[email protected]>
Mon, 6 Oct 2025 17:06:26 +0000 (19:06 +0200)
The ucidef_set_interface* functions can be used to
add network interfaces to a default network configuration.
Such network interfaces often have the same base interface
name (e.g., eth* or lan*). On devices with many network ports,
adding all ports to the default config can become inconvenient.

This commit adds a new uci function ucidef_set_interface_netdev_range,
which adds network interfaces for a specific port range to a given
OpenWrt interface. The first parameter is the OpenWrt interface, the
second is the base interface name, the third is the port start, and
the fourth is the port end range.

Signed-off-by: Til Kaiser <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/17251
Signed-off-by: Robert Marko <[email protected]>
package/base-files/files/lib/functions/uci-defaults.sh

index 5293ce12c0e08f2d211999e4f00fcbac6639a774..f77ce4ab27c970dd5e616a1db0dcb87686411b99 100644 (file)
@@ -771,6 +771,27 @@ ucidef_add_wlan() {
        ucidef_wlan_idx="$((ucidef_wlan_idx + 1))"
 }
 
+ucidef_set_interface_netdev_range() {
+       local interface="$1"
+       local base_netdev="$2"
+       local start="$3"
+       local stop="$4"
+       local netdevs
+       local i
+
+       if [ "$stop" -ge "$start" ]; then
+               i="$start"
+               netdevs="$base_netdev$i"
+
+               while [ "$i" -lt "$stop" ]; do
+                       i=$((i + 1))
+                       netdevs="$netdevs $base_netdev$i"
+               done
+
+               ucidef_set_interface "$interface" device "$netdevs"
+       fi
+}
+
 board_config_update() {
        json_init
        [ -f ${CFG} ] && json_load "$(cat ${CFG})"