Add support for options 'defaultroute', 'peerdns' and 'metric' to QMI, NCM,
MBIM and DirectIP dynamic dhcp interfaces. Same as for other network
interfaces, these options should be respected.

This includes the changes from http://patchwork.ozlabs.org/patch/581065/

Signed-off-by: Jakub Janco <kub...@gmail.com>
Signed-off-by: Bruno Randolf <b...@einfach.org>
---
 package/network/utils/comgt/Makefile               |  2 +-
 package/network/utils/comgt/files/directip.sh      | 13 ++++++++--
 package/network/utils/comgt/files/ncm.sh           | 13 ++++++++--
 .../utils/umbim/files/lib/netifd/proto/mbim.sh     | 13 ++++++++--
 .../utils/uqmi/files/lib/netifd/proto/qmi.sh       | 29 ++++++++++++++++------
 5 files changed, 55 insertions(+), 15 deletions(-)

diff --git a/package/network/utils/comgt/Makefile 
b/package/network/utils/comgt/Makefile
index ac19aad..29bd62c 100644
--- a/package/network/utils/comgt/Makefile
+++ b/package/network/utils/comgt/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=comgt
 PKG_VERSION:=0.32
-PKG_RELEASE:=27
+PKG_RELEASE:=28
 
 PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
 PKG_SOURCE_URL:=@SF/comgt
diff --git a/package/network/utils/comgt/files/directip.sh 
b/package/network/utils/comgt/files/directip.sh
index d828052..c94585c 100644
--- a/package/network/utils/comgt/files/directip.sh
+++ b/package/network/utils/comgt/files/directip.sh
@@ -15,14 +15,17 @@ proto_directip_init_config() {
        proto_config_add_string "auth"
        proto_config_add_string "username"
        proto_config_add_string "password"
+       proto_config_add_boolean "defaultroute"
+       proto_config_add_boolean "peerdns"
+       proto_config_add_int "metric"
 }
 
 proto_directip_setup() {
        local interface="$1"
        local chat devpath devname
 
-       local device apn pincode ifname auth username password
-       json_get_vars device apn pincode auth username password
+       local device apn pincode ifname auth username password defaultroute 
peerdns metric
+       json_get_vars device apn pincode auth username password defaultroute 
peerdns metric
 
        [ -n "$ctl_device" ] && device=$ctl_device
 
@@ -80,6 +83,9 @@ proto_directip_setup() {
        json_add_string name "${interface}_4"
        json_add_string ifname "@$interface"
        json_add_string proto "dhcp"
+       [ -n "$defaultroute" ] && json_add_boolean defaultroute "$defaultroute"
+       [ -n "$peerdns" ] && json_add_boolean peerdns "$peerdns"
+       [ -n "$metric" ] && json_add_int metric "$metric"
        ubus call network add_dynamic "$(json_dump)"
 
        json_init
@@ -87,6 +93,9 @@ proto_directip_setup() {
        json_add_string ifname "@$interface"
        json_add_string proto "dhcpv6"
        json_add_string extendprefix 1
+       [ -n "$defaultroute" ] && json_add_boolean defaultroute "$defaultroute"
+       [ -n "$peerdns" ] && json_add_boolean peerdns "$peerdns"
+       [ -n "$metric" ] && json_add_int metric "$metric"
        ubus call network add_dynamic "$(json_dump)"
 
        return 0
diff --git a/package/network/utils/comgt/files/ncm.sh 
b/package/network/utils/comgt/files/ncm.sh
index 571cfaa..5c5be0c 100644
--- a/package/network/utils/comgt/files/ncm.sh
+++ b/package/network/utils/comgt/files/ncm.sh
@@ -19,6 +19,9 @@ proto_ncm_init_config() {
        proto_config_add_string mode
        proto_config_add_string pdptype
        proto_config_add_boolean ipv6
+       proto_config_add_boolean defaultroute
+       proto_config_add_boolean peerdns
+       proto_config_add_int metric
 }
 
 proto_ncm_setup() {
@@ -26,8 +29,8 @@ proto_ncm_setup() {
 
        local manufacturer initialize setmode connect ifname devname devpath
 
-       local device apn auth username password pincode delay mode pdptype ipv6
-       json_get_vars device apn auth username password pincode delay mode 
pdptype ipv6
+       local device apn auth username password pincode delay mode pdptype ipv6 
defaultroute peerdns metric
+       json_get_vars device apn auth username password pincode delay mode 
pdptype ipv6 defaultroute peerdns metric
        
        if [ "$ipv6" = 0 ]; then
                ipv6=""
@@ -141,6 +144,9 @@ proto_ncm_setup() {
        json_add_string name "${interface}_4"
        json_add_string ifname "@$interface"
        json_add_string proto "dhcp"
+       [ -n "$defaultroute" ] && json_add_boolean defaultroute "$defaultroute"
+       [ -n "$peerdns" ] && json_add_boolean peerdns "$peerdns"
+       [ -n "$metric" ] && json_add_int metric "$metric"
        ubus call network add_dynamic "$(json_dump)"
 
        [ -n "$ipv6" ] && {
@@ -149,6 +155,9 @@ proto_ncm_setup() {
                json_add_string ifname "@$interface"
                json_add_string proto "dhcpv6"
                json_add_string extendprefix 1
+               [ -n "$defaultroute" ] && json_add_boolean defaultroute 
"$defaultroute"
+               [ -n "$peerdns" ] && json_add_boolean peerdns "$peerdns"
+               [ -n "$metric" ] && json_add_int metric "$metric"
                ubus call network add_dynamic "$(json_dump)"
        }
 }
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 f8b2c06..907ce47 100755
--- a/package/network/utils/umbim/files/lib/netifd/proto/mbim.sh
+++ b/package/network/utils/umbim/files/lib/netifd/proto/mbim.sh
@@ -17,6 +17,9 @@ proto_mbim_init_config() {
        proto_config_add_string auth
        proto_config_add_string username
        proto_config_add_string password
+       proto_config_add_boolean defaultroute
+       proto_config_add_boolean peerdns
+       proto_config_add_int metric
 }
 
 _proto_mbim_setup() {
@@ -24,8 +27,8 @@ _proto_mbim_setup() {
        local tid=2
        local ret
 
-       local device apn pincode delay
-       json_get_vars device apn pincode delay auth username password
+       local device apn pincode delay defaultroute peerdns metric
+       json_get_vars device apn pincode delay auth username password 
defaultroute peerdns metric
 
        [ -n "$ctl_device" ] && device=$ctl_device
 
@@ -130,6 +133,9 @@ _proto_mbim_setup() {
        json_add_string name "${interface}_4"
        json_add_string ifname "@$interface"
        json_add_string proto "dhcp"
+       [ -n "$defaultroute" ] && json_add_boolean defaultroute "$defaultroute"
+       [ -n "$peerdns" ] && json_add_boolean peerdns "$peerdns"
+       [ -n "$metric" ] && json_add_int metric "$metric"
        json_close_object
        ubus call network add_dynamic "$(json_dump)"
 
@@ -138,6 +144,9 @@ _proto_mbim_setup() {
        json_add_string ifname "@$interface"
        json_add_string proto "dhcpv6"
        json_add_string extendprefix 1
+       [ -n "$defaultroute" ] && json_add_boolean defaultroute "$defaultroute"
+       [ -n "$peerdns" ] && json_add_boolean peerdns "$peerdns"
+       [ -n "$metric" ] && json_add_int metric "$metric"
        ubus call network add_dynamic "$(json_dump)"
 }
 
diff --git a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh 
b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
index 48864be..3d1e5f9 100755
--- a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
+++ b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
@@ -19,15 +19,18 @@ proto_qmi_init_config() {
        proto_config_add_string modes
        proto_config_add_boolean ipv6
        proto_config_add_boolean dhcp
+       proto_config_add_boolean defaultroute
+       proto_config_add_boolean peerdns
+       proto_config_add_int metric
 }
 
 proto_qmi_setup() {
        local interface="$1"
 
-       local device apn auth username password pincode delay modes ipv6 dhcp
+       local device apn auth username password pincode delay modes ipv6 dhcp 
defaultroute peerdns metric
        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
+       json_get_vars device apn auth username password pincode delay modes 
ipv6 dhcp defaultroute peerdns metric
 
        ipv4=1
 
@@ -150,9 +153,11 @@ proto_qmi_setup() {
                        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"
+                       [ "$peerdns" = 0 ] || {
+                               proto_add_dns_server "$dns1"
+                               proto_add_dns_server "$dns2"
+                       }
+                       [ "$defaultroute" = 0 ] || proto_add_ipv4_route 
"0.0.0.0" 0 "$gateway" "" "$metric"
                        proto_add_data
                        json_add_string "cid_4" "$cid_4"
                        json_add_string "pdh_4" "$pdh_4"
@@ -175,9 +180,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" "$metric" "" "${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"
@@ -204,6 +211,9 @@ proto_qmi_setup() {
                        json_add_string name "${interface}_4"
                        json_add_string ifname "@$interface"
                        json_add_string proto "dhcp"
+                       [ -n "$defaultroute" ] && json_add_boolean defaultroute 
"$defaultroute"
+                       [ -n "$peerdns" ] && json_add_boolean peerdns "$peerdns"
+                       [ -n "$metric" ] && json_add_int metric "$metric"
                        json_close_object
                        ubus call network add_dynamic "$(json_dump)"
                }
@@ -215,6 +225,9 @@ proto_qmi_setup() {
                        json_add_string proto "dhcpv6"
                        # RFC 7278: Extend an IPv6 /64 Prefix to LAN
                        json_add_string extendprefix 1
+                       [ -n "$defaultroute" ] && json_add_boolean defaultroute 
"$defaultroute"
+                       [ -n "$peerdns" ] && json_add_boolean peerdns "$peerdns"
+                       [ -n "$metric" ] && json_add_int metric "$metric"
                        json_close_object
                        ubus call network add_dynamic "$(json_dump)"
                }
-- 
1.9.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to