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
for pkt in self.pkt_iter ():
if pkt.name == name:
if cnt==0:
- return pkt.offset
+ return pkt._offset
else:
cnt=cnt -1
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))
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={}
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
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()
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):
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):
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)
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;
assert(type(p) == type(o) )
#copy
- p.offset=o.offset
+ p._offset=o._offset
#next
p=p.payload
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()
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={}
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
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()
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:
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):
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
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;
assert(type(p) == type(o) )
#copy
- p.offset=o.offset
+ p._offset=o._offset
#next
p=p.payload
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()