Loading ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Functions.ttcn +4 −5 Original line number Original line Diff line number Diff line Loading @@ -281,18 +281,17 @@ function f_replyToEchoRequest(in template Ipv6Address p_llaAddrTn, function f_replyToEchoRequest(in template Ipv6Address p_llaAddrTn, in template Ipv6Address p_llaAddrNut, in template Ipv6Address p_llaAddrNut, in UInt16 p_identifier, in UInt16 p_identifier, in UInt16 p_seqNo ) in UInt16 p_seqNo, out EchoRequest p_echoRequest) runs on LibIpv6Node runs on LibIpv6Node return FncRetCode { return FncRetCode { var FncRetCode v_ret := e_error; var FncRetCode v_ret := e_error; var EchoRequest echoRequest; tc_ac.start; tc_ac.start; alt { alt { [] ipPort.receive(mw_echoRequest ( p_llaAddrNut, [] ipPort.receive(mw_echoRequest ( p_llaAddrNut, p_llaAddrTn )) -> value echoRequest { p_llaAddrTn )) -> value p_echoRequest { tc_ac.stop; tc_ac.stop; v_ret := e_success; v_ret := e_success; } } Loading @@ -305,7 +304,7 @@ p_llaAddrNut, p_llaAddrNut, p_identifier, p_identifier, p_seqNo, p_seqNo, echoRequest.ipv6Payload.echoRequestMsg.data )); p_echoRequest.ipv6Payload.echoRequestMsg.data )); return v_ret ; return v_ret ; } // end f_replyToEchoRequest } // end f_replyToEchoRequest Loading ttcn3/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Functions.ttcn +3 −1 Original line number Original line Diff line number Diff line Loading @@ -1570,6 +1570,7 @@ group mobileSecurityFns { return FncRetCode { return FncRetCode { //Variables //Variables var FncRetCode v_ret := e_success; var FncRetCode v_ret := e_success; var EchoRequest v_receivedEchoRequest; v_ret := f_cnWaitForHomeTestInitFromHaAndReply( p_glaCnTn, v_ret := f_cnWaitForHomeTestInitFromHaAndReply( p_glaCnTn, p_mnHoaTn); p_mnHoaTn); Loading @@ -1577,7 +1578,8 @@ group mobileSecurityFns { v_ret := f_replyToEchoRequest( p_glaCnTn, v_ret := f_replyToEchoRequest( p_glaCnTn, p_mnHoaTn, p_mnHoaTn, c_defId, c_defId, c_defSeqNo); c_defSeqNo, v_receivedEchoRequest); } } return v_ret; return v_ret; }//end function f_cnNull2ReverseTunnelingWithHa }//end function f_cnNull2ReverseTunnelingWithHa Loading ttcn3/EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_CommonTrans_Functions.ttcn +148 −0 Original line number Original line Diff line number Diff line Loading @@ -1729,5 +1729,153 @@ }//end f_receiveIpv4withTunneledIpv6EchoReq }//end f_receiveIpv4withTunneledIpv6EchoReq /* * @desc This waits for an ICMPv4 packet with tunneled ICMPv6 from an RFC4213 node to any * NUT and replies with ICMPv4 error message * @remark Time limit is defined by module parameter PX_TAC (see comp type) * @param p_ipv4NutAddr IPv4 address of node under test * @param p_ipv4TnAddr IPv4 address of testing node which calls this function * @param p_ipv6NutAddr IPv6 address of node under test * @param p_ipv6TnAddr IPv6 address of testing node which calls this function * @return execution status */ function f_receiveIpv4withTunneledIpv6EchoReqAndSendIcmpv4Error( in template Ipv4Address p_ipv4NutAddr, in template Ipv4Address p_ipv4TnAddr, in template Ipv6Address p_ipv6NutAddr, in template Ipv6Address p_ipv6TnAddr, out Ipv4Packet p_ipv4Packet ) runs on LibIpv6Node return FncRetCode { var FncRetCode v_ret := e_error; v_ret := f_receiveIpv4withTunneledIpv6EchoReq( p_ipv4NutAddr, p_ipv4TnAddr, p_ipv6NutAddr, p_ipv6TnAddr, p_ipv4Packet ); if (v_ret != e_success) {return v_ret;} v_ret := f_sendIpv4Packet ( m_ipv4ParameterProblem ( p_ipv4TnAddr, p_ipv4NutAddr) ); return v_ret; }//end f_receiveIpv4withTunneledIpv6EchoReqAndSendIcmpv4Error /* * @desc RFC4213 - This sends 2 ICMPv4 packet containig a fragmented ICMPv6 packet and waits for a echo reply for a fixed amount of time. * Only the first reply is checked. If it contains more frags bit set then PASS. * * @remark Time limit is defined by module parameter PX_TAC (see comp type) * @param p_ipv4TnAddr IPv4 address of testing node which calls this function * @param p_ipv4NutAddr IPv4 address of node under test * @param p_ipv6TnAddr IPv6 address of testing node which calls this function * @param p_ipv6NutAddr IPv6 address of node under test * @return execution status */ function f_sendFragmentedIpv6PacketAndReceiveFragmentedReply( in template Ipv4Address p_ipv4TnAddr, in template Ipv4Address p_ipv4NutAddr, in template Ipv6Address p_ipv6TnAddr, in template Ipv6Address p_ipv6NutAddr, out Ipv4Packet p_ipv4Packet ) runs on LibIpv6Node return FncRetCode { var FncRetCode v_ret := e_error; //1. fragment v_ret := f_sendIpv4Packet ( m_ipv4Packet_tunneledIpv6 ( p_ipv4TnAddr, p_ipv4NutAddr, m_echoRequest_extHdr_data ( c_fragHdr, m_extHdrList_1Elem ( m_extHdr_fragmentHeader ( c_icmpHdr, c_fragOffset0, c_moreFragments, c_fragmentId1 ) ), p_ipv6TnAddr, p_ipv6NutAddr, c_defId, c_defSeqNo, c_8ZeroBytes ) ) ); if(v_ret != e_success) { log("**** f_sendFragmentedIpv6PacketAndReceiveFragmentedReply: Error: Problem in f_sendIpv4Packet. ****"); return v_ret; } //2. fragment v_ret := f_sendIpv4Packet ( m_ipv4Packet_tunneledIpv6 ( p_ipv4TnAddr, p_ipv4NutAddr, m_generalIpv6_extHdr_data ( c_fragHdr, p_ipv6TnAddr, p_ipv6NutAddr, m_extHdrList_1Elem ( m_extHdr_fragmentHeader ( c_noNextHdr, c_fragOffset2, c_noMoreFragments, c_fragmentId1 ) ), c_8ZeroBytes ) ) ); if(v_ret != e_success) { log("**** f_sendFragmentedIpv6PacketAndReceiveFragmentedReply: Error: Problem in f_sendIpv4Packet. ****"); return v_ret; } //wait for the 1. fragment of the reply. tc_ac.start; alt{ [] ipv4Port.receive(mw_ipv4Packet_tunneledIpv6 ( p_ipv4NutAddr, p_ipv4TnAddr, mw_echoReply_noExtHdr_noData ( p_ipv6NutAddr, p_ipv6TnAddr, c_defId, c_defSeqNo ) )) -> value p_ipv4Packet { tc_ac.stop; if (p_ipv4Packet.ipv4Hdr.moreFragsFlag == c_moreFragsFlag1) { return e_success; } else { return e_error; } } [] tc_ac.timeout { log("**** f_sendFragmentedIpv6PacketAndReceiveFragmentedReply: Timeout tc_ac: Expected message not received. ****"); return e_timeout; } }//end alt }//end f_sendFragmentedIpv6PacketAndReceiveFragmentedReply } // end module LibIpv6_CommonTrans_Functions } // end module LibIpv6_CommonTrans_Functions Loading
ttcn3/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Functions.ttcn +4 −5 Original line number Original line Diff line number Diff line Loading @@ -281,18 +281,17 @@ function f_replyToEchoRequest(in template Ipv6Address p_llaAddrTn, function f_replyToEchoRequest(in template Ipv6Address p_llaAddrTn, in template Ipv6Address p_llaAddrNut, in template Ipv6Address p_llaAddrNut, in UInt16 p_identifier, in UInt16 p_identifier, in UInt16 p_seqNo ) in UInt16 p_seqNo, out EchoRequest p_echoRequest) runs on LibIpv6Node runs on LibIpv6Node return FncRetCode { return FncRetCode { var FncRetCode v_ret := e_error; var FncRetCode v_ret := e_error; var EchoRequest echoRequest; tc_ac.start; tc_ac.start; alt { alt { [] ipPort.receive(mw_echoRequest ( p_llaAddrNut, [] ipPort.receive(mw_echoRequest ( p_llaAddrNut, p_llaAddrTn )) -> value echoRequest { p_llaAddrTn )) -> value p_echoRequest { tc_ac.stop; tc_ac.stop; v_ret := e_success; v_ret := e_success; } } Loading @@ -305,7 +304,7 @@ p_llaAddrNut, p_llaAddrNut, p_identifier, p_identifier, p_seqNo, p_seqNo, echoRequest.ipv6Payload.echoRequestMsg.data )); p_echoRequest.ipv6Payload.echoRequestMsg.data )); return v_ret ; return v_ret ; } // end f_replyToEchoRequest } // end f_replyToEchoRequest Loading
ttcn3/EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Functions.ttcn +3 −1 Original line number Original line Diff line number Diff line Loading @@ -1570,6 +1570,7 @@ group mobileSecurityFns { return FncRetCode { return FncRetCode { //Variables //Variables var FncRetCode v_ret := e_success; var FncRetCode v_ret := e_success; var EchoRequest v_receivedEchoRequest; v_ret := f_cnWaitForHomeTestInitFromHaAndReply( p_glaCnTn, v_ret := f_cnWaitForHomeTestInitFromHaAndReply( p_glaCnTn, p_mnHoaTn); p_mnHoaTn); Loading @@ -1577,7 +1578,8 @@ group mobileSecurityFns { v_ret := f_replyToEchoRequest( p_glaCnTn, v_ret := f_replyToEchoRequest( p_glaCnTn, p_mnHoaTn, p_mnHoaTn, c_defId, c_defId, c_defSeqNo); c_defSeqNo, v_receivedEchoRequest); } } return v_ret; return v_ret; }//end function f_cnNull2ReverseTunnelingWithHa }//end function f_cnNull2ReverseTunnelingWithHa Loading
ttcn3/EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_CommonTrans_Functions.ttcn +148 −0 Original line number Original line Diff line number Diff line Loading @@ -1729,5 +1729,153 @@ }//end f_receiveIpv4withTunneledIpv6EchoReq }//end f_receiveIpv4withTunneledIpv6EchoReq /* * @desc This waits for an ICMPv4 packet with tunneled ICMPv6 from an RFC4213 node to any * NUT and replies with ICMPv4 error message * @remark Time limit is defined by module parameter PX_TAC (see comp type) * @param p_ipv4NutAddr IPv4 address of node under test * @param p_ipv4TnAddr IPv4 address of testing node which calls this function * @param p_ipv6NutAddr IPv6 address of node under test * @param p_ipv6TnAddr IPv6 address of testing node which calls this function * @return execution status */ function f_receiveIpv4withTunneledIpv6EchoReqAndSendIcmpv4Error( in template Ipv4Address p_ipv4NutAddr, in template Ipv4Address p_ipv4TnAddr, in template Ipv6Address p_ipv6NutAddr, in template Ipv6Address p_ipv6TnAddr, out Ipv4Packet p_ipv4Packet ) runs on LibIpv6Node return FncRetCode { var FncRetCode v_ret := e_error; v_ret := f_receiveIpv4withTunneledIpv6EchoReq( p_ipv4NutAddr, p_ipv4TnAddr, p_ipv6NutAddr, p_ipv6TnAddr, p_ipv4Packet ); if (v_ret != e_success) {return v_ret;} v_ret := f_sendIpv4Packet ( m_ipv4ParameterProblem ( p_ipv4TnAddr, p_ipv4NutAddr) ); return v_ret; }//end f_receiveIpv4withTunneledIpv6EchoReqAndSendIcmpv4Error /* * @desc RFC4213 - This sends 2 ICMPv4 packet containig a fragmented ICMPv6 packet and waits for a echo reply for a fixed amount of time. * Only the first reply is checked. If it contains more frags bit set then PASS. * * @remark Time limit is defined by module parameter PX_TAC (see comp type) * @param p_ipv4TnAddr IPv4 address of testing node which calls this function * @param p_ipv4NutAddr IPv4 address of node under test * @param p_ipv6TnAddr IPv6 address of testing node which calls this function * @param p_ipv6NutAddr IPv6 address of node under test * @return execution status */ function f_sendFragmentedIpv6PacketAndReceiveFragmentedReply( in template Ipv4Address p_ipv4TnAddr, in template Ipv4Address p_ipv4NutAddr, in template Ipv6Address p_ipv6TnAddr, in template Ipv6Address p_ipv6NutAddr, out Ipv4Packet p_ipv4Packet ) runs on LibIpv6Node return FncRetCode { var FncRetCode v_ret := e_error; //1. fragment v_ret := f_sendIpv4Packet ( m_ipv4Packet_tunneledIpv6 ( p_ipv4TnAddr, p_ipv4NutAddr, m_echoRequest_extHdr_data ( c_fragHdr, m_extHdrList_1Elem ( m_extHdr_fragmentHeader ( c_icmpHdr, c_fragOffset0, c_moreFragments, c_fragmentId1 ) ), p_ipv6TnAddr, p_ipv6NutAddr, c_defId, c_defSeqNo, c_8ZeroBytes ) ) ); if(v_ret != e_success) { log("**** f_sendFragmentedIpv6PacketAndReceiveFragmentedReply: Error: Problem in f_sendIpv4Packet. ****"); return v_ret; } //2. fragment v_ret := f_sendIpv4Packet ( m_ipv4Packet_tunneledIpv6 ( p_ipv4TnAddr, p_ipv4NutAddr, m_generalIpv6_extHdr_data ( c_fragHdr, p_ipv6TnAddr, p_ipv6NutAddr, m_extHdrList_1Elem ( m_extHdr_fragmentHeader ( c_noNextHdr, c_fragOffset2, c_noMoreFragments, c_fragmentId1 ) ), c_8ZeroBytes ) ) ); if(v_ret != e_success) { log("**** f_sendFragmentedIpv6PacketAndReceiveFragmentedReply: Error: Problem in f_sendIpv4Packet. ****"); return v_ret; } //wait for the 1. fragment of the reply. tc_ac.start; alt{ [] ipv4Port.receive(mw_ipv4Packet_tunneledIpv6 ( p_ipv4NutAddr, p_ipv4TnAddr, mw_echoReply_noExtHdr_noData ( p_ipv6NutAddr, p_ipv6TnAddr, c_defId, c_defSeqNo ) )) -> value p_ipv4Packet { tc_ac.stop; if (p_ipv4Packet.ipv4Hdr.moreFragsFlag == c_moreFragsFlag1) { return e_success; } else { return e_error; } } [] tc_ac.timeout { log("**** f_sendFragmentedIpv6PacketAndReceiveFragmentedReply: Timeout tc_ac: Expected message not received. ****"); return e_timeout; } }//end alt }//end f_sendFragmentedIpv6PacketAndReceiveFragmentedReply } // end module LibIpv6_CommonTrans_Functions } // end module LibIpv6_CommonTrans_Functions