/* * @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_Interface_TypesAndValues all; import from LibIpv6_Interface_Templates all; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_ExternalFunctions all; import from LibIpv6_ModuleParameters all; import from LibIpv6_Rfc2463Icmpv6_TypesAndValues all; import from LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues all; 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_noExtHdr_hop( template Ipv6Address p_src, 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), extHdrList := omit, ipv6Payload := { destinationUnreachableMsg := { icmpType := c_destinationUnreachableMsg, 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 * @param p_data data in ICMPv6 Destination Unreachable message. */ template DestinationUnreachable m_destUnreachable_noExtHdr( template Ipv6Address p_src, template Ipv6Address p_dst, UInt8 p_icmpCode, octetstring p_data) := { ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { destinationUnreachableMsg := { icmpType := c_destinationUnreachableMsg, 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_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { destinationUnreachableMsg := { icmpType := c_destinationUnreachableMsg, icmpCode := p_icmpCode, checksum := ?, unused := '00000000'O, data := * } } } } // end group Destination_Unreachable group ICMPv6_Echo_Reply { /* * @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_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { echoReplyMsg := { icmpType := c_echoReplyMsg, 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 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 := { icmpType := c_echoReplyMsg, 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_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. * @param p_id ICMPv6 echo identifier. * @param p_seqNr ICMPv6 echo sequence number. */ template EchoReply m_echoReply_extHdr_noData( UInt8 p_nextHeader, template Ipv6Address p_src, template Ipv6Address p_dst, template ExtensionHeaderList p_extHdrList, UInt16 p_id, UInt16 p_seqNr) := { ipv6Hdr := m_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst), extHdrList := p_extHdrList, ipv6Payload := { echoReplyMsg := { icmpType := c_echoReplyMsg, 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. */ 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 := { icmpType := c_echoReplyMsg, icmpCode := c_icmpCode0, checksum := ?, identifier := ?, sequenceNumber := ?, data := * } } } template EchoReply mw_echoReply_any := { ipv6Hdr := mw_ipHdr_nextHdr(c_icmpHdr), extHdrList := *, ipv6Payload := { echoReplyMsg := { icmpType := c_echoReplyMsg, icmpCode := c_icmpCode0, checksum := ?, identifier := ?, sequenceNumber := ?, data := * } } } template EchoReply mw_echoReply_AHHeaders := { ipv6Hdr := mw_ipHdr_nextHdr(c_authHdr), extHdrList := *, ipv6Payload := { echoReplyMsg := { icmpType := c_echoReplyMsg, 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. */ 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 := { icmpType := c_echoReplyMsg, 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_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. */ template EchoReply mw_echoReply_extHdr_noData( template Ipv6Address p_src, template Ipv6Address p_dst, UInt8 p_nextHeader, template ExtensionHeaderList p_extHdrList, UInt16 p_id, UInt16 p_seqNr) := { ipv6Hdr := mw_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst), extHdrList := p_extHdrList, ipv6Payload := { echoReplyMsg := { icmpType := c_echoReplyMsg, 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_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_nextHdr_srcDst(p_nextHeader, p_src, p_dst), extHdrList := p_extHdrList, ipv6Payload := { echoReplyMsg := { icmpType := c_echoReplyMsg, 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_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_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { echoReplyMsg := { icmpType := c_echoReplyMsg, 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_hopLimit Number of hops to be used in IPv6 header. * @param p_data data in ICMPv6 echo reply. */ template EchoReply mw_echoReply_noExtHdr_data_hop( 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), extHdrList := *, ipv6Payload := { echoReplyMsg := { icmpType := c_echoReplyMsg, icmpCode := c_icmpCode0, checksum := ?, identifier := ?, sequenceNumber := ?, 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 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 := { icmpType := c_echoReplyMsg, icmpCode := c_icmpCode0, checksum := ?, identifier := p_id, sequenceNumber := p_seqNr, 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. * @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_nextHdr_srcDst(p_nextHeader, p_src, p_dst), extHdrList := p_extHdrList, ipv6Payload := { echoRequestMsg := { icmpType := c_echoRequestMsg, icmpCode := c_icmpCode0, checksum := c_2ZeroBytes, identifier := p_id, sequenceNumber := p_seqNr, data := p_data } } } /* * @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_nextHdr_srcDst(p_nextHeader, p_src, p_dst), extHdrList := p_extHdrList, ipv6Payload := { echoRequestMsg := { icmpType := c_echoRequestMsg, 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_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_id ICMPv6 echo identifier. * @param p_seqNr ICMPv6 echo sequence number. */ template EchoRequest m_echoRequest_extHdr_noData_hop( template Ipv6Address p_src, template Ipv6Address p_dst, UInt8 p_hops, 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), extHdrList := p_extHdrList, ipv6Payload := { echoRequestMsg := { icmpType := c_echoRequestMsg, 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 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_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { echoRequestMsg := { icmpType := c_echoRequestMsg, 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_hops Hop Limit value to be used. * @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_hop( template Ipv6Address p_src, template Ipv6Address p_dst, 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), extHdrList := omit, ipv6Payload := { echoRequestMsg := { icmpType := c_echoRequestMsg, 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 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 := { icmpType := c_echoRequestMsg, 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_hops Number of hops to be used in IPv6 header. * @param p_id ICMPv6 echo identifier. * @param p_seqNr ICMPv6 echo sequence number. */ template EchoRequest m_echoRequest_noExtHdr_noData_hop( template Ipv6Address p_src, 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), extHdrList := omit, ipv6Payload := { echoRequestMsg := { icmpType := c_echoRequestMsg, 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. */ 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 := { icmpType := c_echoRequestMsg, icmpCode := c_icmpCode0, checksum := ?, identifier := ?, sequenceNumber := ?, data := * } } } /* * @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_nextHdr_srcDst(p_nextHeader, p_src, p_dst), extHdrList := p_extHdrList, ipv6Payload := { echoRequestMsg := { icmpType := c_echoRequestMsg, 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 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 := { icmpType := c_echoRequestMsg, 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_moreFlag indicates whether there are more segment or not */ template EchoRequest mw_echoRequest_extHdr_fragment( template Ipv6Address p_src, template Ipv6Address p_dst, UInt1 p_moreFlag) := { ipv6Hdr := mw_ipHdr_nextHdr_fragment(p_src, p_dst), extHdrList := mw_extHdrList_1Elem_superSet(mw_extHdr_fragmentHeader(p_moreFlag)), ipv6Payload := { echoRequestMsg := { icmpType := c_echoRequestMsg, 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. */ template EchoRequest mw_echoRequest_extHdr_noFragment( template Ipv6Address p_src, template Ipv6Address p_dst) := { ipv6Hdr := mw_ipHdr_nextHdr_noFragment(p_src, p_dst), extHdrList := omit, ipv6Payload := { echoRequestMsg := { icmpType := c_echoRequestMsg, icmpCode := c_icmpCode0, checksum := ?, identifier := ?, sequenceNumber := ?, data := omit } } } } // end group ICMPv6_Echo_Request group ICMPv6_EchoReplyMsg { template EchoReplyMsg m_echoReplyMsg(UInt16 p_id, UInt16 p_seqNr) := { icmpType := c_echoReplyMsg, icmpCode := c_icmpCode0, checksum := c_2ZeroBytes, identifier := p_id, sequenceNumber := p_seqNr, data := omit } template EchoReplyMsg mw_echoReplyMsg(UInt16 p_id, UInt16 p_seqNr) := { icmpType := c_echoReplyMsg, icmpCode := c_icmpCode0, checksum := ?, identifier := p_id, sequenceNumber := p_seqNr, data := omit } } //end group ICMPv6_EchoReplyMsg group ICMPv6_EchoRequestMsg { template EchoRequestMsg m_echoRequestMsg(UInt16 p_id, UInt16 p_seqNr) := { icmpType := c_echoRequestMsg, icmpCode := c_icmpCode0, checksum := c_2ZeroBytes, identifier := p_id, sequenceNumber := p_seqNr, data := omit } template EchoRequestMsg mw_echoRequestMsg(UInt16 p_id, UInt16 p_seqNr) := { icmpType := c_echoRequestMsg, icmpCode := c_icmpCode0, checksum := ?, identifier := p_id, sequenceNumber := p_seqNr, data := omit } } //end group ICMPv6_EchoRequestMsg group ICMPv6_Echo_Request_Esp { /* * @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 EchoRequest m_echoRequest_esp( 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 } } //end group ICMPv6_Echo_Request_Esp group ICMPv6_Echo_Reply_Esp { /* * @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 EchoReply mw_echoReply_esp( UInt8 p_nextHeader, template Ipv6Address p_src, template Ipv6Address p_dst, template ExtensionHeaderList p_extHdrList) := { ipv6Hdr := mw_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst), extHdrList := p_extHdrList, ipv6Payload := omit } /* * @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. */ template EchoReply mw_echoReply_anyEsp( UInt8 p_nextHeader) := { ipv6Hdr := mw_ipHdr_nextHdr(p_nextHeader), extHdrList := *, ipv6Payload := omit } } //end group ICMPv6_Echo_Reply_Esp 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 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 := { icmpType := p_icmpType, icmpCode := p_icmpCode, checksum := c_2ZeroBytes, 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 { /* * @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. */ template PacketTooBig m_packetTooBig_noExtHdr_hop( 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), extHdrList := omit, ipv6Payload := { packetTooBigMsg := { icmpType := c_packetTooBigMsg, 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_data data in ICMPv6 Destination Unreachable message. */ template PacketTooBig m_packetTooBig_noExtHdr( template Ipv6Address p_src, template Ipv6Address p_dst, octetstring p_data) := { ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { packetTooBigMsg := { icmpType := c_packetTooBigMsg, 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. */ template PacketTooBig m_packetTooBig_noExtHdr_mtu( template Ipv6Address p_src, template Ipv6Address p_dst, UInt32 p_mtu) := { ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { packetTooBigMsg := { icmpType := c_packetTooBigMsg, icmpCode := c_icmpCode0, checksum := c_2ZeroBytes, mtu := p_mtu, data := omit } } } /* * @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. */ template PacketTooBig m_packetTooBig_noExtHdr_mtu_data( template Ipv6Address p_src, template Ipv6Address p_dst, UInt32 p_mtu, octetstring p_data) := { ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { packetTooBigMsg := { icmpType := c_packetTooBigMsg, 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_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { packetTooBigMsg := { icmpType := c_packetTooBigMsg, icmpCode := p_icmpCode, checksum := ?, mtu := ?, data := * } } } } // end group Packet_Too_Big 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 */ template ParameterProblem m_parameterProblem_noExtHdr_hop( template Ipv6Address p_src, template Ipv6Address p_dst, 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), extHdrList := omit, ipv6Payload := { parameterProblemMsg := { icmpType := c_parameterProblemMsg, 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 type to be used * @param p_data data in ICMPv6 Destination Unreachable message. */ template ParameterProblem m_parameterProblem_noExtHdr( template Ipv6Address p_src, template Ipv6Address p_dst, UInt8 p_icmpCode, octetstring p_data) := { ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { parameterProblemMsg := { icmpType := c_parameterProblemMsg, icmpCode := p_icmpCode, checksum := c_2ZeroBytes, pointer := c_icmpPointer24, //arbitrary pointer value data := p_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_nextHdr_srcDst(?, p_src, p_dst), extHdrList := *, ipv6Payload := { parameterProblemMsg := { icmpType := c_parameterProblemMsg, icmpCode := ?, checksum := ?, 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_noExtHdr( template Ipv6Address p_src, template Ipv6Address p_dst) := { ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { parameterProblemMsg := { icmpType := c_parameterProblemMsg, icmpCode := ?, checksum := ?, pointer := ?, 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_nextHdr_srcDst(?, p_src, p_dst), extHdrList := *, ipv6Payload := { parameterProblemMsg := { icmpType := c_parameterProblemMsg, 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. * @param p_icmpCode ICMPv6 code to be used * @param p_pointer ICMPv6 pointer to be used */ template ParameterProblem mw_parameterProblem_code( template Ipv6Address p_src, template Ipv6Address p_dst, UInt8 p_icmpCode) := { ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { parameterProblemMsg := { icmpType := c_parameterProblemMsg, icmpCode := p_icmpCode, checksum := ?, pointer := ?, data := * } } } /* * @param p_nextHeader * @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_extHdrList * @param p_pointer ICMPv6 pointer to be used */ template ParameterProblem mw_parameterProblem_code_pointer_extHdr( UInt8 p_nextHeader, template Ipv6Address p_src, template Ipv6Address p_dst, template ExtensionHeaderList p_extHdrList, UInt8 p_icmpCode, UInt32 p_pointer) := { ipv6Hdr := mw_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst), extHdrList := p_extHdrList, ipv6Payload := { parameterProblemMsg := { icmpType := c_parameterProblemMsg, icmpCode := p_icmpCode, checksum := ?, pointer := p_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 */ template TimeExceeded m_timeExceeded_noExtHdr_hop( template Ipv6Address p_src, 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), extHdrList := omit, ipv6Payload := { timeExceededMsg := { icmpType := c_timeExceededMsg, 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_data data in ICMPv6 Destination Unreachable message. */ template TimeExceeded m_timeExceeded_noExtHdr( template Ipv6Address p_src, template Ipv6Address p_dst, octetstring p_data) := { ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { timeExceededMsg := { icmpType := c_timeExceededMsg, icmpCode := c_icmpCode0, 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_nextHdr_srcDst(c_icmpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { timeExceededMsg := { icmpType := c_timeExceededMsg, icmpCode := p_icmpCode, checksum := ?, unused := ?, data := * } } } } // end group ICMPv6_Time_Exceeded } // end module LibIpv6_Rfc2463Icmpv6_Templates