MCPcopy Index your code
hub / github.com/secdev/scapy / self_build

Method self_build

scapy/packet.py:713–746  ·  view source on GitHub ↗

Create the default layer regarding fields_desc dict

(self)

Source from the content-addressed store, hash-verified

711 self.payload.clear_cache()
712
713 def self_build(self):
714 # type: () -> bytes
715 """
716 Create the default layer regarding fields_desc dict
717 """
718 if self.raw_packet_cache is not None and \
719 self.raw_packet_cache_fields is not None:
720 for fname, fval in self.raw_packet_cache_fields.items():
721 fld, val = self.getfield_and_val(fname)
722 if self._raw_packet_cache_field_value(fld, val) != fval:
723 self.raw_packet_cache = None
724 self.raw_packet_cache_fields = None
725 self.wirelen = None
726 break
727 if self.raw_packet_cache is not None:
728 return self.raw_packet_cache
729 p = b""
730 for f in self.fields_desc:
731 val = self.getfieldval(f.name)
732 if isinstance(val, RawVal):
733 p += bytes(val)
734 else:
735 try:
736 p = f.addfield(self, p, val)
737 except Exception as ex:
738 try:
739 ex.args = (
740 "While building field '%s': " % f.name +
741 ex.args[0],
742 ) + ex.args[1:]
743 except (AttributeError, IndexError):
744 pass
745 raise ex
746 return p
747
748 def do_build_payload(self):
749 # type: () -> bytes

Callers 1

do_buildMethod · 0.95

Calls 5

getfield_and_valMethod · 0.95
getfieldvalMethod · 0.95
itemsMethod · 0.80
addfieldMethod · 0.45

Tested by

no test coverage detected