uqmi: always use DHCP for IPv4
[openwrt/staging/yousong.git] / package / network / utils / uqmi / files / lib / netifd / proto / qmi.sh
index 32df6ee9b16f6970e3f44512f86dfb2c0ad88239..81c1c3525f725ae8472095159c3861849848ed34 100755 (executable)
@@ -139,27 +139,20 @@ proto_qmi_setup() {
                return 1
        }
 
-       if [ -z "$dhcp" -o "$dhcp" = 0 ]; then
-               echo "Setting up $ifname"
-               [ -n "$ipv4" ] && {
-                       json_load "$(uqmi -s -d $device --set-client-id wds,$cid_4 --get-current-settings)"
-                       json_select ipv4
-                       json_get_vars ip subnet gateway dns1 dns2
-
-                       proto_init_update "$ifname" 1
-                       proto_set_keep 1
-                       proto_add_ipv4_address "$ip" "$subnet"
-                       proto_add_dns_server "$dns1"
-                       proto_add_dns_server "$dns2"
-                       proto_add_ipv4_route "0.0.0.0" 0 "$gateway"
-                       proto_add_data
-                       json_add_string "cid_4" "$cid_4"
-                       json_add_string "pdh_4" "$pdh_4"
-                       proto_close_data
-                       proto_send_update "$interface"
-               }
-       
-               [ -n "$ipv6" ] && {
+       echo "Setting up $ifname"
+       proto_init_update "$ifname" 1
+       proto_add_data
+       [ -n "$ipv4" ] && {
+               json_add_string "cid_4" "$cid_4"
+               json_add_string "pdh_4" "$pdh_4"
+       }
+       [ -n "$ipv6" ] && {
+               json_add_string "cid_6" "$cid_6"
+               json_add_string "pdh_6" "$pdh_6"
+       }
+
+       [ -n "$ipv6" ] && {
+               if [ -z "$dhcp" -o "$dhcp" = 0 ]; then
                        json_load "$(uqmi -s -d $device --set-client-id wds,$cid_6 --get-current-settings)"
                        json_select ipv6
                        json_get_var ip_6 ip
@@ -168,8 +161,6 @@ proto_qmi_setup() {
                        json_get_var dns2_6 dns2
                        json_get_var ip_prefix_length ip-prefix-length
 
-                       proto_init_update "$ifname" 1
-                       proto_set_keep 1
                        # RFC 7278: Extend an IPv6 /64 Prefix to LAN
                        proto_add_ipv6_address "$ip_6" "128"
                        proto_add_ipv6_prefix "${ip_6}/${ip_prefix_length}"
@@ -180,35 +171,7 @@ proto_qmi_setup() {
                        proto_add_data
                        json_add_string "cid_6" "$cid_6"
                        json_add_string "pdh_6" "$pdh_6"
-                       proto_close_data
-                       proto_send_update "$interface"
-               }
-       else
-               echo "Starting DHCP on $ifname"
-               proto_init_update "$ifname" 1
-               proto_add_data
-               [ -n "$ipv4" ] && {
-                       json_add_string "cid_4" "$cid_4"
-                       json_add_string "pdh_4" "$pdh_4"
-               }
-               [ -n "$ipv6" ] && {
-                       json_add_string "cid_6" "$cid_6"
-                       json_add_string "pdh_6" "$pdh_6"
-               }
-               proto_close_data
-               proto_send_update "$interface"
-
-               [ -n "$ipv4" ] && {
-                       json_init
-                       json_add_string name "${interface}_4"
-                       json_add_string ifname "@$interface"
-                       json_add_string proto "dhcp"
-                       json_add_int metric "$metric"
-                       json_close_object
-                       ubus call network add_dynamic "$(json_dump)"
-               }
-
-               [ -n "$ipv6" ] && {
+               else
                        json_init
                        json_add_string name "${interface}_6"
                        json_add_string ifname "@$interface"
@@ -218,8 +181,21 @@ proto_qmi_setup() {
                        json_add_string extendprefix 1
                        json_close_object
                        ubus call network add_dynamic "$(json_dump)"
-               }
-       fi
+               fi
+       }
+
+       proto_close_data
+       proto_send_update "$interface"
+
+       [ -n "$ipv4" ] && {
+               json_init
+               json_add_string name "${interface}_4"
+               json_add_string ifname "@$interface"
+               json_add_string proto "dhcp"
+               json_add_int metric "$metric"
+               json_close_object
+               ubus call network add_dynamic "$(json_dump)"
+       }
 }
 
 proto_qmi_teardown() {