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