From patchwork Tue Jun 15 12:11:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jef MAERIEN X-Patchwork-Id: 1492413 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; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=cnSAIjYP; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256 header.s=desiato.20200630 header.b=KtFTlZIp; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=softathome1.onmicrosoft.com header.i=@softathome1.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-softathome1-onmicrosoft-com header.b=a87kBsir; 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 4G4HBJ37p6z9sWD for ; Wed, 16 Jun 2021 04:38:00 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:To :From:Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=cfq0o7+hU435Jc1VNrYqm/cBFpTY7osUeQ9LLsRhkiY=; b=cnSAIjYPMgE8H3 +kd710JHc9invODdVB3eOhM1NCx2Q5C5kmpVEP1Nih9aNZfPkCmr5swVyY52IgFWEi0mi8kMuCMu6 0tfsNgrBsqB3EEreZeeWs3f+vWiZ+iGauXPqqaBrqi+Qjp5pwfWvli69aoYwNCQaG+nljcVswQbTr hVrY0xX5XYuAljOIAYTSpgP+kx5kRyzv4ncUPHz30XnQXLK5dyqeztLB+uVqXlb4dIGGKnRfT9ifS CFjuNaI2kvFuqLox8lznVRdCdF5og/qk4gOlX+ZaAXBMRHALSRFhcy+bR93KQaES2naL38u2Wjgbe oR/+xK8v3eVuxR/VSTJA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ltDvc-002B01-54; Tue, 15 Jun 2021 18:36:48 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lt9Ek-000ByJ-R3 for hostap@bombadil.infradead.org; Tue, 15 Jun 2021 13:36:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=MIME-Version:Content-Transfer-Encoding :Content-Type:Message-ID:Date:Subject:To:From:Sender:Reply-To:Cc:Content-ID: Content-Description:In-Reply-To:References; bh=ASD4DNLfJQ1SRdVvtYjIGrx4gb816XMahoEwLkNvLMY=; b=KtFTlZIp3xI/7X/7bxGirEmLmq 2RoVR3efbeHBTJZhk2FokjJvWewAFeJ7EajvbtAbG09UqqJ34NxJfcIVLfxDxAU5+v3mYxpijZQlh Zd9zjCSBa3ohpxzWSdukdT5jcgmoC4KKhvW3a/m8f5BP3YV5WBPIDpN+Ax8E9lN3Zr2BMBeCrPRs5 e5WNpfA6+QuAaGepjkWPluML+ivOB+HliYs9ioaG7p5TSMTN2OyyZ+1dxWT6rQYGNmc+XYAhFLz/a 49dfLbmTz0JxuMJjqH95msFET8mZW1SUFuJVyeAZpvj04XJxItgLzbYpmeiscNvZk4ZhI8htfelK6 SwrkicSQ==; Received: from mail-eopbgr120059.outbound.protection.outlook.com ([40.107.12.59] helo=FRA01-PR2-obe.outbound.protection.outlook.com) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lt7ut-007pmW-9s for hostap@lists.infradead.org; Tue, 15 Jun 2021 12:11:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZQ/PEDg+5+J3VQo6WFGoKJ779UfvCascWi93Cro5F9Fa3M1pr3BGCZQmizZ9+OsKN+BAnAmeHIn2hjh4TbM9P/VQutJI+m1ot6pVD2mDFmiHicLY/qgGurg7g+ZowmbSb1jW11UX+Eqj8gdzrPR5O9GbVoYrrIWYrLN7lGoLBEI/o/14eYSsWJz4GrhnMLIZtar+d4nWHxK9gvtCdFndKiSNqInjc2xkBMSp24IYemZc4rBmvRJmGhc9k8AJCgNLt5QLUlf0jQccpUOOVMsuZ73ejnqMPVRUwYKUCMHr3N4faMfVZJovnMzvvS3ZYN4fjFP+tPYZFb0k3FshlngCSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ASD4DNLfJQ1SRdVvtYjIGrx4gb816XMahoEwLkNvLMY=; b=f2uC816S5EHDfQToc18YojiGbn3KrcmtRuQF6jT7SZnW07VCHQWl6AAvz7IykIFCbbVPNpCWVWQ3hy88sdMn1BAY5WTbEgIhDCucQ65P0R6usdPO7mxHIvtT0DIZ2E7fXw3udVskzJDQwI4N/U6eRLnSHYg32SDkumquHNSGwkCgaoC+Xcd1DG4ygjQPYauMcPEJAegmGv3cNznKbwh+mZvWRRuQPCQ8fmXc/JTuYwcAeuyYCzEOJ7Y2NqXMBcsjMeHRHgpTwmgOxEOvLY74swoW9ZlASodmmgMHQwaZ5ZM42w8+ScwGHAg9vk24qh0tq4vCFYbv640DBo34Twv9CA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=softathome.com; dmarc=pass action=none header.from=softathome.com; dkim=pass header.d=softathome.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=softathome1.onmicrosoft.com; s=selector1-softathome1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ASD4DNLfJQ1SRdVvtYjIGrx4gb816XMahoEwLkNvLMY=; b=a87kBsirubobcgaIMNg93IS7iujBj5Ak/hp1EMbANwoj367OeNCVJyF2xMVByxhFThk6VInzBbDGkd61y12d/jvNU0CkV8QwWeWndPSo5OiKsHRZAmuroDFnd//9Qck5KbOLU5pLnyBgNCDlaDTTR/AT0WtHLR+Omyb4lR0bIi5Epp1LneOzmaKV04noXkoiImhqj7J27cNX2vKrnpKBDi2jR3ym/7kVBjXqSirSaepDHV5TVf4GDxIYYYMO7y+T/MAMRCrUfibTe6XsilQ7a5ZkLB/eGt7jxsaCeC3n2gcYgyw5M9MUlCznMk5BpGlZt/P0E4lyLumLY2SkFWtKeQ== Received: from PR0P264MB1147.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:14a::11) by PR0P264MB1274.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:162::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22; Tue, 15 Jun 2021 12:11:39 +0000 Received: from PR0P264MB1147.FRAP264.PROD.OUTLOOK.COM ([fe80::c9cd:1589:3e5b:1fb]) by PR0P264MB1147.FRAP264.PROD.OUTLOOK.COM ([fe80::c9cd:1589:3e5b:1fb%9]) with mapi id 15.20.4242.016; Tue, 15 Jun 2021 12:11:39 +0000 From: Jef MAERIEN To: "hostap@lists.infradead.org" Subject: [PATCH] Return the mac addresses of overlapping stations when wps overlap is detected by the AP Thread-Topic: [PATCH] Return the mac addresses of overlapping stations when wps overlap is detected by the AP Thread-Index: AQHXYd5MnO2mdcv1JUqo2XfAJAqwbQ== Date: Tue, 15 Jun 2021 12:11:39 +0000 Message-ID: Accept-Language: nl-BE, fr-FR, en-US Content-Language: nl-BE X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: lists.infradead.org; dkim=none (message not signed) header.d=none;lists.infradead.org; dmarc=none action=none header.from=softathome.com; x-originating-ip: [94.224.69.6] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 14f818ed-7b1f-4862-08de-08d92ff6bb1f x-ms-traffictypediagnostic: PR0P264MB1274: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:639; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: FBCnRAo17iKWuJO/UorGibSkMz+jCLMpnlm6tWfZYQvlnEW2kOHl9klNIr23aESexQveeSa6vgsL8hCvDZYq0oaeu+zQJtk786beClp/XlQvgV84CmmCNeW52/vadeWx1jLHx5IJUGs+wIe2Pr+GdPBTZpUfTmkFDYpvWN+t64dNdcqx5jlpsDhK/striEApMa2Bpocif3iGAc17LpM8LYD0B+/gj0ISWXNyol2WuHYrqLk73kcc3IJBCuRWr+8ds8I7bdSXioSBxnxaV/nbPcqBhlxb2i6jpJs0jmOwVgVT5FCHmfrETvMZP0CVx5CAk42tX5Th4JEz+OIIpVFSB/JLxfhcnlXuWq8+BMKfXEQQcNBPm6R4jVHCLFzcW2zh7HxjzGvU69Swy2/cjhpuZ9+uSkG2twEoulbCFEOkpYJuiSSDaUPyYRdlYGMpE1iGxAsrnK6zv878Vq2sCx50RgtJsFJ5o+tSfI75rfRjVbywf+Gaj+LW3yPDhZtzNPEYoVDhiGn3cqRZjXJ5xQnAjK5gadwnXpZAbci3+nuH1SaiY290JMM7wJXi64v7bZUzUhKuUOuoLBqJtb6Sid07IQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PR0P264MB1147.FRAP264.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(366004)(8936002)(33656002)(38100700002)(8676002)(6916009)(498600001)(5660300002)(71200400001)(122000001)(2906002)(91956017)(7696005)(66946007)(86362001)(66446008)(66556008)(64756008)(55016002)(66476007)(9686003)(76116006)(186003)(6506007)(26005)(83380400001)(52536014); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?B3RjeAgtAvDCVXv2meMWyny?= =?iso-8859-1?q?wGtUNG17n8ukl7LhFF71i4Ino4AXxBLQB3CeuRWXUQDi2FJIzNaHhmMqkQ9T?= =?iso-8859-1?q?J5gH26vfZ7iI2fr5N+xXv1cXcxCrpzCp72DvkvS1Aq5tJ5LSLl6i3GQEF281?= =?iso-8859-1?q?yYcrbp4/PdnDt37smku5F9MfDtFZOK0Fdghu7hETa6uGw/f98fkdskoagcAl?= =?iso-8859-1?q?CCX/NYiN5l8srQgMHJd0D/Oyuf3fDwVlnWPfy2pG60dB26pW6vhJT4Vw0ehB?= =?iso-8859-1?q?GsEGqcmBS8Hm6zhnxoJWFXHN4GumybIyg5D1QLTRbK6vU/I2bPArQxnSRDK5?= =?iso-8859-1?q?0muYiiV2/Q4nN23CQ7OSjkkf2P7annWecRyXbhgHjQ3GASJlraftHTx2DXHR?= =?iso-8859-1?q?4jRgQhXOg5IOIIPvqOVMry8/El1450EvBnyTrW6BUJo2eO3XFcJFI27+asvU?= =?iso-8859-1?q?fHWCii0wScpfeQISzHRxxLyGlOFbgCVWHvBu838WUYlQ/gY3V4kkrAAOrcOe?= =?iso-8859-1?q?v+O6ZNtG6ShcGJWvD27+dv5MxCpN4qNOUlLkJ5m7Hejw1eWULj1G2WquvY+h?= =?iso-8859-1?q?9YcXe5tAWoc8yzfI2JyzUUhHDcY5y0ZIcuh05i9skBTcO2fPKMRLcRrzME4n?= =?iso-8859-1?q?xzXacz/CcldwdVfn98/frYhjWy1vLw5Z+X3B/PmDZ+NAxy/AxfGKudJ57YN4?= =?iso-8859-1?q?8ZgDMNP83VgW7Jy2iqEgJxx2/l8A6BZg4/bYByvmJB3BKyaBcUeIwyPZEovG?= =?iso-8859-1?q?vDXR1iFQRUGrkFh/eBlNJ/vSl7H8HgZwhwtDYoz3TwdOK0dIAvn5IxusM91T?= =?iso-8859-1?q?QIVcrxC1u7hWzRAmpc3NQCBJPbc7Bp1UvapofvPEDB6g6weIg7WUW7o+YV3i?= =?iso-8859-1?q?BNQaIQjEi4q3DxZFV1M0hVzmsMUO6dhIKfj5Eti6WzaR1iqNqh6P340dvWho?= =?iso-8859-1?q?qemSLO418kqiselOAWoGcSlKMn1rfmR4bsSTivgMWImx2pEjcRRi533Sm5Ch?= =?iso-8859-1?q?2RB1u1nGRHPQFMaOb6jw4Ll8wdlu2QYJq7ExjHzuD7l4eHKdQEq4NnyW6Y5y?= =?iso-8859-1?q?yfsODxIMvn76dX1w1iLI0Fc95mPr0j/6c1BxRhIjVzEzNdrGHfmWOtIQi2M/?= =?iso-8859-1?q?as0PrQ12AStfIMTWp7sIZmqTQ4ddXBjxvEIK1mnR7rdlwOdRgvq7o1kXV6Dc?= =?iso-8859-1?q?33K2LlG4ABX5sf2+FE0bvqQ0p/bvq+9nTapyK96OfIUfaDjtywKajdILGYqT?= =?iso-8859-1?q?SGprs+yKUCUHrIq70xori8fYNh5eOjp+RaEZuvLz3GHHtL7ULDg8DgjuhJPL?= =?iso-8859-1?q?Qx+lehHTYWfoqKY5qbYiAnvMfgtyyL94uJ6eqjVg=3D?= x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-OriginatorOrg: softathome.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PR0P264MB1147.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 14f818ed-7b1f-4862-08de-08d92ff6bb1f X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2021 12:11:39.6314 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: aa10e044-e405-4c10-8353-36b4d0cce511 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: feLHuz/v1yxRk1eA53/FoSQBjZUwqIJM48q011onZ5OLmQ6TbMfFOoD9hpflPD8qZ/DSnaOSEHLtwRSW4qUx8wCyZcyiSMvPOvxo9t3sfqE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR0P264MB1274 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210615_131146_273978_C94DC2F3 X-CRM114-Status: GOOD ( 10.57 ) X-Spam-Score: -0.7 (/) X-Spam-Report: =?unknown-8bit?q?Spam_detection_software=2C_running_on_the_sy?= =?unknown-8bit?q?stem_=22desiato=2Einfradead=2Eorg=22=2C?= =?unknown-8bit?q?_has_NOT_identified_this_incoming_email_as_spam=2E__The_ori?= =?unknown-8bit?q?ginal?= =?unknown-8bit?q?_message_has_been_attached_to_this_so_you_can_view_it_or_la?= =?unknown-8bit?q?bel?= =?unknown-8bit?q?_similar_future_email=2E__If_you_have_any_questions=2C_see?= =?unknown-8bit?q?_the_administrator_of_that_system_for_details=2E?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_preview=3A__Report_the_MAC_Addresses_that_cause_WP?= =?unknown-8bit?q?S_overlap=2C_when_detected?= =?unknown-8bit?q?_by_AP=2E_This_allows_to_identify_potential_misbehaving_or_?= =?unknown-8bit?q?conflicting_stations=2E?= =?unknown-8bit?q?_Signed-off-by=3A_Jef_Maerien_=3Cjef=2Emaerien=5Fat=5Fsofta?= =?unknown-8bit?q?thome=2Ecom=3E_---_=A0src/ap/wps=5Fhostapd=2Ec?= =?unknown-8bit?q?_=A0_=A0=7C_24_+++++++++++++++++++++++-_=A0src/wps/wps=2Eh_?= =?unknown-8bit?q?=A0_=A0_=A0_=A0_=A0_=7C_14_++++++++++++++?= =?unknown-8bit?b?IKBzcmMvd3BzL3dwc19jb21tb24uYyCgIKB8IDE0ICsrKysrKysgWy4u?= =?unknown-8bit?b?Ll0g?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_analysis_details=3A___=28-0=2E7_points=2C_5=2E0_re?= =?unknown-8bit?q?quired=29?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_pts_rule_name______________description?= =?unknown-8bit?q?_----_----------------------_------------------------------?= =?unknown-8bit?q?--------------------?= =?unknown-8bit?q?_-0=2E7_RCVD=5FIN=5FDNSWL=5FLOW______RBL=3A_Sender_listed_a?= =?unknown-8bit?q?t_https=3A//www=2Ednswl=2Eorg/=2C?= =?unknown-8bit?q?_low_trust?= =?unknown-8bit?q?_=5B40=2E107=2E12=2E59_listed_in_list=2Ednswl=2Eorg=5D?= =?unknown-8bit?q?_-0=2E0_RCVD=5FIN=5FMSPIKE=5FH2______RBL=3A_Average_reputat?= =?unknown-8bit?q?ion_=28+2=29?= =?unknown-8bit?q?_=5B40=2E107=2E12=2E59_listed_in_wl=2Emailspike=2Enet=5D?= =?unknown-8bit?q?_-0=2E0_SPF=5FPASS_______________SPF=3A_sender_matches_SPF_?= =?unknown-8bit?q?record?= =?unknown-8bit?q?_-0=2E0_SPF=5FHELO=5FPASS__________SPF=3A_HELO_matches_SPF_?= =?unknown-8bit?q?record?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID_____________Message_has_at_least_one_v?= =?unknown-8bit?q?alid_DKIM_or_DK_signature?= =?unknown-8bit?q?_0=2E1_DKIM=5FSIGNED____________Message_has_a_DKIM_or_DK_si?= =?unknown-8bit?q?gnature=2C_not_necessarily?= =?unknown-8bit?q?_valid?= X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Report the MAC Addresses that cause WPS overlap, when detected by AP. This allows to identify potential misbehaving or conflicting stations. Signed-off-by: Jef Maerien ---  src/ap/wps_hostapd.c    | 24 +++++++++++++++++++++++-  src/wps/wps.h           | 14 ++++++++++++++  src/wps/wps_common.c    | 14 ++++++++++++++  src/wps/wps_i.h         |  1 +  src/wps/wps_registrar.c | 40 +++++++++++++++++++++-------------------  5 files changed, 73 insertions(+), 20 deletions(-) -- 2.17.1 diff --git a/src/ap/wps_hostapd.c b/src/ap/wps_hostapd.c index e97dbf996..1b16364ae 100644 --- a/src/ap/wps_hostapd.c +++ b/src/ap/wps_hostapd.c @@ -905,7 +905,29 @@ static void hostapd_wps_event_cb(void *ctx, enum wps_event event,   break;   case WPS_EV_PBC_OVERLAP:   hostapd_wps_event_pbc_overlap(hapd); - wpa_msg(hapd->msg_ctx, MSG_INFO, WPS_EVENT_OVERLAP); + u8 size = (data->overlap_pbc_session.count-1)*18+1; + char* str_mac = os_zalloc(size); //18:xx:xx:xx:xx:xx:xx, + if(str_mac) { + int ret; + char *pos, *end; + struct wps_pbc_session *pbc; + pos = str_mac; + end = str_mac + size; + for (pbc = data->overlap_pbc_session.pbc_session; pbc; pbc = pbc->next) { + if(pbc->overlap){ + ret = os_snprintf(pos, end - pos, MACSTR",", MAC2STR(pbc->addr)); + pos += ret; + } + } + *(pos-1) = '\0'; + } + if(data->overlap_pbc_session.addr){ + wpa_msg(hapd->msg_ctx, MSG_INFO, WPS_EVENT_OVERLAP MACSTR",%s",MAC2STR(data->overlap_pbc_session.addr), str_mac); + } else { + wpa_msg(hapd->msg_ctx, MSG_INFO, WPS_EVENT_OVERLAP "null,%s", str_mac); + } + os_free(str_mac); + str_mac = NULL;   break;   case WPS_EV_PBC_TIMEOUT:   hostapd_wps_event_pbc_timeout(hapd); diff --git a/src/wps/wps.h b/src/wps/wps.h index 6a12255c8..51cdd8d15 100644 --- a/src/wps/wps.h +++ b/src/wps/wps.h @@ -520,6 +520,14 @@ enum wps_event {   WPS_EV_AP_PIN_SUCCESS  }; +struct wps_pbc_session { + struct wps_pbc_session *next; + u8 addr[ETH_ALEN]; + u8 uuid_e[WPS_UUID_LEN]; + u8 overlap; + struct os_reltime timestamp; +}; +  /**   * union wps_event_data - WPS event data   */ @@ -611,6 +619,12 @@ union wps_event_data {   WPS_ER_SET_SEL_REG_FAILED   } state;   } set_sel_reg; + + struct wps_event_overlap_pbc_session { + int count; + u8 *addr; + struct wps_pbc_session *pbc_session; + } overlap_pbc_session;  };  /** diff --git a/src/wps/wps_common.c b/src/wps/wps_common.c index 747dc4710..953abc8bf 100644 --- a/src/wps/wps_common.c +++ b/src/wps/wps_common.c @@ -323,6 +323,20 @@ void wps_pbc_overlap_event(struct wps_context *wps)   wps->event_cb(wps->cb_ctx, WPS_EV_PBC_OVERLAP, NULL);  } +void wps_pbc_vap_overlap_event(struct wps_context *wps, int count, u8 *addr, struct wps_pbc_session *pbc) +{ + union wps_event_data data; + + if (wps->event_cb == NULL) + return; + + os_memset(&data, 0, sizeof(data)); + data.overlap_pbc_session.count = count; + data.overlap_pbc_session.addr = addr; + data.overlap_pbc_session.pbc_session = pbc; + wps->event_cb(wps->cb_ctx, WPS_EV_PBC_OVERLAP, &data); +} +  void wps_pbc_timeout_event(struct wps_context *wps)  { diff --git a/src/wps/wps_i.h b/src/wps/wps_i.h index 2cf22d4b7..ce629f360 100644 --- a/src/wps/wps_i.h +++ b/src/wps/wps_i.h @@ -144,6 +144,7 @@ void wps_success_event(struct wps_context *wps, const u8 *mac_addr);  void wps_pwd_auth_fail_event(struct wps_context *wps, int enrollee, int part,       const u8 *mac_addr);  void wps_pbc_overlap_event(struct wps_context *wps); +void wps_pbc_vap_overlap_event(struct wps_context *wps, int count, u8 *addr, struct wps_pbc_session *pbc);  void wps_pbc_timeout_event(struct wps_context *wps);  void wps_pbc_active_event(struct wps_context *wps);  void wps_pbc_disable_event(struct wps_context *wps); diff --git a/src/wps/wps_registrar.c b/src/wps/wps_registrar.c index 45f7e947e..696a51602 100644 --- a/src/wps/wps_registrar.c +++ b/src/wps/wps_registrar.c @@ -111,15 +111,6 @@ static void wps_free_pins(struct dl_list *pins)   wps_remove_pin(pin);  } - -struct wps_pbc_session { - struct wps_pbc_session *next; - u8 addr[ETH_ALEN]; - u8 uuid_e[WPS_UUID_LEN]; - struct os_reltime timestamp; -}; - -  static void wps_free_pbc_sessions(struct wps_pbc_session *pbc)  {   struct wps_pbc_session *prev; @@ -425,7 +416,15 @@ static void wps_registrar_remove_pbc_session(struct wps_registrar *reg,   }  } - +static void wps_pbc_raise_overlap_event(struct wps_context *wps, int count, u8 *addr, struct wps_pbc_session *pbc) +{ + wps_pbc_vap_overlap_event(wps, count, addr, pbc); + //clear overlap flag + struct wps_pbc_session *itr; + for (itr = pbc; itr; itr = itr->next) { + itr->overlap = 0; + } +}  int wps_registrar_pbc_overlap(struct wps_registrar *reg,        const u8 *addr, const u8 *uuid_e)  { @@ -464,6 +463,7 @@ int wps_registrar_pbc_overlap(struct wps_registrar *reg,      os_memcmp(uuid_e, pbc->uuid_e, WPS_UUID_LEN)) {   wpa_printf(MSG_DEBUG, "WPS: New Enrollee");   count++; + pbc->overlap = 1;   }   if (first == NULL)   first = pbc; @@ -471,7 +471,7 @@ int wps_registrar_pbc_overlap(struct wps_registrar *reg,   wpa_printf(MSG_DEBUG, "WPS: %u active PBC session(s) found", count); - return count > 1 ? 1 : 0; + return count > 1 ? count : 0;  } @@ -1046,11 +1046,12 @@ static void wps_registrar_pbc_timeout(void *eloop_ctx, void *timeout_ctx)  int wps_registrar_button_pushed(struct wps_registrar *reg,   const u8 *p2p_dev_addr)  { + int count;   if (p2p_dev_addr == NULL && -    wps_registrar_pbc_overlap(reg, NULL, NULL)) { +    (count=wps_registrar_pbc_overlap(reg, NULL, NULL))) {   wpa_printf(MSG_DEBUG, "WPS: PBC overlap - do not start PBC "     "mode"); - wps_pbc_overlap_event(reg->wps); + wps_pbc_raise_overlap_event(reg->wps, count, NULL, reg->pbc_sessions);   return -2;   }   wpa_printf(MSG_DEBUG, "WPS: Button pushed - PBC mode started"); @@ -1150,6 +1151,7 @@ void wps_registrar_probe_req_rx(struct wps_registrar *reg, const u8 *addr,  {   struct wps_parse_attr attr;   int skip_add = 0; + int count = 0;   wpa_hexdump_buf(MSG_MSGDUMP,   "WPS: Probe Request with WPS data received", @@ -1219,10 +1221,10 @@ void wps_registrar_probe_req_rx(struct wps_registrar *reg, const u8 *addr,   if (!skip_add)   wps_registrar_add_pbc_session(reg, addr, attr.uuid_e); - if (wps_registrar_pbc_overlap(reg, addr, attr.uuid_e)) { + if ((count=wps_registrar_pbc_overlap(reg, addr, attr.uuid_e))) {   wpa_printf(MSG_DEBUG, "WPS: PBC session overlap detected");   reg->force_pbc_overlap = 1; - wps_pbc_overlap_event(reg->wps); + wps_pbc_raise_overlap_event(reg->wps, count, (u8*) addr, reg->pbc_sessions);   }  } @@ -2728,18 +2730,18 @@ static enum wps_process_res wps_process_m1(struct wps_data *wps,   }   }  #endif /* CONFIG_WPS_NFC */ - + int count = 0;   if (wps->dev_pw_id == DEV_PW_PUSHBUTTON) {   if ((wps->wps->registrar->force_pbc_overlap || -     wps_registrar_pbc_overlap(wps->wps->registrar, -       wps->mac_addr_e, wps->uuid_e) || +     (count=wps_registrar_pbc_overlap(wps->wps->registrar, +       wps->mac_addr_e, wps->uuid_e)) ||       !wps_registrar_p2p_dev_addr_match(wps)) &&      !wps_registrar_skip_overlap(wps)) {   wpa_printf(MSG_DEBUG, "WPS: PBC overlap - deny PBC "     "negotiation");   wps->state = SEND_M2D;   wps->config_error = WPS_CFG_MULTIPLE_PBC_DETECTED; - wps_pbc_overlap_event(wps->wps); + wps_pbc_raise_overlap_event(wps->wps, count, wps->mac_addr_e, wps->wps->registrar->pbc_sessions);   wps_fail_event(wps->wps, WPS_M1,         WPS_CFG_MULTIPLE_PBC_DETECTED,         WPS_EI_NO_ERROR, wps->mac_addr_e);