From patchwork Sat Apr 11 10:25:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Theil X-Patchwork-Id: 1269301 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-ilmenau.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=KIMN5nMG; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (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 48zrdq0gQpz9sSt for ; Sat, 11 Apr 2020 20:26:39 +1000 (AEST) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=LQ+clUNzlISRLP8OcO6WJarwbNjWqeNiUVnjgjabDOw=; b=KIMN5nMGuD2yAq LmFhxlPTRHGWYhz//ixChay+t2hAUzlzf7/D3prC9U1D43lwTBnMKMMu7iQWfGHEY+sQoqpJhDhCB geQ819yqGMhgumBxipi+EoTZZac+2rcMEBXzOVtKEnYZnZV5ss2zxmpZzLnZBNhafAJqr2j+E+/bK ujy1oqHy34yEah3fdRiVjKmS4PHBWNyEpgGuDfAZF9Sx2j5kfYbLcgTCVo4h2CqVXlV5Fk+gANrXG aFx9Tu1sQbnEUK1KUThAxqPx3E38/w9xU5HiCvAzoypOqOiEfCnNOgzGcKc82vijxbfEwibyptmHE nFqMCauNzaMb6nW9Qs0w==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDLH-00037N-13; Sat, 11 Apr 2020 10:26:27 +0000 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKZ-0002QI-US for hostap@lists.infradead.org; Sat, 11 Apr 2020 10:25:45 +0000 Received: from isengard.fritz.box (unknown [87.147.56.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id 3F3E8580075; Sat, 11 Apr 2020 12:25:32 +0200 (CEST) From: Markus Theil To: hostap@lists.infradead.org Subject: [PATCH v2 01/11] nl80211: also check for no preauth feature Date: Sat, 11 Apr 2020 12:25:17 +0200 Message-Id: <20200411102527.154154-2-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> References: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200411_032544_143482_CF71BF0F X-CRM114-Status: GOOD ( 11.29 ) X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.24.186.67 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Markus Theil Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Before Linux 5.7 all pre-auth frames are forwared over the nl80211 ctrl port, if it is registered. hostap and wpa_supplicant currently do not assume this behavior, as pre-auth frames should be handled as ordinary data frames in the kernel. Checking against the NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH feature flag allows us to disable this behavior later on ctrl port registration. No new capa->flags value is introduced, instead WPA_DRIVER_FLAGS_CONTROL_PORT is only set now, if this feature is present. Without this feature, only control port tx is possible without breaking pre-auth features. Signed-off-by: Markus Theil --- src/drivers/driver_nl80211_capa.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c index b4fed9ea8..cd0ecf75d 100644 --- a/src/drivers/driver_nl80211_capa.c +++ b/src/drivers/driver_nl80211_capa.c @@ -439,7 +439,9 @@ static void wiphy_info_ext_feature_flags(struct wiphy_info_data *info, capa->flags |= WPA_DRIVER_FLAGS_FTM_RESPONDER; if (ext_feature_isset(ext_features, len, - NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211)) + NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211) && + ext_feature_isset(ext_features, len, + NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH)) capa->flags |= WPA_DRIVER_FLAGS_CONTROL_PORT; if (ext_feature_isset(ext_features, len, From patchwork Sat Apr 11 10:25:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Theil X-Patchwork-Id: 1269299 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-ilmenau.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=I/nFhKM/; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (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 48zrdH2Zsvz9sSt for ; Sat, 11 Apr 2020 20:26:11 +1000 (AEST) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ilzLJ7rkE10LILGsClrYl4VhHB8AH9NPTbqKpdMtwZM=; b=I/nFhKM/fZPsHK 3GzQ8QrG0YJeVhdAAGwx8R5IPOErTvQ35cPNKPETY1U+IetRFw5iJQ2kANRHe3iZoQKMkOfiYgWBZ u7/76qzFx9DSlvszwsCiTEp4jHI25VSQAo8dYOpapkTHSGXX/f3BjUwufHUpJLenvvXuSWZdgL2jF A7JyiMObvJmO/zQ1IfRia7exGONYmtWVepgThrvG0iVG4PBnH+kMB6imUYE6C+xQCz7C26koAh3/M o9rFKkH8CY/fKzcTWeED765PLclG34sx7VfT+fAYMGwFApggaanJjJMl6LRu+IWrR/duTpffb87rj 1w62xNV+dwrxfcLMDolQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKn-0002kc-WC; Sat, 11 Apr 2020 10:25:58 +0000 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKZ-0002QG-US for hostap@lists.infradead.org; Sat, 11 Apr 2020 10:25:45 +0000 Received: from isengard.fritz.box (unknown [87.147.56.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id 5C287580076; Sat, 11 Apr 2020 12:25:32 +0200 (CEST) From: Markus Theil To: hostap@lists.infradead.org Subject: [PATCH v2 02/11] nl80211: differentiate between ETH_P_PAE and ETH_P_RSN_PREAUTH for control port rx Date: Sat, 11 Apr 2020 12:25:18 +0200 Message-Id: <20200411102527.154154-3-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> References: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200411_032544_138669_CE3B18C2 X-CRM114-Status: GOOD ( 11.63 ) X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.24.186.67 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Markus Theil Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org nl80211 control port event handling currently does not differentiate between EAPOL and PREAUTH frames. This patch adds this and checks if unwanted pre-auth frames are received indicating a misconfiguration or bug. Signed-off-by: Markus Theil --- src/drivers/driver_nl80211_event.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c index d4ca2eb29..f612d6397 100644 --- a/src/drivers/driver_nl80211_event.c +++ b/src/drivers/driver_nl80211_event.c @@ -2505,12 +2505,26 @@ static void nl80211_sta_opmode_change_event(struct wpa_driver_nl80211_data *drv, static void nl80211_control_port_frame(struct wpa_driver_nl80211_data *drv, struct nlattr **tb) { - if (!tb[NL80211_ATTR_MAC] || !tb[NL80211_ATTR_FRAME]) + u8 *src_addr = NULL; + + if (!tb[NL80211_ATTR_MAC] || + !tb[NL80211_ATTR_FRAME] || + !tb[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) return; - drv_event_eapol_rx(drv->ctx, nla_data(tb[NL80211_ATTR_MAC]), - nla_data(tb[NL80211_ATTR_FRAME]), - nla_len(tb[NL80211_ATTR_FRAME])); + src_addr = nla_data(tb[NL80211_ATTR_MAC]); + + switch(nla_get_u16(tb[NL80211_ATTR_CONTROL_PORT_ETHERTYPE])) { + case ETH_P_RSN_PREAUTH: + wpa_printf(MSG_WARNING, "nl80211: Got pre-auth frame from " MACSTR " over nl80211 control port this should not happen!", + MAC2STR(src_addr)); + break; + case ETH_P_PAE: + drv_event_eapol_rx(drv->ctx, src_addr, + nla_data(tb[NL80211_ATTR_FRAME]), + nla_len(tb[NL80211_ATTR_FRAME])); + break; + } } From patchwork Sat Apr 11 10:25:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Theil X-Patchwork-Id: 1269300 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-ilmenau.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=qTDywyph; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (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 48zrdS1mLjz9sSt for ; Sat, 11 Apr 2020 20:26:20 +1000 (AEST) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Ii90t9Kp7drlE930ZtJWmfcXfW28U1rF9MuEkE6tU/A=; b=qTDywyphvDVgBu bXM7jNkko4Y+UM9zDFHUAIlE68IlLWaMABFohWTZTWstSWhZ0HReypsnGwxfJViunhKJrEqskm4Gv /PXa+2+LlLmdf2JcQFqrRoof7uv82NppAA8vNg2B6dUE/fhyFexO57zxsYaayPE/cQ/bRIK5fnlKj nwJVHo0lFYr29xGR55t2A+1/6lSnUSoEZh8uBOWaTrwGCAWSY9lhSF8qjAy6EKLt5wfXTKZsctBNV +wMicLW97Z9oD51PSuVDVdirv13BQ5C0HYTsqp42eIlkUORtA3YSEr5A5nlwpEfFrrMaV9Iq62tBq 1K8r/oe3pdkOeq2K0yig==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDL2-0002vc-51; Sat, 11 Apr 2020 10:26:12 +0000 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKa-0002QE-2A for hostap@lists.infradead.org; Sat, 11 Apr 2020 10:25:47 +0000 Received: from isengard.fritz.box (unknown [87.147.56.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id 79F0C580078; Sat, 11 Apr 2020 12:25:32 +0200 (CEST) From: Markus Theil To: hostap@lists.infradead.org Subject: [PATCH v2 03/11] nl80211: handle control port frame in bss events Date: Sat, 11 Apr 2020 12:25:19 +0200 Message-Id: <20200411102527.154154-4-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> References: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200411_032544_375240_3F59184E X-CRM114-Status: GOOD ( 10.10 ) X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.24.186.67 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Markus Theil Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org In order to work in AP mode, handle control port frame rx as per bss event. Signed-off-by: Markus Theil --- src/drivers/driver_nl80211_event.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c index f612d6397..1f3d88a56 100644 --- a/src/drivers/driver_nl80211_event.c +++ b/src/drivers/driver_nl80211_event.c @@ -2743,9 +2743,6 @@ static void do_process_drv_event(struct i802_bss *bss, int cmd, case NL80211_CMD_UPDATE_OWE_INFO: mlme_event_dh_event(drv, bss, tb); break; - case NL80211_CMD_CONTROL_PORT_FRAME: - nl80211_control_port_frame(drv, tb); - break; default: wpa_dbg(drv->ctx, MSG_DEBUG, "nl80211: Ignored unknown event " "(cmd=%d)", cmd); @@ -2835,6 +2832,9 @@ int process_bss_event(struct nl_msg *msg, void *arg) case NL80211_CMD_EXTERNAL_AUTH: nl80211_external_auth(bss->drv, tb); break; + case NL80211_CMD_CONTROL_PORT_FRAME: + nl80211_control_port_frame(bss->drv, tb); + break; default: wpa_printf(MSG_DEBUG, "nl80211: Ignored unknown event " "(cmd=%d)", gnlh->cmd); From patchwork Sat Apr 11 10:25:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Theil X-Patchwork-Id: 1269302 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-ilmenau.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=PF41aM6/; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (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 48zrf01BN2z9sSt for ; Sat, 11 Apr 2020 20:26:48 +1000 (AEST) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=IxIL/2zTxTNbV4GVSUu7zdCypl8xiq2SEznIOcUc7K8=; b=PF41aM6/16NEZP liZi91sTJJb5Xq3OHC7yoT10TIXuR18HWSUzerPTNL+EBKgAcBgnnEm3emhhleRXHWFdWVs5rNyVM ATrBGCpCtVS0IubssbsCjUwrajbIU81emkX6x5ZuHnN8N++jHeNNanlb2zImYOhQUfXPJtVbRp45U Y6jYAKggZXI1NHxX1OKXS88at43b579gjtQ2L0AAeZscEhbiErIOTDh0DJleeBgg/ikFKahIP3+F/ BdUtO/2De6vuSua58cAcIVLoM65ztywvuoI3SIfaYXHFt3p3JuJXw8v5dE4p2yjBILuQCnCh8wdL/ lWzrXdtzPoKE69avPffA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDLS-0003Jj-Le; Sat, 11 Apr 2020 10:26:38 +0000 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKa-0002QF-2T for hostap@lists.infradead.org; Sat, 11 Apr 2020 10:25:47 +0000 Received: from isengard.fritz.box (unknown [87.147.56.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id 9777858007A; Sat, 11 Apr 2020 12:25:32 +0200 (CEST) From: Markus Theil To: hostap@lists.infradead.org Subject: [PATCH v2 04/11] nl80211: rename nl_connect to nl_connect_and_ctrl Date: Sat, 11 Apr 2020 12:25:20 +0200 Message-Id: <20200411102527.154154-5-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> References: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200411_032544_353820_3FA34DFF X-CRM114-Status: GOOD ( 15.26 ) X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.24.186.67 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Markus Theil Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org This patch is another preparation for rx over nl80211 control port. Besides the already used SOCKET_OWNER marking on interfaces, ctrl-port rx also sets a SOCKET_OWNER flag on the actual connect/associate or start AP. Afterwards, some operations can only be performed over the socket which set the owner flag initially. Signed-off-by: Markus Theil --- src/drivers/driver_nl80211.c | 52 ++++++++++++++++++------------------ src/drivers/driver_nl80211.h | 2 +- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 3b7c31c89..b1f70d9fe 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -2162,17 +2162,17 @@ static int nl80211_register_action_frame(struct i802_bss *bss, static int nl80211_init_connect_handle(struct i802_bss *bss) { - if (bss->nl_connect) { + if (bss->nl_connect_or_ctrl) { wpa_printf(MSG_DEBUG, - "nl80211: Connect handle already created (nl_connect=%p)", - bss->nl_connect); + "nl80211: Connect handle already created (nl_connect_or_ctrl=%p)", + bss->nl_connect_or_ctrl); return -1; } - bss->nl_connect = nl_create_handle(bss->nl_cb, "connect"); - if (!bss->nl_connect) + bss->nl_connect_or_ctrl = nl_create_handle(bss->nl_cb, "connect"); + if (!bss->nl_connect_or_ctrl) return -1; - nl80211_register_eloop_read(&bss->nl_connect, + nl80211_register_eloop_read(&bss->nl_connect_or_ctrl, wpa_driver_nl80211_event_receive, bss->nl_cb, 1); return 0; @@ -2830,8 +2830,8 @@ static void wpa_driver_nl80211_deinit(struct i802_bss *bss) nl80211_del_p2pdev(bss); } - if (bss->nl_connect) - nl80211_destroy_eloop_handle(&bss->nl_connect, 1); + if (bss->nl_connect_or_ctrl) + nl80211_destroy_eloop_handle(&bss->nl_connect_or_ctrl, 1); nl80211_destroy_bss(drv->first_bss); @@ -3376,7 +3376,7 @@ static int nl80211_set_conn_keys(struct wpa_driver_associate_params *params, int wpa_driver_nl80211_mlme(struct wpa_driver_nl80211_data *drv, const u8 *addr, int cmd, u16 reason_code, int local_state_change, - struct nl_sock *nl_connect) + struct nl_sock *nl_connect_or_ctrl) { int ret; struct nl_msg *msg; @@ -3390,8 +3390,8 @@ int wpa_driver_nl80211_mlme(struct wpa_driver_nl80211_data *drv, return -1; } - if (nl_connect) - ret = send_and_recv(drv->global, nl_connect, msg, NULL, NULL); + if (nl_connect_or_ctrl) + ret = send_and_recv(drv->global, nl_connect_or_ctrl, msg, NULL, NULL); else ret = send_and_recv_msgs(drv, msg, NULL, NULL); if (ret) { @@ -3405,7 +3405,7 @@ int wpa_driver_nl80211_mlme(struct wpa_driver_nl80211_data *drv, static int wpa_driver_nl80211_disconnect(struct wpa_driver_nl80211_data *drv, u16 reason_code, - struct nl_sock *nl_connect) + struct nl_sock *nl_connect_or_ctrl) { int ret; int drv_associated = drv->associated; @@ -3414,7 +3414,7 @@ static int wpa_driver_nl80211_disconnect(struct wpa_driver_nl80211_data *drv, nl80211_mark_disconnected(drv); /* Disconnect command doesn't need BSSID - it uses cached value */ ret = wpa_driver_nl80211_mlme(drv, NULL, NL80211_CMD_DISCONNECT, - reason_code, 0, nl_connect); + reason_code, 0, nl_connect_or_ctrl); /* * For locally generated disconnect, supplicant already generates a * DEAUTH event, so ignore the event from NL80211. @@ -3437,12 +3437,12 @@ static int wpa_driver_nl80211_deauthenticate(struct i802_bss *bss, return nl80211_leave_ibss(drv, 1); } if (!(drv->capa.flags & WPA_DRIVER_FLAGS_SME)) { - struct nl_sock *nl_connect = NULL; + struct nl_sock *nl_connect_or_ctrl = NULL; if (bss->use_nl_connect) - nl_connect = bss->nl_connect; + nl_connect_or_ctrl = bss->nl_connect_or_ctrl; return wpa_driver_nl80211_disconnect(drv, reason_code, - nl_connect); + nl_connect_or_ctrl); } wpa_printf(MSG_DEBUG, "%s(addr=" MACSTR " reason_code=%d)", __func__, MAC2STR(addr), reason_code); @@ -5920,7 +5920,7 @@ static int nl80211_connect_common(struct wpa_driver_nl80211_data *drv, static int wpa_driver_nl80211_try_connect( struct wpa_driver_nl80211_data *drv, struct wpa_driver_associate_params *params, - struct nl_sock *nl_connect) + struct nl_sock *nl_connect_or_ctrl) { struct nl_msg *msg; enum nl80211_auth_type type; @@ -5985,8 +5985,8 @@ skip_auth_type: if (ret) goto fail; - if (nl_connect) - ret = send_and_recv(drv->global, nl_connect, msg, + if (nl_connect_or_ctrl) + ret = send_and_recv(drv->global, nl_connect_or_ctrl, msg, NULL, (void *) -1); else ret = send_and_recv_msgs(drv, msg, NULL, (void *) -1); @@ -6011,7 +6011,7 @@ fail: static int wpa_driver_nl80211_connect( struct wpa_driver_nl80211_data *drv, struct wpa_driver_associate_params *params, - struct nl_sock *nl_connect) + struct nl_sock *nl_connect_or_ctrl) { int ret; @@ -6021,7 +6021,7 @@ static int wpa_driver_nl80211_connect( else os_memset(drv->auth_attempt_bssid, 0, ETH_ALEN); - ret = wpa_driver_nl80211_try_connect(drv, params, nl_connect); + ret = wpa_driver_nl80211_try_connect(drv, params, nl_connect_or_ctrl); if (ret == -EALREADY) { /* * cfg80211 does not currently accept new connections if @@ -6032,9 +6032,9 @@ static int wpa_driver_nl80211_connect( "disconnecting before reassociation " "attempt"); if (wpa_driver_nl80211_disconnect( - drv, WLAN_REASON_PREV_AUTH_NOT_VALID, nl_connect)) + drv, WLAN_REASON_PREV_AUTH_NOT_VALID, nl_connect_or_ctrl)) return -1; - ret = wpa_driver_nl80211_try_connect(drv, params, nl_connect); + ret = wpa_driver_nl80211_try_connect(drv, params, nl_connect_or_ctrl); } return ret; } @@ -6059,19 +6059,19 @@ static int wpa_driver_nl80211_associate( if (!(drv->capa.flags & WPA_DRIVER_FLAGS_SME)) { enum nl80211_iftype nlmode = params->p2p ? NL80211_IFTYPE_P2P_CLIENT : NL80211_IFTYPE_STATION; - struct nl_sock *nl_connect = NULL; + struct nl_sock *nl_connect_or_ctrl = NULL; if (wpa_driver_nl80211_set_mode(priv, nlmode) < 0) return -1; if (params->key_mgmt_suite == WPA_KEY_MGMT_SAE || params->key_mgmt_suite == WPA_KEY_MGMT_FT_SAE) { - nl_connect = bss->nl_connect; + nl_connect_or_ctrl = bss->nl_connect_or_ctrl; bss->use_nl_connect = 1; } else { bss->use_nl_connect = 0; } - return wpa_driver_nl80211_connect(drv, params, nl_connect); + return wpa_driver_nl80211_connect(drv, params, nl_connect_or_ctrl); } nl80211_mark_disconnected(drv); diff --git a/src/drivers/driver_nl80211.h b/src/drivers/driver_nl80211.h index 6e6c87247..f3513b369 100644 --- a/src/drivers/driver_nl80211.h +++ b/src/drivers/driver_nl80211.h @@ -73,7 +73,7 @@ struct i802_bss { int if_dynamic; void *ctx; - struct nl_sock *nl_preq, *nl_mgmt, *nl_connect; + struct nl_sock *nl_preq, *nl_mgmt, *nl_connect_or_ctrl; struct nl_cb *nl_cb; struct nl80211_wiphy_data *wiphy_data; From patchwork Sat Apr 11 10:25:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Theil X-Patchwork-Id: 1269304 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-ilmenau.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=YuS9InjL; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (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 48zrfP36Mfz9sSt for ; Sat, 11 Apr 2020 20:27:09 +1000 (AEST) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=TW0nFMcmsSOXn8LEXQ8kZud7vKc82cYBDLrxsmsYdaU=; b=YuS9InjLv3B1XS ufDjXjuxFKNZOAnUTMwbVGWizfEDTU90QS0YX3tF0QrrJM4NrGl2lV3WgpQeSdlGXZq9AZ1j3DvT4 52Dc70HqlyvJSDhKqNZwXRJrsQbqduLtGI15J4J97BSJ2+FAoiNrFQwcLpaXGkvyOLofgSlZAn8YE LyXDOfYcJBEZFtFql+wggGuf7+Jd8cKeLe3x8LlG2ZGpARRHC9uFF4RXj0Vj7uzDeiyuaHjPrp62B aHWc3IQTCE5M3xFLX/i3HRytmxN+4mmVQQijZp6U8FrHu873mF0FFXFjcv+rHIhu8/RrJ6Kbc7Kjf CfBIJ1QKCxOh0UYrX2jA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDLn-0003gZ-BL; Sat, 11 Apr 2020 10:26:59 +0000 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKd-0002b0-G9 for hostap@lists.infradead.org; Sat, 11 Apr 2020 10:25:49 +0000 Received: from isengard.fritz.box (unknown [87.147.56.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id C017158007C; Sat, 11 Apr 2020 12:25:32 +0200 (CEST) From: Markus Theil To: hostap@lists.infradead.org Subject: [PATCH v2 05/11] nl80211: tie connect_or_ctrl handle to bss init/destroy Date: Sat, 11 Apr 2020 12:25:21 +0200 Message-Id: <20200411102527.154154-6-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> References: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200411_032547_698470_064C2942 X-CRM114-Status: GOOD ( 11.43 ) X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.24.186.67 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Markus Theil Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org This commit creates a connect_or_ctrl nl_sock* for every bss uncoditionally. It is used in follow up patches for nl80211 control port rx. Signed-off-by: Markus Theil --- src/drivers/driver_nl80211.c | 49 ++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index b1f70d9fe..7e481d757 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -1918,6 +1918,25 @@ static void wpa_driver_nl80211_handle_eapol_tx_status(int sock, } +static int nl80211_init_connect_or_ctrl_handle(struct i802_bss *bss) +{ + if (bss->nl_connect_or_ctrl) { + wpa_printf(MSG_DEBUG, + "nl80211: Connect handle already created (nl_connect_or_ctrl=%p)", + bss->nl_connect_or_ctrl); + return -1; + } + + bss->nl_connect_or_ctrl = nl_create_handle(bss->nl_cb, "connect_or_ctrl"); + if (!bss->nl_connect_or_ctrl) + return -1; + nl80211_register_eloop_read(&bss->nl_connect_or_ctrl, + wpa_driver_nl80211_event_receive, + bss->nl_cb, 1); + return 0; +} + + static int nl80211_init_bss(struct i802_bss *bss) { bss->nl_cb = nl_cb_alloc(NL_CB_DEFAULT); @@ -1929,6 +1948,8 @@ static int nl80211_init_bss(struct i802_bss *bss) nl_cb_set(bss->nl_cb, NL_CB_VALID, NL_CB_CUSTOM, process_bss_event, bss); + nl80211_init_connect_or_ctrl_handle(bss); + return 0; } @@ -1937,6 +1958,10 @@ static void nl80211_destroy_bss(struct i802_bss *bss) { nl_cb_put(bss->nl_cb); bss->nl_cb = NULL; + + if (bss->nl_connect_or_ctrl) { + nl80211_destroy_eloop_handle(&bss->nl_connect_or_ctrl, 1); + } } @@ -2160,25 +2185,6 @@ static int nl80211_register_action_frame(struct i802_bss *bss, } -static int nl80211_init_connect_handle(struct i802_bss *bss) -{ - if (bss->nl_connect_or_ctrl) { - wpa_printf(MSG_DEBUG, - "nl80211: Connect handle already created (nl_connect_or_ctrl=%p)", - bss->nl_connect_or_ctrl); - return -1; - } - - bss->nl_connect_or_ctrl = nl_create_handle(bss->nl_cb, "connect"); - if (!bss->nl_connect_or_ctrl) - return -1; - nl80211_register_eloop_read(&bss->nl_connect_or_ctrl, - wpa_driver_nl80211_event_receive, - bss->nl_cb, 1); - return 0; -} - - static int nl80211_mgmt_subscribe_non_ap(struct i802_bss *bss) { struct wpa_driver_nl80211_data *drv = bss->drv; @@ -2716,8 +2722,6 @@ wpa_driver_nl80211_finish_drv_init(struct wpa_driver_nl80211_data *drv, if (drv->vendor_cmd_test_avail) qca_vendor_test(drv); - nl80211_init_connect_handle(bss); - return 0; } @@ -2830,9 +2834,6 @@ static void wpa_driver_nl80211_deinit(struct i802_bss *bss) nl80211_del_p2pdev(bss); } - if (bss->nl_connect_or_ctrl) - nl80211_destroy_eloop_handle(&bss->nl_connect_or_ctrl, 1); - nl80211_destroy_bss(drv->first_bss); os_free(drv->filter_ssids); From patchwork Sat Apr 11 10:25:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Theil X-Patchwork-Id: 1269306 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-ilmenau.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=qPX+93KD; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (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 48zrfr4SZBz9sSt for ; Sat, 11 Apr 2020 20:27:32 +1000 (AEST) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jCMA8QG6TpH2B5cpJQYL42rLOpAkOokjiYb+vCQXWjQ=; b=qPX+93KD5VO8Z2 1fIq4y2woR1jDmHMs8xz2WFSgRfpkKA0K1fSXfG1q7NorsxshdQrqDkJ9QBSULhQCyDIO3ypFwKpK GAW7DrGZo+BPkvvAb5gUg8x0nStehQxtTz0U6/2ajpWQm59TnFppd6Xgqi7Z26Er4JXlIlmkTZ8Nd jKiCNyyG45JmlNAi5q5pJu22jOg/oy+GRmn5bMNs/6rWklDvGZ0hYTpHRDo8MCacC2ljDVDrZRJ3J T1JgD16zlZJBRy87oVLpklnvsQA5nG1u0k77URNctDy2OfsTXYN+COuesod+jiHx9E6sndPzEphaK hdgPQ/R7xQZ4wgxNQxdQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDM9-00046O-Tk; Sat, 11 Apr 2020 10:27:21 +0000 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKd-0002b1-GA for hostap@lists.infradead.org; Sat, 11 Apr 2020 10:25:49 +0000 Received: from isengard.fritz.box (unknown [87.147.56.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id E4BD458007D; Sat, 11 Apr 2020 12:25:32 +0200 (CEST) From: Markus Theil To: hostap@lists.infradead.org Subject: [PATCH v2 06/11] nl80211: add method for sending messages with connection owner attributes set Date: Sat, 11 Apr 2020 12:25:22 +0200 Message-Id: <20200411102527.154154-7-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> References: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200411_032547_701829_C07559CF X-CRM114-Status: GOOD ( 13.00 ) X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.24.186.67 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Markus Theil Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org In order to receive nl80211 control port frames, the nl_sock* has to register with some attributes set. Add a helper method for this operation. Signed-off-by: Markus Theil --- src/drivers/driver_nl80211.c | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 7e481d757..14a7e465e 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -437,6 +437,46 @@ int send_and_recv_msgs(struct wpa_driver_nl80211_data *drv, valid_handler, valid_data); } +/* use this method to mark, that it is necessary to own the connection/interface + * for this operation. + * handle may be set to NULL, to get the same behavior as send_and_recv_msgs + * set_owner can be used to mark this socket for receiving control port frames + */ +int send_and_recv_msgs_as_owner(struct wpa_driver_nl80211_data *drv, + struct nl_msg *msg, + struct nl_sock *handle, Boolean set_owner, + int (*valid_handler)(struct nl_msg *, void *), + void *valid_data) +{ + int ret = -1; + + /* Control port over nl80211 needs the flags and attributes below. + * + * The Linux kernel has initial checks for them (in nl80211.c) like: + * validate_pae_over_nl80211(...) + * or final checks like: + * dev->ieee80211_ptr->conn_owner_nlportid != info->snd_portid + * + * Initial operations like () + * Final operations (e.g. disassociate) don't need to set these + * attributes, but they have to be performed on the socket, which + * has the connection owner property set in the kernel. + */ + if (drv->capa.flags & WPA_DRIVER_FLAGS_CONTROL_PORT && + handle && set_owner) + if (nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_OVER_NL80211) || + nla_put_flag(msg, NL80211_ATTR_SOCKET_OWNER) || + nla_put_u16(msg, NL80211_ATTR_CONTROL_PORT_ETHERTYPE, + ETH_P_PAE)) + goto out; + + return send_and_recv(drv->global, handle ? handle : drv->global->nl, + msg, valid_handler, valid_data); + +out: + return ret; +} + struct family_data { const char *group; From patchwork Sat Apr 11 10:25:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Theil X-Patchwork-Id: 1269307 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-ilmenau.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=dQjj98XK; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (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 48zrg25nzGz9sSt for ; Sat, 11 Apr 2020 20:27:42 +1000 (AEST) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=q5WPShg1krtVANIpa08j/BTJpnVqvnbadzBjC64cxgg=; b=dQjj98XK8RBhZo xXM67MbFVaThtIkVMBjhumLysy22I/R/ZvQPXWyTmnDIy8d6LMLHj1cbBK0LKjdPbRFdE9tIJZuLX QEynivQqNQrLtgQj8qlcgKeckIbUeyAkjJArSJZBhnB/Ikic9L3JgsIancMBbVKPG70ykZ517c/Jd 0giMU47NaXPU43Z+lhLcnZchRxbknMKr8Bwhs5JmZkkvOvN3d1jfSNkx0HYmTOHnXu6ycYbsBdyIV 9s1A2ivr5pjWpSkqXCpU47J/rK8/sQOLIoMwlMajuWFuvog6toe6nWaqcQ5MW37NkwS41BFnJEN2p ok4og/pB8EP9oJsW0sKw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDMK-0004Hf-15; Sat, 11 Apr 2020 10:27:32 +0000 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKf-0002d7-2J for hostap@lists.infradead.org; Sat, 11 Apr 2020 10:25:50 +0000 Received: from isengard.fritz.box (unknown [87.147.56.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id 0DCCC58007E; Sat, 11 Apr 2020 12:25:33 +0200 (CEST) From: Markus Theil To: hostap@lists.infradead.org Subject: [PATCH v2 07/11] nl80211: add helper method for control port usage Date: Sat, 11 Apr 2020 12:25:23 +0200 Message-Id: <20200411102527.154154-8-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> References: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200411_032549_289893_458BF546 X-CRM114-Status: UNSURE ( 9.28 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.24.186.67 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Markus Theil Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org This patch adds another helper method, which returns the connect_or_ctrl socket when needed. Signed-off-by: Markus Theil --- src/drivers/driver_nl80211.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 14a7e465e..9549d9b18 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -478,6 +478,18 @@ out: } +struct nl_sock* get_connect_or_ctrl_handle(struct i802_bss *bss) +{ + struct nl_sock *nl_connect_or_ctrl = NULL; + + if (bss->drv->capa.flags & WPA_DRIVER_FLAGS_CONTROL_PORT || + bss->use_nl_connect) + nl_connect_or_ctrl = bss->nl_connect_or_ctrl; + + return nl_connect_or_ctrl; +} + + struct family_data { const char *group; int id; From patchwork Sat Apr 11 10:25:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Theil X-Patchwork-Id: 1269305 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-ilmenau.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=es8Bt+E0; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (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 48zrfb3cYJz9sSt for ; Sat, 11 Apr 2020 20:27:19 +1000 (AEST) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=OgwF/+ggcUPFIrvOQbplBKeMUAte3HtILyal3lAN05Q=; b=es8Bt+E0G9B4cJ FJdAHjllX4u2txhMeZTZVTw911KiGhsUNab3dG5YpPFE6YlWLYmnNZgBuLmxcGu/AOSrYK7DwN2IE kEN2D5fRGFFoKLSGsw8nQClcK00d1kRvqZ1pMMu9iDlHFetS/dpmR02ozrxv0CJEm1gRKfY4IuTmv 0yKXiMU3gQgCYPaGFywF/BdsuSGEu/ayygfcGVo1qJFonIrBugBMxJyi3G87pm6QIu3XBWjODer10 wYe6hFNHfdvlg3E3uOm6DKUi5dHz3ohzA4fjdd2cdEqmSohbjioEluexAqVTzmjN9/U7c5+YjBrHc +IdO+RqMoTuYF2JVQI1w==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDLz-0003uA-6A; Sat, 11 Apr 2020 10:27:11 +0000 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKf-0002dC-3m for hostap@lists.infradead.org; Sat, 11 Apr 2020 10:25:51 +0000 Received: from isengard.fritz.box (unknown [87.147.56.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id 3542658007F; Sat, 11 Apr 2020 12:25:33 +0200 (CEST) From: Markus Theil To: hostap@lists.infradead.org Subject: [PATCH v2 08/11] nl80211: use and/or set socker owner where necessary Date: Sat, 11 Apr 2020 12:25:24 +0200 Message-Id: <20200411102527.154154-9-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> References: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200411_032549_320723_3B3E12AF X-CRM114-Status: GOOD ( 11.77 ) X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.24.186.67 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Markus Theil Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Use methods which set or use the connection owner nl_sock* where necessary. Initial operations need to register with the SOCKET_OWNER attribute set (e.g. connect for STAs). Final operations need to use the socket which holds the owner attribute (e.g. disconnect for STAs). --- src/drivers/driver_nl80211.c | 52 ++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 9549d9b18..3da94fd69 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -3490,18 +3490,15 @@ static int wpa_driver_nl80211_deauthenticate(struct i802_bss *bss, return nl80211_leave_ibss(drv, 1); } if (!(drv->capa.flags & WPA_DRIVER_FLAGS_SME)) { - struct nl_sock *nl_connect_or_ctrl = NULL; - - if (bss->use_nl_connect) - nl_connect_or_ctrl = bss->nl_connect_or_ctrl; return wpa_driver_nl80211_disconnect(drv, reason_code, - nl_connect_or_ctrl); + get_connect_or_ctrl_handle(bss)); } wpa_printf(MSG_DEBUG, "%s(addr=" MACSTR " reason_code=%d)", __func__, MAC2STR(addr), reason_code); nl80211_mark_disconnected(drv); ret = wpa_driver_nl80211_mlme(drv, addr, NL80211_CMD_DEAUTHENTICATE, - reason_code, 0, NULL); + reason_code, 0, + get_connect_or_ctrl_handle(bss)); /* * For locally generated deauthenticate, supplicant already generates a * DEAUTH event, so ignore the event from NL80211. @@ -4485,7 +4482,9 @@ static int wpa_driver_nl80211_set_ap(void *priv, } #endif /* CONFIG_IEEE80211AX */ - ret = send_and_recv_msgs(drv, msg, NULL, NULL); + ret = send_and_recv_msgs_as_owner(drv, msg, + get_connect_or_ctrl_handle(bss), 1, + NULL, NULL); if (ret) { wpa_printf(MSG_DEBUG, "nl80211: Beacon set failed: %d (%s)", ret, strerror(-ret)); @@ -5505,7 +5504,9 @@ static int nl80211_leave_ibss(struct wpa_driver_nl80211_data *drv, int ret; msg = nl80211_drv_msg(drv, 0, NL80211_CMD_LEAVE_IBSS); - ret = send_and_recv_msgs(drv, msg, NULL, NULL); + ret = send_and_recv_msgs_as_owner(drv, msg, + get_connect_or_ctrl_handle(drv->first_bss), 1, + NULL, NULL); if (ret) { wpa_printf(MSG_DEBUG, "nl80211: Leave IBSS failed: ret=%d " "(%s)", ret, strerror(-ret)); @@ -5637,7 +5638,9 @@ retry: if (ret < 0) goto fail; - ret = send_and_recv_msgs(drv, msg, NULL, NULL); + ret = send_and_recv_msgs_as_owner(drv, msg, + get_connect_or_ctrl_handle(drv->first_bss), 1, + NULL, NULL); msg = NULL; if (ret) { wpa_printf(MSG_DEBUG, "nl80211: Join IBSS failed: ret=%d (%s)", @@ -6038,12 +6041,9 @@ skip_auth_type: if (ret) goto fail; - if (nl_connect_or_ctrl) - ret = send_and_recv(drv->global, nl_connect_or_ctrl, msg, - NULL, (void *) -1); - else - ret = send_and_recv_msgs(drv, msg, NULL, (void *) -1); - + ret = send_and_recv_msgs_as_owner(drv, msg, + nl_connect_or_ctrl, 1, + NULL, NULL); msg = NULL; if (ret) { wpa_printf(MSG_DEBUG, "nl80211: MLME connect failed: ret=%d " @@ -6112,19 +6112,17 @@ static int wpa_driver_nl80211_associate( if (!(drv->capa.flags & WPA_DRIVER_FLAGS_SME)) { enum nl80211_iftype nlmode = params->p2p ? NL80211_IFTYPE_P2P_CLIENT : NL80211_IFTYPE_STATION; - struct nl_sock *nl_connect_or_ctrl = NULL; - if (wpa_driver_nl80211_set_mode(priv, nlmode) < 0) return -1; if (params->key_mgmt_suite == WPA_KEY_MGMT_SAE || params->key_mgmt_suite == WPA_KEY_MGMT_FT_SAE) { - nl_connect_or_ctrl = bss->nl_connect_or_ctrl; bss->use_nl_connect = 1; } else { bss->use_nl_connect = 0; } - return wpa_driver_nl80211_connect(drv, params, nl_connect_or_ctrl); + return wpa_driver_nl80211_connect(drv, params, + get_connect_or_ctrl_handle(bss)); } nl80211_mark_disconnected(drv); @@ -6159,7 +6157,9 @@ static int wpa_driver_nl80211_associate( goto fail; } - ret = send_and_recv_msgs(drv, msg, NULL, NULL); + ret = send_and_recv_msgs_as_owner(drv, msg, + get_connect_or_ctrl_handle(drv->first_bss), 1, + NULL, NULL); msg = NULL; if (ret) { wpa_dbg(drv->ctx, MSG_DEBUG, @@ -9553,7 +9553,9 @@ static int nl80211_vendor_cmd(void *priv, unsigned int vendor_id, if (nlmsg_append(msg, (void *) data, data_len, NLMSG_ALIGNTO) < 0) goto fail; - ret = send_and_recv_msgs(drv, msg, cmd_reply_handler, buf); + ret = send_and_recv_msgs_as_owner(drv, msg, + get_connect_or_ctrl_handle(bss), 0, + cmd_reply_handler, buf); if (ret) wpa_printf(MSG_DEBUG, "nl80211: command failed err=%d", ret); @@ -10008,7 +10010,9 @@ static int nl80211_join_mesh(struct i802_bss *bss, if (nl80211_put_mesh_config(msg, ¶ms->conf) < 0) goto fail; - ret = send_and_recv_msgs(drv, msg, NULL, NULL); + ret = send_and_recv_msgs_as_owner(drv, msg, + get_connect_or_ctrl_handle(bss), 1, + NULL, NULL); msg = NULL; if (ret) { wpa_printf(MSG_DEBUG, "nl80211: mesh join failed: ret=%d (%s)", @@ -10065,7 +10069,9 @@ static int wpa_driver_nl80211_leave_mesh(void *priv) wpa_printf(MSG_DEBUG, "nl80211: mesh leave (ifindex=%d)", drv->ifindex); msg = nl80211_drv_msg(drv, 0, NL80211_CMD_LEAVE_MESH); - ret = send_and_recv_msgs(drv, msg, NULL, NULL); + ret = send_and_recv_msgs_as_owner(drv, msg, + get_connect_or_ctrl_handle(bss), 0, + NULL, NULL); if (ret) { wpa_printf(MSG_DEBUG, "nl80211: mesh leave failed: ret=%d (%s)", ret, strerror(-ret)); From patchwork Sat Apr 11 10:25:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Theil X-Patchwork-Id: 1269308 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-ilmenau.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=X+HcZgYh; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (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 48zrgB6bjHz9sT0 for ; Sat, 11 Apr 2020 20:27:50 +1000 (AEST) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=a5F6XlauUdKtBxDNunARuwq1ea+3RLez0q/JefX4jWM=; b=X+HcZgYhgE1W3L ZGqgPemG7Ssf75nbJJgBrAj7TyxRM7nSmWGsh0YktoLmvw0tqqDzJdqg9m1o8rFtMTlPxY8mhNS9H r146DBvnHl4Gi+fMUApjH/w0ULUUuKr0uPR1SLXx55ClhcngDAbk3NSzw5nFWPtzRuPg9Ktmg6p3o LCTuNkr7nGFJXhauLAIiKFUbnFlpqYw8N81Vp/MGCd9JwcdsPgLM1zyMx7ew+vYPiSyH6Iw1jP3fO yagEPIcPTt6CTiZ1BTY5vaNW7eSeXCwZaYnuT4LlW84/jzXKdsjhvYnVp8vvOKUijKtVivxjBwLGV 2JJhSUvQhyLjRHchzppA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDMR-0004SJ-VN; Sat, 11 Apr 2020 10:27:39 +0000 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKg-0002dd-GT for hostap@lists.infradead.org; Sat, 11 Apr 2020 10:25:52 +0000 Received: from isengard.fritz.box (unknown [87.147.56.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id 521A3580080; Sat, 11 Apr 2020 12:25:33 +0200 (CEST) From: Markus Theil To: hostap@lists.infradead.org Subject: [PATCH v2 09/11] nl80211: correctly handle deauth from scan with ctrl port rx Date: Sat, 11 Apr 2020 12:25:25 +0200 Message-Id: <20200411102527.154154-10-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> References: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200411_032550_711662_F13BB2B7 X-CRM114-Status: GOOD ( 10.99 ) X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.24.186.67 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Markus Theil Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Use socket with owner set on deauthenticate from scan. Export helper method therefore. Signed-off-by: Markus Theil --- src/drivers/driver_nl80211.h | 1 + src/drivers/driver_nl80211_scan.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/drivers/driver_nl80211.h b/src/drivers/driver_nl80211.h index f3513b369..68d089560 100644 --- a/src/drivers/driver_nl80211.h +++ b/src/drivers/driver_nl80211.h @@ -229,6 +229,7 @@ struct nl_msg * nl80211_bss_msg(struct i802_bss *bss, int flags, uint8_t cmd); int send_and_recv_msgs(struct wpa_driver_nl80211_data *drv, struct nl_msg *msg, int (*valid_handler)(struct nl_msg *, void *), void *valid_data); +struct nl_sock* get_connect_or_ctrl_handle(struct i802_bss *bss); int nl80211_create_iface(struct wpa_driver_nl80211_data *drv, const char *ifname, enum nl80211_iftype iftype, const u8 *addr, int wds, diff --git a/src/drivers/driver_nl80211_scan.c b/src/drivers/driver_nl80211_scan.c index 04f6bb879..2e2ba9f56 100644 --- a/src/drivers/driver_nl80211_scan.c +++ b/src/drivers/driver_nl80211_scan.c @@ -872,7 +872,7 @@ static void clear_state_mismatch(struct wpa_driver_nl80211_data *drv, wpa_driver_nl80211_mlme(drv, addr, NL80211_CMD_DEAUTHENTICATE, WLAN_REASON_PREV_AUTH_NOT_VALID, 1, - NULL); + get_connect_or_ctrl_handle(drv->first_bss)); } } From patchwork Sat Apr 11 10:25:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Theil X-Patchwork-Id: 1269310 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-ilmenau.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=XGviWvYL; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (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 48zrgZ15y0z9sSt for ; Sat, 11 Apr 2020 20:28:10 +1000 (AEST) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=rzrVIeX+aWLs0MafYRSk4tvhuqXA9HvZ+SDEkEaKyv0=; b=XGviWvYLEgyAR7 mpwH2WBhm3fhLGL6/fMyfoladQjtjEvoVHQKavP/fx2Geq5ZrVkSdf7ReUE9hvOSk4tNxOz4WUjzl SrisFuiWiSZ04uv/Cmj4tv1QRGhUgKsTyoDwPp8S4tI9cl5obLCG9eughsUZHDosJvqihKaZo3Y2X 4h3VYRNwk2+eXAriJApdpvJ8ypz3JEUDckENFeWWhHVxTeIuhk8WVH8iMoikw7tRyDQ+HAuliYBBO 5LsmFT5JevR3BonxEYlYFHczPyarSL2X8gs7hRYjfsXkFhiBXuQXWCMuQNb6ZwOksD3kOCjj8wcuf ASJ4JKRzbOmDssv1qOtw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDMl-0004q9-Ia; Sat, 11 Apr 2020 10:27:59 +0000 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKh-0002er-4S for hostap@lists.infradead.org; Sat, 11 Apr 2020 10:25:52 +0000 Received: from isengard.fritz.box (unknown [87.147.56.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id 6FCEE580081; Sat, 11 Apr 2020 12:25:33 +0200 (CEST) From: Markus Theil To: hostap@lists.infradead.org Subject: [PATCH v2 10/11] nl80211: also add no preauth flag on connect Date: Sat, 11 Apr 2020 12:25:26 +0200 Message-Id: <20200411102527.154154-11-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> References: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200411_032551_434707_FCADE4E9 X-CRM114-Status: UNSURE ( 9.54 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.24.186.67 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Markus Theil Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org This patch disables receiving pre-auth frames over the nl80211 control port. Signed-off-by: Markus Theil --- src/drivers/driver_nl80211.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 3da94fd69..5b85cff04 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -467,7 +467,8 @@ int send_and_recv_msgs_as_owner(struct wpa_driver_nl80211_data *drv, if (nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_OVER_NL80211) || nla_put_flag(msg, NL80211_ATTR_SOCKET_OWNER) || nla_put_u16(msg, NL80211_ATTR_CONTROL_PORT_ETHERTYPE, - ETH_P_PAE)) + ETH_P_PAE) || + nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_NO_PREAUTH)) goto out; return send_and_recv(drv->global, handle ? handle : drv->global->nl, From patchwork Sat Apr 11 10:25:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Theil X-Patchwork-Id: 1269309 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-ilmenau.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=BNmZgj8s; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (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 48zrgM37sMz9sSt for ; Sat, 11 Apr 2020 20:27:59 +1000 (AEST) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=b7cZeq/+9h9Z0cLaYpUcN0xYoeXSPnmrpKykzZb1fAI=; b=BNmZgj8srdO/Hp ShtfnhotbjLtvYFQtrWrL/4KzLodlgL+X4fpMWV3fPg66/p+MJE/PXj2OFF6hcfxljkWYoMhiC3OF UrEPl/JBxITBtbYN1CnOt8ZT9EhozCWBT/+H/UCh9+8R344eEJj+vIetJ9uj87yP0u0bTB5BzwF7l Gn2jylCQKKzlduUkWuznxAJukgF0so5D8IF/5y0hBsoKbrwzwVUGX5AgYpdqvPBKFi364xPQXTuLh NjNxaJcpuiLqwvK6k8GhtMfqDSSGUqsRBwdXkZ8wHh8MqKbFVTljWF37xG0sya33ffIMCNagQhETf 0mnhx8UNeXnN4qt+u7jQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDMb-0004e7-CJ; Sat, 11 Apr 2020 10:27:49 +0000 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jNDKh-0002f5-6T for hostap@lists.infradead.org; Sat, 11 Apr 2020 10:25:53 +0000 Received: from isengard.fritz.box (unknown [87.147.56.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id 97367580082; Sat, 11 Apr 2020 12:25:33 +0200 (CEST) From: Markus Theil To: hostap@lists.infradead.org Subject: [PATCH v2 11/11] nl80211: disable ctrl port over nl80211 for ap mode Date: Sat, 11 Apr 2020 12:25:27 +0200 Message-Id: <20200411102527.154154-12-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> References: <20200411102527.154154-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200411_032551_443973_EFE3B100 X-CRM114-Status: UNSURE ( 9.44 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.24.186.67 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Markus Theil Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org AP mode under Linux currently checks the tx status of control port frames over auxiliary socket data. As this is currently not possible for control port over nl80211, disable AP mode over nl80211 control port for now. Code for AP mode is working besides this missing fast retransmit feature. Signed-off-by: Markus Theil --- src/drivers/driver_nl80211.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 5b85cff04..cd4e2054b 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -463,6 +463,7 @@ int send_and_recv_msgs_as_owner(struct wpa_driver_nl80211_data *drv, * has the connection owner property set in the kernel. */ if (drv->capa.flags & WPA_DRIVER_FLAGS_CONTROL_PORT && + !(drv->hostapd || drv->start_mode_ap) && handle && set_owner) if (nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_OVER_NL80211) || nla_put_flag(msg, NL80211_ATTR_SOCKET_OWNER) ||