From a7967979b47845a1736e734c1c16f5929ae6fd48 Mon Sep 17 00:00:00 2001 From: Dan Klein Date: Wed, 16 Dec 2015 08:53:08 +0200 Subject: cleaned the code a little, added load_packet_from_pcap into packet builder functionality. --- .../client_utils/packet_builder.py | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'scripts/automation/trex_control_plane/client_utils') 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. -- cgit 1.2.3-korg