diff --git a/tests/lib/IPXWrapper/Capture/IPXOverUDP.pm b/tests/lib/IPXWrapper/Capture/IPXOverUDP.pm index f95b730..7d2e59e 100644 --- a/tests/lib/IPXWrapper/Capture/IPXOverUDP.pm +++ b/tests/lib/IPXWrapper/Capture/IPXOverUDP.pm @@ -25,6 +25,8 @@ use NetPacket::IP; use NetPacket::UDP; use NetPacket::IPXWrapper; +my @IGNORE_PORTS = (53, 67, 68); # DNS and DHCP + sub new { my ($class, $dev) = @_; @@ -56,6 +58,12 @@ sub read_available my $udp = NetPacket::UDP->decode($ip->{data}); + # NetPacket::IPXWrapper tries to validate packets are in fact + # IPXWrapper packets, but I've seen it accept DNS packets that + # just happen to have the right bytes in places, so we ignore + # special ports we expect unrelated traffic on. + return if(grep { $udp->{src_port} == $_ || $udp->{dest_port} == $_ } @IGNORE_PORTS); + my $ipx = NetPacket::IPXWrapper->decode($udp->{data}); return unless(defined($ipx));