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

Reply via email to