Loading ttcn/AtsCommon/AtsCommon_Templates.ttcn3 +19 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,25 @@ module AtsCommon_Templates { } // End of group ipv4DummySendTemplates group ipv4DummyReceiveTemplates { template (present) Ipv4Packet mw_ipv4Packet_dummy( in template (present) Ipv4Address p_src, in template (present) Ipv4Address p_dst, in template (present) octetstring p_rawPayload := ? ) := { ipv4Hdr := mw_ipv4Hdr_protocol_srcDst( c_protocol_tcp, p_src, p_dst ), ipv4Payload := { rawPacket := p_rawPayload } } // End of template m_ipv4Packet_dummy } // End of group ipv4DummySendTemplates template (value) Ipv4Packet m_ipv4Packet_df( in template (value) UInt1 p_doNotFragFlag, in template (value) Ipv4Address p_src, Loading ttcn/AtsCommon/AtsCommon_TypesAndValues.ttcn +14 −6 Original line number Diff line number Diff line Loading @@ -29,18 +29,20 @@ group natMappings { type record of record { Ipv6Address ip6Address, type record NatMappingTable_1_to_1 { UInt16 srcPort, record of record { Ipv6Address ip6Address, Ipv4Address ip4Address } NatMappingTable_1_to_1; } mapInfos }; type record NatMappingTable_1_to_n { Ipv4Address ip4Address, UInt16 dstPort, record of record { Ipv6Address ip6Address, UInt16 srcPort, UInt16 dstPort UInt16 srcPort } portInfos }; Loading Loading @@ -86,4 +88,10 @@ } // End of group ipv4Hosts group auxiliary { type set of integer IntList; } // End of group auxiliary } // end AtsCommon_TypesAndValues ttcn/AtsNAT64/AtsNat64_Functions.ttcn3 +28 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ */ module AtsNat64_Functions { // AtsCommon import from AtsCommon_Tcp_Rfc793_TypesAndValues all; import from AtsCommon_Interfaces all; // LibCommon Loading @@ -14,7 +16,7 @@ module AtsNat64_Functions { altstep a_shutdown; const c_prDone, c_tbDone, c_poDone; } import from LibCommon_VerdictControl {type FncRetCode;} import from LibCommon_VerdictControl all; import from LibIpv6_CommonRfcs_TypesAndValues all; // Nat64 Loading Loading @@ -142,4 +144,29 @@ module AtsNat64_Functions { } // End of group globalSteps group auxiliary { function f_decTcpPacket(in octetstring p_raw, out TcpPacket p_tcpPacket) return FncRetCode { var FncRetCode v_result; var integer v_decRes; v_decRes := decvalue(oct2bit(p_raw), p_tcpPacket); select (v_decRes) { case (0) { v_result := e_success; } case (1) { log("*** Decoding failure ***"); v_result := e_error; } case (2) { log("*** Decoding failure. Not enough bits. ***"); v_result := e_error; } } return v_result; } } // End of group auxiliary } // End of module AtsNat64_Functions No newline at end of file ttcn/AtsNAT64/AtsNat64_Pixits.ttcn3 +14 −14 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ module AtsNat64_Pixits { /** * @desc Defines the NAT64 prefix. */ modulepar Oct12 PX_NAT64_PREFIX := '0064FF9B0000000000000000'O; modulepar Oct8 PX_NAT64_PREFIX := '0064FF9B00000000'O; modulepar Ipv4DestInfo PX_IPV4_DESTINATION_INFORMATION := { dstAddress := '41d0e4df'O, Loading @@ -24,30 +24,30 @@ module AtsNat64_Pixits { } modulepar NatMappingTable_1_to_1 PX_NAT64_MAPPING_TABLE_1_TO_1 := { srcPort := 6001, mapInfos := { { ip6Address := '20010db8000000000000000000000001'O, srcPort := 6001, ip4Address := '91fea0ed'O }, { ip6Address := '20010db8000000000000000000000002'O, srcPort := 6002, ip4Address := '91fea0ee'O } } } modulepar NatMappingTable_1_to_n PX_NAT64_MAPPING_TABLE_1_TO_N := { ip4Address := '91fea0ed'O, dstPort := 80, portInfos := { { ip6Address := '20010db8000000000000000000000001'O, srcPort := 6001, dstPort := 80 srcPort := 6000 }, { ip6Address := '20010db8000000000000000000000002'O, srcPort := 6002, dstPort := 81 srcPort := 6001 } } } Loading ttcn/AtsNAT64/AtsNat64_TestCases.ttcn3 +66 −32 Original line number Diff line number Diff line Loading @@ -5,19 +5,24 @@ */ module AtsNat64_TestCases { import from AtsCommon_Tcp_Rfc793_TypesAndValues all; import from LibCommon_DataStrings all; import from Ats6RD_Pixits all; // LibCommon import from LibCommon_VerdictControl all; import from LibCommon_Sync all; import from LibCommon_BasicTypesAndValues all; // AtsNat64 import from AtsNat64_Functions all; import from AtsNat64_Templates all; import from AtsNat64_Interfaces all; import from AtsNat64_Pixits all; import from AtsNat64_TypesAndValues all; // AtsCommon // AtsCommon import from AtsCommon_TypesAndValues all; import from AtsCommon_Interfaces all; Loading @@ -28,6 +33,8 @@ module AtsNat64_TestCases { import from LibIpv6_Interface_TypesAndValues all; import from LibIpv6_Rfc0768Udp_TypesAndValues all; import from LibIpv6_Interface_Templates all; import from LibIpv6_CommonRfcs_TypesAndValues all; /** * @desc LSN role * @reference ETSI TS xxx xxx-x V0.0.1 (2013-07) Clause 5.1 Loading Loading @@ -78,7 +85,7 @@ module AtsNat64_TestCases { testcase TC_NAT64_LSN_BF_BV_001() runs on Nat64Component system TestAdapter { // Local variables var integer v_hostNum := lengthof(PX_NAT64_MAPPING_TABLE_1_TO_1); /** Expected number of IPv6 packets to be forwarded */ var integer v_hostNum := lengthof(PX_NAT64_MAPPING_TABLE_1_TO_1.mapInfos); /** Expected number of IPv6 packets to be forwarded */ var Ipv4Packet v_ipv4Packet; /** IPv4 packets */ var Ipv6Packet v_ipv6Packet; /** IPv6 packets address to IPv4 */ var integer v_host; /** 'for' statement counter */ Loading @@ -99,10 +106,10 @@ module AtsNat64_TestCases { for (v_host := 0; v_host < v_hostNum; v_host := v_host + 1) { f_finalyzeIpv4Packet( m_ipv4Packet_dummy( PX_NAT64_MAPPING_TABLE_1_TO_1[v_host].ip4Address, PX_NAT64_MAPPING_TABLE_1_TO_1.mapInfos[v_host].ip4Address, PX_IPV4_DESTINATION_INFORMATION.dstAddress, m_tcp_packet( PX_NAT64_MAPPING_TABLE_1_TO_1[v_host].srcPort, PX_NAT64_MAPPING_TABLE_1_TO_1.srcPort, PX_IPV4_DESTINATION_INFORMATION.dstPort, PX_IPV4_DESTINATION_INFORMATION.payload, m_tcp_flags_syn Loading @@ -112,8 +119,8 @@ module AtsNat64_TestCases { ); v_ipv6Packet := m_generalIpv6_extHdr_data( c_tcpHdr, PX_NAT64_MAPPING_TABLE_1_TO_1[v_host].ip6Address, PX_NAT64_PREFIX & PX_IPV4_DESTINATION_INFORMATION.dstAddress, PX_NAT64_MAPPING_TABLE_1_TO_1.mapInfos[v_host].ip6Address, PX_NAT64_PREFIX & c_4ZeroBytes & PX_IPV4_DESTINATION_INFORMATION.dstAddress, omit, v_ipv4Packet.ipv4Payload.rawPacket ); Loading Loading @@ -230,13 +237,13 @@ module AtsNat64_TestCases { * </pre> * * @version 0.0.1 * @reference ETSI TS 101 569-1 Clause 6.4.4.4 1:1 Shared/Split Resources * @reference ETSI TS 101 569-1 Clause 6.4.4.4 Shared/Split Resources * @see ETSI TS xxx xxx-x V0.0.1.5a-draft (2013-07) TP/NAT64/LSN/BF/VB/02 */ testcase TC_NAT64_LSN_BF_BV_002() runs on Nat64Component system TestAdapter { // Local variables var integer v_hostNum := lengthof(PX_NAT64_MAPPING_TABLE_1_TO_N.portInfos); /** Expected number of IPv6 packets to be forwarded */ var UInt v_hostNum := lengthof(PX_NAT64_MAPPING_TABLE_1_TO_N.portInfos); /** Expected number of IPv6 packets to be forwarded */ var Ipv4Packet v_ipv4Packet; /** IPv4 packets */ var Ipv6Packet v_ipv6Packet; /** IPv6 packets address to IPv4 */ var integer v_host; /** 'for' statement counter */ Loading @@ -244,8 +251,8 @@ module AtsNat64_TestCases { // Test control // Test component configuration vc_lsnComponents[0] := LSNComponent.create(c_COMP_LSN); for (v_host := 0; v_host < v_hostNum; v_host := v_host + 1) { vc_lsnComponents[v_host] := LSNComponent.create(c_COMP_LSN & int2str(v_host)); vc_hostComponents[v_host] := HostComponent.create(c_COMP_HOST & int2str(v_host)); } // End of 'for' statement f_cf01Up(); Loading @@ -254,29 +261,27 @@ module AtsNat64_TestCases { // Test Body // Start all components vc_lsnComponents[v_host].start(f_TC_NAT64_LSN_BF_BV_002_lsn(v_hostNum)); for (v_host := 0; v_host < v_hostNum; v_host := v_host + 1) { f_finalyzeIpv4Packet( m_ipv4Packet_dummy( v_ipv4Packet := m_ipv4Packet_dummy( PX_NAT64_MAPPING_TABLE_1_TO_N.ip4Address, PX_IPV4_DESTINATION_INFORMATION.dstAddress, m_tcp_packet( PX_NAT64_MAPPING_TABLE_1_TO_N.portInfos[v_host].srcPort, PX_NAT64_MAPPING_TABLE_1_TO_N.portInfos[v_host].dstPort, PX_NAT64_MAPPING_TABLE_1_TO_N.dstPort, PX_IPV4_DESTINATION_INFORMATION.payload, m_tcp_flags_syn ) ), v_ipv4Packet ); v_ipv6Packet := m_generalIpv6_extHdr_data( c_tcpHdr, PX_NAT64_MAPPING_TABLE_1_TO_N.portInfos[v_host].ip6Address, PX_NAT64_PREFIX & PX_NAT64_MAPPING_TABLE_1_TO_N.ip4Address, PX_NAT64_PREFIX & c_4ZeroBytes & PX_NAT64_MAPPING_TABLE_1_TO_N.ip4Address, omit, v_ipv4Packet.ipv4Payload.rawPacket ); vc_lsnComponents[v_host].start(f_TC_NAT64_LSN_BF_BV_002_lsn(v_ipv4Packet)); vc_hostComponents[v_host].start(f_TC_NAT64_LSN_BF_BV_002_host(v_ipv6Packet)); } // End of 'for' statement Loading @@ -293,13 +298,19 @@ module AtsNat64_TestCases { * @desc Implement LSN protocol * @verdict 'pass' on success, 'inconc' on 'timeout', fail otherwise */ function f_TC_NAT64_LSN_BF_BV_002_lsn(Ipv4Packet p_ipv4Packet) runs on LSNComponent { function f_TC_NAT64_LSN_BF_BV_002_lsn(integer p_hostNum) runs on LSNComponent { // Local variables var Ipv4Address v_localAddress := PX_IPV4_DESTINATION_INFORMATION.dstAddress; var Ipv4Packet v_ipv4Packet; var TcpPacket v_tcpPacket; var integer v_receivedNo := 0; var FncRetCode v_result := e_success; var IntList v_portList; // Preamble // Clause 'Initial conditions' f_preamble_lsn(p_ipv4Packet.ipv4Hdr.destinationAddress); f_preamble_lsn(v_localAddress); f_selfOrClientSyncAndVerdict(c_prDone, e_success); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); Loading @@ -308,17 +319,40 @@ module AtsNat64_TestCases { // the IUT forwards packets to the destination with same public IPv4 source address tc_ac.start; alt { [] ipv4Port.receive(p_ipv4Packet) { [] ipv4Port.receive( mw_ipv4Packet_dummy( PX_NAT64_MAPPING_TABLE_1_TO_N.ip4Address, v_localAddress, ? ) ) -> value v_ipv4Packet { if (e_success == f_decTcpPacket(v_ipv4Packet.ipv4Payload.rawPacket, v_tcpPacket)) { if (match(v_portList, superset(v_tcpPacket.srcPort))) { log("*** " & __SCOPE__ & ": FAIL: IPv4 packet was forwarded with already used source port. ***"); } else { v_portList[lengthof(v_portList)] := v_tcpPacket.srcPort; v_receivedNo := v_receivedNo + 1; if (v_receivedNo == p_hostNum) { tc_ac.start; repeat; } } } else { v_result := e_error; } tc_ac.stop; log("*** " & __SCOPE__ & ": PASS: IPv4 packet was forwarded. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": PASS: IPv4 packets were correctly forwarded. ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); v_result := e_timeout; log("*** " & __SCOPE__ & ": INCONC: Message was not received in time. ***"); } } // End of 'altstep' statement f_selfOrClientSyncAndVerdict(c_tbDone, v_result); // Postamble f_postamble_lsn(); f_selfOrClientSyncAndVerdict(c_poDone, e_success); Loading Loading @@ -452,7 +486,7 @@ module AtsNat64_TestCases { v_ipv6Packet := m_generalIpv6_extHdr_data( c_tcpHdr, PX_NAT64_MAPPING_TABLE_POOL[v_group].clientInfos[v_host].ip6Address, PX_NAT64_PREFIX & PX_NAT64_MAPPING_TABLE_POOL[v_group].ip4Addresses[v_host], PX_NAT64_PREFIX & c_4ZeroBytes & PX_NAT64_MAPPING_TABLE_POOL[v_group].ip4Addresses[v_host], omit, v_ipv4Packet.ipv4Payload.rawPacket ); Loading Loading
ttcn/AtsCommon/AtsCommon_Templates.ttcn3 +19 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,25 @@ module AtsCommon_Templates { } // End of group ipv4DummySendTemplates group ipv4DummyReceiveTemplates { template (present) Ipv4Packet mw_ipv4Packet_dummy( in template (present) Ipv4Address p_src, in template (present) Ipv4Address p_dst, in template (present) octetstring p_rawPayload := ? ) := { ipv4Hdr := mw_ipv4Hdr_protocol_srcDst( c_protocol_tcp, p_src, p_dst ), ipv4Payload := { rawPacket := p_rawPayload } } // End of template m_ipv4Packet_dummy } // End of group ipv4DummySendTemplates template (value) Ipv4Packet m_ipv4Packet_df( in template (value) UInt1 p_doNotFragFlag, in template (value) Ipv4Address p_src, Loading
ttcn/AtsCommon/AtsCommon_TypesAndValues.ttcn +14 −6 Original line number Diff line number Diff line Loading @@ -29,18 +29,20 @@ group natMappings { type record of record { Ipv6Address ip6Address, type record NatMappingTable_1_to_1 { UInt16 srcPort, record of record { Ipv6Address ip6Address, Ipv4Address ip4Address } NatMappingTable_1_to_1; } mapInfos }; type record NatMappingTable_1_to_n { Ipv4Address ip4Address, UInt16 dstPort, record of record { Ipv6Address ip6Address, UInt16 srcPort, UInt16 dstPort UInt16 srcPort } portInfos }; Loading Loading @@ -86,4 +88,10 @@ } // End of group ipv4Hosts group auxiliary { type set of integer IntList; } // End of group auxiliary } // end AtsCommon_TypesAndValues
ttcn/AtsNAT64/AtsNat64_Functions.ttcn3 +28 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ */ module AtsNat64_Functions { // AtsCommon import from AtsCommon_Tcp_Rfc793_TypesAndValues all; import from AtsCommon_Interfaces all; // LibCommon Loading @@ -14,7 +16,7 @@ module AtsNat64_Functions { altstep a_shutdown; const c_prDone, c_tbDone, c_poDone; } import from LibCommon_VerdictControl {type FncRetCode;} import from LibCommon_VerdictControl all; import from LibIpv6_CommonRfcs_TypesAndValues all; // Nat64 Loading Loading @@ -142,4 +144,29 @@ module AtsNat64_Functions { } // End of group globalSteps group auxiliary { function f_decTcpPacket(in octetstring p_raw, out TcpPacket p_tcpPacket) return FncRetCode { var FncRetCode v_result; var integer v_decRes; v_decRes := decvalue(oct2bit(p_raw), p_tcpPacket); select (v_decRes) { case (0) { v_result := e_success; } case (1) { log("*** Decoding failure ***"); v_result := e_error; } case (2) { log("*** Decoding failure. Not enough bits. ***"); v_result := e_error; } } return v_result; } } // End of group auxiliary } // End of module AtsNat64_Functions No newline at end of file
ttcn/AtsNAT64/AtsNat64_Pixits.ttcn3 +14 −14 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ module AtsNat64_Pixits { /** * @desc Defines the NAT64 prefix. */ modulepar Oct12 PX_NAT64_PREFIX := '0064FF9B0000000000000000'O; modulepar Oct8 PX_NAT64_PREFIX := '0064FF9B00000000'O; modulepar Ipv4DestInfo PX_IPV4_DESTINATION_INFORMATION := { dstAddress := '41d0e4df'O, Loading @@ -24,30 +24,30 @@ module AtsNat64_Pixits { } modulepar NatMappingTable_1_to_1 PX_NAT64_MAPPING_TABLE_1_TO_1 := { srcPort := 6001, mapInfos := { { ip6Address := '20010db8000000000000000000000001'O, srcPort := 6001, ip4Address := '91fea0ed'O }, { ip6Address := '20010db8000000000000000000000002'O, srcPort := 6002, ip4Address := '91fea0ee'O } } } modulepar NatMappingTable_1_to_n PX_NAT64_MAPPING_TABLE_1_TO_N := { ip4Address := '91fea0ed'O, dstPort := 80, portInfos := { { ip6Address := '20010db8000000000000000000000001'O, srcPort := 6001, dstPort := 80 srcPort := 6000 }, { ip6Address := '20010db8000000000000000000000002'O, srcPort := 6002, dstPort := 81 srcPort := 6001 } } } Loading
ttcn/AtsNAT64/AtsNat64_TestCases.ttcn3 +66 −32 Original line number Diff line number Diff line Loading @@ -5,19 +5,24 @@ */ module AtsNat64_TestCases { import from AtsCommon_Tcp_Rfc793_TypesAndValues all; import from LibCommon_DataStrings all; import from Ats6RD_Pixits all; // LibCommon import from LibCommon_VerdictControl all; import from LibCommon_Sync all; import from LibCommon_BasicTypesAndValues all; // AtsNat64 import from AtsNat64_Functions all; import from AtsNat64_Templates all; import from AtsNat64_Interfaces all; import from AtsNat64_Pixits all; import from AtsNat64_TypesAndValues all; // AtsCommon // AtsCommon import from AtsCommon_TypesAndValues all; import from AtsCommon_Interfaces all; Loading @@ -28,6 +33,8 @@ module AtsNat64_TestCases { import from LibIpv6_Interface_TypesAndValues all; import from LibIpv6_Rfc0768Udp_TypesAndValues all; import from LibIpv6_Interface_Templates all; import from LibIpv6_CommonRfcs_TypesAndValues all; /** * @desc LSN role * @reference ETSI TS xxx xxx-x V0.0.1 (2013-07) Clause 5.1 Loading Loading @@ -78,7 +85,7 @@ module AtsNat64_TestCases { testcase TC_NAT64_LSN_BF_BV_001() runs on Nat64Component system TestAdapter { // Local variables var integer v_hostNum := lengthof(PX_NAT64_MAPPING_TABLE_1_TO_1); /** Expected number of IPv6 packets to be forwarded */ var integer v_hostNum := lengthof(PX_NAT64_MAPPING_TABLE_1_TO_1.mapInfos); /** Expected number of IPv6 packets to be forwarded */ var Ipv4Packet v_ipv4Packet; /** IPv4 packets */ var Ipv6Packet v_ipv6Packet; /** IPv6 packets address to IPv4 */ var integer v_host; /** 'for' statement counter */ Loading @@ -99,10 +106,10 @@ module AtsNat64_TestCases { for (v_host := 0; v_host < v_hostNum; v_host := v_host + 1) { f_finalyzeIpv4Packet( m_ipv4Packet_dummy( PX_NAT64_MAPPING_TABLE_1_TO_1[v_host].ip4Address, PX_NAT64_MAPPING_TABLE_1_TO_1.mapInfos[v_host].ip4Address, PX_IPV4_DESTINATION_INFORMATION.dstAddress, m_tcp_packet( PX_NAT64_MAPPING_TABLE_1_TO_1[v_host].srcPort, PX_NAT64_MAPPING_TABLE_1_TO_1.srcPort, PX_IPV4_DESTINATION_INFORMATION.dstPort, PX_IPV4_DESTINATION_INFORMATION.payload, m_tcp_flags_syn Loading @@ -112,8 +119,8 @@ module AtsNat64_TestCases { ); v_ipv6Packet := m_generalIpv6_extHdr_data( c_tcpHdr, PX_NAT64_MAPPING_TABLE_1_TO_1[v_host].ip6Address, PX_NAT64_PREFIX & PX_IPV4_DESTINATION_INFORMATION.dstAddress, PX_NAT64_MAPPING_TABLE_1_TO_1.mapInfos[v_host].ip6Address, PX_NAT64_PREFIX & c_4ZeroBytes & PX_IPV4_DESTINATION_INFORMATION.dstAddress, omit, v_ipv4Packet.ipv4Payload.rawPacket ); Loading Loading @@ -230,13 +237,13 @@ module AtsNat64_TestCases { * </pre> * * @version 0.0.1 * @reference ETSI TS 101 569-1 Clause 6.4.4.4 1:1 Shared/Split Resources * @reference ETSI TS 101 569-1 Clause 6.4.4.4 Shared/Split Resources * @see ETSI TS xxx xxx-x V0.0.1.5a-draft (2013-07) TP/NAT64/LSN/BF/VB/02 */ testcase TC_NAT64_LSN_BF_BV_002() runs on Nat64Component system TestAdapter { // Local variables var integer v_hostNum := lengthof(PX_NAT64_MAPPING_TABLE_1_TO_N.portInfos); /** Expected number of IPv6 packets to be forwarded */ var UInt v_hostNum := lengthof(PX_NAT64_MAPPING_TABLE_1_TO_N.portInfos); /** Expected number of IPv6 packets to be forwarded */ var Ipv4Packet v_ipv4Packet; /** IPv4 packets */ var Ipv6Packet v_ipv6Packet; /** IPv6 packets address to IPv4 */ var integer v_host; /** 'for' statement counter */ Loading @@ -244,8 +251,8 @@ module AtsNat64_TestCases { // Test control // Test component configuration vc_lsnComponents[0] := LSNComponent.create(c_COMP_LSN); for (v_host := 0; v_host < v_hostNum; v_host := v_host + 1) { vc_lsnComponents[v_host] := LSNComponent.create(c_COMP_LSN & int2str(v_host)); vc_hostComponents[v_host] := HostComponent.create(c_COMP_HOST & int2str(v_host)); } // End of 'for' statement f_cf01Up(); Loading @@ -254,29 +261,27 @@ module AtsNat64_TestCases { // Test Body // Start all components vc_lsnComponents[v_host].start(f_TC_NAT64_LSN_BF_BV_002_lsn(v_hostNum)); for (v_host := 0; v_host < v_hostNum; v_host := v_host + 1) { f_finalyzeIpv4Packet( m_ipv4Packet_dummy( v_ipv4Packet := m_ipv4Packet_dummy( PX_NAT64_MAPPING_TABLE_1_TO_N.ip4Address, PX_IPV4_DESTINATION_INFORMATION.dstAddress, m_tcp_packet( PX_NAT64_MAPPING_TABLE_1_TO_N.portInfos[v_host].srcPort, PX_NAT64_MAPPING_TABLE_1_TO_N.portInfos[v_host].dstPort, PX_NAT64_MAPPING_TABLE_1_TO_N.dstPort, PX_IPV4_DESTINATION_INFORMATION.payload, m_tcp_flags_syn ) ), v_ipv4Packet ); v_ipv6Packet := m_generalIpv6_extHdr_data( c_tcpHdr, PX_NAT64_MAPPING_TABLE_1_TO_N.portInfos[v_host].ip6Address, PX_NAT64_PREFIX & PX_NAT64_MAPPING_TABLE_1_TO_N.ip4Address, PX_NAT64_PREFIX & c_4ZeroBytes & PX_NAT64_MAPPING_TABLE_1_TO_N.ip4Address, omit, v_ipv4Packet.ipv4Payload.rawPacket ); vc_lsnComponents[v_host].start(f_TC_NAT64_LSN_BF_BV_002_lsn(v_ipv4Packet)); vc_hostComponents[v_host].start(f_TC_NAT64_LSN_BF_BV_002_host(v_ipv6Packet)); } // End of 'for' statement Loading @@ -293,13 +298,19 @@ module AtsNat64_TestCases { * @desc Implement LSN protocol * @verdict 'pass' on success, 'inconc' on 'timeout', fail otherwise */ function f_TC_NAT64_LSN_BF_BV_002_lsn(Ipv4Packet p_ipv4Packet) runs on LSNComponent { function f_TC_NAT64_LSN_BF_BV_002_lsn(integer p_hostNum) runs on LSNComponent { // Local variables var Ipv4Address v_localAddress := PX_IPV4_DESTINATION_INFORMATION.dstAddress; var Ipv4Packet v_ipv4Packet; var TcpPacket v_tcpPacket; var integer v_receivedNo := 0; var FncRetCode v_result := e_success; var IntList v_portList; // Preamble // Clause 'Initial conditions' f_preamble_lsn(p_ipv4Packet.ipv4Hdr.destinationAddress); f_preamble_lsn(v_localAddress); f_selfOrClientSyncAndVerdict(c_prDone, e_success); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); Loading @@ -308,17 +319,40 @@ module AtsNat64_TestCases { // the IUT forwards packets to the destination with same public IPv4 source address tc_ac.start; alt { [] ipv4Port.receive(p_ipv4Packet) { [] ipv4Port.receive( mw_ipv4Packet_dummy( PX_NAT64_MAPPING_TABLE_1_TO_N.ip4Address, v_localAddress, ? ) ) -> value v_ipv4Packet { if (e_success == f_decTcpPacket(v_ipv4Packet.ipv4Payload.rawPacket, v_tcpPacket)) { if (match(v_portList, superset(v_tcpPacket.srcPort))) { log("*** " & __SCOPE__ & ": FAIL: IPv4 packet was forwarded with already used source port. ***"); } else { v_portList[lengthof(v_portList)] := v_tcpPacket.srcPort; v_receivedNo := v_receivedNo + 1; if (v_receivedNo == p_hostNum) { tc_ac.start; repeat; } } } else { v_result := e_error; } tc_ac.stop; log("*** " & __SCOPE__ & ": PASS: IPv4 packet was forwarded. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": PASS: IPv4 packets were correctly forwarded. ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); v_result := e_timeout; log("*** " & __SCOPE__ & ": INCONC: Message was not received in time. ***"); } } // End of 'altstep' statement f_selfOrClientSyncAndVerdict(c_tbDone, v_result); // Postamble f_postamble_lsn(); f_selfOrClientSyncAndVerdict(c_poDone, e_success); Loading Loading @@ -452,7 +486,7 @@ module AtsNat64_TestCases { v_ipv6Packet := m_generalIpv6_extHdr_data( c_tcpHdr, PX_NAT64_MAPPING_TABLE_POOL[v_group].clientInfos[v_host].ip6Address, PX_NAT64_PREFIX & PX_NAT64_MAPPING_TABLE_POOL[v_group].ip4Addresses[v_host], PX_NAT64_PREFIX & c_4ZeroBytes & PX_NAT64_MAPPING_TABLE_POOL[v_group].ip4Addresses[v_host], omit, v_ipv4Packet.ipv4Payload.rawPacket ); Loading