Commit 2f057fc6 authored by validator's avatar validator
Browse files

No commit message

No commit message
parent fda488e4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -150,7 +150,7 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions {
		 * @param 	p_prefixLength Router advertisement option prefix length value
		 * @param 	p_glaAddrTn Global address of testing node which calls this function
		*/
		function f_sendRtAdvWithPrefix_time( in template Ipv6Address 	p_llaAddrTn,
		function f_sendRtAdvWithPrefix_lifeTime( in template Ipv6Address 	p_llaAddrTn,
										in template Ipv6Address 	p_dstAddr,
										in template PrefixLength p_prefixLength,
										in template Ipv6Address 	p_glaAddrTn,
+38 −21
Original line number Diff line number Diff line
@@ -133,7 +133,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
		 * @param p_mnHoaTn Mobile Node Home Address of test node
		 * @param p_haGlaNut Home Agent Address of node under test
		*/
		altstep a_receiveBindingUpdateAndReply(in template Ipv6Address p_haGlaTn)
		altstep a_receiveBindingUpdateAndReply(in template Ipv6NodeParams p_paramsTn, in template Ipv6Address p_haGlaTn)
		runs on Ipv6Node {
			//Variables
			var GeneralIpv6 v_generalIpv6 ;
@@ -142,9 +142,24 @@ module LibIpv6_Rfc3775Mipv6_Functions {
			var Ipv6Address v_mnCareOfAddr2 := c_16ZeroBytes;
			var Ipv6Address v_mnHomeAddr := c_16ZeroBytes;
			var FncRetCode v_ret := e_error;
			var Ipv6Address v_receivedTargetAddr := c_16ZeroBytes;
			var NeighborSolicitation v_nbrSol ;
			
			//tc_wait.start;
			//alt {
			[]	ipPort.receive(mw_nbrSol_addressDetermination(PX_SOL_NODE_MCA_IUT_A, ?)) -> value v_nbrSol{
					v_receivedTargetAddr := v_nbrSol.targetAddr ;
					
					f_sendNbrAdv (m_nbrAdv_noExtHdr( 	p_paramsTn.lla,
														c_allNodesMca,
														c_rFlag0,
														c_sFlag1,
														c_oFlag1,
														v_receivedTargetAddr,
														m_nbrAdvOpt_tllaOpt(p_paramsTn.macUca)  )) ;	
					repeat;
				}
		
				//1st alternative : m_optPad2 + Coa
				[]	ipPort.receive(mw_generalIpv6_dst(	c_dstHdr,
															//p_mnCoaTn,
@@ -190,6 +205,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
																						v_seqNr,
																						m_mipOptList_1Elem(
																						m_mipOpt_padN(m_optPad4)))))));
					repeat;
					}
				//2nd alternative : m_optPad4
				[]	ipPort.receive(mw_generalIpv6_dst(	c_dstHdr,
@@ -234,11 +250,12 @@ module LibIpv6_Rfc3775Mipv6_Functions {
																										v_seqNr,
																										m_mipOptList_1Elem(
																										m_mipOpt_padN(m_optPad4)))))));
					repeat;
					}
				[]	tc_wait.timeout{
						v_ret :=  e_timeout;
						log("**** f_receiveBindingUpdateAndReply: ERROR: tc_ac.timeout **** ");
					}		
//				[]	tc_wait.timeout{
//						v_ret :=  e_timeout;
//						log("**** f_receiveBindingUpdateAndReply: ERROR: tc_ac.timeout **** ");
//					}		
			//} // end alt

			//return v_ret;
+36 −3
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
	import from LibIpv6_ModuleParameters all ;
	import from LibIpv6_MultiRfcs_TypesAndValues all;
	import from LibIpv6_MultiRfcs_Templates all;
	import from LibIpv6_Rfc2460Root_TypesAndValues { type all };
	import from LibIpv6_Rfc2460Root_TypesAndValues { type all; const all };
	import from LibIpv6_Rfc2460Root_Templates all;

group extHdrFns {
@@ -47,6 +47,11 @@ group extHdrFns {
									p_dstAddr,
									p_extHdrList[i].mipHeader);	
				}
				else if (f_isPresentRoutingHeaderType2(p_extHdrList, v_homeAddress) == e_success) {
					f_setMipHeader(	p_srcAddr,
									v_homeAddress,									
									p_extHdrList[i].mipHeader);	
				}
				else {
					f_setMipHeader(	p_srcAddr,
									p_dstAddr,
@@ -210,18 +215,19 @@ group extHdrFns {
	 * @desc 	This goes through the ExtensionHeaderList and
	 *			checks if a HomeAddressOption is present.
	 * @param 	p_extHdrList ExtensionHeaderList to be treated
	 * @param 	p_homeAddr Home address of HomeAddressOption
	 * @param 	p_homeAddr Home address
	 * @return 	execution status 
	*/
	function f_isPresentHomeAddressOption(	in ExtensionHeaderList p_extHdrList,
											inout Ipv6Address p_homeAddr)

	runs on LibIpv6Node
	return FncRetCode {
		var FncRetCode v_ret := e_error;
		var UInt8 i,j;

		//select ext hdrs that need special calculation
		for (i:=0; i<sizeof(p_extHdrList);i:=i+1) {
		for (i:=0; i<sizeof(p_extHdrList) and (v_ret != e_success); i:=i+1) {
			if (ischosen(p_extHdrList[i].destinationOptionHeader)) {
				for (j:=0; j<sizeof(p_extHdrList[i].destinationOptionHeader.destOptionList);j:=j+1) {
					if (ischosen(p_extHdrList[i].destinationOptionHeader.destOptionList[j].homeAddressOption)) {
@@ -234,6 +240,33 @@ group extHdrFns {
		return v_ret;
	}//end function f_isPresentHomeAddressOption

	/*
	 * @desc 	This goes through the ExtensionHeaderList and
	 *			checks if a Routing Header type 2 is present.
	 * @param 	p_extHdrList ExtensionHeaderList to be treated
	 * @param 	p_homeAddr Home address
	 * @return 	execution status 
	*/
	function f_isPresentRoutingHeaderType2(	in ExtensionHeaderList p_extHdrList,
											inout Ipv6Address p_homeAddr)

	runs on LibIpv6Node
	return FncRetCode {
		var FncRetCode v_ret := e_error;
		var UInt8 i,j;

		//select ext hdrs that need special calculation
		for (i:=0; i<sizeof(p_extHdrList) and (v_ret != e_success); i:=i+1) {
			if (ischosen(p_extHdrList[i].routingHeader) and (p_extHdrList[i].routingHeader.routingType == c_routeHdrType2)) {
				if (ischosen(p_extHdrList[i].routingHeader.routingHeaderData.rtHdrDataHomeAddress)) {
					p_homeAddr := p_extHdrList[i].routingHeader.routingHeaderData.rtHdrDataHomeAddress;
					v_ret := e_success;
				}
			}
		}
		return v_ret;
	}//end function f_isPresentRoutingHeaderType2
		
}//end group mipHdrFns


+1 −1
Original line number Diff line number Diff line
@@ -321,7 +321,7 @@ module LibIpv6_MultiRfcs_TypesAndValues {
		with {
			encode "present=bytes(0,1,1);";
			encode (optLen) "tag='optLen';intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-value-2";
			encode (padding) "length=valueOf(getTag('optLen'))";
			encode (padding) "length=valueOf(getTag('optLen'));fieldPresent=(valueOf(getTag('optLen'))>0)";
		}
	
		}//end group rfc2460Options