Commit dcb659be authored by mullers's avatar mullers
Browse files

more RFC4213 TCs added

parent bce7ed5d
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1766,7 +1766,8 @@

		/*
		 * @desc 	This function creates a test adapter configuration message
		 *       for the test component acting as RT03
		 *       	for the test component acting as RT01.
		 *			Used to test 6over4Nodes or IPv4 Interface of RFC4213 implementations
		*/
		function f_createTrans05CfMsg_rt01()
		return CfMessage {
+4 −2
Original line number Diff line number Diff line
@@ -118,12 +118,14 @@
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans05 ) { execute(TC_TRA_1024_02())};

		//RFC 4213
		//if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans05 ) { execute(TC_TRA_4008_01())};
		//if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans05 ) { execute(TC_TRA_4020_01())};
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans07 ) { execute(TC_TRA_4008_01())};
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans07 ) { execute(TC_TRA_4020_01())};
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans06 ) { execute(TC_TRA_4029_01())};
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans07 ) { execute(TC_TRA_4038_01())};
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans05 ) { execute(TC_TRA_4061_01())};
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans05 ) { execute(TC_TRA_4048_01())};
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans05 ) { execute(TC_TRA_4048_02())};
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans07 ) { execute(TC_TRA_4063_01())};
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans05 ) { execute(TC_TRA_4067_01())};
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans05 ) { execute(TC_TRA_4067_02())};
		if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfTrans05 ) { execute(TC_TRA_4071_01())};
+294 −31
Original line number Diff line number Diff line
@@ -6176,24 +6176,49 @@ group rfc2529 {

group rfc4213 {

group TRA_4008_01 {

	/*
	 * @desc  Test encapsulation of an IPv6 datagram in an IPv4 packet.
	 *        Uses test configuration Trans05.
	 *        Uses test configuration Trans07.
	*/
	testcase TC_TRA_4008_01() runs on Ipv6Node system NodeTestAdapter {
		//Variables
		var CfMessage v_cfMsg_4;
		var FncRetCode v_ret := e_error;
		var Ipv6Node v_refRt01_4, v_refRt02_6;
		var CfMessage v_cfMsgRt01_4, v_cfMsgRt02_6;

		//Configuration
		f_cfTrans05Up(v_cfMsg_4);
		f_cfTrans07Up(v_refRt01_4, v_refRt02_6, v_cfMsgRt01_4, v_cfMsgRt02_6);

		activate(a_tn_nut_4(v_cfMsg_4.paramsRt01, v_cfMsg_4.paramsIut));
		//Start
		v_refRt01_4.start(f_TC_TRA_4008_01_TunnelEndPoint_4(v_cfMsgRt01_4));
		v_refRt02_6.start(f_TC_TRA_4008_01_HS02_6(v_cfMsgRt02_6));

		// no preamble
		//Synchronization
		f_serverSync2ClientsAndStop({c_prDone, c_tbDone});

		f_cfTwoPtcsDown(v_refRt01_4, v_refRt02_6);

	} // end TC_TRA_4008_01
	
	/*
	 * @desc Testcase function for Router with IPv4 interface
	 *		 This component acts as tunnel endpoint.
 	 * @param p_cfMsg Configuration message for Test Adapter
	*/
	function f_TC_TRA_4008_01_TunnelEndPoint_4 (CfMessage p_cfMsg) 
	runs on Ipv6Node {

		activate(a_tn_nut_4(p_cfMsg.paramsRt01, p_cfMsg.paramsIut));

		//no Preamble
		
		// test body
		f_TP_formatOfIpv4HdrOnTunnelInterface(v_cfMsg_4.paramsRt01, v_cfMsg_4.paramsIut);
		//receive IPv4Packet with tunneled IPv6 EchoReq that IUT forwards to tunnel endpoint
		f_TP_formatOfIpv4HdrOnTunnelInterface(
			p_cfMsg.paramsHs02,
			p_cfMsg.paramsRt01
		);

		// no postamble
	
@@ -6201,26 +6226,78 @@ group rfc4213 {

		f_cfPtcDown_4();

	} //end TC_TRA_4008_01
	} // end f_TC_TRA_4008_01_TunnelEndPoint_4

	/*
	 * @desc Testcase function for Router with IPv6 interface
	 *		 This test component acts as host within IUT's v6 network
 	 * @param p_cfMsg Configuration message for Test Adapter
	*/
	function f_TC_TRA_4008_01_HS02_6 (CfMessage p_cfMsg) 
	runs on Ipv6Node {

		//default
		activate(a_tn_nut ( p_cfMsg, p_cfMsg.paramsHs02, p_cfMsg.paramsIut));

		// preamble
		f_PR_tn_nut(p_cfMsg, e_cleanGla, p_cfMsg.paramsHs02, p_cfMsg.paramsIut);

		//Test body
		//Send IPv6 Echo Request to IPv6  entity which is/is behind the tunnel endpoint
		f_TP_sendIpv6EchoReqToTunnelEndPoint_6(p_cfMsg.paramsHs02, p_cfMsg.paramsRt01);

		//Postamble
		f_PO_tn_nut(p_cfMsg, c_cleanOnlyLla, p_cfMsg.paramsHs02, p_cfMsg.paramsIut);
			
		deactivate;

	} // end f_TC_TRA_4008_01_HS02_6

} // end group TRA_4008_01

group TRA_4020_01 {

	/*
	 * @desc  Test Dont fragment bit in an encapsulating IPv4 header.
	 *        Uses test configuration Trans05.
	 *        Uses test configuration Trans07.
	*/
	testcase TC_TRA_4020_01() runs on Ipv6Node system NodeTestAdapter {
		//Variables
		var CfMessage v_cfMsg_4;
		var FncRetCode v_ret := e_error;
		var Ipv6Node v_refRt01_4, v_refRt02_6;
		var CfMessage v_cfMsgRt01_4, v_cfMsgRt02_6;

		//Configuration
		f_cfTrans05Up(v_cfMsg_4);
		f_cfTrans07Up(v_refRt01_4, v_refRt02_6, v_cfMsgRt01_4, v_cfMsgRt02_6);

		activate(a_tn_nut_4(v_cfMsg_4.paramsRt01, v_cfMsg_4.paramsIut));
		//Start
		v_refRt01_4.start(f_TC_TRA_4020_01_TunnelEndPoint_4(v_cfMsgRt01_4));
		v_refRt02_6.start(f_TC_TRA_4020_01_HS02_6(v_cfMsgRt02_6));

		// no preamble
		//Synchronization
		f_serverSync2ClientsAndStop({c_prDone, c_tbDone});

		f_cfTwoPtcsDown(v_refRt01_4, v_refRt02_6);

	} // end TC_TRA_4020_01
	
	/*
	 * @desc Testcase function for Router with IPv4 interface
	 *		 This component acts as tunnel endpoint.
 	 * @param p_cfMsg Configuration message for Test Adapter
	*/
	function f_TC_TRA_4020_01_TunnelEndPoint_4 (CfMessage p_cfMsg) 
	runs on Ipv6Node {

		activate(a_tn_nut_4(p_cfMsg.paramsRt01, p_cfMsg.paramsIut));

		//no Preamble
		
		// test body
		f_TP_dontFragmentBitWhenStaticTunnelMtu(v_cfMsg_4.paramsRt01, v_cfMsg_4.paramsIut);
		//receive IPv4Packet with tunneled IPv6 EchoReq that IUT forwards to tunnel endpoint
		f_TP_dontFragmentBitOnTunnelInterface(
			p_cfMsg.paramsHs02,
			p_cfMsg.paramsRt01
		);

		// no postamble

@@ -6228,7 +6305,34 @@ group rfc4213 {

		f_cfPtcDown_4();

	} //end TC_TRA_4020_01
	} // end f_TC_TRA_4020_01_TunnelEndPoint_4

	/*
	 * @desc Testcase function for Router with IPv6 interface
	 *		 This test component acts as host within IUT's v6 network
 	 * @param p_cfMsg Configuration message for Test Adapter
	*/
	function f_TC_TRA_4020_01_HS02_6 (CfMessage p_cfMsg) 
	runs on Ipv6Node {

		//default
		activate(a_tn_nut ( p_cfMsg, p_cfMsg.paramsHs02, p_cfMsg.paramsIut));

		// preamble
		f_PR_tn_nut(p_cfMsg, e_cleanGla, p_cfMsg.paramsHs02, p_cfMsg.paramsIut);

		//Test body
		//Send IPv6 Echo Request to IPv6  entity which is/is behind the tunnel endpoint
		f_TP_sendIpv6EchoReqToTunnelEndPoint_6(p_cfMsg.paramsHs02, p_cfMsg.paramsRt01);

		//Postamble
		f_PO_tn_nut(p_cfMsg, c_cleanOnlyLla, p_cfMsg.paramsHs02, p_cfMsg.paramsIut);
			
		deactivate;

	} // end f_TC_TRA_4020_01_HS02_6

} // end group TRA_4020_01

	/*
	 * @desc  Test Encapsulator report ICMPv6 Packet Too Big message using recorded path MTU.
@@ -6242,12 +6346,12 @@ group rfc4213 {
		//Configuration
		f_cfCore02Up_hs02(v_cfMsg_6);
	
		activate(a_tn_nut_4(v_cfMsg_6.paramsRt01, v_cfMsg_6.paramsIut));
		activate(a_tn_nut(v_cfMsg_6, v_cfMsg_6.paramsRt01, v_cfMsg_6.paramsIut));
	
		// no preamble
			
		// test body
		f_encapsulatorVerifiesPacketTooBig(v_cfMsg_6.paramsRt01, v_cfMsg_6.paramsIut);
		f_TP_encapsulatorVerifiesPacketTooBig(v_cfMsg_6.paramsRt01, v_cfMsg_6.paramsIut);
	
		// no postamble
	
@@ -6257,6 +6361,85 @@ group rfc4213 {
	
	} //end TC_TRA_4029_01

group TRA_4038_01 {

	/*
	 * @desc  Test IPv4 fragmentation with encapsulated IPv6 datagram.
	 *        Uses test configuration Trans07.
	*/
	testcase TC_TRA_4038_01() runs on Ipv6Node system NodeTestAdapter {
		//Variables
		var Ipv6Node v_refRt01_4, v_refRt02_6;
		var CfMessage v_cfMsgRt01_4, v_cfMsgRt02_6;

		//Configuration
		f_cfTrans07Up(v_refRt01_4, v_refRt02_6, v_cfMsgRt01_4, v_cfMsgRt02_6);

		//Start
		v_refRt01_4.start(f_TC_TRA_4038_01_TunnelEndPoint_4(v_cfMsgRt01_4));
		v_refRt02_6.start(f_TC_TRA_4038_01_HS02_6(v_cfMsgRt02_6));

		//Synchronization
		f_serverSync2ClientsAndStop({c_prDone, c_tbDone});

		f_cfTwoPtcsDown(v_refRt01_4, v_refRt02_6);

	} // end TC_TRA_4038_01
	
	/*
	 * @desc Testcase function for Router with IPv4 interface
	 *		 This component acts as tunnel endpoint.
 	 * @param p_cfMsg Configuration message for Test Adapter
	*/
	function f_TC_TRA_4038_01_TunnelEndPoint_4 (CfMessage p_cfMsg) 
	runs on Ipv6Node {

		activate(a_tn_nut_4(p_cfMsg.paramsRt01, p_cfMsg.paramsIut));

		//no Preamble
		
		// test body
		//receive IPv4Packet with tunneled IPv6 EchoReq that IUT forwards to tunnel endpoint
		f_TP_checkMoreFragsBitOnTunnelInterface(
			p_cfMsg.paramsHs02,
			p_cfMsg.paramsRt01
		);

		// no postamble

		deactivate;

		f_cfPtcDown_4();

	} // end f_TC_TRA_4038_01_TunnelEndPoint_4

	/*
	 * @desc Testcase function for Router with IPv6 interface
	 *		 This test component acts as host within IUT's v6 network
 	 * @param p_cfMsg Configuration message for Test Adapter
	*/
	function f_TC_TRA_4038_01_HS02_6 (CfMessage p_cfMsg) 
	runs on Ipv6Node {

		//default
		activate(a_tn_nut ( p_cfMsg, p_cfMsg.paramsHs02, p_cfMsg.paramsIut));

		// preamble
		f_PR_tn_nut(p_cfMsg, e_cleanGla, p_cfMsg.paramsHs02, p_cfMsg.paramsIut);

		//Test body
		//Send IPv6 Echo Request to IPv6  entity which is/is behind the tunnel endpoint
		f_TP_sendIpv6EchoReqBiggerThanMtuToTunnelEndPoint_6(p_cfMsg.paramsHs02, p_cfMsg.paramsRt01);

		//Postamble
		f_PO_tn_nut(p_cfMsg, c_cleanOnlyLla, p_cfMsg.paramsHs02, p_cfMsg.paramsIut);
			
		deactivate;

	} // end f_TC_TRA_4038_01_HS02_6

} // end group TRA_4038_01

	/*
	 * @desc  Test removal of IPv4 header after decapsulation of an IPv6 datagram from IPv4 packet.
	 *        Uses test configuration Trans05.
@@ -6338,6 +6521,86 @@ group rfc4213 {
	
	} //end TC_TRA_4048_02

group TRA_4063_01 {

	/*
	 * @desc  Test IUT decrements hop limit field of IPv6Packet before forwarding.
	 *        Uses test configuration Trans07.
	*/
	testcase TC_TRA_4063_01() runs on Ipv6Node system NodeTestAdapter {
		//Variables
		var Ipv6Node v_refRt01_4, v_refRt02_6;
		var CfMessage v_cfMsgRt01_4, v_cfMsgRt02_6;

		//Configuration
		f_cfTrans07Up(v_refRt01_4, v_refRt02_6, v_cfMsgRt01_4, v_cfMsgRt02_6);

		//Start
		v_refRt01_4.start(f_TC_TRA_4063_01_TunnelEndPoint_4(v_cfMsgRt01_4));
		v_refRt02_6.start(f_TC_TRA_4063_01_HS02_6(v_cfMsgRt02_6));

		//Synchronization
		f_serverSync2ClientsAndStop({c_prDone, c_tbDone});

		f_cfTwoPtcsDown(v_refRt01_4, v_refRt02_6);

	} // end TC_TRA_4020_01
	
	/*
	 * @desc Testcase function for Router with IPv4 interface
	 *		 This component acts as tunnel endpoint.
 	 * @param p_cfMsg Configuration message for Test Adapter
	*/
	function f_TC_TRA_4063_01_TunnelEndPoint_4 (CfMessage p_cfMsg) 
	runs on Ipv6Node {

		activate(a_tn_nut_4(p_cfMsg.paramsRt01, p_cfMsg.paramsIut));

		//no Preamble
		
		// test body
		//Ping with Test Node 1
		f_TP_tunneledPingv6_4(
			p_cfMsg.paramsHs02,
			p_cfMsg.paramsIut,
			p_cfMsg.paramsRt01
		);

		// no postamble

		deactivate;

		f_cfPtcDown_4();

	} // end f_TC_TRA_4063_01_TunnelEndPoint_4

	/*
	 * @desc Testcase function for Router with IPv6 interface
	 *		 This test component acts as host within IUT's v6 network
 	 * @param p_cfMsg Configuration message for Test Adapter
	*/
	function f_TC_TRA_4063_01_HS02_6 (CfMessage p_cfMsg) 
	runs on Ipv6Node {

		//default
		activate(a_tn_nut ( p_cfMsg, p_cfMsg.paramsHs02, p_cfMsg.paramsIut));

		// preamble
		f_PR_tn_nut(p_cfMsg, e_cleanGla, p_cfMsg.paramsHs02, p_cfMsg.paramsIut);

		//Test body
		//reply to Ping procedure
		f_TP_decapsulatorDecrementsHopLimit_6(p_cfMsg.paramsHs02, p_cfMsg.paramsRt01);

		//Postamble
		f_PO_tn_nut(p_cfMsg, c_cleanOnlyLla, p_cfMsg.paramsHs02, p_cfMsg.paramsIut);
			
		deactivate;

	} // end f_TC_TRA_4063_01_HS02_6

} // end group TRA_4063_01

	/*
	 * @desc  Test IPv6 packets with an invalid IPv6 source address.
	 *        Uses test configuration Trans05.
+164 −13
Original line number Diff line number Diff line
@@ -1624,11 +1624,11 @@
		var FncRetCode v_ret;
		var Ipv4Packet v_receivedIpv4Packet;
		
		v_ret :=  f_ipv4withTunneledIpv6EchoProcUp(
			p_paramsTn.ipv4Addr,
		v_ret :=  f_receiveIpv4withTunneledIpv6EchoReq(
			p_paramsIut.ipv4Addr,	
			p_paramsTn.gla,
			p_paramsTn.ipv4Addr,
			p_paramsIut.gla,
			p_paramsTn.gla,
			v_receivedIpv4Packet
		);

@@ -1648,11 +1648,11 @@
	}//end f_TP_formatOfIpv4HdrOnTunnelInterface

	/*
	 * @desc 	RFC4213 - Check for dont fragment bit when ststic tunnel MTU size is configured.
	 * @desc 	RFC4213 - Check for dont fragment bit when static tunnel MTU size is configured.
	 * @param	p_paramsTn Address Information of Testing Node (6to4Router)
	 * @param	p_paramsIut Address Information of IUT
	*/	
	function f_TP_dontFragmentBitWhenStaticTunnelMtu(
	function f_TP_dontFragmentBitOnTunnelInterface(
		template Ipv6NodeParams p_paramsTn,
		template Ipv6NodeParams p_paramsIut
	)
@@ -1661,7 +1661,7 @@
		var FncRetCode v_ret;
		var Ipv4Packet v_receivedIpv4Packet;
		
		v_ret :=  f_ipv4withTunneledIpv6EchoProcUp(
		v_ret :=  f_receiveIpv4withTunneledIpv6EchoReq(
			p_paramsTn.ipv4Addr,
			p_paramsIut.ipv4Addr,
			p_paramsTn.gla,
@@ -1671,16 +1671,16 @@

		if (v_ret == e_success
			and v_receivedIpv4Packet.ipv4Hdr.doNotFragFlag == c_doNotFragFlag0) {
			log("**** f_TP_dontFragmentBitWhenStaticTunnelMtu: IUT sent IPv4Packet containing 'dont fragment bit' set to 0. ****");
			log("**** f_TP_dontFragmentBitOnTunnelInterface: IUT sent IPv4Packet containing 'dont fragment bit' set to 0. ****");
		}
		else {
			log("**** f_TP_dontFragmentBitWhenStaticTunnelMtu: ERROR: IUT sent IPv4Packet containing 'dont fragment bit' set to 1 ! ****");
			log("**** f_TP_dontFragmentBitOnTunnelInterface: ERROR: IUT sent IPv4Packet containing 'dont fragment bit' set to 1 ! ****");
			v_ret := e_error;
		}
	
		f_selfOrClientSyncAndVerdict(c_tbDone, v_ret);
		
	}//end f_TP_dontFragmentBitWhenStaticTunnelMtu
	}//end f_TP_dontFragmentBitOnTunnelInterface

	/*
	 * @desc 	RFC4213 - Check decapsulation.
@@ -2024,7 +2024,7 @@
	 * @param	p_paramsTn Address Information of Testing Node
	 * @param	p_paramsIut Address Information of IUT
	*/	
	function f_encapsulatorVerifiesPacketTooBig(
	function f_TP_encapsulatorVerifiesPacketTooBig(
		in template Ipv6NodeParams p_paramsTn,
		in template Ipv6NodeParams p_paramsIut
	)
@@ -2045,16 +2045,167 @@
				c_icmpCode0 ) );

		if (v_ret == e_success) {
			log("**** f_encapsulatorVerifiesPacketTooBig: IUT sent ICMPv6 packet too big error message.  ****");		
			log("**** f_TP_encapsulatorVerifiesPacketTooBig: IUT sent ICMPv6 packet too big error message.  ****");		
		}
		else {
			log("**** f_TP_encapsulatorVerifiesPacketTooBig: ERROR: IUT did not send ICMPv6 packet too big error message. ****");
			v_ret := e_error;
		}

		f_selfOrClientSyncAndVerdict(c_tbDone, v_ret);

	} // end f_TP_encapsulatorVerifiesPacketTooBig

	/*
	 * @desc 	Test node 2 is within the IUTs v6 domain (netB) and pings IPv6 native address of Test Node 1 via the RFC4213-IUT.
	 *			Test node 1 is the tunnel endpoint (netA).
	 * @param	p_paramsTn2 Address Information of Test Node 2 (PTC2)
	 * @param	p_paramsTn1 Address Information of Test Node 1 (PTC1)
	*/
	function f_TP_sendIpv6EchoReqToTunnelEndPoint_6(
		template Ipv6NodeParams p_paramsTn2,
		template Ipv6NodeParams p_paramsTn1
	)
	runs on Ipv6Node {

		var FncRetCode v_ret;
		var EchoReply v_echoReply;
		
		//send ERq
		v_ret := f_sendPacketNoFragmentationHeader_6 (
			p_paramsTn2.gla,
			p_paramsTn1.gla
		) ;

		f_selfOrClientSyncAndVerdict(c_tbDone, v_ret);

	}//end f_TP_sendIpv6EchoReqToTunnelEndPoint_6

	/*
	 * @desc 	Test node 2 is within the IUTs v6 domain (netB) and pings IPv6 native address of Test Node 1.
	 *			Test node 1 is the tunnel endpoint (netA).
	 * @param	p_paramsTn2 Address Information of Test Node 2 (PTC2)
	 * @param	p_paramsTn1 Address Information of Test Node 1 (PTC1)
	*/
	function f_TP_sendIpv6EchoReqBiggerThanMtuToTunnelEndPoint_6(
		template Ipv6NodeParams p_paramsTn2,
		template Ipv6NodeParams p_paramsTn1
	)
	runs on Ipv6Node {

		var FncRetCode v_ret;
		
		v_ret := f_sendEchoRequest ( 
					m_echoRequest_noExtHdr_data (
						p_paramsTn2.gla,
						p_paramsTn1.gla,
						c_defId,
						c_defSeqNo,
						c_1280ZeroBytes ) );

		f_selfOrClientSyncAndVerdict(c_tbDone, v_ret);

	}//end f_TP_sendIpv6EchoReqBiggerThanMtuToTunnelEndPoint_6

	/*
	 * @desc 	RFC4213 - Test IPv4 fragmentation with encapsulated IPv6 datagram.
	 * @param	p_paramsTn Address Information of Testing Node (6to4Router)
	 * @param	p_paramsIut Address Information of IUT
	*/	
	function f_TP_checkMoreFragsBitOnTunnelInterface(
		template Ipv6NodeParams p_paramsTn,
		template Ipv6NodeParams p_paramsIut
	)
	runs on Ipv6Node {
		
		var FncRetCode v_ret;
		var Ipv4Packet v_receivedIpv4Packet;
		
		v_ret :=  f_receiveIpv4withTunneledIpv6EchoReq(
			p_paramsTn.ipv4Addr,
			p_paramsIut.ipv4Addr,
			p_paramsTn.gla,
			p_paramsIut.gla,
			v_receivedIpv4Packet
		);

		if (v_ret == e_success
			and v_receivedIpv4Packet.ipv4Hdr.moreFragsFlag == c_moreFragsFlag1
			and v_receivedIpv4Packet.ipv4Hdr.fragmentOffset != c_uInt13Zero) {
			log("**** f_TP_checkMoreFragsBitOnTunnelInterface: IUT sent IPv4Packet containing 'more fragments bit' set to 1. ****");
		}
		else {
			log("**** f_TP_checkMoreFragsBitOnTunnelInterface: ERROR: IUT did not send IPv4Packet containing 'more fragments bit' set to 1 ! ****");
			v_ret := e_error;
		}
	
		f_selfOrClientSyncAndVerdict(c_tbDone, v_ret);
		
	}//end f_TP_checkMoreFragsBitOnTunnelInterface

	/*
	 * @desc 	Test node 2 is within the IUTs v6 domain (netB) and receives Echo Request from Test Node 1 via RFC4213-IUT.
	 *			Test node 1 is the tunnel endpoint (netA).
	 * @param	p_paramsTn2 Address Information of Test Node 2 (PTC2)
	 * @param	p_paramsTn1 Address Information of Test Node 1 (PTC1)
	*/
	function f_TP_decapsulatorDecrementsHopLimit_6(
		template Ipv6NodeParams p_paramsTn2,
		template Ipv6NodeParams p_paramsTn1
	)
	runs on Ipv6Node {

		var FncRetCode v_ret;
		var EchoRequest v_receivedEchoRequest;
		
		//receive ERq
		v_ret := f_receiveEchoRequest (
			mw_echoRequest (
			    p_paramsTn2.gla,
			    p_paramsTn1.gla
			),
			v_receivedEchoRequest
		) ;

		if (v_ret == e_success
			and v_receivedEchoRequest.ipv6Hdr.hopLimit == c_hopLimit255 - 1 ) {
			log("**** f_TP_decapsulatorDecrementsHopLimit_6: IUT decremented Hop Limit correctly. ****");
		}
		else {
			log("**** f_encapsulatorVerifiesPacketTooBig: ERROR: IUT did not send ICMPv6 packet too big error message. ****");
			log("**** f_TP_decapsulatorDecrementsHopLimit_6: ERROR: IUT did not decremented Hop Limit correctly. ****");
			v_ret := e_error;
		}

		f_selfOrClientSyncAndVerdict(c_tbDone, v_ret);

	} // end f_encapsulatorVerifiesPacketTooBig
	}//end f_TP_decapsulatorDecrementsHopLimit_6

	/*
	* @desc  Ping on tunnel interface
	* @param p_paramsTn Address Information of Testing Node (6to4Router)
	* @param p_paramsIut Address Information of IUT
	*/ 
	function f_TP_tunneledPingv6_4(
		template Ipv6NodeParams p_paramsTn2,
		template Ipv6NodeParams p_paramsIut,
		template Ipv6NodeParams p_paramsTn1
	)
	runs on Ipv6Node {

		var FncRetCode v_ret;
		var Ipv4Packet v_receivedIpv4Packet;

		v_ret :=  f_ipv4withTunneledIpv6EchoProcUp(
			p_paramsTn2.ipv4Addr,
			p_paramsIut.ipv4Addr,
			p_paramsTn2.gla,
			p_paramsTn1.gla,
			v_receivedIpv4Packet
		);

		f_selfOrClientSyncAndVerdict(c_tbDone, v_ret);

	}//end f_TP_ipv6PrefixAllocation

	
} // end module AtsIpv6_Transitioning_Tp_Functions