From patchwork Sun Nov 4 22:22:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Golle X-Patchwork-Id: 992801 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=lists.openwrt.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=makrotopia.org Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="NgqKtzRr"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 42p9Lp270lzB6Nv for ; Mon, 5 Nov 2018 09:23:30 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Subject:In-Reply-To:MIME-Version: References:Message-ID:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=TEtQOPN65s2RDCXkSHNMuZ3SqGpX8shGM650sSblduQ=; b=NgqKtzRrnRKKXP jepSFq5Rk4bllZnEgBHdhxQKEwTgw0ZVNxfnMMgbjudqgHTlOXaIpdWKq9UoDhK45oFDskmEHtMVL KZqfFihL/rVfUKwrpY1p8vcyJY+HgBZTeElfzX3dMFlSRIrLVISxs0bMSFlnCFxuNuuY2yr/qefpr xCTadzhhv5B1DD9/x/SNhqhXyPJKOmfNxC2VI47C3zqTCZWi83jwZXCtb3SeThZx9fd38XxUF3pXd bpyeJ/Tkwf9BHGPcDodh+zBRMfvKGS4G8FRd6UOLsXtjrXiUSEAT+MTFdFiGJR434jzGQfGCJNb2l aTN+6fugzgxpr/JTR7DA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gJQng-0005UQ-13; Sun, 04 Nov 2018 22:23:20 +0000 Received: from fudo.makrotopia.org ([2a07:2ec0:3002::71]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gJQnc-0005Ts-7M for openwrt-devel@lists.openwrt.org; Sun, 04 Nov 2018 22:23:17 +0000 Received: from local by fudo.makrotopia.org with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from ) id 1gJQnI-0005Qq-Hc; Sun, 04 Nov 2018 23:22:56 +0100 Date: Sun, 4 Nov 2018 23:22:50 +0100 From: Daniel Golle To: openwrt-devel@lists.openwrt.org Message-ID: <20181104222241.GA5970@makrotopia.org> References: <20181104210804.GA5482@makrotopia.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20181104210804.GA5482@makrotopia.org> User-Agent: Mutt/1.10.1 (2018-07-13) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181104_142316_264792_8020F226 X-CRM114-Status: GOOD ( 18.13 ) X-Spam-Score: -0.0 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record Subject: [OpenWrt-Devel] [PATCH v2] uqmi: allow matching IMSI for qmi networks X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Florian Eckert , Koen Vandeputte , Matti Laakso Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org Introduce 'imsi' configuration option for proto 'qmi' network interfaces. Setting it makes sure the configuration only gets used on the intended SIM card. In this way, one can have many configurations for different SIM cards selected automatically when the card was either swapped physically or in software (as possible on the APU3 board). We may need to add locking in dev.c function int qmi_device_open(struct qmi_dev *qmi, const char *path) to avoid multiple instances of uqmi operating on the same chardev. Signed-off-by: Daniel Golle --- package/network/utils/uqmi/Makefile | 2 +- .../utils/uqmi/files/lib/netifd/proto/qmi.sh | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/package/network/utils/uqmi/Makefile b/package/network/utils/uqmi/Makefile index b2f3474400..8eaf0bff3f 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:=5 +PKG_RELEASE:=6 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 9b2f69f009..f52f28676b 100755 --- a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh +++ b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh @@ -10,6 +10,7 @@ proto_qmi_init_config() { available=1 no_device=1 proto_config_add_string "device:device" + proto_config_add_string imsi proto_config_add_string apn proto_config_add_string auth proto_config_add_string username @@ -28,12 +29,12 @@ proto_qmi_init_config() { proto_qmi_setup() { local interface="$1" - local dataformat connstat - local device apn auth username password pincode delay modes pdptype profile dhcpv6 autoconnect plmn timeout $PROTO_DEFAULT_OPTIONS + local dataformat connstat imsi_actual + local device imsi apn auth username password pincode delay modes pdptype profile dhcpv6 autoconnect plmn timeout $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 pdptype profile dhcpv6 autoconnect plmn ip4table ip6table timeout $PROTO_DEFAULT_OPTIONS + json_get_vars device imsi apn auth username password pincode delay modes pdptype profile dhcpv6 autoconnect plmn ip4table ip6table timeout $PROTO_DEFAULT_OPTIONS [ "$timeout" = "" ] && timeout="10" @@ -83,6 +84,16 @@ proto_qmi_setup() { fi done + [ -n "$imsi" ] && { + imsi_actual="$(uqmi -s -d "$device" --get-imsi | cut -d'"' -f2)" + [ "$imsi" = "$imsi_actual" ] || { + echo "Configured IMSI doesn't match SIM card." + proto_notify_error "$interface" SIM_WRONG + proto_set_available "$interface" 0 + return 1 + } + } + if uqmi -s -d "$device" --get-pin-status | grep '"Not supported"' > /dev/null; then [ -n "$pincode" ] && { uqmi -s -d "$device" --verify-pin1 "$pincode" > /dev/null || uqmi -s -d "$device" --uim-verify-pin1 "$pincode" > /dev/null || {