While testing NEFilterDataProvider
, I observed that IGMP traffic is not seen in it. Perhaps someone can show me where my testing is wrong and provide a better methodology to create IGMP traffic.
I am using iperf
found in Homebrew. I am using iperf
as follows:
- I execute the client/consumer
iperf
on the VM where theNEFilterDataProvider
is active and running:iperf -s -u -B 224.1.1.1 -i 1
- I then execute on another machine the server/producer side of things:
iperf -c 224.1.1.1 -u -T 32 -t 3 -i 1
.
This works correctly as both sides receive the data and everything seems to be good.
However, I don't see any IGMP traffic on the NEFilterDataProvider
.
When I create a raw socket with python and send traffic marked as IGMP, that gets seen by NEFilterDataProvider
.
Is this expected where the kernel handle IGMP messages which don't get bubbled up to usermode through a NetworkExtension?
Am I not actually testing the right thing to see IGMP traffic in NEFilterDataProvider
?
By the way, I am not sure if NEFilterPacketProvider
would see this—I just haven't had a chance to try it since packet provider is not working in my Parallels VM.