Commit aadf7b13 authored by mullers's avatar mullers
Browse files

merge with localCopy from DT

parent 7eb46f65
Loading
Loading
Loading
Loading
+1253 −1250
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ module LibIpv6_Rfc3775Mipv6_Functions {
	import from LibIpv6_Interface_TypesAndValues all ;
	import from LibIpv6_Interface_Templates all;
	import from LibIpv6_Interface_Functions all;
	import from LibIpv6_Interface_Functions all;
	import from LibIpv6_CommonRfcs_TypesAndValues all;
	import from LibIpv6_CommonRfcs_Templates all;
	import from LibIpv6_CommonRfcs_Functions all;
@@ -32,9 +31,6 @@ module LibIpv6_Rfc3775Mipv6_Functions {
	import from LibIpv6_Rfc2463Icmpv6_TypesAndValues all;
	import from LibIpv6_Rfc3775Mipv6_TypesAndValues all;
	import from LibIpv6_Rfc3775Mipv6_Templates all;
	import from LibIpv6_Interface_TypesAndValues all;
	import from LibIpv6_Interface_Templates all;
	import from LibIpv6_Interface_Functions all;
	//AtsIpv6
	import from AtsIpv6_TestSystem all;
	import from AtsIpv6_TestConfiguration_TypesAndValues all;
@@ -106,7 +102,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
		var FncRetCode v_ret;
		var NeighborSolicitation v_nbrSol;
			
		v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr(c_mipHdr,
		v_ret := f_sendBU(m_generalIpv6_extHdr(c_mipHdr,
														p_mnHoaTn,
														p_haGlaNut,
														m_extHdrList_1Elem(
@@ -174,7 +170,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
	return FncRetCode {
		var FncRetCode v_ret;
	
		v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr(c_dstHdr,
		v_ret := f_sendBU(m_generalIpv6_extHdr(c_dstHdr,
														p_mnCoaTn,
														p_haGlaNut,
														m_extHdrList_2Elem(
@@ -242,9 +238,10 @@ module LibIpv6_Rfc3775Mipv6_Functions {
		var Ipv6Packet v_ipv6Packet;
		var ExtensionHeader v_extHdr_espHeader;


		// Build espPayloadData
		var PlaintextData v_plaintextData := valueof(
				m_plaintextData(
		var EspIpDatagram v_espIpDatagram := valueof(
				m_espIpDatagram(
					m_extHdrList_1Elem(
						m_extHdr_mipHeader (
							c_noNextHdr,
@@ -261,23 +258,28 @@ module LibIpv6_Rfc3775Mipv6_Functions {
									m_mipOpt_altCoa(m_altCoA(p_mnCoaTn)))))),
					omit) );

		v_ret := f_buildEspExtHdr( 	vc_sad[0],
									v_plaintextData,
									v_extHdr_espHeader);
		if ( v_ret != e_success ) {return v_ret;}
//		v_ret := f_buildEspExtHdr( 	vc_sad[0],
//									v_plaintextData,
//									v_extHdr_espHeader);
//		if ( v_ret != e_success ) {return v_ret;}

		v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr(c_dstHdr,
		v_ret := f_sendBU(m_generalIpv6_extHdr(c_dstHdr,
														p_mnCoaTn,
														p_haGlaNut,
														m_extHdrList_2Elem(
															m_extHdr_dstOptHeader(	c_espHdr,
															m_extHdr_dstOptHeader(	
																c_espHdr,
																c_optLen2,
																m_dstOptList_2Elem(
																	m_dstOpt_padN(m_optPad4),
																	m_dstOpt_homeAddr(p_mnHoaTn))),
															v_extHdr_espHeader)));
															m_extHdr_espHeader(
																vc_sad[0].spi,
																vc_sad[0].seqNr,
																v_espIpDatagram,
																c_mipHdr))));
	
		if ( v_ret != e_success ) {return v_ret;}
/*		if ( v_ret != e_success ) {return v_ret;}
		tc_ac.start;
		alt {
			//the test adapter process consists of decrypt and integrity check
@@ -328,7 +330,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
					log("**** f_sendBindUpAndWaitForBindAckOffHome_espTunnelMode: ERROR: tc_ac.timeout **** ");
				}		
		} // end alt

*/
		return v_ret;

	}//end f_sendBindUpAndWaitForBindAckOffHome_espTransportMode
@@ -442,6 +444,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
				//							c_bindingAck,
				//							mw_bindingAck(p_seqNr))),
				//			v_decryptedEspHeaderData.espPayloadData) ;
				//Check concept: encode (message), then compare with received octetstring
					
					tc_ac.stop;	
					v_ret := e_success ;
@@ -504,7 +507,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
	return FncRetCode {
		var FncRetCode v_ret;
	
		v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr(c_dstHdr,
		v_ret := f_sendBU(m_generalIpv6_extHdr(c_dstHdr,
														p_mnCoaTn,
														p_haGlaNut,
														m_extHdrList_2Elem(
@@ -653,16 +656,16 @@ module LibIpv6_Rfc3775Mipv6_Functions {
										m_mipOpt_padN(m_optPad2),
										m_mipOpt_altCoa(mw_altCoA_any))))))) -> value v_ipv6Packet {
					//Get SeqNr
					v_seqNr := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdate.sequenceNumber;
					v_seqNr := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdateMsg.sequenceNumber;
					//Get Lifetime
					v_lifetime := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdate.lifeTime;
					v_lifetime := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdateMsg.lifeTime;
					//Get CareOfAddress
					v_mnCareOfAddr := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdate.mipOptions[1].mipOptAltCoA.alternateCoA;
					v_mnCareOfAddr := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdateMsg.mipOptions[1].mipOptAltCoA.alternateCoA;
					//GetHomeAddress
					v_mnHomeAddr := v_ipv6Packet.extHdrList[0].destinationOptionHeader.destOptionList[1].homeAddressOption.homeAddress;
					v_ret := e_success;

					v_ret := f_sendGeneralIpv6 (
					v_ret := f_sendBA (
						m_generalIpv6_extHdr (
							c_routeHdr,
							p_paramsRt.haGlas[0],
@@ -706,16 +709,16 @@ module LibIpv6_Rfc3775Mipv6_Functions {
										m_mipOptList_1Elem(
											m_mipOpt_padN(m_optPad4))))))) -> value v_ipv6Packet {
					//Get SeqNr
					v_seqNr := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdate.sequenceNumber;
					v_seqNr := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdateMsg.sequenceNumber;
					//Get Lifetime
					v_lifetime := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdate.lifeTime;
					v_lifetime := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdateMsg.lifeTime;
					//Get CareOfAddress
					v_mnCareOfAddr := v_ipv6Packet.ipv6Hdr.sourceAddress;
					//GetHomeAddress
					v_mnHomeAddr := v_ipv6Packet.extHdrList[0].destinationOptionHeader.destOptionList[1].homeAddressOption.homeAddress;
					v_ret := e_success;

					v_ret := f_sendGeneralIpv6 (
					v_ret := f_sendBA (
						m_generalIpv6_extHdr (
							c_routeHdr,
							p_paramsRt.haGlas[0],
@@ -823,7 +826,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
												m_extHdrList_1Elem( mw_extHdr_mipHeader (	c_noNextHdr,
																							c_homeTestInit,
																							mw_hoti)))) -> value v_ipv6Packet {
					vc_mipSec.cnSimuParams.receivedHomeInitCookie := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.homeTestInit.homeInitCookie;
					vc_mipSec.cnSimuParams.receivedHomeInitCookie := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.homeTestInitMsg.homeInitCookie;
					vc_mipSec.cnSimuParams.homeKeygenToken := f_createHomeKeygenToken(	
																	vc_mipSec.cnSimuParams.kcnList[vc_mipSec.cnSimuParams.nonceIndex],
																	valueof(p_mnHoa),
@@ -838,7 +841,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
				}		
		} // end alt

		v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr (c_mipHdr,
		v_ret := f_sendHot(m_generalIpv6_extHdr (c_mipHdr,
											p_cnGla,
											p_mnHoa,
											m_extHdrList_1Elem( m_extHdr_mipHeader (	c_noNextHdr,
@@ -926,7 +929,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
		var FncRetCode v_ret;
		var Ipv6Packet v_ipv6Packet;

		v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr (
		v_ret := f_sendHoti(m_generalIpv6_extHdr (
										c_tunneledIpHdr,
										p_mnCoa, //TODO, it should be the home address
										p_haGlaNut,
@@ -948,10 +951,10 @@ module LibIpv6_Rfc3775Mipv6_Functions {
																	c_homeTest,
																	mw_hot)))) -> value v_ipv6Packet {
					tc_ac.stop;
					if (v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.homeTest.homeInitCookie
					if (v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.homeTestMsg.homeInitCookie
						== vc_mipSec.mnSimuParams.homeInitCookie) {
						vc_mipSec.mnSimuParams.receivedHomeNonceIndex := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.homeTest.homeNonceIndex;
						vc_mipSec.mnSimuParams.receivedHomeKeygenToken := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.homeTest.homeKeygenToken;
						vc_mipSec.mnSimuParams.receivedHomeNonceIndex := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.homeTestMsg.homeNonceIndex;
						vc_mipSec.mnSimuParams.receivedHomeKeygenToken := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.homeTestMsg.homeKeygenToken;
					}
					else {
						v_ret :=  e_error;
@@ -981,7 +984,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
		var FncRetCode v_ret;
		var Ipv6Packet v_ipv6Packet;

		v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr (
		v_ret := f_sendHoti(m_generalIpv6_extHdr (
										c_mipHdr,
										p_mnHoa,
										p_cnGla,
@@ -1001,10 +1004,10 @@ module LibIpv6_Rfc3775Mipv6_Functions {
																	c_homeTest,
																	mw_hot)))) -> value v_ipv6Packet {
					tc_ac.stop;
					if (v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.homeTest.homeInitCookie
					if (v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.homeTestMsg.homeInitCookie
						== vc_mipSec.mnSimuParams.homeInitCookie) {
						vc_mipSec.mnSimuParams.receivedHomeNonceIndex := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.homeTest.homeNonceIndex;
						vc_mipSec.mnSimuParams.receivedHomeKeygenToken := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.homeTest.homeKeygenToken;
						vc_mipSec.mnSimuParams.receivedHomeNonceIndex := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.homeTestMsg.homeNonceIndex;
						vc_mipSec.mnSimuParams.receivedHomeKeygenToken := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.homeTestMsg.homeKeygenToken;
					}
					else {
						v_ret :=  e_error;
@@ -1040,7 +1043,7 @@ module LibIpv6_Rfc3775Mipv6_Functions {
		var FncRetCode v_ret;
		var Ipv6Packet v_ipv6Packet;

		v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr (
		v_ret := f_sendCoti(m_generalIpv6_extHdr (
										c_mipHdr,
										p_mnCoa,
										p_cnGla,
@@ -1060,10 +1063,10 @@ module LibIpv6_Rfc3775Mipv6_Functions {
																	c_careOfTest,
																	mw_cot)))) -> value v_ipv6Packet {
					tc_ac.stop;
					if (v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.careOfTest.careOfInitCookie
					if (v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.careOfTestMsg.careOfInitCookie
						== vc_mipSec.mnSimuParams.careOfInitCookie) {
						vc_mipSec.mnSimuParams.receivedCareOfNonceIndex := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.careOfTest.careOfNonceIndex;
						vc_mipSec.mnSimuParams.receivedCareOfKeygenToken := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.careOfTest.careOfKeygenToken;
						vc_mipSec.mnSimuParams.receivedCareOfNonceIndex := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.careOfTestMsg.careOfNonceIndex;
						vc_mipSec.mnSimuParams.receivedCareOfKeygenToken := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.careOfTestMsg.careOfKeygenToken;
					}
					else {
						v_ret :=  e_error;
@@ -1746,14 +1749,14 @@ module LibIpv6_Rfc3775Mipv6_Functions {
																							m_mipOpt_padN(m_optPad2),
																							m_mipOpt_altCoa(mw_altCoA_any))))))) -> value v_ipv6Packet {
				//Get SeqNr
				v_seqNr := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.bindingUpdate.sequenceNumber;
				v_seqNr := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.bindingUpdateMsg.sequenceNumber;
				//Get Lifetime
				v_lifetime := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.bindingUpdate.lifeTime;
				v_lifetime := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.bindingUpdateMsg.lifeTime;
				//Get HomeAddress
				v_mnHomeAddr := v_ipv6Packet.ipv6Hdr.sourceAddress;
				//TODO SMU read v_mnCareOfAddr from MipOptions
				v_ret := e_success ;
				v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr(	c_mipHdr,
				v_ret := f_sendBA(m_generalIpv6_extHdr(	c_mipHdr,
																	p_paramsTn.haGlas[0],//p_haGlaTn,
																	v_mnHomeAddr,
																	m_extHdrList_1Elem(
@@ -1780,13 +1783,13 @@ module LibIpv6_Rfc3775Mipv6_Functions {
																						m_mipOptList_1Elem(
																							m_mipOpt_padN(m_optPad4))))))) -> value v_ipv6Packet {
				//Get SeqNr
				v_seqNr := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.bindingUpdate.sequenceNumber;
				v_seqNr := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.bindingUpdateMsg.sequenceNumber;
				//Get Lifetime
				v_lifetime := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.bindingUpdate.lifeTime;
				v_lifetime := v_ipv6Packet.extHdrList[0].mipHeader.mipMessage.bindingUpdateMsg.lifeTime;
				//Get HomeAddress
				v_mnHomeAddr := v_ipv6Packet.ipv6Hdr.sourceAddress;
				v_ret := e_success ;
				v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr(	c_mipHdr,
				v_ret := f_sendBA(m_generalIpv6_extHdr(	c_mipHdr,
																	p_paramsTn.haGlas[0],//p_haGlaTn,
																	v_mnHomeAddr,
																	m_extHdrList_1Elem(
@@ -1858,17 +1861,17 @@ module LibIpv6_Rfc3775Mipv6_Functions {
															m_mipOpt_padN(m_optPad2),
															m_mipOpt_altCoa(mw_altCoA_any))))))) -> value v_ipv6Packet {
				//Get SeqNr
				v_seqNr := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdate.sequenceNumber;
				v_seqNr := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdateMsg.sequenceNumber;
				//Get Lifetime
				v_lifetime := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdate.lifeTime;
				v_lifetime := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdateMsg.lifeTime;
				//Get CareOfAddress
				//mnCareOfAddr1 := v_ipv6Packet.ipv6Hdr.sourceAddress;
				v_mnCareOfAddr1 := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdate.mipOptions[1].mipOptAltCoA.alternateCoA;
				v_mnCareOfAddr1 := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdateMsg.mipOptions[1].mipOptAltCoA.alternateCoA;
				//TODO SMU read v_mnCareOfAddr from MipOptions
				//GetHomeAddress
				v_mnHomeAddr := v_ipv6Packet.extHdrList[0].destinationOptionHeader.destOptionList[1].homeAddressOption.homeAddress;
				v_ret := e_success ;
				v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr(	c_routeHdr,
				v_ret := f_sendBA(m_generalIpv6_extHdr(	c_routeHdr,
																	p_paramsTn.haGlas[0],//p_haGlaTn,
																	v_mnCareOfAddr1,
																	m_extHdrList_2Elem(
@@ -1909,15 +1912,15 @@ module LibIpv6_Rfc3775Mipv6_Functions {
														m_mipOptList_1Elem(
															m_mipOpt_padN(m_optPad4))))))) -> value v_ipv6Packet {
				//Get SeqNr
				v_seqNr := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdate.sequenceNumber;
				v_seqNr := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdateMsg.sequenceNumber;
				//Get Lifetime
				v_lifetime := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdate.lifeTime;
				v_lifetime := v_ipv6Packet.extHdrList[1].mipHeader.mipMessage.bindingUpdateMsg.lifeTime;
				//Get CareOfAddress
				v_mnCareOfAddr1 := v_ipv6Packet.ipv6Hdr.sourceAddress;
				//GetHomeAddress
				v_mnHomeAddr := v_ipv6Packet.extHdrList[0].destinationOptionHeader.destOptionList[1].homeAddressOption.homeAddress;
				v_ret := e_success ;
				v_ret := f_sendGeneralIpv6(m_generalIpv6_extHdr(	
				v_ret := f_sendBA(m_generalIpv6_extHdr(	
														c_routeHdr,
														p_paramsTn.haGlas[0],//p_haGlaTn,
														v_mnCareOfAddr1,
+14 −10
Original line number Diff line number Diff line
@@ -62,7 +62,8 @@
			UInt16			reserved
		}
		with {
			encode "isPDU=LibIpv6_Rfc3775MIPv6_TypesAndValues;use=com.testingtech.ttcn.tci.codec.helper.*;present=SupportFunctions.checkHeaderAndType(dec, 58, 144)";
//			encode "isPDU=LibIpv6_Rfc3775MIPv6_TypesAndValues;use=com.testingtech.ttcn.tci.codec.helper.*;present=SupportFunctions.checkHeaderAndType(dec, 58, 144)";
			variant "present=bytes(1,144)&&(valueOf(getTag('nextHeader'))==58)";
		}
		
		/*
@@ -79,8 +80,8 @@
			Ipv6AddressList	homeAgentAddresses optional
		}
		with {
			//TODO DTE
			encode "isPDU=LibIpv6_Rfc3775MIPv6_TypesAndValues;use=com.testingtech.ttcn.tci.codec.helper.*;present=SupportFunctions.checkHeaderAndType(dec, 58, 145)";
//			variant "isPDU=LibIpv6_Rfc3775MIPv6_TypesAndValues;use=com.testingtech.ttcn.tci.codec.helper.*;present=SupportFunctions.checkHeaderAndType(dec, 58, 145)";
			variant "present=bytes(1,145)&&(valueOf(getTag('nextHeader'))==58)";
		}

		/*
@@ -96,8 +97,8 @@
			UInt16			reserved
		}
		with {
			//TODO DTE
			encode "isPDU=LibIpv6_Rfc3775MIPv6_TypesAndValues;use=com.testingtech.ttcn.tci.codec.helper.*;present=SupportFunctions.checkHeaderAndType(dec, 58, 146)";
//			variant "isPDU=LibIpv6_Rfc3775MIPv6_TypesAndValues;use=com.testingtech.ttcn.tci.codec.helper.*;present=SupportFunctions.checkHeaderAndType(dec, 58, 146)";
			variant "present=bytes(1,146)&&(valueOf(getTag('nextHeader'))==58)";
		}
		
		/*
@@ -118,8 +119,8 @@
			MipPrefixInfoList	mipPrefixInfoList
		}
		with {
			//TODO DTE
			encode "isPDU=LibIpv6_Rfc3775MIPv6_TypesAndValues;use=com.testingtech.ttcn.tci.codec.helper.*;present=SupportFunctions.checkHeaderAndType(dec, 58, 147)";
//			variant "isPDU=LibIpv6_Rfc3775MIPv6_TypesAndValues;use=com.testingtech.ttcn.tci.codec.helper.*;present=SupportFunctions.checkHeaderAndType(dec, 58, 147)";
			variant "present=bytes(1,147)&&(valueOf(getTag('nextHeader'))==58)";
		}

		/*
@@ -145,8 +146,8 @@
			MipRtAdvOptions	mipRtAdvOptions optional
		}
		with {
			//TODO DTE
			encode "isPDU=LibIpv6_Rfc3775MIPv6_TypesAndValues;use=com.testingtech.ttcn.tci.codec.helper.*;present=SupportFunctions.checkHeaderAndType(dec, 58, 134)";
//			variant "isPDU=LibIpv6_Rfc3775MIPv6_TypesAndValues;use=com.testingtech.ttcn.tci.codec.helper.*;present=SupportFunctions.checkHeaderAndType(dec, 58, 134)";
			variant "present=bytes(1,134)&&(valueOf(getTag('nextHeader'))==58)";
		}

		/*
@@ -167,7 +168,7 @@

		type set length (1..c_maxNrMipPrefixInfo) of MipPrefixInfo MipPrefixInfoList
		with {
			encode "present=bytes(1, 0x03);elements=valueOf(getTag('hdrExtLen'));"
			variant "present=bytes(1, 0x03);elements=valueOf(getTag('hdrExtLen'));"
		}	

		/*
@@ -188,6 +189,9 @@
			UInt32		reserved2,
			Ipv6Address	addrPrefix
		}
		with {
			variant "present=bytes(1, 0x03)"
		}	

		

+0 −4
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ module LibIpv6_Rfc4068FastHandovers_Functions {
	import from LibIpv6_Interface_TypesAndValues all ;
	import from LibIpv6_Interface_Templates all;
	import from LibIpv6_Interface_Functions all;
	import from LibIpv6_Interface_Functions all;
	import from LibIpv6_CommonRfcs_TypesAndValues all;
	import from LibIpv6_CommonRfcs_Templates all;
	import from LibIpv6_CommonRfcs_Functions all;
@@ -34,9 +33,6 @@ module LibIpv6_Rfc4068FastHandovers_Functions {
	import from LibIpv6_Rfc3775Mipv6_Templates all;
	import from LibIpv6_Rfc4068FastHandovers_TypesAndValues all;
	import from LibIpv6_Rfc4068FastHandovers_Templates all;
	import from LibIpv6_Interface_TypesAndValues all;
	import from LibIpv6_Interface_Templates all;
	import from LibIpv6_Interface_Functions all;
	//AtsIpv6
	import from AtsIpv6_TestSystem all;
	import from AtsIpv6_TestConfiguration_TypesAndValues all;
+36 −16
Original line number Diff line number Diff line
@@ -81,10 +81,9 @@
			UInt16			identifier,
			FHRtSolPrOptions	fHRtSolPrOptions optional
		}
//TODO
//		with {
//			encode "";
//		}
		with {
			variant "present=bytes(1, 150)&&bytes(4,1,2)";
		}
		
		/*
		 * @desc	Possible options in RouterSolicitationForProxyRtAdvMsg
@@ -108,10 +107,10 @@
			UInt16			identifier,
			FHPrRtAdvOptions	fHPrRtAdvOptions optional
		}
//TODO
//		with {
//			encode "";
//		}
		with {
			variant "present=bytes(1, 150)&&bytes(4,1,3)";
			variant (icmpCode) "intTag='ProxyRouterAdvertisement_icmpCode'";
		}
		
		/*
		 * @desc	Possible options in ProxyRouterAdvertisementMsg
@@ -126,6 +125,10 @@
			NewRouterPrefixInfo			fHNewRouterPrefixInfo optional,
			IpAddress					fHNewCareOfAddress optional
		}
		with  {
			variant (fHNewRouterLinkLayerAddress) "present=(getIntTag('ProxyRouterAdvertisement_icmpCode')==0)||(getIntTag('ProxyRouterAdvertisement_icmpCode')==1)";
			variant (fHNewRouterIpAddress) "present=(getIntTag('ProxyRouterAdvertisement_icmpCode')==0)||(getIntTag('ProxyRouterAdvertisement_icmpCode')==1)";
		}

		/*
		 * @desc Derived from RFC4068, clause 6.2.1
@@ -141,10 +144,10 @@
			UInt16			identifier,
			FHHoInitOptions	fHHoInitOptions optional
		}
//TODO
//		with {
//			encode "";
//		}
		with {
			variant "present=bytes(1, 150)&&bytes(4,1,4)";
			variant (icmpCode) "intTag='HandoverInitiate_icmpCode'";
		}
		
		/*
		 * @desc	Possible options in HandoverInitiateMsg
@@ -155,6 +158,10 @@
			IpAddress				fHPreviousCareOfAddress optional,
			IpAddress				fHNewCareOfAddress optional
		}
		with  {
			variant (fHPreviousCareOfAddress) "present=getIntTag('HandoverInitiate_icmpCode')==0";
			variant (fHNewCareOfAddress) "present=getIntTag('HandoverInitiate_icmpCode')==1";
		}

		/*
		 * @desc Derived from RFC4068, clause 6.1.2
@@ -168,10 +175,9 @@
			UInt16			identifier,
			FHHoAckOptions	fHHoAckOptions optional
		}
//TODO
//		with {
//			encode "";
//		}
		with {
			variant "present=bytes(1, 150)&&bytes(4,1,5)";
		}
		
		/*
		 * @desc	Possible options in HandoverAcknowledgeMsg
@@ -196,6 +202,9 @@
			UInt32		reserved,
			Ipv6Address	ipv6Address
		}
		with {
			variant "present=bytes(1,17)";
		}

		/*
		 * @desc   Derived from RFC4068, clause 6.4.2
@@ -208,6 +217,9 @@
			UInt32		reserved,
			Ipv6Address	addrPrefix
		}
		with {
			variant "present=bytes(1,18)";
		}

		/*
		 * @desc   Derived from RFC4068, clause 6.4.3
@@ -218,6 +230,11 @@
			UInt8		optionCode,
			Oct6to15	linkLayerAddr
		}
		with {
			variant "present=bytes(1,19)";
			variant (optionLength) "tag='NewLinkLayerAddress_optionLength';";
			variant (data) "length=valueOf(getTag('NewLinkLayerAddress_optionLength'))*8-3;";
		}

		/*
		 * @desc   Derived from RFC4068, clause 6.4.5
@@ -230,6 +247,9 @@
			UInt32		reserved,
			Ipv6Address	newCoA optional
		}
		with {
			variant "present=bytes(1,20)";
		}

	} // end rfc4068HastHandovers_options