This patch has been superseded by http://lists.infradead.org/pipermail/hostap/2023-June/041627.html This patch fails to account for handling encapsulated packets offsets on all platforms. The patch above is complete for FreeBSD. Other platforms will require additional work. ------- Original Message ------- On Thursday, June 15th, 2023 at 12:15 PM, R. Christian McDonald <rcm@xxxxxx> wrote: > > > 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. > > Signed-off-by: R. Christian McDonald rcm@xxxxxx > > Sponsored by: Rubicon Communications, LLC ("Netgate") > --- > src/l2_packet/l2_packet_freebsd.c | 4 ++-- > src/l2_packet/l2_packet_pcap.c | 4 ++-- > src/l2_packet/l2_packet_winpcap.c | 4 ++-- > 3 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/src/l2_packet/l2_packet_freebsd.c b/src/l2_packet/l2_packet_freebsd.c > index 60de9fe6b..cefcc0545 100644 > --- a/src/l2_packet/l2_packet_freebsd.c > +++ b/src/l2_packet/l2_packet_freebsd.c > @@ -122,10 +122,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; > diff --git a/src/l2_packet/l2_packet_pcap.c b/src/l2_packet/l2_packet_pcap.c > index c2b17fcf8..e05be9902 100644 > --- a/src/l2_packet/l2_packet_pcap.c > +++ b/src/l2_packet/l2_packet_pcap.c > @@ -232,10 +232,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; > diff --git a/src/l2_packet/l2_packet_winpcap.c b/src/l2_packet/l2_packet_winpcap.c > index 3452051f5..14ef85655 100644 > --- a/src/l2_packet/l2_packet_winpcap.c > +++ b/src/l2_packet/l2_packet_winpcap.c > @@ -175,10 +175,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; > -- > 2.41.0 > > _______________________________________________ > Hostap mailing list > Hostap@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/hostap _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap