Commit f6cb950c authored by peter's avatar peter
Browse files

No commit message

No commit message
parent 067c38e4
Loading
Loading
Loading
Loading
+35 −35
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@
		const UInt8		c_routeHdrSegmentsLeft0 := 0;
		const UInt8		c_routeHdrSegmentsLeft1 := 1;
		const UInt8		c_routeHdrSegmentsLeft2 := 2;
		const UInt8		c_routeHdrType0 := 1;
		const UInt8		c_routeHdrType0 := 0;
	}//end group extHdrValues


@@ -60,19 +60,19 @@
			Ipv6Address	sourceAddress,
			Ipv6Address destinationAddress
		}
		with {
			encode (payloadLength) "intTag=\"IPv6Header_payloadLength\";";
			encode (nextHeader) "tag=\"nextHeader\";";
		}
//		with {
//			encode (payloadLength) "intTag=\"IPv6Header_payloadLength\";";
//			encode (nextHeader) "tag=\"nextHeader\";";
//		}
		
	} // end ipv6HeaderRelatedTypes

	group extensionHeaders {

		type set length(1 .. c_maxIpv6ExtHdrs) of ExtensionHeader ExtensionHeaderList
		with {
			encode "present=isEOF()== false && ((valueOf(dec.getTag(\"nextHeader\"))==0) || (valueOf(dec.getTag(\"nextHeader\"))==43) || (valueOf(dec.getTag(\"nextHeader\"))==44) || (valueOf(dec.getTag(\"nextHeader\"))==60) || (valueOf(dec.getTag(\"nextHeader\"))==51) || (valueOf(dec.getTag(\"nextHeader\"))==50) || (valueOf(dec.getTag(\"nextHeader\"))==41))";
		}
//		with {
//			encode "present=isEOF()== false && ((valueOf(dec.getTag(\"nextHeader\"))==0) || (valueOf(dec.getTag(\"nextHeader\"))==43) || (valueOf(dec.getTag(\"nextHeader\"))==44) || (valueOf(dec.getTag(\"nextHeader\"))==60) || (valueOf(dec.getTag(\"nextHeader\"))==51) || (valueOf(dec.getTag(\"nextHeader\"))==50) || (valueOf(dec.getTag(\"nextHeader\"))==41))";
//		}
		
		/*
		** @desc Mainly derived from many RFC 2460
@@ -92,9 +92,9 @@
			OtherIpv6ExtHdr		otherHeader
*/
		} 
		with {
			encode "present=isEOF()== false && ((valueOf(dec.getTag(\"nextHeader\"))==0) || (valueOf(dec.getTag(\"nextHeader\"))==43) || (valueOf(dec.getTag(\"nextHeader\"))==44) || (valueOf(dec.getTag(\"nextHeader\"))==60) || (valueOf(dec.getTag(\"nextHeader\"))==51) || (valueOf(dec.getTag(\"nextHeader\"))==50) || (valueOf(dec.getTag(\"nextHeader\"))==41))";
		}
//		with {
//			encode "present=isEOF()== false && ((valueOf(dec.getTag(\"nextHeader\"))==0) || (valueOf(dec.getTag(\"nextHeader\"))==43) || (valueOf(dec.getTag(\"nextHeader\"))==44) || (valueOf(dec.getTag(\"nextHeader\"))==60) || (valueOf(dec.getTag(\"nextHeader\"))==51) || (valueOf(dec.getTag(\"nextHeader\"))==50) || (valueOf(dec.getTag(\"nextHeader\"))==41))";
//		}

		/*
		** @desc Derived from  RFC 2460 Section 4.3
@@ -104,12 +104,12 @@
			UInt8			hdrExtLen,
			HopByHopOptionList 	hopByHopOptionList
		} 
		with {
			encode "present=(valueOf(getTag(\"nextHeader\")) == 0);";
			encode (nextHeader) "tag=\"nextHeader\";";
			encode (hdrExtLen) "tag=\"hdrExtLen\";";
			encode (hdrExtLen) "intTag=\"hdrExtIntLen\";intTag=\"IPv6Header_payloadLength\",getIntTag(\"IPv6Header_payloadLength\")-";
		}
//		with {
//			encode "present=(valueOf(getTag(\"nextHeader\")) == 0);";
//			encode (nextHeader) "tag=\"nextHeader\";";
//			encode (hdrExtLen) "tag=\"hdrExtLen\";";
//			encode (hdrExtLen) "intTag=\"hdrExtIntLen\";intTag=\"IPv6Header_payloadLength\",getIntTag(\"IPv6Header_payloadLength\")-";
//		}
		

		/*
@@ -123,13 +123,13 @@
			UInt32              reserved,
			RoutingHeaderData	routingHeaderData optional
		}
		with {
			encode "present=(valueOf(getTag(\"nextHeader\")) == 43);";
			encode (nextHeader) "tag=\"nextHeader\";";
			encode (hdrExtLen) "tag=\"hdrExtLen\";";
			encode (hdrExtLen) "intTag=\"IPv6Header_payloadLength\",getIntTag(\"IPv6Header_payloadLength\")-";
			encode (routingType) "tag=\"routingType\";";
		}
//		with {
//			encode "present=(valueOf(getTag(\"nextHeader\")) == 43);";
//			encode (nextHeader) "tag=\"nextHeader\";";
//			encode (hdrExtLen) "tag=\"hdrExtLen\";";
//			encode (hdrExtLen) "intTag=\"IPv6Header_payloadLength\",getIntTag(\"IPv6Header_payloadLength\")-";
//			encode (routingType) "tag=\"routingType\";";
//		}
		
		/*
		** @remark A RoutingHeaderData value should be only 
@@ -154,11 +154,11 @@
			UInt1	moreFlag,
			UInt32	identification 
		}
		with {
			encode "present=(valueOf(getTag(\"nextHeader\")) == 44);";
			encode (nextHeader) "tag=\"nextHeader\";";
			encode (nextHeader) "intTag=\"IPv6Header_payjoadLength\",getIntTag(\"IPv6Header_payloadLength\")-8";
		} 
//		with {
//			encode "present=(valueOf(getTag(\"nextHeader\")) == 44);";
//			encode (nextHeader) "tag=\"nextHeader\";";
//			encode (nextHeader) "intTag=\"IPv6Header_payjoadLength\",getIntTag(\"IPv6Header_payloadLength\")-8";
//		} 
		
	
		/*
@@ -169,12 +169,12 @@
			UInt8			hdrExtLen,
			DestOptionList 	destOptionList 
		}
		with {
			encode "present=(valueOf(getTag(\"nextHeader\")) == 60);";
			encode (nextHeader) "tag=\"nextHeader\";";
			encode (hdrExtLen) "tag=\"hdrExtLen\";";
			encode (hdrExtLen) "intTag=\"IPv6Header_payloadLength\",getIntTag(\"IPv6Header_payloadLength\")-";
		} 
//		with {
//			encode "present=(valueOf(getTag(\"nextHeader\")) == 60);";
//			encode (nextHeader) "tag=\"nextHeader\";";
//			encode (hdrExtLen) "tag=\"hdrExtLen\";";
//			encode (hdrExtLen) "intTag=\"IPv6Header_payloadLength\",getIntTag(\"IPv6Header_payloadLength\")-";
//		} 
		
	} // end extensionHeaders 
	
+2 −3
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions_PK {
	import from LibCommon_BasicTypesAndValues all;
	import from LibCommon_DataStrings all;
	import from LibCommon_VerdictControl { type FncRetCode };
	import from LibCommon_Time all;
	//LibIpv6
	import from LibIpv6_ExternalFunctions all;
	import from LibIpv6_Interface all ;
@@ -40,7 +41,6 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions_PK {
        runs on LibIpv6Node
        return FncRetCode {
            var Ipv6Packet v_ipPkt;
            timer t_procPkt := 1.0;

	        v_ipPkt.routerAdvert := valueof(p_rtAdv);
	        //calc payloadLen
@@ -52,8 +52,7 @@ module LibIpv6_Rfc2461NeighborDiscovery_Functions_PK {
	        //send
	        ipPort.send(v_ipPkt.routerAdvert);

            t_procPkt.start;
            t_procPkt.timeout;
            f_sleep ( 1.0 );

	        return e_success;

+87 −0
Original line number Diff line number Diff line
@@ -404,6 +404,16 @@
		/*
		 *	@param  p_macSlla Binary MAC source address associated with
		 *          link layer of test component
	    */
		template RtAdvOptions m_rtAdvOpt_macSrc  (	template Oct6to15 p_macSlla ):={
			srcLinkLayerAddr := m_macSlla(p_macSlla),
			mtuOption:= omit,
			prefixInfoList := omit,
			otherOption := omit }

		/*
		 *	@param  p_macSlla Binary MAC source address associated with
		 *          link layer of test component
		 *	@param  p_prefixLength Length of the prefix.
		 *	@param  p_lFlag Value for link flag.
		 *	@param  p_aFlag Value for autoconfiguration flag.
@@ -430,6 +440,83 @@
												p_prefix) },
			otherOption := p_otherOption }

		/*
		 *	@param  p_macSlla Binary MAC source address associated with
		 *          link layer of test component
		 *	@param  p_prefixLength Length of the prefix.
		 *	@param  p_lFlag Value for link flag.
		 *	@param  p_aFlag Value for autoconfiguration flag.
		 *	@param  p_validLifetime Value for valid life time duration.
		 *	@param  p_preferredLifetime Value for preffered life time duration.
		 *	@param  p_prefix Address prefix to be used
		 *  @param  p_mtu MTU option template
	    */
		template RtAdvOptions m_rtAdvOpt_macSrc_prefix_mtu  (	template Oct6to15 p_macSlla,
															UInt8 p_prefixLength,
															UInt1 p_lFlag,
															UInt1 p_aFlag,
															UInt32 p_validLifetime,
															UInt32 p_preferredLifetime, 
															Ipv6Address p_prefix,
															template MtuOption p_mtu):={
			srcLinkLayerAddr := m_macSlla(p_macSlla),
			prefixInfoList := {  m_prefixInfo(	p_prefixLength,
												p_lFlag,
												p_aFlag,
												p_validLifetime,
												p_preferredLifetime, 
												p_prefix) },
			mtuOption:= p_mtu,
			otherOption := omit }


		/*
		 *  @param  p_mtu MTU option value
	    */
		template MtuOption m_mtuOption ( UInt32 p_mtu ):={
			icmpType := c_mtuOption,
			optionLength := 6,
			reserved := 0,
			mtu := p_mtu
		}

		/*
		 *  @param  p_mtu MTU option value
	    */
		template MtuOption m_mtuOption_nonEmptyReserved ( UInt32 p_mtu ):={
			icmpType := c_mtuOption,
			optionLength := 6,
			reserved := c_uInt16Max,
			mtu := p_mtu
		}

		/*
		 *	@param  p_macSlla Binary MAC source address associated with
		 *          link layer of test component
		 *	@param  p_prefixLength Length of the prefix.
		 *	@param  p_lFlag Value for link flag.
		 *	@param  p_aFlag Value for autoconfiguration flag.
		 *	@param  p_validLifetime Value for valid life time duration.
		 *	@param  p_preferredLifetime Value for preffered life time duration.
		 *	@param  p_prefix Address prefix to be used
	    */
		template RtAdvOptions m_rtAdvOpt_macSrc_prefixNonEmptyReserved  (	template Oct6to15 p_macSlla,
															UInt8 p_prefixLength,
															UInt1 p_lFlag,
															UInt1 p_aFlag,
															UInt32 p_validLifetime,
															UInt32 p_preferredLifetime, 
															Ipv6Address p_prefix ):={
			srcLinkLayerAddr := m_macSlla(p_macSlla),
			mtuOption:= omit,
			prefixInfoList := {  m_prefixInfo_nonEmptyReserved(	p_prefixLength,
												p_lFlag,
												p_aFlag,
												p_validLifetime,
												p_preferredLifetime, 
												p_prefix) },
			otherOption := omit }

		/*
		 *	@param  p_macSlla Binary MAC source address associated with
		 *          link layer of test component
+4 −4
Original line number Diff line number Diff line
@@ -196,10 +196,10 @@
			UInt48		reserved,
			octetstring	data // no length limit?
		}
		with {
			encode (optionLength) "tag=\"RedirectHeader_optionLength\";";
			encode (data) "length=valueOf(getTag(\"RedirectHeader_optionLength\"))*8-2-6;";
		}
//		with {
//			encode (optionLength) "tag=\"RedirectHeader_optionLength\";";
//			encode (data) "length=valueOf(getTag(\"RedirectHeader_optionLength\"))*8-2-6;";
//		}
	
	} // end  icmpRfc461Options
	
+6 −1
Original line number Diff line number Diff line
@@ -20,7 +20,9 @@

	group nd_constants {
		const float c_ndRetransTimer := 1.0;
		const UInt32 c_lifetime10s := 10;
		const UInt16 c_unspecLifetime := c_uInt16Max;
		const UInt16 c_lifetime0s := 0;
		const UInt16 c_lifetime10s := 10;
		const UInt32 c_retrans1s := 1;
		const float c_ndReachableTime := 30.0;
		const float c_ndDelayFirstProbeTime := 5.0;
@@ -30,6 +32,9 @@
		const UInt32 c_validLifetime10s := 10;
		const UInt32 c_preferredLifetime0s := 0;
		const UInt32 c_preferredLifetime10s := 10;
		const UInt32 c_mtu1280 := 1280;
		const UInt32 c_mtu1460 := 1460;

	} // end group nd_constants

} // end module LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues
Loading