[openwrt/openwrt] umbim: support multiple-valued configuration fields

LEDE Commits lede-commits at lists.infradead.org
Sat Apr 29 12:39:17 PDT 2023


hauke pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/c13a1b412b12662ca314c1616dc446d2fddf5d50

commit c13a1b412b12662ca314c1616dc446d2fddf5d50
Author: Lech Perczak <lech.perczak at gmail.com>
AuthorDate: Sat Nov 6 13:35:15 2021 +0100

    umbim: support multiple-valued configuration fields
    
    MBIM supports multiple values for IP address and DNS server, and such
    configuration is available through output of MBIM. Use new helper
    method to support adding multiple addresses and DNS servers to static
    interfaces for both IPv4 and IPv6.
    
    Signed-off-by: Lech Perczak <lech.perczak at gmail.com>
---
 .../utils/umbim/files/lib/netifd/proto/mbim.sh     | 42 ++++++++++++++++------
 1 file changed, 32 insertions(+), 10 deletions(-)

diff --git a/package/network/utils/umbim/files/lib/netifd/proto/mbim.sh b/package/network/utils/umbim/files/lib/netifd/proto/mbim.sh
index 8f1ae9ac25..3ef87bdb51 100755
--- a/package/network/utils/umbim/files/lib/netifd/proto/mbim.sh
+++ b/package/network/utils/umbim/files/lib/netifd/proto/mbim.sh
@@ -203,18 +203,29 @@ _proto_mbim_setup() {
 	[ -z "$dhcpv6" ] && dhcpv6=1
 
 	[ "$iptype" != "ipv6" ] && {
+		ipv4address=$(_proto_mbim_get_field ipv4address "$mbimconfig")
 		if [ -n "$ipv4address" ]; then
 			json_init
 			json_add_string name "${interface}_4"
 			json_add_string ifname "@$interface"
 			json_add_string proto "static"
+
 			json_add_array ipaddr
-			json_add_string "" "$ipv4address"
-			json_close_array
-			json_add_string gateway "$ipv4gateway"
-			json_add_array dns
-			[ "$peerdns" = 0 ] || json_add_string "" "$ipv4dnsserver"
+			for address in $ipv4address; do
+				json_add_string "" "$address"
+			done
 			json_close_array
+
+			json_add_string gateway $(_proto_mbim_get_field ipv4gateway "$mbimconfig")
+
+			[ "$peerdns" = 0 ] || {
+				json_add_array dns
+				for server in $(_proto_mbim_get_field ipv4dnsserver "$mbimconfig"); do
+					json_add_string "" "$server"
+				done
+				json_close_array
+			}
+
 			proto_add_dynamic_defaults
 			[ -n "$zone" ] && json_add_string zone "$zone"
 			[ -n "$ip4table" ] && json_add_string ip4table "$ip4table"
@@ -235,18 +246,29 @@ _proto_mbim_setup() {
 	}
 
 	[ "$iptype" != "ipv4" ] && {
+		ipv6address=$(_proto_mbim_get_field ipv6address "$mbimconfig")
 		if [ -n "$ipv6address" ]; then
 			json_init
 			json_add_string name "${interface}_6"
 			json_add_string ifname "@$interface"
 			json_add_string proto "static"
+
 			json_add_array ip6addr
-			json_add_string "" "$ipv6address"
-			json_close_array
-			json_add_string ip6gw "$ipv6gateway"
-			json_add_array dns
-			[ "$peerdns" = 0 ] || json_add_string "" "$ipv6dnsserver"
+			for address in $ipv6address; do
+				json_add_string "" "$address"
+			done
 			json_close_array
+
+			json_add_string ip6gw $(_proto_mbim_get_field ipv6gateway "$mbimconfig")
+
+			[ "$peerdns" = 0 ] || {
+				json_add_array dns
+				for server in $(_proto_mbim_get_field ipv6dnsserver "$mbimconfig"); do
+					json_add_string "" "$server"
+				done
+				json_close_array
+			}
+
 			proto_add_dynamic_defaults
 			[ -n "$zone" ] && json_add_string zone "$zone"
 			[ -n "$ip6table" ] && json_add_string ip6table "$ip6table"




More information about the lede-commits mailing list