umbim: use static config by default, fallback to DHCP
authorLech Perczak <lech.perczak@gmail.com>
Mon, 19 Jul 2021 19:28:07 +0000 (21:28 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 29 Apr 2023 19:33:04 +0000 (21:33 +0200)
Finally, inspired by ModemManager's logic, make static configuration
obtained through MBIM control channel, preferred.
If IP configuration is not available this way, fallback to DHCP(v6) if
enabled, else do not create a sub-interface for unavailable IP type.

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

index d8df783a9262af255da4a9b479519ffd017ad61b..294dc64400a3a189a17816cb68db24fd6814b52e 100755 (executable)
@@ -179,8 +179,11 @@ _proto_mbim_setup() {
        proto_init_update "$ifname" 1
        proto_send_update "$interface"
 
+       [ -z "$dhcp" ] && dhcp=1
+       [ -z "$dhcpv6" ] && dhcpv6=1
+
        [ "$iptype" != "ipv6" ] && {
-               if [ -z "$dhcp" -o "$dhcp" = 0 ]; then
+               if [ -n "$ipv4address" ]; then
                        json_init
                        json_add_string name "${interface}_4"
                        json_add_string ifname "@$interface"
@@ -196,7 +199,7 @@ _proto_mbim_setup() {
                        [ -n "$zone" ] && json_add_string zone "$zone"
                        json_close_object
                        ubus call network add_dynamic "$(json_dump)"
-               else
+               elif [ "$dhcp" != 0 ]; then
                        echo "mbim[$$]" "Starting DHCP on $ifname"
                        json_init
                        json_add_string name "${interface}_4"
@@ -210,7 +213,7 @@ _proto_mbim_setup() {
        }
 
        [ "$iptype" != "ipv4" ] && {
-               if [ -z "$dhcpv6" -o "$dhcpv6" = 0 ]; then
+               if [ -n "$ipv6address" ]; then
                        json_init
                        json_add_string name "${interface}_6"
                        json_add_string ifname "@$interface"
@@ -226,7 +229,7 @@ _proto_mbim_setup() {
                        [ -n "$zone" ] && json_add_string zone "$zone"
                        json_close_object
                        ubus call network add_dynamic "$(json_dump)"
-               else
+               elif [ "$dhcpv6" != 0 ]; then
                        echo "mbim[$$]" "Starting DHCPv6 on $ifname"
                        json_init
                        json_add_string name "${interface}_6"