fix for https://trex-tgn.cisco.com/youtrack/issue/trex-358
authorimarom <[email protected]>
Wed, 22 Feb 2017 11:48:14 +0000 (13:48 +0200)
committerimarom <[email protected]>
Wed, 22 Feb 2017 11:49:23 +0000 (13:49 +0200)
Signed-off-by: imarom <[email protected]>
scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py
scripts/external_libs/scapy-2.3.1/python2/scapy/packet.py
scripts/external_libs/scapy-2.3.1/python3/scapy/packet.py

index 679068a..edd3d91 100755 (executable)
@@ -485,7 +485,7 @@ class CTRexScapyPktUtl(object):
         for pkt in self.pkt_iter ():
             if pkt.name == name:
                 if cnt==0:
-                    return (pkt, pkt.offset)
+                    return (pkt, pkt._offset)
                 else:
                     cnt=cnt -1
 
@@ -500,7 +500,7 @@ class CTRexScapyPktUtl(object):
         for pkt in self.pkt_iter ():
             if pkt.name == name:
                 if cnt==0:
-                    return pkt.offset
+                    return pkt._offset
                 else:
                     cnt=cnt -1
 
@@ -513,12 +513,11 @@ class CTRexScapyPktUtl(object):
         t=self._layer_offset(layer,layer_cnt);
         l_offset=t[1];
         layer_pkt=t[0]
-
         #layer_pkt.dump_fields_offsets ()
 
         for f in layer_pkt.fields_desc:
             if f.name == field_name:
-                return (l_offset+f.offset,f.get_size_bytes ());
+                return (l_offset+f._offset,f.get_size_bytes ());
 
         raise CTRexPacketBuildException(-11, "No layer %s-%d." % (field_name, layer_cnt))
 
index 711d703..5bd2e69 100644 (file)
@@ -77,7 +77,7 @@ class Packet(BasePacket):
             self.name = self.__class__.__name__
         self.aliastypes = [ self.__class__ ] + self.aliastypes
         self.default_fields = {}
-        self.offset=0;  # offset of the object
+        self._offset=0;  # offset of the object
         self.offset_fields = {} # ofsset of each field
         self.overloaded_fields = {}
         self.fields={}
@@ -159,7 +159,7 @@ class Packet(BasePacket):
         clone.default_fields = self.default_fields.copy()
         clone.overloaded_fields = self.overloaded_fields.copy()
         clone.overload_fields = self.overload_fields.copy()
-        clone.offset=self.offset
+        clone._offset=self._offset
         clone.underlayer = self.underlayer
         clone.explicit = self.explicit
         clone.raw_packet_cache = self.raw_packet_cache
@@ -170,7 +170,7 @@ class Packet(BasePacket):
 
     def dump_offsets (self):
         print "obj-id ",id(self),
-        print self.name ,self.offset 
+        print self.name ,self._offset 
         if self.payload:
             self.payload.dump_offsets()
 
@@ -316,7 +316,7 @@ class Packet(BasePacket):
 
     def dump_fields_offsets (self):
         for f in self.fields_desc:
-            print "field %-40s %02d %02d" % (f.name, f.offset,f.get_size_bytes ());
+            print "field %-40s %02d %02d" % (f.name, f._offset,f.get_size_bytes ());
 
 
     def self_build(self, field_pos_list=None):
@@ -325,10 +325,10 @@ class Packet(BasePacket):
         p=""
         for f in self.fields_desc:
             if type(p) is tuple :
-                f.offset=len(p[0])
+                f._offset=len(p[0])
             else:
                 assert(type(p)==str)
-                f.offset=len(p)
+                f._offset=len(p)
 
             val = self.getfieldval(f.name)
             if isinstance(val, RawVal):
@@ -336,7 +336,7 @@ class Packet(BasePacket):
                 p += sval
                 if field_pos_list is not None:
                     field_pos_list.append( (f.name, sval.encode("string_escape"), len(p), len(sval) ) )
-                f.offset= val
+                f._offset= val
             else:
                 p = f.addfield(self, p, val)
                 
@@ -347,14 +347,14 @@ class Packet(BasePacket):
 
     def do_update_payload_offset(self,pkt):
         #print "obj-id ",id(self)
-        #print "current offset ",self.name," ",self.offset
+        #print "current offset ",self.name," ",self._offset
         #print "current header size  ",len(pkt)
-        self.payload.offset = self.offset + len(pkt)
+        self.payload._offset = self._offset + len(pkt)
 
     def dump_layers_offset (self):
         p=self;
         while True:
-            print p.name, "offset :",p.offset
+            print p.name, "offset :",p._offset
             p=p.payload
             if p ==None or isinstance(p,NoPayload):
                 break;
@@ -387,7 +387,7 @@ class Packet(BasePacket):
             assert(type(p) == type(o) )
 
             #copy
-            p.offset=o.offset
+            p._offset=o._offset
 
             #next 
             p=p.payload
@@ -705,7 +705,7 @@ Creates an EPS file describing a packet. If filename is not provided a temporary
         pkt = self.__class__()
         pkt.explicit = 1
         pkt.fields = kargs
-        pkt.offset=self.offset
+        pkt._offset=self._offset
         pkt.time = self.time
         pkt.underlayer = self.underlayer
         pkt.overload_fields = self.overload_fields.copy()
index c92a27b..5fcf57c 100644 (file)
@@ -81,7 +81,7 @@ class Packet(BasePacket, metaclass = Packet_metaclass):
             self.name = self.__class__.__name__
         self.aliastypes = [ self.__class__ ] + self.aliastypes
         self.default_fields = {}
-        self.offset=0;  # offset of the object
+        self._offset=0;  # offset of the object
         self.offset_fields = {} # ofsset of each field
         self.overloaded_fields = {}
         self.fields={}
@@ -163,7 +163,7 @@ class Packet(BasePacket, metaclass = Packet_metaclass):
         clone.default_fields = self.default_fields.copy()
         clone.overloaded_fields = self.overloaded_fields.copy()
         clone.overload_fields = self.overload_fields.copy()
-        clone.offset=self.offset
+        clone._offset=self._offset
         clone.underlayer = self.underlayer
         clone.explicit = self.explicit
         clone.raw_packet_cache = self.raw_packet_cache
@@ -173,7 +173,7 @@ class Packet(BasePacket, metaclass = Packet_metaclass):
         return clone
 
     def dump_offsets (self):
-        print ("obj-id {0} {1} {2}".format(id(self),self.name ,self.offset))
+        print ("obj-id {0} {1} {2}".format(id(self),self.name ,self._offset))
         if self.payload:
             self.payload.dump_offsets()
 
@@ -335,7 +335,7 @@ class Packet(BasePacket, metaclass = Packet_metaclass):
 
     def dump_fields_offsets (self):
         for f in self.fields_desc:
-            print ("field %-40s %02d %02d" % (f.name, f.offset,f.get_size_bytes () ) );
+            print ("field %-40s %02d %02d" % (f.name, f._offset,f.get_size_bytes () ) );
 
     def self_build(self, field_pos_list=None):
         if self.raw_packet_cache is not None:
@@ -344,10 +344,10 @@ class Packet(BasePacket, metaclass = Packet_metaclass):
         for f in self.fields_desc:
             #print(f.name)
             if type(p) is tuple :
-                f.offset=len(p[0])
+                f._offset=len(p[0])
             else:
                 assert(type(p)==bytes)
-                f.offset=len(p)
+                f._offset=len(p)
 
             val = self.getfieldval(f.name)
             if isinstance(val, RawVal):
@@ -356,7 +356,7 @@ class Packet(BasePacket, metaclass = Packet_metaclass):
                 p += sval
                 if field_pos_list is not None:
                     field_pos_list.append( (f.name, sval.encode("string_escape"), len(p), len(sval) ) )
-                f.offset= val
+                f._offset= val
             else:
                 p = f.addfield(self, p, val)
         return p
@@ -366,14 +366,14 @@ class Packet(BasePacket, metaclass = Packet_metaclass):
 
     def do_update_payload_offset(self,pkt):
         #print "obj-id ",id(self)
-        #print "current offset ",self.name," ",self.offset
+        #print "current offset ",self.name," ",self._offset
         #print "current header size  ",len(pkt)
-        self.payload.offset = self.offset + len(pkt)
+        self.payload._offset = self._offset + len(pkt)
 
     def dump_layers_offset (self):
         p=self;
         while True:
-            print (p.name, "offset :",p.offset)
+            print (p.name, "offset :",p._offset)
             p=p.payload
             if p ==None or isinstance(p,NoPayload):
                 break;
@@ -403,7 +403,7 @@ class Packet(BasePacket, metaclass = Packet_metaclass):
             assert(type(p) == type(o) )
 
             #copy
-            p.offset=o.offset
+            p._offset=o._offset
 
             #next 
             p=p.payload
@@ -719,7 +719,7 @@ Creates an EPS file describing a packet. If filename is not provided a temporary
         pkt = self.__class__()
         pkt.explicit = 1
         pkt.fields = kargs
-        pkt.offset=self.offset
+        pkt._offset=self._offset
         pkt.time = self.time
         pkt.underlayer = self.underlayer
         pkt.overload_fields = self.overload_fields.copy()