uqmi: add support for IPv4 autoconf from QMI

There already was an option for autoconfiguring IPv4 from QMI but this
was removed by commit 3b9b963e6e08 ("uqmi: always use DHCP for IPv4").

DHCP does not work on MR400 LTE module (in TL-MR6400 v4) so let's readd
support for IPv4 autoconf from QMI but this time allow to configure this
for IPv4 and IPv6 independently and keep DHCP default on IPv4.

Signed-off-by: Filip Moc <lede@moc6.cz>
Signed-off-by: maurerr <mariusd84@gmail.com>
This commit is contained in:
Filip Moc 2020-11-18 20:36:12 +01:00 committed by maurerr
parent 44fbc5182a
commit a88fe4a0ec
2 changed files with 39 additions and 12 deletions

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=uqmi PKG_NAME:=uqmi
PKG_RELEASE:=7 PKG_RELEASE:=8
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/uqmi.git PKG_SOURCE_URL=$(PROJECT_GIT)/project/uqmi.git

View File

@ -19,6 +19,7 @@ proto_qmi_init_config() {
proto_config_add_string modes proto_config_add_string modes
proto_config_add_string pdptype proto_config_add_string pdptype
proto_config_add_int profile proto_config_add_int profile
proto_config_add_boolean dhcp
proto_config_add_boolean dhcpv6 proto_config_add_boolean dhcpv6
proto_config_add_boolean autoconnect proto_config_add_boolean autoconnect
proto_config_add_int plmn proto_config_add_int plmn
@ -31,13 +32,13 @@ proto_qmi_setup() {
local interface="$1" local interface="$1"
local dataformat connstat local dataformat connstat
local device apn auth username password pincode delay modes pdptype local device apn auth username password pincode delay modes pdptype
local profile dhcpv6 autoconnect plmn timeout mtu $PROTO_DEFAULT_OPTIONS local profile dhcp dhcpv6 autoconnect plmn timeout mtu $PROTO_DEFAULT_OPTIONS
local ip4table ip6table local ip4table ip6table
local cid_4 pdh_4 cid_6 pdh_6 local cid_4 pdh_4 cid_6 pdh_6
local ip_6 ip_prefix_length gateway_6 dns1_6 dns2_6 local ip_6 ip_prefix_length gateway_6 dns1_6 dns2_6
json_get_vars device apn auth username password pincode delay modes json_get_vars device apn auth username password pincode delay modes
json_get_vars pdptype profile dhcpv6 autoconnect plmn ip4table json_get_vars pdptype profile dhcp dhcpv6 autoconnect plmn ip4table
json_get_vars ip6table timeout mtu $PROTO_DEFAULT_OPTIONS json_get_vars ip6table timeout mtu $PROTO_DEFAULT_OPTIONS
[ "$timeout" = "" ] && timeout="10" [ "$timeout" = "" ] && timeout="10"
@ -353,15 +354,41 @@ proto_qmi_setup() {
} }
[ -n "$pdh_4" ] && { [ -n "$pdh_4" ] && {
json_init if [ "$dhcp" = 0 ]; then
json_add_string name "${interface}_4" json_load "$(uqmi -s -d $device --set-client-id wds,$cid_4 --get-current-settings)"
json_add_string ifname "@$interface" json_select ipv4
json_add_string proto "dhcp" json_get_var ip_4 ip
[ -n "$ip4table" ] && json_add_string ip4table "$ip4table" json_get_var gateway_4 gateway
proto_add_dynamic_defaults json_get_var dns1_4 dns1
[ -n "$zone" ] && json_add_string zone "$zone" json_get_var dns2_4 dns2
json_close_object json_get_var subnet_4 subnet
ubus call network add_dynamic "$(json_dump)"
proto_init_update "$ifname" 1
proto_set_keep 1
proto_add_ipv4_address "$ip_4" "$subnet_4"
proto_add_ipv4_route "$gateway_4" "128"
[ "$defaultroute" = 0 ] || proto_add_ipv4_route "0.0.0.0" 0 "$gateway_4"
[ "$peerdns" = 0 ] || {
proto_add_dns_server "$dns1_4"
proto_add_dns_server "$dns2_4"
}
[ -n "$zone" ] && {
proto_add_data
json_add_string zone "$zone"
proto_close_data
}
proto_send_update "$interface"
else
json_init
json_add_string name "${interface}_4"
json_add_string ifname "@$interface"
json_add_string proto "dhcp"
[ -n "$ip4table" ] && json_add_string ip4table "$ip4table"
proto_add_dynamic_defaults
[ -n "$zone" ] && json_add_string zone "$zone"
json_close_object
ubus call network add_dynamic "$(json_dump)"
fi
} }
} }