LibIpv6_Rfc2463Icmpv6_Templates.ttcn 20.2 KB
Newer Older
alex's avatar
alex committed
/*
 *	@author 	STF 276
 *  @version 	$Id$
 *	@desc		This module specifies common template definitions
 *              to specify ICMPv6 packets
 *
 */
 module LibIpv6_Rfc2463Icmpv6_Templates {

	//LibCommon
	import from LibCommon_BasicTypesAndValues all;
	import from LibCommon_DataStrings all;
	//LibIpv6
	import from LibIpv6_ExternalFunctions all;
	import from LibIpv6_ModuleParameters all ;
	import from LibIpv6_MultiRfcs_TypesAndValues all;
	import from LibIpv6_Rfc2460Root_TypesAndValues all;
	import from LibIpv6_Rfc2460Root_Templates all;
peter's avatar
peter committed
	import from LibIpv6_Rfc2463Icmpv6_TypesAndValues all;
peter's avatar
peter committed
	import from LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues all;
alex's avatar
alex committed

	group ICMPv6_Echo_Request {

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		*/
		template EchoRequest mw_echoRequest (	template Ipv6Address p_src,
												template Ipv6Address p_dst ) := {
			ipv6Hdr := mw_ipHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := *,
			icmpType:= c_echoRequest,
			icmpCode:= c_icmpCode0,
			checksum:= ?,
			identifier:= ?,
			sequenceNumber:= ?,
			data:= *
		}

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoRequest m_echoRequest_noExtHdr_noData (	template Ipv6Address p_src,
																template Ipv6Address p_dst,
																UInt16 	p_id,
																UInt16 	p_seqNr) := {
			ipv6Hdr := m_ipHdr(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_echoRequest,
			icmpCode:= c_icmpCode0,
			checksum:= c_2ZeroBytes,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= omit
		}

peter's avatar
peter committed
		/*
		 *	@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.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoRequest mw_echoRequest_extHdr_noData (
			UInt8 p_nextHeader,
			template ExtensionHeaderList p_extHdrList,
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 	p_id,
			UInt16 	p_seqNr
		) := {
			ipv6Hdr := mw_ipHdr_srcDst(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			icmpType:= c_echoRequest,
			icmpCode:= c_icmpCode0,
			checksum:= ?,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= omit
		}

alex's avatar
alex committed
		/*
		 *	@param  p_hops Number of hops to be used in IPv6 header.
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoRequest m_echoRequest_hop_noExtHdr_noData (	in UInt8 p_hops,
																	template Ipv6Address p_src,
																	template Ipv6Address p_dst,
																	UInt16 	p_id,
																	UInt16	p_seqNr) := {
			ipv6Hdr := m_ipHdr_hop(c_icmpHdr, p_hops, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_echoRequest,
			icmpCode:= c_icmpCode0,
			checksum:= c_2ZeroBytes,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= omit
		}

		/*
		 *	@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.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoRequest m_echoRequest_extHdr_noData (
			UInt8 p_nextHeader,
			template ExtensionHeaderList p_extHdrList,
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 	p_id,
			UInt16 	p_seqNr
		) := {
			ipv6Hdr := m_ipHdr(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			icmpType:= c_echoRequest,
			icmpCode:= c_icmpCode0,
			checksum:= c_2ZeroBytes,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= omit
		}

		/*
		 *	@param  p_hops Hop Limit value to be used.
		 *	@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.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoRequest m_echoRequest_hop_ExtHdr_noData (
			UInt8 p_hops,
			UInt8 p_nextHeader,
			template ExtensionHeaderList p_extHdrList,
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 	p_id,
			UInt16 	p_seqNr
		) := {
			ipv6Hdr := m_ipHdr_hop(p_nextHeader, p_hops, p_src, p_dst),
			extHdrList := p_extHdrList,
			icmpType:= c_echoRequest,
			icmpCode:= c_icmpCode0,
			checksum:= c_2ZeroBytes,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= omit
		}

		/*
		 *	@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.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		 *	@param  p_data Data sent in the Echo Request packet.
		*/
		template EchoRequest m_echoRequest_extHdr_data (
			UInt8 p_nextHeader,
			template ExtensionHeaderList p_extHdrList,
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 	p_id,
			UInt16 	p_seqNr,
			octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			icmpType:= c_echoRequest,
			icmpCode:= c_icmpCode0,
			checksum:= c_2ZeroBytes,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= p_data
		}

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		 *	@param  p_data Data sent in the Echo Request packet.
		*/
		template EchoRequest m_echoRequest_noExtHdr_data (
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 	p_id,
			UInt16 	p_seqNr,
			octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_echoRequest,
			icmpCode:= c_icmpCode0,
			checksum:= c_2ZeroBytes,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= p_data
		}


		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoRequest mw_echoRequest_noExtHdr_noData (	template Ipv6Address p_src,
																template Ipv6Address p_dst,
																UInt16 	p_id,
																UInt16 	p_seqNr) := {
			ipv6Hdr := mw_ipHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_echoRequest,
			icmpCode:= c_icmpCode0,
			checksum:= ?,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= omit
		}
peter's avatar
peter committed

alex's avatar
alex committed
		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		 *	@param  p_data Data sent in the Echo Request packet.
		*/
		template EchoRequest m_echoRequest_noExtHdr_dataHopL255 (	template Ipv6Address p_src,
																template Ipv6Address p_dst,
																UInt16 	p_id,
																UInt16 	p_seqNr,
																octetstring p_data) := {
			ipv6Hdr := m_ipHdr(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_echoRequest,
			icmpCode:= c_icmpCode0,
			checksum:= c_2ZeroBytes,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= p_data
		}

	} // end group ICMPv6_Echo_Request

	group ICMPv6_Echo_Reply {

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		*/
		template EchoReply mw_echoReply (	template Ipv6Address p_src,
											template Ipv6Address p_dst ) := {
			ipv6Hdr := mw_ipHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := *,
			icmpType:= c_echoReply,
			icmpCode:= c_icmpCode0,
			checksum:= ?,
			identifier:= ?,
			sequenceNumber:= ?,
			data:= *
		}

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoReply mw_echoReply_noExtHdr_noData (	template Ipv6Address p_src,
															template Ipv6Address p_dst,
															UInt16 	p_id,
															UInt16	p_seqNr) := {
			ipv6Hdr := mw_ipHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_echoReply,
			icmpCode:= c_icmpCode0,
			checksum:= ?,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= omit
		}

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoReply m_echoReply_noExtHdr_noData (	template Ipv6Address p_src,
															template Ipv6Address p_dst,
															UInt16 	p_id,
															UInt16	p_seqNr) := {
			ipv6Hdr := m_ipHdr(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_echoReply,
			icmpCode:= c_icmpCode0,
			checksum:= c_2ZeroBytes,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= omit
		}

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		 *	@param  p_data data in ICMPv6 echo reply.
		*/
peter's avatar
peter committed
		template EchoReply m_echoReply_noExtHdr_data (	template Ipv6Address p_src,
alex's avatar
alex committed
															template Ipv6Address p_dst,
															UInt16 	p_id,
															UInt16	p_seqNr,
															template octetstring p_data ) := {
			ipv6Hdr := m_ipHdr(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_echoReply,
			icmpCode:= c_icmpCode0,
			checksum:= c_2ZeroBytes,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= p_data
		}

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		 *	@param  p_data data in ICMPv6 echo reply.
		*/
peter's avatar
peter committed
		template EchoReply mw_echoReply_noExtHdr_data (	template Ipv6Address p_src,
alex's avatar
alex committed
															template Ipv6Address p_dst,
															UInt16 	p_id,
															UInt16	p_seqNr,
															template octetstring p_data ) := {
peter's avatar
peter committed
			ipv6Hdr := mw_ipHdr_srcDst(c_icmpHdr, p_src, p_dst),
alex's avatar
alex committed
			extHdrList := omit,
			icmpType:= c_echoReply,
peter's avatar
peter committed
			icmpCode:= c_icmpCode0,
			checksum:= ?,
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= p_data
		}

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_nextHeader Next header identifier value to be used.
		 *	@param  p_extHdrList List of extension header in the packet.
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		 *	@param  p_data data in ICMPv6 echo reply.
		*/
		template EchoReply mw_echoReply_extHdr_data (
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_nextHeader,
			template ExtensionHeaderList p_extHdrList,
			UInt16 	p_id,
			UInt16	p_seqNr,
			template octetstring p_data
		) := {
			ipv6Hdr := mw_ipHdr_srcDst(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			icmpType:= c_echoReply,
alex's avatar
alex committed
			icmpCode:= c_icmpCode0,
peter's avatar
peter committed
			checksum:= ?,
alex's avatar
alex committed
			identifier:= p_id,
			sequenceNumber:= p_seqNr,
			data:= p_data
		}
peter's avatar
peter committed

alex's avatar
alex committed
		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_data data in ICMPv6 echo reply.
		*/
		template EchoReply mw_echoReply_hopL255_data (	template Ipv6Address p_src,
														template Ipv6Address p_dst,
														octetstring p_data ) := {
			ipv6Hdr := mw_ipHdr_srcDst_hopL255(p_src, p_dst),
			extHdrList := *,
			icmpType:= c_echoReply,
			icmpCode:= c_icmpCode0,
			checksum:= ?,
			identifier:= ?,
			sequenceNumber:= ?,
			data:= p_data
		}

	} // end group ICMPv6_Echo_Reply

	group ICMPv6_Parameter_Problem {

peter's avatar
peter committed
		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_hopLimit Number of hops to be used in IPv6 header.
		 *	@param  p_icmpCode ICMPv6 type to be used
		 *	@param  p_pointer ICMPv6 pointer to be used
		 *	@param  p_data data in ICMPv6 Parameter Problem message.
		*/
		template ParameterProblem m_parameterProblem_hopLimit_noExtHdr (
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_hopLimit,
			UInt8 p_icmpCode,
			UInt32 p_pointer,
			template octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr_hop(c_icmpHdr, p_hopLimit, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_parameterProblem,
			icmpCode:= p_icmpCode,
			checksum:= c_2ZeroBytes,
			pointer := p_pointer,
			data := p_data
		}

alex's avatar
alex committed
		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_icmpCode ICMPv6 code to be used
		 *	@param  p_pointer ICMPv6 pointer to be used
		*/
		template ParameterProblem mw_parameterProblem_code_pointer (
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_icmpCode,
			UInt32 p_pointer
		) := {
			ipv6Hdr := mw_ipHdr_srcDst(?, p_src, p_dst),
			extHdrList := *,
			icmpType:= c_parameterProblem,
			icmpCode:= p_icmpCode,
			checksum:= ?,
			pointer := p_pointer,
			data := *
		}

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		*/
		template ParameterProblem mw_parameterProblem (
			template Ipv6Address p_src,
			template Ipv6Address p_dst
		) := {
			ipv6Hdr := mw_ipHdr_srcDst(?, p_src, p_dst),
			extHdrList := *,
			icmpType:= c_parameterProblem,
			icmpCode:= ?,
			checksum:= ?,
			pointer := ?,
			data := *
		}

	} // end group ICMPv6_Parameter_Problem

	group ICMPv6_Time_Exceeded {

peter's avatar
peter committed
		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_hopLimit Number of hops to be used in IPv6 header.
		 *	@param  p_icmpCode ICMPv6 type to be used
		 *	@param  p_data data in ICMPv6 Time Exceeded message.
		*/
		template TimeExceeded m_timeExceeded_hopLimit_noExtHdr (
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_hopLimit,
			UInt8 p_icmpCode,
			template octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr_hop(c_icmpHdr, p_hopLimit, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_timeExceeded,
			icmpCode:= p_icmpCode,
			checksum:= c_2ZeroBytes,
			unused := 0,
			data := p_data
		}

alex's avatar
alex committed
		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_icmpCode ICMPv6 code to be used
		*/
		template TimeExceeded mw_timeExceeded_noExtHdr (template Ipv6Address p_src,
														template Ipv6Address p_dst,
peter's avatar
peter committed
														template UInt8 p_icmpCode ) := {
alex's avatar
alex committed
			ipv6Hdr := mw_ipHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_timeExceeded,
			icmpCode:= p_icmpCode,
			checksum:= ?,
			unused := ?,
			data := *
		}

	} // end group ICMPv6_Time_Exceeded

peter's avatar
peter committed
	group Destination_Unreachable {

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_hopLimit Number of hops to be used in IPv6 header.
		 *	@param  p_icmpCode ICMPv6 type to be used
		 *	@param  p_data data in ICMPv6 Destination Unreachable message.
		*/
		template DestinationUnreachable m_destUnreachable_hopLimit_noExtHdr (
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_hopLimit,
			UInt8 p_icmpCode,
			template octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr_hop(c_icmpHdr, p_hopLimit, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_destinationUnreachable,
			icmpCode:= p_icmpCode,
			checksum:= c_2ZeroBytes,
			unused := '00000000'O,
			data := p_data
		}

peter's avatar
peter committed
		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_icmpCode ICMPv6 type to be used
		*/
		template DestinationUnreachable mw_destUnreachable_code (
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			template UInt8 p_icmpCode
		) := {
			ipv6Hdr := mw_ipHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := *,
			icmpType:= c_destinationUnreachable,
			icmpCode:= p_icmpCode,
			checksum:= ?,
			unused := '00000000'O,
			data := *
		}

peter's avatar
peter committed
	} // end group Destination_Unreachable

	group Packet_Too_Big {

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_hopLimit Number of hops to be used in IPv6 header.
		 *	@param  p_data data in ICMPv6 Packet Too Big message.
		*/
		template PacketTooBig m_packetTooBig_hopLimit_noExtHdr (
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_hopLimit,
			template octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr_hop(c_icmpHdr, p_hopLimit, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_packetTooBig,
			icmpCode:= c_icmpCode0,
			checksum:= c_2ZeroBytes,
			mtu := c_mtu1280,
			data := p_data
		}

peter's avatar
peter committed
		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_mtu MTU value to be sent.
		 *	@param  p_data data in ICMPv6 Packet Too Big message.
		*/
		template PacketTooBig m_packetTooBig_noExtHdr_mtu (
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt32 p_mtu,
			template octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_packetTooBig,
			icmpCode:= c_icmpCode0,
			checksum:= c_2ZeroBytes,
			mtu := p_mtu,
			data := p_data
		}

peter's avatar
peter committed
		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		 *	@param  p_icmpCode ICMPv6 Code value in the received message.
		*/
		template PacketTooBig mw_packetTooBig_noExtHdr_code (
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_icmpCode
		) := {
			ipv6Hdr := mw_ipHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			icmpType:= c_packetTooBig,
			icmpCode:= p_icmpCode,
			checksum:= ?,
			mtu := ?,
			data := *
		}

	} // end group Packet_Too_Big

alex's avatar
alex committed
	group ICMPv6_Other {

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
peter's avatar
peter committed
		 *	@param  p_icmpType ICMPv6 type to be used
alex's avatar
alex committed
		 *	@param  p_icmpCode ICMPv6 code to be used
		*/
		template OtherIcmpv6Hdr m_otherIcmpv6Hdr_noExtHdr_noData (template Ipv6Address p_src,
														template Ipv6Address p_dst,
														UInt8 p_icmpType,
														UInt8 p_icmpCode ) := {
			ipv6Hdr := m_ipHdr(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			icmpType:= p_icmpType,
			icmpCode:= p_icmpCode,
			checksum:= c_2ZeroBytes,
			data := omit
		}

	} // end group ICMPv6_Other

} // end module LibIpv6_Rfc2463Icmpv6_Templates