Commit 6cde0d03 authored by mullers's avatar mullers
Browse files

all TRANS ready but not yet TTwb compiled

parent 938e2c03
Loading
Loading
Loading
Loading
+4 −5
Original line number Original line Diff line number Diff line
@@ -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;
				}
				}
@@ -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
+3 −1
Original line number Original line Diff line number Diff line
@@ -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);
@@ -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
+148 −0
Original line number Original line Diff line number Diff line
@@ -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