From 4dbc2b99d385f82049f2c6716357a94e51be5f79 Mon Sep 17 00:00:00 2001
From: Pierre LALET <pierre.lalet@cea.fr>
Date: Thu, 21 Jan 2016 12:49:13 +0100
Subject: [PATCH] Use xrange objects to (internally) represent tuples in field
 values

---
 scapy/base_classes.py | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/scapy/base_classes.py b/scapy/base_classes.py
index e6be1126..05e24266 100644
--- a/scapy/base_classes.py
+++ b/scapy/base_classes.py
@@ -25,21 +25,18 @@ class SetGen(Gen):
         self._iterpacket=_iterpacket
         if isinstance(set, (list, BasePacketList)):
             self.set = list(set)
+        elif (type(set) is tuple) and (2 <= len(set) <= 3) and \
+             all(type(i) is int for i in set):
+            self.set = [xrange(*set)]
         else:
             self.set = [set]
     def transf(self, element):
         return element
     def __iter__(self):
         for i in self.set:
-            if (type(i) is tuple) and (len(i) == 2) and type(i[0]) is int and type(i[1]) is int:
-                if  (i[0] <= i[1]):
-                    j=i[0]
-                    while j <= i[1]:
-                        yield j
-                        j += 1
-            elif (isinstance(i, Gen) and
-                  (self._iterpacket or not isinstance(i,BasePacket))) or (
-                  isinstance(i, (xrange, types.GeneratorType))):
+            if (isinstance(i, Gen) and
+                (self._iterpacket or not isinstance(i,BasePacket))) or (
+                    isinstance(i, (xrange, types.GeneratorType))):
                 for j in i:
                     yield j
             else:
-- 
GitLab