(self, s)
| 1033 | return s |
| 1034 | |
| 1035 | def do_dissect(self, s): |
| 1036 | # type: (bytes) -> bytes |
| 1037 | _raw = s |
| 1038 | self.raw_packet_cache_fields = {} |
| 1039 | for f in self.fields_desc: |
| 1040 | s, fval = f.getfield(self, s) |
| 1041 | # Skip unused ConditionalField |
| 1042 | if isinstance(f, ConditionalField) and fval is None: |
| 1043 | continue |
| 1044 | # We need to track fields with mutable values to discard |
| 1045 | # .raw_packet_cache when needed. |
| 1046 | if (f.islist or f.holds_packets or f.ismutable) and fval is not None: |
| 1047 | self.raw_packet_cache_fields[f.name] = \ |
| 1048 | self._raw_packet_cache_field_value(f, fval, copy=True) |
| 1049 | self.fields[f.name] = fval |
| 1050 | # Nothing left to dissect |
| 1051 | if not s and (isinstance(f, MayEnd) or |
| 1052 | (fval is not None and isinstance(f, ConditionalField) and |
| 1053 | isinstance(f.fld, MayEnd))): |
| 1054 | break |
| 1055 | self.raw_packet_cache = _raw[:-len(s)] if s else _raw |
| 1056 | self.explicit = 1 |
| 1057 | return s |
| 1058 | |
| 1059 | def do_dissect_payload(self, s): |
| 1060 | # type: (bytes) -> None |
no test coverage detected