9#ifndef ICMPV4_L4_PROTOCOL_H 
   10#define ICMPV4_L4_PROTOCOL_H 
   15#include "ns3/ipv4-address.h" 
  176                         uint16_t nextHopMtu);
 
  215                 const uint8_t payload[8]);
 
 
void SetDownTarget6(IpL4Protocol::DownTargetCallback6 cb) override
This method allows a caller to set the current down target callback set for this L4 protocol (IPv6 ca...
 
~Icmpv4L4Protocol() override
 
Ptr< Node > m_node
the node this protocol is associated with
 
void SendTimeExceededTtl(Ipv4Header header, Ptr< const Packet > orgData, bool isFragment)
Send a Time Exceeded ICMP error.
 
void SetDownTarget(IpL4Protocol::DownTargetCallback cb) override
This method allows a caller to set the current down target callback set for this L4 protocol (IPv4 ca...
 
void HandleEcho(Ptr< Packet > p, Icmpv4Header header, Ipv4Address source, Ipv4Address destination, uint8_t tos)
Handles an incoming ICMP Echo packet.
 
void SendDestUnreach(Ipv4Header header, Ptr< const Packet > orgData, uint8_t code, uint16_t nextHopMtu)
Send an ICMP Destination Unreachable packet.
 
static constexpr uint8_t PROT_NUMBER
ICMP protocol number (see RFC 792).
 
void DoDispose() override
Destructor implementation.
 
IpL4Protocol::DownTargetCallback6 GetDownTarget6() const override
This method allows a caller to get the current down target callback set for this L4 protocol (IPv6 ca...
 
static TypeId GetTypeId()
Get the type ID.
 
void SetNode(Ptr< Node > node)
Set the node the protocol is associated with.
 
void SendDestUnreachPort(Ipv4Header header, Ptr< const Packet > orgData)
Send a Time Exceeded ICMP error.
 
static uint16_t GetStaticProtocolNumber()
Get the protocol number.
 
IpL4Protocol::RxStatus Receive(Ptr< Packet > p, const Ipv4Header &header, Ptr< Ipv4Interface > incomingInterface) override
Receive method.
 
IpL4Protocol::DownTargetCallback GetDownTarget() const override
This method allows a caller to get the current down target callback set for this L4 protocol (IPv4 ca...
 
void NotifyNewAggregate() override
Notify all Objects aggregated to this one of a new Object being aggregated.
 
void HandleTimeExceeded(Ptr< Packet > p, Icmpv4Header icmp, Ipv4Address source, Ipv4Address destination)
Handles an incoming ICMP Time Exceeded packet.
 
IpL4Protocol::DownTargetCallback m_downTarget
callback to Ipv4::Send
 
void SendDestUnreachFragNeeded(Ipv4Header header, Ptr< const Packet > orgData, uint16_t nextHopMtu)
Send a Destination Unreachable - Fragmentation needed ICMP error.
 
void SendMessage(Ptr< Packet > packet, Ipv4Address dest, uint8_t type, uint8_t code)
Send a generic ICMP packet.
 
void HandleDestUnreach(Ptr< Packet > p, Icmpv4Header header, Ipv4Address source, Ipv4Address destination)
Handles an incoming ICMP Destination Unreachable packet.
 
int GetProtocolNumber() const override
Get the protocol number.
 
void Forward(Ipv4Address source, Icmpv4Header icmp, uint32_t info, Ipv4Header ipHeader, const uint8_t payload[8])
Forward the message to an L4 protocol.
 
L4 Protocol abstract base class.
 
Callback< void, Ptr< Packet >, Ipv4Address, Ipv4Address, uint8_t, Ptr< Ipv4Route > > DownTargetCallback
callback to send packets over IPv4
 
Callback< void, Ptr< Packet >, Ipv6Address, Ipv6Address, uint8_t, Ptr< Ipv6Route > > DownTargetCallback6
callback to send packets over IPv6
 
Ipv4 addresses are stored in host order in this class.
 
The IPv4 representation of a network interface.
 
IPv4 route cache entry (similar to Linux struct rtable).
 
Smart pointer class similar to boost::intrusive_ptr.
 
a unique identifier for an interface.
 
Every class exported by the ns3 library is enclosed in the ns3 namespace.