Commit 1b8b3069 authored by schmitting's avatar schmitting
Browse files

RFC2765 finished

parent f103dd2a
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -839,6 +839,30 @@ module LibIpv6_Rfc2463Icmpv6_Templates {
					data := omit }
			}
		}

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_icmpType ICMPv6 type to be used
		 *	@param  p_data data content to be used
		*/
		template OtherIcmpv6 m_otherIcmpv6_noExtHdr_Data(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_icmpType,
			octetstring p_data) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := {
				otherIcmpv6Msg := {
					icmpType := p_icmpType,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					data := p_data }
			}
		}

	} // end group ICMPv6_Other
	group Packet_Too_Big {
		/*
+8 −0
Original line number Diff line number Diff line
@@ -32,10 +32,18 @@
		const UInt8	c_packetTooBigMsg := 2;
		const UInt8 c_timeExceededMsg := 3;
		const UInt8 c_parameterProblemMsg := 4;
		const UInt8 c_unknownInformational := 127;
		const UInt8 c_echoRequestMsg := 128;
		const UInt8 c_echoReplyMsg := 129;
		const UInt8 c_unknownError := 255;
	} // end group rfc2463MessageIds

	group rfc2710MessageIds {
		const UInt8	c_multicastListenerQuery := 130;
		const UInt8	c_multicastListenerReport := 131;
		const UInt8 c_multicastListenerDone := 132;
	} // end group rfc2710MessageIds

	group IcmpPointers {
		const UInt32  c_icmpPointer4 := 4;
		const UInt32  c_icmpPointer6 := 6;
+68 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
	import from LibIpv6_Rfc2463Icmpv6_TypesAndValues all;
	import from LibIpv6_Rfc2463Icmpv6_Templates all;
	import from LibIpv6_Rfc2463Icmpv6_Functions all;
	import from LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues all;
	import from LibIpv6_Rfc2461NeighborDiscovery_Templates {template all};
	import from LibIpv6_Rfc2461NeighborDiscovery_Functions all;
	
@@ -857,6 +858,73 @@
			log("**** f_sendPacketForTranslate_6: Error:  Problem while sending ICMPv6 message. ****");
		}

		/* The following MLD Multicast Listener and Neighbour Discovery messages
		 * are only used to check that they are dropped by the SIIT. Therefore they
		 * were intentionally kept simple and may not be used to seve thier original
		 * purpose e.g. for neighbour or router discovery.
		*/
		if ((p_icmpType == c_multicastListenerQuery) or
			(p_icmpType == c_multicastListenerReport) or
			(p_icmpType == c_multicastListenerDone) or
			(p_icmpType == c_unknownInformational) or
			(p_icmpType == c_unknownError))
		{
			v_ret := f_sendOtherIcmpv6( m_otherIcmpv6_noExtHdr_Data(p_llaAddrTn,
																    p_llaAddrNut,
																    p_icmpType,
																    '0BB80000FF01000000000065'O)); // arbitrary "multicastlistener look-alike" data content
		}

		if (p_icmpType == c_rtSolMsg)
		{
			v_ret := f_sendRtSol( m_rtSol_noExtHdr(p_llaAddrTn,
												   p_llaAddrNut,
												   omit));
		}

		if (p_icmpType == c_rtAdvMsg)
		{
			v_ret := f_sendRtAdv( m_rtAdv_noExtHdr(p_llaAddrTn,
												   p_llaAddrNut,
												   c_mFlag0,
												   c_oFlag0,
												   c_infiniteLifetime,
												   c_unspecifiedReachTime,
												   c_unspecifiedRetransTime,
												   omit));
		}

		if (p_icmpType == c_nbrSolMsg)
		{
			v_ret := f_sendNbrSol( m_nbrSol_noExtHdr(p_llaAddrTn,
												     p_llaAddrNut,
													 p_llaAddrNut,
												     omit));
		}

		if (p_icmpType == c_nbrAdvMsg)
		{
			v_ret := f_sendNbrAdv( m_nbrAdv_noExtHdr(p_llaAddrTn,
												     p_llaAddrNut,
													 c_rFlag0,
												     c_sFlag0,
													 c_oFlag0,
													 p_llaAddrNut,
												     omit));
		}

		if (p_icmpType == c_redirectMsg)
		{
			v_ret := f_sendRedirect( m_redirect_noExtHdr(p_llaAddrTn,
												     	 p_llaAddrNut,
														 p_llaAddrNut,
														 omit));
		}

		if(v_ret != e_success) {
			log("**** f_sendPacketForTranslate_6: Error:  Problem while sending ICMPv6 message. ****");
		}

		return v_ret;

	} // end f_sendPacketForTranslate_6