Newer
Older
/*
* @author STF 276
* @version $Id$
* @desc This module specifies common template definitions
* to specify ICMPv6 packets
*
*/
//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_ModuleParameters all;
import from LibIpv6_Rfc2463Icmpv6_TypesAndValues all;
import from LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues all;
/*
* @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.
template DestinationUnreachable mw_destUnreachable_code(
template Ipv6Address p_dst,
template UInt8 p_icmpCode) := {
extHdrList := *,
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) := {
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) := {
extHdrList := omit,
ipv6Payload := {
echoReplyMsg := {
icmpType := c_echoReplyMsg,
icmpCode := c_icmpCode0,
checksum := c_2ZeroBytes,
identifier := p_id,
sequenceNumber := p_seqNr,
data := omit }
}
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
}
/*
* @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) := {
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 := * }
}
/*
* @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) := {
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 Ipv6Address p_src,
template Ipv6Address p_dst,
UInt8 p_nextHeader,
template ExtensionHeaderList p_extHdrList,
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.
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) := {
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) := {
extHdrList := omit,
ipv6Payload := {
echoReplyMsg := {
icmpType := c_echoReplyMsg,
icmpCode := c_icmpCode0,
checksum := ?,
identifier := p_id,
sequenceNumber := p_seqNr,
data := omit }
}
}
} // end group ICMPv6_Echo_Reply
/*
* @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.
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,
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) := {
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.
* @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,
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) := {
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_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) := {
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,
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) := {
extHdrList := omit,
ipv6Payload := {
echoRequestMsg := {
icmpType := c_echoRequestMsg,
icmpCode := c_icmpCode0,
checksum := ?,
identifier := p_id,
sequenceNumber := p_seqNr,
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
* test component.
* @param p_dst Binary IPv6 address associated with NUT.
* @param p_extHdrList List of extension header in the packet.
*/
template Ipv6Address p_dst,
template ExtensionHeaderList p_extHdrList) := {
ipv6Hdr := m_ipHdr_nextHdr_srcDst(p_nextHeader, p_src, p_dst),
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
}
/*
* @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) := {
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.
template PacketTooBig m_packetTooBig_noExtHdr_hop(
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.
template PacketTooBig m_packetTooBig_noExtHdr_mtu(
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,
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(
extHdrList := omit,
ipv6Payload := {
packetTooBigMsg := {
icmpType := c_packetTooBigMsg,
icmpCode := p_icmpCode,
checksum := ?,
mtu := ?,
data := * }
}
}
} // end 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_icmpCode ICMPv6 type to be used
* @param p_pointer ICMPv6 pointer to be used
*/
template ParameterProblem m_parameterProblem_noExtHdr_hop(
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.
*/
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.
* @param p_icmpCode ICMPv6 code to be used
* @param p_pointer ICMPv6 pointer to be used
template ParameterProblem mw_parameterProblem_code_pointer(
extHdrList := *,
ipv6Payload := {
parameterProblemMsg := {
icmpType := c_parameterProblemMsg,
icmpCode := p_icmpCode,
checksum := ?,
pointer := p_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,
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(
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_icmpCode ICMPv6 code to be used
*/
template TimeExceeded mw_timeExceeded_noExtHdr(
template Ipv6Address p_src,
template Ipv6Address p_dst,
template UInt8 p_icmpCode) := {
extHdrList := omit,
ipv6Payload := {
timeExceededMsg := {
icmpType := c_timeExceededMsg,
icmpCode := p_icmpCode,
checksum := ?,
unused := ?,
data := * }
}
}
} // end group ICMPv6_Time_Exceeded
} // end module LibIpv6_Rfc2463Icmpv6_Templates