/* * @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; import from LibIpv6_Rfc2463Icmpv6_TypesAndValues all; import from LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues all; 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 } /* * @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 } /* * @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 } /* * @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. */ 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(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. */ 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_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, icmpType:= c_echoReply, 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, 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_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 { /* * @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 } /* * @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 { /* * @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 } /* * @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, template UInt8 p_icmpCode ) := { 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 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 } /* * @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 := * } } // 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 } /* * @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 } /* * @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 group ICMPv6_Other { /* * @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_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