umbim: restructure IPv4/IPv6 handling
authorLech Perczak <lech.perczak@gmail.com>
Mon, 19 Jul 2021 19:16:08 +0000 (21:16 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 29 Apr 2023 19:33:04 +0000 (21:33 +0200)
Check whether interface is configured per IP type, not per DHCP. This is
preparation to allow fallback to DHCP if static IP configuration is not
available, which is the default option for MBIM modems

Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
package/network/utils/umbim/files/lib/netifd/proto/mbim.sh

index e7866340aed48a8139584ed9400ac0ad6157b1ea..9af5b69ac110c51c752ea5b2355ff4222cbead3c 100755 (executable)
@@ -171,15 +171,15 @@ _proto_mbim_setup() {
 
        local zone="$(fw3 -q network "$interface" 2>/dev/null)"
 
-       if [ -z "$dhcp" -o "$dhcp" = 0 ]; then
-               echo "mbim[$$]" "Setting up $ifname"
-               eval $(umbim $DBG -n -t $tid -d $device config | sed 's/: /=/g')
-               tid=$((tid + 1))
+       echo "mbim[$$]" "Setting up $ifname"
+       eval $(umbim $DBG -n -t $tid -d $device config | sed 's/: /=/g')
+       tid=$((tid + 1))
 
-               proto_init_update "$ifname" 1
-               proto_send_update "$interface"
+       proto_init_update "$ifname" 1
+       proto_send_update "$interface"
 
-               [ "$iptype" != "ipv6" ] && {
+       [ "$iptype" != "ipv6" ] && {
+               if [ -z "$dhcp" -o "$dhcp" = 0 ]; then
                        json_init
                        json_add_string name "${interface}_4"
                        json_add_string ifname "@$interface"
@@ -195,9 +195,21 @@ _proto_mbim_setup() {
                        [ -n "$zone" ] && json_add_string zone "$zone"
                        json_close_object
                        ubus call network add_dynamic "$(json_dump)"
-               }
+               else
+                       echo "mbim[$$]" "Starting DHCP on $ifname"
+                       json_init
+                       json_add_string name "${interface}_4"
+                       json_add_string ifname "@$interface"
+                       json_add_string proto "dhcp"
+                       proto_add_dynamic_defaults
+                       [ -n "$zone" ] && json_add_string zone "$zone"
+                       json_close_object
+                       ubus call network add_dynamic "$(json_dump)"
+               fi
+       }
 
-               [ "$iptype" != "ipv4" ] && {
+       [ "$iptype" != "ipv4" ] && {
+               if [ -z "$dhcp" -o "$dhcp" = 0 ]; then
                        json_init
                        json_add_string name "${interface}_6"
                        json_add_string ifname "@$interface"
@@ -213,24 +225,8 @@ _proto_mbim_setup() {
                        [ -n "$zone" ] && json_add_string zone "$zone"
                        json_close_object
                        ubus call network add_dynamic "$(json_dump)"
-               }
-       else
-               echo "mbim[$$]" "Starting DHCP on $ifname"
-               proto_init_update "$ifname" 1
-               proto_send_update "$interface"
-
-               [ "$pdptype" = "ipv4" -o "$pdptype" = "ipv4v6" ] && {
-                       json_init
-                       json_add_string name "${interface}_4"
-                       json_add_string ifname "@$interface"
-                       json_add_string proto "dhcp"
-                       proto_add_dynamic_defaults
-                       [ -n "$zone" ] && json_add_string zone "$zone"
-                       json_close_object
-                       ubus call network add_dynamic "$(json_dump)"
-               }
-
-               [ "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] && {
+               else
+                       echo "mbim[$$]" "Starting DHCPv6 on $ifname"
                        json_init
                        json_add_string name "${interface}_6"
                        json_add_string ifname "@$interface"
@@ -240,8 +236,8 @@ _proto_mbim_setup() {
                        [ -n "$zone" ] && json_add_string zone "$zone"
                        json_close_object
                        ubus call network add_dynamic "$(json_dump)"
-               }
-       fi
+               fi
+       }
 
        uci_set_state network $interface tid "$tid"
 }