Commit 18ff6e78 authored by seb's avatar seb
Browse files

Cf05 inserted + MN testing added

parent a0c09ae4
Loading
Loading
Loading
Loading
+36 −0
Original line number Original line Diff line number Diff line
@@ -123,6 +123,24 @@
			destinationAddress := p_dst
			destinationAddress := p_dst
		}
		}


		/*
		 *	@param  p_nextHdr Next header identifier value to be used.
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
	    */
		template Ipv6Header mw_ipHdr_nextHdr_dst (	template UInt8 p_nextHdr,
													template Ipv6Address p_dst) := {
			version 		:= c_ipv6Version ,
			trafficClass 	:= ? ,
			flowLabel 		:= ? ,
			payloadLength 	:= ?,
			nextHeader 		:= p_nextHdr,
			hopLimit 		:= ?,
			sourceAddress 	:= ?,
			destinationAddress := p_dst
		}

		/*
		/*
		 *	@param  p_nextHdr Next header identifier value to be used.
		 *	@param  p_nextHdr Next header identifier value to be used.
		 *	@param  p_hopLimit Number of hops to be used.
		 *	@param  p_hopLimit Number of hops to be used.
@@ -524,6 +542,24 @@
			data := *
			data := *
		}
		}


		/*
		 *	@param  p_nextHeader Next header identifier value to be used.
		 *	@param  p_extHdrList List of extension header in the packet.
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *
		*/
		template GeneralIpv6 mw_generalIpv6_dst(
			UInt8 p_nextHeader,
			template Ipv6Address p_dst,
			template ExtensionHeaderList p_extHdrList
		) := {
			ipv6Hdr := mw_ipHdr_nextHdr_dst(p_nextHeader, p_dst),
			extHdrList := p_extHdrList,
			data := *
		}
		
	}//end group ipPacketsWithOnlyExtensionHdrsTemplates
	}//end group ipPacketsWithOnlyExtensionHdrsTemplates


    group ipv6AddressTemplates {
    group ipv6AddressTemplates {
+80 −48
Original line number Original line Diff line number Diff line
@@ -133,69 +133,101 @@ module LibIpv6_Rfc3775Mipv6_Functions {
		 * @param p_mnHoaTn Mobile Node Home Address of test node
		 * @param p_mnHoaTn Mobile Node Home Address of test node
		 * @param p_haGlaNut Home Agent Address of node under test
		 * @param p_haGlaNut Home Agent Address of node under test
		*/
		*/
		function f_receiveBindingUpdateAndReply(	//in template Ipv6Address p_mnCoaTn,
		function f_receiveBindingUpdateAndReply(in template Ipv6Address p_haGlaTn)
													//	in template Ipv6Address p_mnHoaTn,
													//	in template Ipv6Address p_haGlaNut,
													//	in UInt16 p_timeUnits
													)
		runs on Ipv6Node
		runs on Ipv6Node
		return FncRetCode {
		return FncRetCode {
			//Variables
			var GeneralIpv6 v_generalIpv6 ;
			var UInt16 v_seqNr := 0;
			var Ipv6Address v_mnCareOfAddr1 := c_16ZeroBytes;
			var Ipv6Address v_mnCareOfAddr2 := c_16ZeroBytes;
			var Ipv6Address v_mnHomeAddr := c_16ZeroBytes;
			var FncRetCode v_ret := e_error;
			var FncRetCode v_ret := e_error;
			
			
/*			tc_wait.start;
			tc_wait.start;
			alt {
			alt {
				[]	ipPort.receive(mw_generalIpv6_srcDst(c_dstHdr,
				//1st alternative : m_optPad2 + Coa
																p_mnCoaTn,
				[]	ipPort.receive(mw_generalIpv6_dst(	c_dstHdr,
																p_haGlaNut,
															//p_mnCoaTn,
															p_haGlaTn,
															m_extHdrList_2Elem(
															m_extHdrList_2Elem(
																m_extHdr_dstOptHeader(	c_mipHdr,
																m_extHdr_dstOptHeader(	c_mipHdr,
																						c_optLen2,
																						c_optLen2,
																						m_dstOptList_2Elem(
																						m_dstOptList_2Elem(
																							m_dstOpt_padN(m_optPad4),
																							m_dstOpt_padN(m_optPad4),
																								m_dstOpt_homeAddr(p_mnHoaTn))),
																							mw_dstOpt_homeAddr)),
																mw_extHdr_mipHeader (c_noNextHdr,
																mw_extHdr_mipHeader (c_noNextHdr,
																					c_bindingUpdate,
																					c_bindingUpdate,
																					mw_bindingUpdate(c_aFlag1,
																					mw_bindingUpdate(c_aFlag1,
																									c_hFlag1,
																									c_hFlag1,
																									c_lFlag0,
																									c_lFlag0,
																									c_kFlag0,
																									c_kFlag0,
																										p_timeUnits,
																									m_mipOptList_2Elem(
																									m_mipOptList_2Elem(
																										m_mipOpt_padN(m_optPad2),
																										m_mipOpt_padN(m_optPad2),
																											m_mipOpt_altCoa(m_mipOptAltCoA(p_mnCoaTn)))))))) {
																										m_mipOpt_altCoa(mw_mipOptAltCoA))))))) -> value v_generalIpv6 {
						v_seqNr := 
						//Get SeqNr
						v_seqNr := v_generalIpv6.extHdrList[1].mipHeader.mipMessage.bindingUpdate.sequenceNumber;
						//Get CareOfAddress
						v_mnCareOfAddr1 := v_generalIpv6.ipv6Hdr.sourceAddress;
						//TODO read v_mnCareOfAddr2 from MipOptions
						//GetHomeAddress
						v_mnHomeAddr := v_generalIpv6.extHdrList[0].destinationOptionHeader.destOptionList[1].homeAddressOption.homeAddress;
						tc_wait.stop;	
						tc_wait.stop;	
						v_ret := e_success ;
						v_ret := e_success ;
					}
					}
				[]	tc_wait.timeout{
				//2nd alternative : m_optPad4
						v_ret :=  e_timeout;
				[]	ipPort.receive(mw_generalIpv6_dst(	c_dstHdr,
						log("**** f_registerMnToHa: ERROR: tc_ac.timeout **** ");
															//p_mnCoaTn,
					}		
															p_haGlaTn,
			} // end alt

			if ( v_ret == e_success ) {
				v_ret := f_sendGeneralIpv6(m_generalIpv6_srcDst(c_dstHdr,
																p_mnCoaTn,
																p_haGlaNut,
															m_extHdrList_2Elem(
															m_extHdrList_2Elem(
																m_extHdr_dstOptHeader(	c_mipHdr,
																m_extHdr_dstOptHeader(	c_mipHdr,
																						c_optLen2,
																						c_optLen2,
																						m_dstOptList_2Elem(
																						m_dstOptList_2Elem(
																							m_dstOpt_padN(m_optPad4),
																							m_dstOpt_padN(m_optPad4),
																								m_dstOpt_homeAddr(p_mnHoaTn))),
																							mw_dstOpt_homeAddr)),
																	m_extHdr_mipHeader (c_noNextHdr,
																mw_extHdr_mipHeader (c_noNextHdr,
																					c_bindingUpdate,
																					c_bindingUpdate,
																						m_bindingUpdate(c_defSeqNo,
																					mw_bindingUpdate(c_aFlag1,
																										c_aFlag1,
																									c_hFlag1,
																									c_hFlag1,
																									c_lFlag0,
																									c_lFlag0,
																									c_kFlag0,
																									c_kFlag0,
																										p_timeUnits,
																									m_mipOptList_1Elem(
																										m_mipOptList_2Elem(
																										m_mipOpt_padN(m_optPad4))))))) -> value v_generalIpv6 {
																											m_mipOpt_padN(m_optPad2),
						//Get SeqNr
																											m_mipOpt_altCoa(m_mipOptAltCoA(p_mnCoaTn))))))));
						v_seqNr := v_generalIpv6.extHdrList[1].mipHeader.mipMessage.bindingUpdate.sequenceNumber;
						//Get CareOfAddress
						v_mnCareOfAddr1 := v_generalIpv6.ipv6Hdr.sourceAddress;
						//GetHomeAddress
						v_mnHomeAddr := v_generalIpv6.extHdrList[0].destinationOptionHeader.destOptionList[1].homeAddressOption.homeAddress;
						tc_wait.stop;	
						v_ret := e_success ;
					}
				[]	tc_wait.timeout{
						v_ret :=  e_timeout;
						log("**** f_receiveBindingUpdateAndReply: ERROR: tc_ac.timeout **** ");
					}		
			} // end alt

			if ( v_ret == e_success ) {
				v_ret := f_sendGeneralIpv6(m_generalIpv6_srcDst(	c_routeHdr,
																	p_haGlaTn,
																	v_mnCareOfAddr1,
																	m_extHdrList_2Elem(
																		m_extHdr_routingHeader(
																			c_mipHdr,
																			c_routeHdrLen2,
																			c_routeHdrType2,
																			c_routeHdrSegmentsLeft1,
																			m_routingHeaderData_homeAddress(v_mnHomeAddr)),
																		m_extHdr_mipHeader (
																			c_noNextHdr,
																			c_bindingAck,
																			m_bindingAck(
																				v_seqNr,
																				m_mipOptList_1Elem(
																				m_mipOpt_padN(m_optPad4)))))));
			}//end if
			}//end if
*/

			return v_ret;
			return v_ret;


		}//end f_receiveBindingUpdateAndReply
		}//end f_receiveBindingUpdateAndReply
+29 −2
Original line number Original line Diff line number Diff line
@@ -121,6 +121,17 @@ module LibIpv6_MultiRfcs_Templates {
			}
			}
		}
		}


		/*
		 *	@param  p_homeAddress Home Address
		*/
		template DestOption mw_dstOpt_homeAddr := {
			homeAddressOption := {
				ipv6OptType := c_optHomeAddress,
				ipv6OptLen := c_optLen16,
				homeAddress := ?
			}
		}

		/*
		/*
		 *	@param  p_homeAddress Home Address
		 *	@param  p_homeAddress Home Address
		*/
		*/
@@ -156,7 +167,6 @@ module LibIpv6_MultiRfcs_Templates {
												UInt1 p_hFlag,
												UInt1 p_hFlag,
												UInt1 p_lFlag,
												UInt1 p_lFlag,
												UInt1 p_kFlag,
												UInt1 p_kFlag,
												UInt16 p_lifeTime,
												template MipOptionList p_mipOptions) := {	
												template MipOptionList p_mipOptions) := {	
			bindingUpdate := {
			bindingUpdate := {
				sequenceNumber := ?,
				sequenceNumber := ?,
@@ -165,7 +175,18 @@ module LibIpv6_MultiRfcs_Templates {
				lFlag := p_lFlag,
				lFlag := p_lFlag,
				kFlag := p_kFlag,
				kFlag := p_kFlag,
				reserved := c_uInt12Zero,
				reserved := c_uInt12Zero,
				lifeTime := p_lifeTime,		
				lifeTime := ?,		
				mipOptions := p_mipOptions
			}
		}

		template MipMessage m_bindingAck(UInt16 p_seqNr, template MipOptionList p_mipOptions) := {	
			bindingAck := {
				status := c_mipCodeBindingUpdateAccepted,
				kFlag := c_kFlag0,
				reserved := c_uInt7Zero,
				sequenceNumber := p_seqNr,
				lifeTime := c_100TimeUnits,		
				mipOptions := p_mipOptions
				mipOptions := p_mipOptions
			}
			}
		}
		}
@@ -259,6 +280,12 @@ module LibIpv6_MultiRfcs_Templates {
			alternateCoA := p_addr
			alternateCoA := p_addr
		}
		}


		template MipOptAltCoA mw_mipOptAltCoA := {
			mipOptType :=3,
			mipOptLen := 16,
			alternateCoA := ?
		}
		
	}//end group mobilityOptTemplates
	}//end group mobilityOptTemplates


} // end module LibIpv6_MultiRfcs_Templates
} // end module LibIpv6_MultiRfcs_Templates
+1 −0
Original line number Original line Diff line number Diff line
@@ -125,6 +125,7 @@ module LibIpv6_MultiRfcs_TypesAndValues {
			const UInt8		c_trafficClassZero := 0;
			const UInt8		c_trafficClassZero := 0;
			const UInt20	c_flowLabelZero := 0;
			const UInt20	c_flowLabelZero := 0;
			const UInt2		c_uInt2Zero := 0;
			const UInt2		c_uInt2Zero := 0;
			const UInt7		c_uInt7Zero := 0;
			const UInt8		c_uInt8Zero := 0;
			const UInt8		c_uInt8Zero := 0;
			const UInt12	c_uInt12Zero := 0;
			const UInt12	c_uInt12Zero := 0;
			const UInt16	c_uInt16Zero := 0;
			const UInt16	c_uInt16Zero := 0;
+1 −1

File changed.

Contains only whitespace changes.