Commit 537947c4 authored by vouffofeudji's avatar vouffofeudji
Browse files

Refined testcases for AH

parent 93005c27
Loading
Loading
Loading
Loading
+547 −491
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@
 *
 */
module LibIpv6_Rfc2463Icmpv6_Templates {

	//LibCommon
	import from LibCommon_BasicTypesAndValues all;
	import from LibCommon_DataStrings all;
@@ -20,7 +19,6 @@
	import from LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues all;

	group Destination_Unreachable {

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
@@ -34,17 +32,18 @@
			template Ipv6Address p_dst,
			UInt8 p_hopLimit,
			UInt8 p_icmpCode,
			template octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hopLimit, p_src, p_dst),
			template octetstring p_data) := {
			ipv6Hdr :=
				m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hopLimit, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { destinationUnreachableMsg := {
			ipv6Payload := {
				destinationUnreachableMsg := {
					icmpType := c_destinationUnreachableMsg,
					icmpCode := p_icmpCode,
					checksum := c_2ZeroBytes,
					unused := '00000000'O,
				data := p_data
			}}
					data := p_data }
			}
		}

		/*
@@ -56,23 +55,20 @@
		template DestinationUnreachable mw_destUnreachable_code(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			template UInt8 p_icmpCode
		) := {
			template UInt8 p_icmpCode) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := *,
			ipv6Payload := { destinationUnreachableMsg := {
			ipv6Payload := {
				destinationUnreachableMsg := {
					icmpType := c_destinationUnreachableMsg,
					icmpCode := p_icmpCode,
					checksum := ?,
					unused := '00000000'O,
				data := *
			}}
					data := * }
			}
		}

	} // end group Destination_Unreachable

	group ICMPv6_Echo_Reply {

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
@@ -81,21 +77,23 @@
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		 *	@param  p_data data in ICMPv6 echo reply.
		*/
		template EchoReply m_echoReply_noExtHdr_data (	template Ipv6Address p_src,
		template EchoReply m_echoReply_noExtHdr_data(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 p_id,
			UInt16 p_seqNr,
			template octetstring p_data) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { echoReplyMsg := {
			ipv6Payload := {
				echoReplyMsg := {
					icmpType := c_echoReplyMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= p_data
			}}
					data := p_data }
			}
		}

		/*
@@ -105,20 +103,22 @@
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoReply m_echoReply_noExtHdr_noData (	template Ipv6Address p_src,
		template EchoReply m_echoReply_noExtHdr_noData(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 p_id,
			UInt16 p_seqNr) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { echoReplyMsg := {
			ipv6Payload := {
				echoReplyMsg := {
					icmpType := c_echoReplyMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= omit
			}}
					data := omit }
			}
		}

		/*
@@ -126,31 +126,34 @@
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		*/
		template EchoReply mw_echoReply (	template Ipv6Address p_src,
		template EchoReply mw_echoReply(
			template Ipv6Address p_src,
			template Ipv6Address p_dst) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := *,
			ipv6Payload := { echoReplyMsg := {
			ipv6Payload := {
				echoReplyMsg := {
					icmpType := c_echoReplyMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := ?,
					sequenceNumber := ?,
				data:= *
			}}
					data := * }
			}
		}

		template EchoReply mw_echoReply_any := {
			ipv6Hdr := mw_ipHdr_nextHdr(c_icmpHdr),
			extHdrList := *,
			ipv6Payload := { echoReplyMsg := {
			ipv6Payload := {
				echoReplyMsg := {
					icmpType := c_echoReplyMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := ?,
					sequenceNumber := ?,
				data:= *
			}}
					data := * }
			}
		}

		/*
@@ -158,18 +161,20 @@
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		*/
		template EchoReply mw_echoReply_Fragment (	template Ipv6Address p_src,
		template EchoReply mw_echoReply_Fragment(
			template Ipv6Address p_src,
			template Ipv6Address p_dst) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_fragHdr, p_src, p_dst),
			extHdrList := *,
			ipv6Payload := { echoReplyMsg := {
			ipv6Payload := {
				echoReplyMsg := {
					icmpType := c_echoReplyMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := ?,
					sequenceNumber := ?,
				data:= *
			}}
					data := * }
			}
		}

		/*
@@ -187,18 +192,18 @@
			UInt8 p_nextHeader,
			template ExtensionHeaderList p_extHdrList,
			UInt16 p_id,
			UInt16	p_seqNr
		) := {
			UInt16 p_seqNr) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			ipv6Payload := { echoReplyMsg := {
			ipv6Payload := {
				echoReplyMsg := {
					icmpType := c_echoReplyMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= omit
			}}
					data := omit }
			}
		}

		/*
@@ -218,18 +223,18 @@
			template ExtensionHeaderList p_extHdrList,
			UInt16 p_id,
			UInt16 p_seqNr,
			template octetstring p_data
		) := {
			template octetstring p_data) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			ipv6Payload := { echoReplyMsg := {
			ipv6Payload := {
				echoReplyMsg := {
					icmpType := c_echoReplyMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= p_data
			}}
					data := p_data }
			}
		}

		/*
@@ -240,21 +245,23 @@
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		 *	@param  p_data data in ICMPv6 echo reply.
		*/
		template EchoReply mw_echoReply_noExtHdr_data (	template Ipv6Address p_src,
		template EchoReply mw_echoReply_noExtHdr_data(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 p_id,
			UInt16 p_seqNr,
			template octetstring p_data) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { echoReplyMsg := {
			ipv6Payload := {
				echoReplyMsg := {
					icmpType := c_echoReplyMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= p_data
			}}
					data := p_data }
			}
		}

		/*
@@ -268,18 +275,23 @@
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_hopLimit,
			octetstring p_data
		) := {
			ipv6Hdr := mw_ipHdr_nextHdr_hop_srcDst ( c_icmpHdr, p_hopLimit, p_src, p_dst ),
			octetstring p_data) := {
			ipv6Hdr :=
				mw_ipHdr_nextHdr_hop_srcDst(
					c_icmpHdr,
					p_hopLimit,
					p_src,
					p_dst),
			extHdrList := *,
			ipv6Payload := { echoReplyMsg := {
			ipv6Payload := {
				echoReplyMsg := {
					icmpType := c_echoReplyMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := ?,
					sequenceNumber := ?,
				data:= p_data
			}}
					data := p_data }
			}
		}

		/*
@@ -289,26 +301,25 @@
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoReply mw_echoReply_noExtHdr_noData (	template Ipv6Address p_src,
		template EchoReply mw_echoReply_noExtHdr_noData(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 p_id,
			UInt16 p_seqNr) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { echoReplyMsg := {
			ipv6Payload := {
				echoReplyMsg := {
					icmpType := c_echoReplyMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= omit
			}}
					data := omit }
			}
		}

	} // end group ICMPv6_Echo_Reply

	group ICMPv6_Echo_Request {

		/*
		 *	@param  p_nextHeader Next header identifier value to be used.
		 *	@param  p_extHdrList List of extension header in the packet.
@@ -326,18 +337,18 @@
			template Ipv6Address p_dst,
			UInt16 p_id,
			UInt16 p_seqNr,
			octetstring p_data
		) := {
			octetstring p_data) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			ipv6Payload := { echoRequestMsg := {
			ipv6Payload := {
				echoRequestMsg := {
					icmpType := c_echoRequestMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= p_data
			}}
					data := p_data }
			}
		}

		/*
@@ -355,18 +366,18 @@
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 p_id,
			UInt16 	p_seqNr
		) := {
			UInt16 p_seqNr) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			ipv6Payload := { echoRequestMsg := {
			ipv6Payload := {
				echoRequestMsg := {
					icmpType := c_echoRequestMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= omit
			}}
					data := omit }
			}
		}

		/*
@@ -386,18 +397,19 @@
			UInt8 p_nextHeader,
			template ExtensionHeaderList p_extHdrList,
			UInt16 p_id,
			UInt16 	p_seqNr
		) := {
			ipv6Hdr := m_ipHdr_nextHdr_hop_srcDst(p_nextHeader, p_hops, p_src, p_dst),
			UInt16 p_seqNr) := {
			ipv6Hdr :=
				m_ipHdr_nextHdr_hop_srcDst(p_nextHeader, p_hops, p_src, p_dst),
			extHdrList := p_extHdrList,
			ipv6Payload := { echoRequestMsg := {
			ipv6Payload := {
				echoRequestMsg := {
					icmpType := c_echoRequestMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= omit
			}}
					data := omit }
			}
		}

		/*
@@ -413,18 +425,18 @@
			template Ipv6Address p_dst,
			UInt16 p_id,
			UInt16 p_seqNr,
			octetstring p_data
		) := {
			octetstring p_data) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { echoRequestMsg := {
			ipv6Payload := {
				echoRequestMsg := {
					icmpType := c_echoRequestMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= p_data
			}}
					data := p_data }
			}
		}

		/*
@@ -442,18 +454,19 @@
			UInt8 p_hops,
			UInt16 p_id,
			UInt16 p_seqNr,
			octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hops, p_src, p_dst),
			octetstring p_data) := {
			ipv6Hdr :=
				m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hops, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { echoRequestMsg := {
			ipv6Payload := {
				echoRequestMsg := {
					icmpType := c_echoRequestMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= p_data
			}}
					data := p_data }
			}
		}

		/*
@@ -463,20 +476,22 @@
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoRequest m_echoRequest_noExtHdr_noData (	template Ipv6Address p_src,
		template EchoRequest m_echoRequest_noExtHdr_noData(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 p_id,
			UInt16 p_seqNr) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { echoRequestMsg := {
			ipv6Payload := {
				echoRequestMsg := {
					icmpType := c_echoRequestMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= omit
			}}
					data := omit }
			}
		}

		/*
@@ -492,18 +507,19 @@
			template Ipv6Address p_dst,
			in UInt8 p_hops,
			UInt16 p_id,
			UInt16	p_seqNr
		) := {
			ipv6Hdr := m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hops, p_src, p_dst),
			UInt16 p_seqNr) := {
			ipv6Hdr :=
				m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hops, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { echoRequestMsg := {
			ipv6Payload := {
				echoRequestMsg := {
					icmpType := c_echoRequestMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= omit
			}}
					data := omit }
			}
		}

		/*
@@ -511,18 +527,20 @@
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		*/
		template EchoRequest mw_echoRequest (	template Ipv6Address p_src,
		template EchoRequest mw_echoRequest(
			template Ipv6Address p_src,
			template Ipv6Address p_dst) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := *,
			ipv6Payload := { echoRequestMsg := {
			ipv6Payload := {
				echoRequestMsg := {
					icmpType := c_echoRequestMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := ?,
					sequenceNumber := ?,
				data:= *
			}}
					data := * }
			}
		}

		/*
@@ -540,20 +558,19 @@
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 p_id,
			UInt16 	p_seqNr
		) := {
			UInt16 p_seqNr) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			ipv6Payload := { echoRequestMsg := {
			ipv6Payload := {
				echoRequestMsg := {
					icmpType := c_echoRequestMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= omit
			}}
					data := omit }
			}
		}


		/*
		 *	@param  p_src Binary IPv6 address associated with the
@@ -562,26 +579,25 @@
		 *	@param  p_id ICMPv6 echo identifier.
		 *	@param  p_seqNr ICMPv6 echo sequence number.
		*/
		template EchoRequest mw_echoRequest_noExtHdr_noData (	template Ipv6Address p_src,
		template EchoRequest mw_echoRequest_noExtHdr_noData(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt16 p_id,
			UInt16 p_seqNr) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { echoRequestMsg := {
			ipv6Payload := {
				echoRequestMsg := {
					icmpType := c_echoRequestMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := p_id,
					sequenceNumber := p_seqNr,
				data:= omit
			}}
					data := omit }
			}
		}

	} // end group ICMPv6_Echo_Request

	group ICMPv6_Echo_Request_Esp {
		
		/*
		 *	@param  p_nextHeader Next header identifier value to be used.
		 *	@param  p_src Binary IPv6 address associated with the
@@ -593,17 +609,13 @@
			UInt8 p_nextHeader,
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			template ExtensionHeaderList p_extHdrList
		) := {
			template ExtensionHeaderList p_extHdrList) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			ipv6Payload := omit
		}
		
	} //end group ICMPv6_Echo_Request_Esp

	group ICMPv6_Echo_Request_Ah {
		
		/*
		 *	@param  p_nextHeader Next header identifier value to be used.
		 *	@param  p_src Binary IPv6 address associated with the
@@ -615,21 +627,75 @@
			UInt8 p_nextHeader,
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			template ExtensionHeaderList p_extHdrList
		) := {
			template ExtensionHeaderList p_extHdrList) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			ipv6Payload := omit
		}

	}//end group ICMPv6_Echo_Request_Ah
		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		*/
		template EchoRequestWithAh mw_echoRequest_ah(
			template Ipv6Address p_src,
			template Ipv6Address p_dst) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := ?,
			ipv6Payload := {
				echoRequestMsg := {
					icmpType := c_echoRequestMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := ?,
					sequenceNumber := ?,
					data := * }
			}
		}

	group ICMPv6_EchoRequestMsg {
		/*
		 *	@param  p_nextHeader 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.
		 *	@param  p_extHdrList List of extension header in the packet.
		*/
		template EchoReplyWithAh m_echoReply_ah(
			UInt8 p_nextHeader,
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			template ExtensionHeaderList p_extHdrList) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			ipv6Payload := omit
		}

		template EchoRequestMsg m_echoRequestMsg (
			UInt16 	p_id,
			UInt16 	p_seqNr
		) := {
		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
		 *	@param  p_dst Binary IPv6 address associated with NUT.
		*/
		template EchoReplyWithAh mw_echoReply_ah(
			template Ipv6Address p_src,
			template Ipv6Address p_dst) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := ?,
			ipv6Payload := {
				echoReplyMsg := {
					icmpType := c_echoReplyMsg,
					icmpCode := c_icmpCode0,
					checksum := ?,
					identifier := ?,
					sequenceNumber := ?,
					data := * }
			}
		}


	} //end group ICMPv6_Echo_Request_Ah
	group ICMPv6_EchoRequestMsg {
		template EchoRequestMsg m_echoRequestMsg(UInt16 p_id, UInt16 p_seqNr) := {
			icmpType := c_echoRequestMsg,
			icmpCode := c_icmpCode0,
			checksum := c_2ZeroBytes,
@@ -637,12 +703,8 @@
			sequenceNumber := p_seqNr,
			data := omit
		}
		
	} //end group ICMPv6_EchoRequestPayload


	group ICMPv6_Other {

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
@@ -650,24 +712,23 @@
		 *	@param  p_icmpType ICMPv6 type to be used
		 *	@param  p_icmpCode ICMPv6 code to be used
		*/
		template OtherIcmpv6 m_otherIcmpv6_noExtHdr_noData (template Ipv6Address p_src,
		template OtherIcmpv6 m_otherIcmpv6_noExtHdr_noData(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_icmpType,
			UInt8 p_icmpCode) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { otherIcmpv6Msg := {
			ipv6Payload := {
				otherIcmpv6Msg := {
					icmpType := p_icmpType,
					icmpCode := p_icmpCode,
					checksum := c_2ZeroBytes,
				data := omit
			}}
					data := omit }
			}
		}

	} // end group ICMPv6_Other

	group Packet_Too_Big {

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
@@ -678,17 +739,18 @@
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_hopLimit,
			octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hopLimit, p_src, p_dst),
			octetstring p_data) := {
			ipv6Hdr :=
				m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hopLimit, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { packetTooBigMsg := {
			ipv6Payload := {
				packetTooBigMsg := {
					icmpType := c_packetTooBigMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					mtu := c_mtu1280,
				data := p_data
			}}
					data := p_data }
			}
		}

		/*
@@ -700,17 +762,17 @@
		template PacketTooBig m_packetTooBig_noExtHdr_mtu(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt32 p_mtu
		) := {
			UInt32 p_mtu) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { packetTooBigMsg := {
			ipv6Payload := {
				packetTooBigMsg := {
					icmpType := c_packetTooBigMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					mtu := p_mtu,
				data := omit
			}}
					data := omit }
			}
		}

		/*
@@ -723,19 +785,18 @@
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt32 p_mtu,
			octetstring p_data
		) := {
			octetstring p_data) := {
			ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { packetTooBigMsg := {
			ipv6Payload := {
				packetTooBigMsg := {
					icmpType := c_packetTooBigMsg,
					icmpCode := c_icmpCode0,
					checksum := c_2ZeroBytes,
					mtu := p_mtu,
				data := p_data
			}}
					data := p_data }
			}
		}


		/*
		 *	@param  p_src Binary IPv6 address associated with the
@@ -746,23 +807,20 @@
		template PacketTooBig mw_packetTooBig_noExtHdr_code(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_icmpCode
		) := {
			UInt8 p_icmpCode) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { packetTooBigMsg := {
			ipv6Payload := {
				packetTooBigMsg := {
					icmpType := c_packetTooBigMsg,
					icmpCode := p_icmpCode,
					checksum := ?,
					mtu := ?,
				data := *
			}}
					data := * }
			}
		}

	} // end group Packet_Too_Big

	group ICMPv6_Parameter_Problem {

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
@@ -777,17 +835,18 @@
			UInt8 p_hopLimit,
			UInt8 p_icmpCode,
			UInt32 p_pointer,
			octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hopLimit, p_src, p_dst),
			octetstring p_data) := {
			ipv6Hdr :=
				m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hopLimit, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { parameterProblemMsg := {
			ipv6Payload := {
				parameterProblemMsg := {
					icmpType := c_parameterProblemMsg,
					icmpCode := p_icmpCode,
					checksum := c_2ZeroBytes,
					pointer := p_pointer,
				data := p_data
			}}
					data := p_data }
			}
		}

		/*
@@ -797,17 +856,17 @@
		*/
		template ParameterProblem mw_parameterProblem(
			template Ipv6Address p_src,
			template Ipv6Address p_dst
		) := {
			template Ipv6Address p_dst) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(?, p_src, p_dst),
			extHdrList := *,
			ipv6Payload := { parameterProblemMsg := {
			ipv6Payload := {
				parameterProblemMsg := {
					icmpType := c_parameterProblemMsg,
					icmpCode := ?,
					checksum := ?,
					pointer := ?,
				data := *
			}}
					data := * }
			}
		}

		/*
@@ -821,17 +880,17 @@
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			UInt8 p_icmpCode,
			UInt32 p_pointer
		) := {
			UInt32 p_pointer) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(?, p_src, p_dst),
			extHdrList := *,
			ipv6Payload := { parameterProblemMsg := {
			ipv6Payload := {
				parameterProblemMsg := {
					icmpType := c_parameterProblemMsg,
					icmpCode := p_icmpCode,
					checksum := ?,
					pointer := p_pointer,
				data := *
			}}
					data := * }
			}
		}

		/*
@@ -849,24 +908,20 @@
			template Ipv6Address p_dst,
			template ExtensionHeaderList p_extHdrList,
			UInt8 p_icmpCode,
			UInt32 p_pointer
		) := {
			UInt32 p_pointer) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst),
			extHdrList := p_extHdrList,
			ipv6Payload := { parameterProblemMsg := {
			ipv6Payload := {
				parameterProblemMsg := {
					icmpType := c_parameterProblemMsg,
					icmpCode := p_icmpCode,
					checksum := ?,
					pointer := p_pointer,
				data := *
			}}
					data := * }
			}
		}


	} // end group ICMPv6_Parameter_Problem

	group ICMPv6_Time_Exceeded {

		/*
		 *	@param  p_src Binary IPv6 address associated with the
		 *          test component.
@@ -879,17 +934,18 @@
			template Ipv6Address p_dst,
			UInt8 p_hopLimit,
			UInt8 p_icmpCode,
			octetstring p_data
		) := {
			ipv6Hdr := m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hopLimit, p_src, p_dst),
			octetstring p_data) := {
			ipv6Hdr :=
				m_ipHdr_nextHdr_hop_srcDst(c_icmpHdr, p_hopLimit, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { timeExceededMsg := {
			ipv6Payload := {
				timeExceededMsg := {
					icmpType := c_timeExceededMsg,
					icmpCode := p_icmpCode,
					checksum := c_2ZeroBytes,
					unused := 0,
				data := p_data
			}}
					data := p_data }
			}
		}

		/*
@@ -898,20 +954,20 @@
		 *	@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 TimeExceeded mw_timeExceeded_noExtHdr(
			template Ipv6Address p_src,
			template Ipv6Address p_dst,
			template UInt8 p_icmpCode) := {
			ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst),
			extHdrList := omit,
			ipv6Payload := { timeExceededMsg := {
			ipv6Payload := {
				timeExceededMsg := {
					icmpType := c_timeExceededMsg,
					icmpCode := p_icmpCode,
					checksum := ?,
					unused := ?,
				data := *
			}}
					data := * }
			}
		}

	} // end group ICMPv6_Time_Exceeded

} // end module LibIpv6_Rfc2463Icmpv6_Templates