From patchwork Wed Nov 18 19:36:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Filip Moc X-Patchwork-Id: 1402476 X-Patchwork-Delegate: daniel@makrotopia.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.openwrt.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=moc6.cz Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=ausWattJ; dkim=fail reason="signature verification failed" (4096-bit key; secure) header.d=moc6.cz header.i=@moc6.cz header.a=rsa-sha256 header.s=mail20201116 header.b=GMX/+5Zq; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4CbtQ75yKYz9s1l for ; Thu, 19 Nov 2020 06:38:07 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe :List-Id:In-Reply-To:MIME-Version:Message-ID:Subject:To:From:Date:Reply-To:Cc :Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:References:List-Owner; bh=PxWnEDtV2xJnTQuqhDuppWKTMuyWjDUjl7lqZlPDjt4=; b=ausWattJm14SWrJjZkXmaOPBQ1 11AXrcMJGfocnxsh4wft/7Wn+ovbGPNn/O3oH91ffMPAJBoTF2Ozp06U+vdPMwPbdq1L2+ZLN7YCD 2Z+c71E2CUWb7Axb6/fSaA9BeaPZy4Dpiv2Ly4jjkqWFUnBCDWvWbESkaW6sG6fsz+L54y1C9q3vF P+Ahc4IjZxSOQ3jSNsR5X97XzM+z2fTlntDp5a2JoxIsmYUfVVx2Aa2im7nglWoyeoRSG3eLpuM6M eSDSvR8w5WNJfIFyqo5h3VM3IfsaBGK7q/ZDnalA2n/zosV6PGGQGgvbACX87QZZNkSh2ftdfyXU1 H+cxt26w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfTFd-0006LX-16; Wed, 18 Nov 2020 19:36:21 +0000 Received: from hosting.moc6.cz ([2a02:c60:c70:8900::1] helo=moc6.cz) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfTFa-0006LA-1s for openwrt-devel@lists.openwrt.org; Wed, 18 Nov 2020 19:36:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=moc6.cz; s=mail20201116; h=In-Reply-To:Message-ID:Subject:To:From:Date:Cc:Reply-To; bh=WyHHDJCefQscXZiyKQgSNb4NdOnKp7KNd3gXO95FLe0=; b=GMX/+5ZqOvSHlCZHbZkmicmzsN 1Nw5x/Gd1o5z44kAxkcbNGP93zTbp305l/4QSHJHrqImSGFD0cfu1f3ov21UXT+Ibx/G07QjXZFBd gxVbPI2iMz1cE/1HjH/efBkHZzCQlFe5aXWYUeLr6DCr0iBar9ZGJ+ZkYpeCjL+MA+gP1cJIiGIas E3KwMvIA20JbvGzLMRcz0EHHCWNddzEAbl/KRnnBBLvAhRsxMKEICyIC5eYq5Om3F2yF5wIDy/O2P 7ahxpcpfREsYSRFuPKGtgcjatT1kjKKLPLg0rdITb9UW50Nscc5PpV+o6b2ca8i4Fy2RbgqWXOu/m oYg9oz6gXgj5Beh8Xj7IwjhowlJsAiYxJgQdC6kdY7oc2IS6zJUXKglyyHJMig/428eVhwXmDjBNC nSibK+B5UEYDfleXFDbHFRPOlpIsMDfSe2GJXX2gq8VCXIcmOTaasnjDc+Id3G3hjjrcSP9RfEauq JwgdRSM8giQtZ17w5XR98mzQl+28HOzSbVVBRy4ze8gawzJDFgK3DLLqLh4tuZY9YeOKmCZ6Z4Zw7 +jHEPmFWIIe5JW+vkbtHKJENIecYnmzJhPnF5BBIkycVDZklEuA+cFf5b4NNcVkDyXbr2hT4kWKEC YLT78f1oeaDiunL4SrZCeFShvYVASgtxJSENgpJIM=; Received: from Debian-exim by moc6.cz with local (Exim 4.94) (envelope-from ) authenticated: Debian-exim id 1kfTFU-002MRX-9j; Wed, 18 Nov 2020 20:36:12 +0100 Date: Wed, 18 Nov 2020 20:36:12 +0100 From: Filip Moc To: openwrt-devel@lists.openwrt.org Subject: [PATCH v2 1/4] uqmi: add support for IPv4 autoconf from QMI Message-ID: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <670d74fae6055189078aae6b87fe67a8229f4ee0.1605364389.git.lede@moc6.cz> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201118_143618_214251_4F8A27CE X-CRM114-Status: GOOD ( 16.21 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org 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 --- Notes: v1->v2: - Bumped PKG_RELEASE package/network/utils/uqmi/Makefile | 2 +- .../utils/uqmi/files/lib/netifd/proto/qmi.sh | 49 ++++++++++++++----- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/package/network/utils/uqmi/Makefile b/package/network/utils/uqmi/Makefile index dee4bd051e..4a15a15c19 100644 --- a/package/network/utils/uqmi/Makefile +++ b/package/network/utils/uqmi/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=uqmi -PKG_RELEASE:=7 +PKG_RELEASE:=8 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/uqmi.git 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 8cbe9e97e7..7870eb7382 100755 --- a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh +++ b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh @@ -19,6 +19,7 @@ proto_qmi_init_config() { proto_config_add_string modes proto_config_add_string pdptype proto_config_add_int profile + proto_config_add_boolean dhcp proto_config_add_boolean dhcpv6 proto_config_add_boolean autoconnect proto_config_add_int plmn @@ -31,13 +32,13 @@ proto_qmi_setup() { local interface="$1" local dataformat connstat 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 cid_4 pdh_4 cid_6 pdh_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 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 [ "$timeout" = "" ] && timeout="10" @@ -353,15 +354,41 @@ proto_qmi_setup() { } [ -n "$pdh_4" ] && { - 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)" + if [ "$dhcp" = 0 ]; then + json_load "$(uqmi -s -d $device --set-client-id wds,$cid_4 --get-current-settings)" + json_select ipv4 + json_get_var ip_4 ip + json_get_var gateway_4 gateway + json_get_var dns1_4 dns1 + json_get_var dns2_4 dns2 + json_get_var subnet_4 subnet + + 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 } }