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 iperfon the VM where theNEFilterDataProvideris 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.