Hi Murphy, here is a small patch that improves warning messages generated during IPv4 parsing.
Peter >From 7b5f395bd49696290d647b08db271a4ca0e06e43 Mon Sep 17 00:00:00 2001 From: Peter Peresini <peter.peres...@gmail.com> Date: Tue, 22 Jul 2014 10:02:18 +0200 Subject: [PATCH] Improved warning messages during IPv4 parsing --- pox/lib/packet/ipv4.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/pox/lib/packet/ipv4.py b/pox/lib/packet/ipv4.py index 3eb4ae6..6c47a2e 100644 --- a/pox/lib/packet/ipv4.py +++ b/pox/lib/packet/ipv4.py @@ -123,19 +123,22 @@ class ipv4(packet_base): self.srcip = IPAddr(self.srcip) if self.v != ipv4.IPv4: - self.msg('(ip parse) warning IP version %u not IPv4' % self.v) + self.msg('(ip parse) warning: IP version %u not IPv4' % self.v) return - elif self.hl < 5: - self.msg('(ip parse) warning IP header %u longer than len %u' \ - % (self.hl, self.iplen)) + if self.hl < 5: + self.msg('(ip parse) warning: IP header length shorter than MIN_LEN (IHL=%u => header len=%u)' \ + % (self.hl, 4 * self.hl)) return - elif self.iplen < ipv4.MIN_LEN: - self.msg('(ip parse) warning invalid IP len %u' % self.iplen) + if self.iplen < ipv4.MIN_LEN: + self.msg('(ip parse) warning: Invalid IP len %u' % self.iplen) return - elif (self.hl * 4) >= self.iplen or (self.hl * 4) > dlen: - self.msg('(ip parse) warning IP header %u longer than len %u' \ + if (self.hl * 4) > self.iplen: + self.msg('(ip parse) warning: IP header longer than IP length including payload (%u vs %u)' \ % (self.hl, self.iplen)) return + if (self.hl * 4) > dlen: + self.msg('(ip parse) warning: IP header is truncated') + return # At this point, we are reasonably certain that we have an IP # packet -- 1.8.3.2