Commit 8f1e324b authored by kremer's avatar kremer
Browse files

Added the testcases for mobility

parent dec9674f
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -42,6 +42,7 @@ module LibIpv6_CommonRfcs_TypesAndValues {
		const UInt8	c_optLen0 := 0;
		const UInt8	c_optLen0 := 0;
		const UInt8 c_optLen1 := 1;
		const UInt8 c_optLen1 := 1;
		const UInt8 c_optLen2 := 2;
		const UInt8 c_optLen2 := 2;
		const UInt8 c_optLen3 := 3;
		const UInt8 c_optLen4 := 4;
		const UInt8 c_optLen4 := 4;
		const UInt8 c_optLen6 := 6;
		const UInt8 c_optLen6 := 6;
		const UInt8	c_optLen16 := 16;
		const UInt8	c_optLen16 := 16;
+1015 −935
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@
	import from LibIpv6_CommonRfcs_Templates all;
	import from LibIpv6_CommonRfcs_Templates all;
	import from LibIpv6_CommonRfcs_TypesAndValues all;
	import from LibIpv6_CommonRfcs_TypesAndValues all;
	import from LibIpv6_Rfc3775Mipv6_TypesAndValues all;
	import from LibIpv6_Rfc3775Mipv6_TypesAndValues all;
	import from LibIpv6_Rfc4068FastHandovers_TypesAndValues all;


	group rfc2460Root_Templates {
	group rfc2460Root_Templates {
	
	
@@ -425,6 +426,26 @@ group rfc2460Root_Templates {
			
			
			}//end group tunnelHdrTemplates
			}//end group tunnelHdrTemplates


			group authHdrTemplates {
			
				/*	@desc	Auth Hdr 
				 *	@param  p_nextHdr Next header identifier value to be used.
			    */
				template ExtensionHeader m_extHdr_authHeader (
					UInt8 p_nextHdr
				) := {
					authHeader := {
						nextHeader 				:= p_nextHdr,
						payloadLen			 	:= ?,
						reserved				:= ?,
						securityParametersIndex	:= ?,
						sequenceNumber		 	:= ?,
						icv				 		:= ?
					}
				}
			
			}//end group authHdrTemplates

		} // end extensionHeader
		} // end extensionHeader


		group hbhOptionTemplates {
		group hbhOptionTemplates {
@@ -730,18 +751,6 @@ group rfc3775Mipv6_ExtHdrTemplates {
				}
				}
			}
			}


//Added by PK
		template MipMessage mw_bindingAck_mipOpt ( template MipOptionList p_mipOptions ) := {	
			bindingAck := {
				status := c_mipCodeBindingUpdateAccepted,
				kFlag := ?,
				reserved := ?,
				sequenceNumber := ?,
				lifeTime := ?,		
				mipOptions := p_mipOptions
			}
		}

	// Added by PK
	// Added by PK
			template MipMessage mw_bindingAck_statusSN (
			template MipMessage mw_bindingAck_statusSN (
				template UInt8 p_status,
				template UInt8 p_status,
@@ -773,6 +782,21 @@ group rfc3775Mipv6_ExtHdrTemplates {
				}
				}
			}
			}


	// Added by PK
			template MipMessage mw_bindingAck_statusOpt (
				template UInt8 p_status,
				template MipOptionList p_mipOptions
			) := {	
				bindingAck := {
					status := p_status,
					kFlag := ?,
					reserved := ?,
					sequenceNumber := ?,
					lifeTime := ?,		
					mipOptions := p_mipOptions
				}
			}

	//Added by PK
	//Added by PK
			template MipMessage m_bindingError_noOpt (
			template MipMessage m_bindingError_noOpt (
				UInt8 p_status,
				UInt8 p_status,
@@ -879,6 +903,30 @@ group rfc3775Mipv6_ExtHdrTemplates {
				}
				}
			}
			}


			/*
			 *	@param  p_mipOptions Mobility options
			*/
			template MipMessage m_fastNbrAdv (
				template MipOptionList p_mipOptions
			) := {	
				fastNbrAdv := {
					reserved := c_uInt16Zero,
					mipOptions := p_mipOptions
				}
			}

			/*
			 *	@param  p_mipOptions Mobility options
			*/
			template MipMessage mw_fastNbrAdv (
				template MipOptionList p_mipOptions
			) := {	
				fastNbrAdv := {
					reserved := ?,
					mipOptions := p_mipOptions
				}
			}

		}//end group mobilityHdrMessageTemplates
		}//end group mobilityHdrMessageTemplates




@@ -1044,14 +1092,47 @@ group rfc3775Mipv6_ExtHdrTemplates {
				}
				}
			}
			}




		}//end group mipHeaderTemplates
		}//end group mipHeaderTemplates


	}//end group rfc3775Mipv6_ExtHdrTemplates
	}//end group rfc3775Mipv6_ExtHdrTemplates


group rfc4302Ah_ExtHdrTemplates {
	group rfc4068HastHandovers_OptionTemplates {

		/*
		 *	@param	p_optionCode The value of code field
		 *	@param  p_llaAddr Link lyer address
		*/
		template MipOption m_extHdr_llaOpt (
			UInt8 p_optionCode,
			template Oct6to15 p_llaAddr
		) := {
			fHLinkLayerAddress := {
				optionType := c_fhMobilityHeaderLinkLayerAddress,
				optionLength := PX_MAC_OPTION_LEN,
				optionCode := p_optionCode,
				pad0 := ?,
				linkLayerAddr := p_llaAddr
			}
		}


		/*
		 *	@param  p_llaAddr Link lyer address
		*/
		template MipOption mw_extHdr_llaOpt (
			template Oct6to15 p_llaAddr
		) := {
			fHLinkLayerAddress := {
				optionType := c_fhMobilityHeaderLinkLayerAddress,
				optionLength := PX_MAC_OPTION_LEN,
				optionCode := c_fHCode2,
				pad0 := 0,
				linkLayerAddr := p_llaAddr
			}
		}

	}//end group rfc4068HastHandovers_OptionTemplates

	group rfc4302Ah_ExtHdrTemplates {


	}//end group rfc4302Ah_ExtHdrTemplates
	}//end group rfc4302Ah_ExtHdrTemplates


@@ -1102,7 +1183,6 @@ group cryptoTemplates {
			ipv6Payload := p_ipv6Payload
			ipv6Payload := p_ipv6Payload
		}
		}
	
	
	
	}//end group cryptoTemplates
	}//end group cryptoTemplates


} // end module LibIpv6_Interface_Templates
} // end module LibIpv6_Interface_Templates
+38 −8
Original line number Original line Diff line number Diff line
@@ -60,12 +60,17 @@ module LibIpv6_Interface_TypesAndValues {
			Redirect,
			Redirect,
			//Imported from Rfc 2894
			//Imported from Rfc 2894
			RouterRenumbering,
			RouterRenumbering,
			//Imported from Rfc XXXX Mipv6
			//Imported from Rfc 3775 Mipv6
			HomeAgentAddressDiscoveryRequest,
			HomeAgentAddressDiscoveryRequest,
			HomeAgentAddressDiscoveryReply,
			HomeAgentAddressDiscoveryReply,
			MobilePrefixSolicitation,
			MobilePrefixSolicitation,
			MobilePrefixAdvertisement,
			MobilePrefixAdvertisement,
			MipRouterAdvertisement,
			MipRouterAdvertisement,
			//Imported from Rfc 4068
			RouterSolicitationForProxyRtAdv,
			ProxyRouterAdvertisement,
			HandoverInitiate,
			HandoverAcknowledge,
			OtherIcmpv6,
			OtherIcmpv6,
			//hand encoded IPv6 packets
			//hand encoded IPv6 packets
			RawIpv6Packet,
			RawIpv6Packet,
@@ -123,9 +128,9 @@ module LibIpv6_Interface_TypesAndValues {
		type Ipv6Packet ProxyRouterAdvertisement;
		type Ipv6Packet ProxyRouterAdvertisement;
		type Ipv6Packet HandoverInitiate;
		type Ipv6Packet HandoverInitiate;
		type Ipv6Packet HandoverAcknowledge;
		type Ipv6Packet HandoverAcknowledge;
		type Ipv6Packet FastBindingUpdate;
//		type Ipv6Packet FastBindingUpdate;
		type Ipv6Packet FastBindingAcknowledgment;
//		type Ipv6Packet FastBindingAcknowledgment;
		type Ipv6Packet FastNeighborAdvertisement;
//		type Ipv6Packet FastNeighborAdvertisement;
		//Default value
		//Default value
		type Ipv6Packet OtherIcmpv6;
		type Ipv6Packet OtherIcmpv6;
		//Udp
		//Udp
@@ -497,7 +502,8 @@ module LibIpv6_Interface_TypesAndValues {
					CareOfTest 				careOfTest,
					CareOfTest 				careOfTest,
					BindingUpdate 			bindingUpdate,
					BindingUpdate 			bindingUpdate,
					BindingAck 				bindingAck,
					BindingAck 				bindingAck,
					BindingError 			bindingError
					BindingError 			bindingError,
					FastNbrAdv				fastNbrAdv
				} 
				} 


				/*
				/*
@@ -623,7 +629,8 @@ module LibIpv6_Interface_TypesAndValues {
					MipOptBindingRefreshAdvice		mipOptBindingRefreshAdvice,
					MipOptBindingRefreshAdvice		mipOptBindingRefreshAdvice,
					MipOptAltCoA					mipOptAltCoA,
					MipOptAltCoA					mipOptAltCoA,
					MipOptNonceIndices				mipOptNonceIndices,
					MipOptNonceIndices				mipOptNonceIndices,
					MipBindingAuthorizationData		mipBindingAuthorizationData
					MipBindingAuthorizationData		mipBindingAuthorizationData,
					MobilityHeaderLinkLayerAddress	fHLinkLayerAddress
				}
				}
		
		
				/*
				/*
@@ -717,7 +724,6 @@ module LibIpv6_Interface_TypesAndValues {
					const UInt8	c_bindingError := 7;
					const UInt8	c_bindingError := 7;
				}
				}


		
				group statusCodesValues { 
				group statusCodesValues { 
					/*
					/*
					*  @desc This values should be used in BindingAcknowledgement 
					*  @desc This values should be used in BindingAcknowledgement 
@@ -755,13 +761,29 @@ module LibIpv6_Interface_TypesAndValues {


	group rfc4068FastHandovers {
	group rfc4068FastHandovers {


		group rfc4068HastHandovers_messages {

				/*
				 * @desc Derived from  RFC4068 clause 6.3.3
				*/
				type record 	FastNbrAdv {
					UInt16			reserved,
					MipOptionList 	mipOptions
				}
// TODO
//				with {
//					encode "present=isEOF()== false && (valueOf(getTag('mobilityHeaderType'))==6);";
//				}

		} // end group rfc4068HastHandovers_messages

		group rfc4068HastHandovers_options {
		group rfc4068HastHandovers_options {


			/*
			/*
			 * @desc   Derived from RFC4068, clause 6.4.4
			 * @desc   Derived from RFC4068, clause 6.4.4
			*/
			*/
			type record MobilityHeaderLinkLayerAddress {
			type record MobilityHeaderLinkLayerAddress {
				UInt8 		icmpType(c_fhMobilityHeaderLinkLayerAddress),
				UInt8 		optionType(c_fhMobilityHeaderLinkLayerAddress),
				UInt8 		optionLength,
				UInt8 		optionLength,
				UInt8		optionCode,
				UInt8		optionCode,
				UInt8		pad0,
				UInt8		pad0,
@@ -770,6 +792,14 @@ module LibIpv6_Interface_TypesAndValues {


		} // end rfc4068HastHandovers_options
		} // end rfc4068HastHandovers_options


		group rfc4068FastHandovers_values {

			const UInt8	c_fastBindingUpdate := 8;
			const UInt8	c_fastBindingAck := 9;
			const UInt8	c_fastNbrAdv := 10;

		} // end group rfc4068FastHandovers_values
		
	} // end group rfc4068FastHandovers
	} // end group rfc4068FastHandovers


	group rfc4302Ah_ExtHdrTypesAndValues {
	group rfc4302Ah_ExtHdrTypesAndValues {
+33 −1
Original line number Original line Diff line number Diff line
@@ -868,7 +868,7 @@
		 *          test component.
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
	    */
	    */
		template RouterAdvertisement mw_rtAdv_hop255_noExtHdr (	template Ipv6Address p_src,
		template RouterAdvertisement mw_rtAdv_hop255_noExtHdr_noOpt (	template Ipv6Address p_src,
															template Ipv6Address p_dst ) := {
															template Ipv6Address p_dst ) := {
			ipv6Hdr := mw_ipHdr_nextHdr_hop_srcDst ( c_icmpHdr, c_hopLimit255, p_src, p_dst ),  // FIXED (Alex) : m_ipHdr_nextHdr_srcDst->mw_ipHdr_srcDst_nextHdr_hopL255
			ipv6Hdr := mw_ipHdr_nextHdr_hop_srcDst ( c_icmpHdr, c_hopLimit255, p_src, p_dst ),  // FIXED (Alex) : m_ipHdr_nextHdr_srcDst->mw_ipHdr_srcDst_nextHdr_hopL255
			extHdrList := omit,
			extHdrList := omit,
@@ -892,6 +892,38 @@
		 *	@param  p_src Binary IPv6 address associated with the
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param	p_rtAdvOptions Router Advertisement options.
	    */
		template RouterAdvertisement mw_rtAdv_hop255_noExtHdr (
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			template RtAdvOptions p_rtAdvOptions
		) := {
			ipv6Hdr := mw_ipHdr_nextHdr_hop_srcDst ( c_icmpHdr, c_hopLimit255, p_src, p_dst ),
			extHdrList := omit,
			ipv6Payload := { 
				routerAdvMsg := {
					icmpType:= c_rtAdvMsg,
					icmpCode:= c_icmpCode0,
					checksum:= ?,
					curHopLimit:= ?,
					managedConfigFlag:=?,
					otherConfigFlag:=?,
					homeAgentFlag := ?,
					reserved:= 0,
					routerLifetime:=?,
					reachableTime:=?,
					retransTimer:=?,
					rtAdvOptions:=p_rtAdvOptions
				}
			}
		}

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param	p_rtAdvOptions Router Advertisement options.
	    */
	    */
		template RouterAdvertisement mw_rtAdv_hop255_noExtHdr_hAFlag (
		template RouterAdvertisement mw_rtAdv_hop255_noExtHdr_hAFlag (
			template Ipv6Address p_src,
			template Ipv6Address p_src,
+141 −33
Original line number Original line Diff line number Diff line
@@ -43,14 +43,14 @@ module LibIpv6_Rfc4068FastHandovers_Functions {
	import from AtsIpv6_ModuleParameters all ;
	import from AtsIpv6_ModuleParameters all ;


	/*
	/*
		 * @desc  	This sends an ICMPv6 Proxy Router Advertisement from a router node
	 * @desc  	This sends a Proxy Router Advertisement from a router node
	 *			to any NUT. Prior it modifies IPv6 packet payload length
	 *			to any NUT. Prior it modifies IPv6 packet payload length
	 *			and ICMPv6 checksum to their correct values
	 *			and ICMPv6 checksum to their correct values
	 * @remark  The template passed in must NOT contain any matching expressions!
	 * @remark  The template passed in must NOT contain any matching expressions!
	 * @param 	p_prRtAdv Ipv6 packet template with Proxy Router Advertisement to be sent
	 * @param 	p_prRtAdv Ipv6 packet template with Proxy Router Advertisement to be sent
	 * @return 	execution status
	 * @return 	execution status
	*/
	*/
		function f_sendPrRtAdv (in template RouterAdvertisement p_prRtAdv)
	function f_sendPrRtAdv (in template ProxyRouterAdvertisement p_prRtAdv)
	runs on LibIpv6Node
	runs on LibIpv6Node
	return FncRetCode {
	return FncRetCode {
		var Ipv6Packet v_ipPkt;
		var Ipv6Packet v_ipPkt;
@@ -78,4 +78,112 @@ module LibIpv6_Rfc4068FastHandovers_Functions {


	} // end f_sendPrRtAdv
	} // end f_sendPrRtAdv


	/*
	 * @desc  	This sends a Router Solicitation for Proxy Router Advertisement
	 *			to any NUT. Prior it modifies IPv6 packet payload length
	 *			and ICMPv6 checksum to their correct values
	 * @remark  The template passed in must NOT contain any matching expressions!
	 * @param 	p_rtSolPr Ipv6 packet template with Router Solicitation for Proxy Router Advertisement to be sent
	 * @return 	execution status
	*/
	function f_sendRtSolPr (in template RouterSolicitationForProxyRtAdv p_rtSolPr)
	runs on LibIpv6Node
	return FncRetCode {
		var Ipv6Packet v_ipPkt;
		v_ipPkt := valueof(p_rtSolPr);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
				log(" **** f_sendPrRtAdv: Error when calculating length of extension headers ****");
				return e_error;
			}
		}
		//calc payloadLen
		v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt);
		//set checksum to zero
		v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes;
		//calc checksum
		v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_icmpv6Checksum(v_ipPkt);
		//send
		ipPort.send(v_ipPkt);

		return e_success;

	} // end f_sendRtSolPr

	/*
	 * @desc  	This sends a Handover Initiate message
	 *			to any NUT. Prior it modifies IPv6 packet payload length
	 *			and ICMPv6 checksum to their correct values
	 * @remark  The template passed in must NOT contain any matching expressions!
	 * @param 	p_hoInit Ipv6 packet template with Handover Initiate to be sent
	 * @return 	execution status
	*/
	function f_sendHoInit (in template HandoverInitiate p_hoInit)
	runs on LibIpv6Node
	return FncRetCode {
		var Ipv6Packet v_ipPkt;
		v_ipPkt := valueof(p_hoInit);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
				log(" **** f_sendHoInit: Error when calculating length of extension headers ****");
				return e_error;
			}
		}
		//calc payloadLen
		v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt);
		//set checksum to zero
		v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes;
		//calc checksum
		v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_icmpv6Checksum(v_ipPkt);
		//send
		ipPort.send(v_ipPkt);

		return e_success;

	} // end f_sendHoInit

	/*
	 * @desc  	This sends a Handover Ack message
	 *			to any NUT. Prior it modifies IPv6 packet payload length
	 *			and ICMPv6 checksum to their correct values
	 * @remark  The template passed in must NOT contain any matching expressions!
	 * @param 	p_hoAck Ipv6 packet template with Handover Initiate to be sent
	 * @return 	execution status
	*/
	function f_sendHoAck (in template HandoverAcknowledge p_hoAck)
	runs on LibIpv6Node
	return FncRetCode {
		var Ipv6Packet v_ipPkt;
		v_ipPkt := valueof(p_hoAck);
		//set extensionHeaders
		if (ispresent(v_ipPkt.extHdrList)) {
			if(f_setExtensionHeaders(	v_ipPkt.extHdrList,
										v_ipPkt.ipv6Hdr.sourceAddress,
										v_ipPkt.ipv6Hdr.destinationAddress,
										v_ipPkt) != e_success) {
				log(" **** f_sendHoAck: Error when calculating length of extension headers ****");
				return e_error;
			}
		}
		//calc payloadLen
		v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt);
		//set checksum to zero
		v_ipPkt.ipv6Payload.routerAdvMsg.checksum := c_2ZeroBytes;
		//calc checksum
		v_ipPkt.ipv6Payload.routerAdvMsg.checksum := fx_icmpv6Checksum(v_ipPkt);
		//send
		ipPort.send(v_ipPkt);

		return e_success;

	} // end f_sendHoAck

} // end module LibIpv6_Rfc4068FastHandovers_Functions
} // end module LibIpv6_Rfc4068FastHandovers_Functions
Loading