qmi: add metric, defaultroute and peerdns options for qmi protocol
[openwrt/staging/dedeckeh.git] / package / network / utils / uqmi / files / lib / netifd / proto / qmi.sh
index 53bf7a316acb41af38d92a449c7311b54384f155..12356989a2d52f8639fc1335edd35ac4a4159d5c 100755 (executable)
@@ -19,16 +19,16 @@ proto_qmi_init_config() {
        proto_config_add_string modes
        proto_config_add_boolean ipv6
        proto_config_add_boolean dhcp
-       proto_config_add_int metric
+       proto_config_add_defaults
 }
 
 proto_qmi_setup() {
        local interface="$1"
 
-       local device apn auth username password pincode delay modes ipv6 dhcp metric
+       local device apn auth username password pincode delay modes ipv6 dhcp $PROTO_DEFAULT_OPTIONS
        local cid_4 pdh_4 cid_6 pdh_6 ipv4
        local ip subnet gateway dns1 dns2 ip_6 ip_prefix_length gateway_6 dns1_6 dns2_6
-       json_get_vars device apn auth username password pincode delay modes ipv6 dhcp metric
+       json_get_vars device apn auth username password pincode delay modes ipv6 dhcp $PROTO_DEFAULT_OPTIONS
 
        ipv4=1
 
@@ -172,9 +172,11 @@ proto_qmi_setup() {
                        proto_add_ipv6_address "$ip_6" "128"
                        proto_add_ipv6_prefix "${ip_6}/${ip_prefix_length}"
                        proto_add_ipv6_route "$gateway_6" "128"
-                       proto_add_ipv6_route "::0" 0 "$gateway_6" "" "" "${ip_6}/${ip_prefix_length}"
-                       proto_add_dns_server "$dns1_6"
-                       proto_add_dns_server "$dns2_6"
+                       [ "$defaultroute" = 0 ] || proto_add_ipv6_route "::0" 0 "$gateway_6" "" "" "${ip_6}/${ip_prefix_length}"
+                       [ "$peerdns" = 0 ] || {
+                               proto_add_dns_server "$dns1_6"
+                               proto_add_dns_server "$dns2_6"
+                       }
                        proto_add_data
                        json_add_string "cid_6" "$cid_6"
                        json_add_string "pdh_6" "$pdh_6"
@@ -183,7 +185,7 @@ proto_qmi_setup() {
                        json_add_string name "${interface}_6"
                        json_add_string ifname "@$interface"
                        json_add_string proto "dhcpv6"
-                       json_add_int metric "$metric"
+                       proto_add_dynamic_defaults
                        # RFC 7278: Extend an IPv6 /64 Prefix to LAN
                        json_add_string extendprefix 1
                        json_close_object
@@ -199,7 +201,7 @@ proto_qmi_setup() {
                json_add_string name "${interface}_4"
                json_add_string ifname "@$interface"
                json_add_string proto "dhcp"
-               json_add_int metric "$metric"
+               proto_add_dynamic_defaults
                json_close_object
                ubus call network add_dynamic "$(json_dump)"
        }