Conversation
Removed the commented-out max_count calculation for PacketListField.
There was a problem hiding this comment.
Pull request overview
This PR attempts to fix an issue where Scapy fails to import on macOS when the ARP cache contains more than 4096 entries. The change removes the hardcoded max_count=4096 parameter from the pfmsghdrs PacketListField definition.
Key changes:
- Removes the
max_count=4096parameter from the PacketListField in the pfmsghdrs class - Removes the associated comment explaining the calculation (65535 / len(pfmsghdr))
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
I'm a bit skeptical of this PR because the default is 100 Line 1158 in 17ff3f0 We specifically increased it to 4096 which seeamed reasonable. Maybe it needs to be increased even more? |
|
so after chewing on this, i think the right move is: It may be a little tricky since this failure is on import. |
Fixes #4787
I'm removing the hardcoded ARP cache entry limit on MacOS because it's causing Scapy to raise on import if the ARP cache is larger than 4096.
Import error traceback
MacOS uniquely caches failed/rejected ARP lookups, causing the list of entries in the cache to grow substantially larger than other OSes when preforming network scans across a large subnet.
If i run
ping 10.0.0.2, which is a valid IP in my subnet but a host does not exist at that IP, my ARP cache will show:This behavior is unique to MacOS, I have tested on Windows and various Linux distros and they will only show entries with corresponding MAC addresses.
In summary, Scapy's hardcoded ARP cache entry limit conflicts with the ARP caching behavior on MacOS.