summaryrefslogtreecommitdiffstats
path: root/scripts/automation/trex_control_plane/client_utils
diff options
context:
space:
mode:
authorDan Klein <danklein10@gmail.com>2015-12-16 08:53:08 +0200
committerDan Klein <danklein10@gmail.com>2015-12-16 08:53:08 +0200
commita7967979b47845a1736e734c1c16f5929ae6fd48 (patch)
treeaa7b22b5ad77ee633ce0a6484b7193287ce5ddef /scripts/automation/trex_control_plane/client_utils
parent7b1796d823b38f7c8c801e19c51a4044bc39b17c (diff)
cleaned the code a little, added load_packet_from_pcap into packet builder functionality.
Diffstat (limited to 'scripts/automation/trex_control_plane/client_utils')
-rwxr-xr-xscripts/automation/trex_control_plane/client_utils/packet_builder.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/scripts/automation/trex_control_plane/client_utils/packet_builder.py b/scripts/automation/trex_control_plane/client_utils/packet_builder.py
index 3aeb6a34..d8070c74 100755
--- a/scripts/automation/trex_control_plane/client_utils/packet_builder.py
+++ b/scripts/automation/trex_control_plane/client_utils/packet_builder.py
@@ -301,6 +301,30 @@ class CTRexPktBuilder(object):
break
return
+ def load_packet_from_pcap(self, pcap_path):
+ """
+ This method loads a pcap file into a parsed packet builder object.
+
+ :parameters:
+ pcap_path: str
+ a path to a pcap file, containing a SINGLE packet.
+
+ :raises:
+ + :exc:`IOError`, in case provided path doesn't exists.
+
+ """
+ with open(pcap_path, 'r') as f:
+ pcap = dpkt.pcap.Reader(f)
+ first_packet = True
+ for _, buf in pcap:
+ # this is an iterator, can't evaluate the number of files in advance
+ if first_packet:
+ self.load_packet(dpkt.ethernet.Ethernet(buf))
+ else:
+ raise ValueError("Provided pcap file contains more than single packet.")
+ # arrive here ONLY if pcap contained SINGLE packet
+ return
+
def get_packet(self, get_ptr=False):
"""
This method provides access to the built packet, as an instance or as a pointer to packet itself.