diff options
Diffstat (limited to 'scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py')
-rw-r--r-- | scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py index 24a7301b..fc4750c3 100644 --- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py +++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py @@ -28,17 +28,24 @@ class CTRexPacketBuildException(Exception): ################################################################################################ -def ipv4_str_to_num (ipv4_buffer): +def _buffer_to_num(str_buffer): + assert type(str_buffer)==str, 'type of str_buffer is not str' + res=0 + for i in str_buffer: + res = res << 8 + res += ord(i) + return res + +def ipv4_str_to_num (ipv4_buffer): assert type(ipv4_buffer)==str, 'type of ipv4_buffer is not str' assert len(ipv4_buffer)==4, 'size of ipv4_buffer is not 4' - res=0 - shift=24 - for i in ipv4_buffer: - res = res + (ord(i)<<shift); - shift =shift -8 - return res + return _buffer_to_num(ipv4_buffer) +def mac_str_to_num (mac_buffer): + assert type(mac_buffer)==str, 'type of mac_buffer is not str' + assert len(mac_buffer)==6, 'size of mac_buffer is not 6' + return _buffer_to_num(mac_buffer) def is_valid_ipv4(ip_addr): @@ -588,7 +595,7 @@ class CTRexVmDescWrMaskFlowVar(CTRexVmDescBase): self.pkt_offset =pkt_offset self.pkt_cast_size =pkt_cast_size assert type(pkt_cast_size)==int,'type of pkt_cast_size is not int' - if not (pkt_cast_size in [1,2,4]): + if not (pkt_cast_size in [1,2,4,8]): raise CTRexPacketBuildException(-10,"not valid cast size"); self.mask = mask |