diff options
author | Anton Kiselev <anton.kisel@gmail.com> | 2017-03-13 19:18:50 +0700 |
---|---|---|
committer | Yaroslav Brustinov <ybrustin@cisco.com> | 2017-03-14 16:59:07 +0200 |
commit | ca4ceb64467f41b2c772c04c3567922960c6b085 (patch) | |
tree | ff0ce5f5dd88988c909c36dc89195317c1173e0d /scripts/automation/trex_control_plane/stl/services/scapy_server/scapy_service.py | |
parent | af25eb9b8463225827fd38223f36a9c361f2d254 (diff) |
scapy_server: skip uninitialized/unsupported field_desc._offset
Signed-off-by: Anton Kiselev <anton.kisel@gmail.com>
Diffstat (limited to 'scripts/automation/trex_control_plane/stl/services/scapy_server/scapy_service.py')
-rwxr-xr-x | scripts/automation/trex_control_plane/stl/services/scapy_server/scapy_service.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/scripts/automation/trex_control_plane/stl/services/scapy_server/scapy_service.py b/scripts/automation/trex_control_plane/stl/services/scapy_server/scapy_service.py index c0a753c7..35bcf1fe 100755 --- a/scripts/automation/trex_control_plane/stl/services/scapy_server/scapy_service.py +++ b/scripts/automation/trex_control_plane/stl/services/scapy_server/scapy_service.py @@ -644,8 +644,11 @@ class Scapy_service(Scapy_service_api): for field_desc in pkt.fields_desc: field_id = field_desc.name ignored = field_id not in layer_full.fields - offset = field_desc._offset - protocol_offset = pkt._offset + # scapy offset/length calculation doesn't support dynamic size structures + # since PktClass.fields_desc is a singletone, + # _offset/size can be missing, uninitialized or contain values from the previous runs + offset = getattr(field_desc, '_offset', None) + protocol_offset = getattr(pkt, '_offset', None) field_sz = field_desc.get_size_bytes() # some values are unavailable in pkt(original model) # at the same time, @@ -708,7 +711,7 @@ class Scapy_service(Scapy_service_api): fields.append(field_data) layer_data = { "id": layer_id, - "offset": pkt._offset, + "offset": protocol_offset, "fields": fields, "real_id": real_layer_id, "valid_structure": valid_struct, |