From nobody Sun Jun 11 23:28:06 2023 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4QfWFz0y1fz4cKx1; Sun, 11 Jun 2023 23:28:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QfWFz08Xqz42S7; Sun, 11 Jun 2023 23:28:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1686526087; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zXuAH5JZ4VpunSARR73hQyR3dYtT2G9SOjUurxUwau0=; b=S3qr0lqvUhXZ4bDAxlCPX15+8H6u76+CwyLjrnvNI6mn9bHGXAY3m6aLNSwDLfgSKZSmHQ qZKvqg4MkPHD424jmiOfIldwdnaW6q6PpDkBX/qeGmXyTfxbJ46o6uUCPrfyOhAL/hn4Qv e9veDCt5YdYLGhfY+/3xBFiq+VyPBQV5QEJ0UYx1AVL2rTKpHpMvmzd1ZywYliIKcjdHsG 0AR1DvJaOXdmkjf4NHlBJKsisSqYbqaGo8LJm2oYLONdbTpghX8PZErTtLOZ6kwjJ3WC2B QyjJ9YO3r27dmkMSOZ+zLaPe327SN/XjgMbuRuGcIt9vAgxNCzHnmrD4MWVi5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1686526087; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zXuAH5JZ4VpunSARR73hQyR3dYtT2G9SOjUurxUwau0=; b=niBE5t4Ee2l9ujSABVoCbwrju6y1u9OiorpErUrI8n5ajlBXW05ywDSMUjKhz4LYoNx6ds mBftVEKjU/jXEFeGkiSsGmSuFrp/7Y11DcrPZ0baJ5KDKO24NYXiP8fBkCwYuaS4ILPCsp vvnhezEgUiGfpoDMIqLJs+fhiQYnnd+Mgkzun+2JpIK/OTDuSXOqFInNAj8124SKE0ZKDc a8TWvwh//PmYE0DLpHiy1j4Rd/jzvVMWbw6LkNCA0cKRu+KnjgsO/VnoqO7EA2kXqs56RR /hfqLCp7BEfQsTgPV34JrrJLQQ7GfimahiBfrxmTuIIZsCn52LVoiBg+X023Mw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1686526087; a=rsa-sha256; cv=none; b=Lb6h54Y0meVQxFRMBlOrt/kfSZT4FkkgJVbRTsrpw1/6dst58n0SUpLwCI5Q3IRk6YikjB LcEK1/OywpRBV5hSDtdcpc80O9uEsZo+A4+RkAYZ+zM5PldVPM7JP3AjonCjThEbKtBLyn hWFx87ho1swKZ26EAAKEYNbBzTBmF8fJX9TyFkWjp0DjhwIPNWGTotM2qYR/gEYsLUYx6q m0lK5WSdb30Fai5IxaKaTqGLq+AkZhfJdTe212KGDZrAv4sykYGa68m4VCQW5IFttm0EI5 s/o8OrCjbPgdN5oSivw9fzRM8MAte+zigBMxNMrS+7UXwc2JuT1oYj1NvfalFQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4QfWFy6JlMzHfY; Sun, 11 Jun 2023 23:28:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 35BNS67S063186; Sun, 11 Jun 2023 23:28:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 35BNS6th063185; Sun, 11 Jun 2023 23:28:06 GMT (envelope-from git) Date: Sun, 11 Jun 2023 23:28:06 GMT Message-Id: <202306112328.35BNS6th063185@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Cy Schubert Subject: git: bb5d6d14d81b - main - wpa: Enable receiving priority tagged (VID 0) frames List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bb5d6d14d81b0789d2e73da03571603426afef56 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=bb5d6d14d81b0789d2e73da03571603426afef56 commit bb5d6d14d81b0789d2e73da03571603426afef56 Author: R. Christian McDonald AuthorDate: 2023-06-11 23:22:53 +0000 Commit: Cy Schubert CommitDate: 2023-06-11 23:26:04 +0000 wpa: Enable receiving priority tagged (VID 0) frames Certain internet service providers transmit vlan 0 priority tagged EAPOL frames from the ONT towards the residential gateway. VID 0 should be ignored, and the frame processed according to the priority set in the 802.1P bits and the encapsulated EtherType (i.e. EAPOL). The pcap filter utilized by l2_packet is inadquate for this use case. Here we modify the pcap filter to accept both unencapsulated and encapsulated (with VLAN 0) EAPOL EtherTypes. This preserves the original filter behavior while also matching on encapsulated EAPOL. Sponsored by: Rubicon Communications, LLC ("Netgate") Reviewed by: cy MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D40442 --- contrib/wpa/src/l2_packet/l2_packet_freebsd.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/contrib/wpa/src/l2_packet/l2_packet_freebsd.c b/contrib/wpa/src/l2_packet/l2_packet_freebsd.c index 7b96bd033c87..156a09a32a84 100644 --- a/contrib/wpa/src/l2_packet/l2_packet_freebsd.c +++ b/contrib/wpa/src/l2_packet/l2_packet_freebsd.c @@ -21,6 +21,7 @@ #include #endif /* __sun__ */ +#include #include #include #include @@ -99,6 +100,11 @@ static void l2_packet_receive(int sock, void *eloop_ctx, void *sock_ctx) } else { buf = (unsigned char *) (ethhdr + 1); len = hdr->caplen - sizeof(*ethhdr); + /* handle 8021Q encapsulated frames */ + if (ethhdr->h_proto == htons(ETH_P_8021Q)) { + buf += ETHER_VLAN_ENCAP_LEN; + len -= ETHER_VLAN_ENCAP_LEN; + } } l2->rx_callback(l2->rx_callback_ctx, ethhdr->h_source, buf, len); } @@ -127,10 +133,10 @@ static int l2_packet_init_libpcap(struct l2_packet_data *l2, os_snprintf(pcap_filter, sizeof(pcap_filter), "not ether src " MACSTR " and " "( ether dst " MACSTR " or ether dst " MACSTR " ) and " - "ether proto 0x%x", + "( ether proto 0x%x or ( vlan 0 and ether proto 0x%x ) )", MAC2STR(l2->own_addr), /* do not receive own packets */ MAC2STR(l2->own_addr), MAC2STR(pae_group_addr), - protocol); + protocol, protocol); if (pcap_compile(l2->pcap, &pcap_fp, pcap_filter, 1, pcap_netp) < 0) { fprintf(stderr, "pcap_compile: %s\n", pcap_geterr(l2->pcap)); return -1;