A representation of an IPv6 endpoint/connection. More...
#include "ipv6-end-point.h"
Public Member Functions | |
Ipv6EndPoint (Ipv6Address addr, uint16_t port) | |
Constructor. More... | |
~Ipv6EndPoint () | |
void | BindToNetDevice (Ptr< NetDevice > netdevice) |
Bind a socket to specific device. More... | |
void | ForwardIcmp (Ipv6Address src, uint8_t ttl, uint8_t type, uint8_t code, uint32_t info) |
Forward the ICMP packet to the upper level. More... | |
void | ForwardUp (Ptr< Packet > p, Ipv6Header header, uint16_t port, Ptr< Ipv6Interface > incomingInterface) |
Forward the packet to the upper level. More... | |
Ptr< NetDevice > | GetBoundNetDevice () const |
Returns socket's bound netdevice, if any. More... | |
Ipv6Address | GetLocalAddress () const |
Get the local address. More... | |
uint16_t | GetLocalPort () const |
Get the local port. More... | |
Ipv6Address | GetPeerAddress () const |
Get the peer address. More... | |
uint16_t | GetPeerPort () const |
Get the peer port. More... | |
bool | IsRxEnabled () const |
Checks if the endpoint can receive packets. More... | |
void | SetDestroyCallback (Callback< void > callback) |
Set the default destroy callback. More... | |
void | SetIcmpCallback (Callback< void, Ipv6Address, uint8_t, uint8_t, uint8_t, uint32_t > callback) |
Set the ICMP callback. More... | |
void | SetLocalAddress (Ipv6Address addr) |
Set the local address. More... | |
void | SetLocalPort (uint16_t port) |
Set the local port. More... | |
void | SetPeer (Ipv6Address addr, uint16_t port) |
Set the peer information (address and port). More... | |
void | SetRxCallback (Callback< void, Ptr< Packet >, Ipv6Header, uint16_t, Ptr< Ipv6Interface >> callback) |
Set the reception callback. More... | |
void | SetRxEnabled (bool enabled) |
Enable or Disable the endpoint Rx capability. More... | |
Private Attributes | |
Ptr< NetDevice > | m_boundnetdevice |
The NetDevice the EndPoint is bound to (if any). More... | |
Callback< void > | m_destroyCallback |
The destroy callback. More... | |
Callback< void, Ipv6Address, uint8_t, uint8_t, uint8_t, uint32_t > | m_icmpCallback |
The ICMPv6 callback. More... | |
Ipv6Address | m_localAddr |
The local address. More... | |
uint16_t | m_localPort |
The local port. More... | |
Ipv6Address | m_peerAddr |
The peer address. More... | |
uint16_t | m_peerPort |
The peer port. More... | |
Callback< void, Ptr< Packet >, Ipv6Header, uint16_t, Ptr< Ipv6Interface > > | m_rxCallback |
The RX callback. More... | |
bool | m_rxEnabled |
true if the endpoint can receive packets. More... | |
A representation of an IPv6 endpoint/connection.
This class provides an Internet four-tuple (source and destination ports and addresses). These are used in the ns3::Ipv6EndPointDemux as targets of lookups. The class also has a callback for notification to higher layers that a packet from a lower layer was received. In the ns3 internet-stack, these notifications are automatically registered to be received by the corresponding socket.
Definition at line 50 of file ipv6-end-point.h.
ns3::Ipv6EndPoint::Ipv6EndPoint | ( | Ipv6Address | addr, |
uint16_t | port | ||
) |
Constructor.
addr | the IPv6 address |
port | the port |
Definition at line 31 of file ipv6-end-point.cc.
ns3::Ipv6EndPoint::~Ipv6EndPoint | ( | ) |
Definition at line 40 of file ipv6-end-point.cc.
References ns3::Callback< R, UArgs >::IsNull(), m_destroyCallback, m_icmpCallback, m_rxCallback, and ns3::Callback< R, UArgs >::Nullify().
Bind a socket to specific device.
This method corresponds to using setsockopt() SO_BINDTODEVICE of real network or BSD sockets. If set on a socket, this option will force packets to leave the bound device regardless of the device that IP routing would naturally choose. In the receive direction, only packets received from the bound interface will be delivered.
This option has no particular relationship to binding sockets to an address via Socket::Bind (). It is possible to bind sockets to a specific IP address on the bound interface by calling both Socket::Bind (address) and Socket::BindToNetDevice (device), but it is also possible to bind to mismatching device and address, even if the socket can not receive any packets as a result.
netdevice | Pointer to Netdevice of desired interface |
Definition at line 88 of file ipv6-end-point.cc.
References m_boundnetdevice.
Referenced by ns3::UdpSocketImpl::Bind(), ns3::UdpSocketImpl::Bind6(), ns3::TcpSocketBase::BindToNetDevice(), and ns3::UdpSocketImpl::BindToNetDevice().
void ns3::Ipv6EndPoint::ForwardIcmp | ( | Ipv6Address | src, |
uint8_t | ttl, | ||
uint8_t | type, | ||
uint8_t | code, | ||
uint32_t | info | ||
) |
Forward the ICMP packet to the upper level.
Called from an L4Protocol implementation to notify an endpoint of an icmp message reception.
src | source IPv6 address |
ttl | time-to-live |
type | ICMPv6 type |
code | ICMPv6 code |
info | ICMPv6 info |
Definition at line 139 of file ipv6-end-point.cc.
References m_icmpCallback, and check-style-clang-format::type.
Referenced by ns3::TcpL4Protocol::ReceiveIcmp(), and ns3::UdpL4Protocol::ReceiveIcmp().
void ns3::Ipv6EndPoint::ForwardUp | ( | Ptr< Packet > | p, |
Ipv6Header | header, | ||
uint16_t | port, | ||
Ptr< Ipv6Interface > | incomingInterface | ||
) |
Forward the packet to the upper level.
Called from an L4Protocol implementation to notify an endpoint of a packet reception.
p | the packet |
header | the packet header |
port | source port |
incomingInterface | incoming interface |
Definition at line 127 of file ipv6-end-point.cc.
References m_rxCallback, and port.
Returns socket's bound netdevice, if any.
This method corresponds to using getsockopt() SO_BINDTODEVICE of real network or BSD sockets.
Definition at line 94 of file ipv6-end-point.cc.
References m_boundnetdevice.
Referenced by ns3::Ipv6EndPointDemux::Lookup().
Ipv6Address ns3::Ipv6EndPoint::GetLocalAddress | ( | ) | const |
Get the local address.
Definition at line 52 of file ipv6-end-point.cc.
References m_localAddr.
Referenced by ns3::UdpSocketImpl::Bind(), ns3::UdpSocketImpl::BindToNetDevice(), ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketBase::ForwardUp6(), ns3::TcpSocketBase::GetSockName(), ns3::UdpSocketImpl::GetSockName(), ns3::Ipv6EndPointDemux::Lookup(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpSocketBase::SendDataPacket(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketBase::SendEmptyPacket(), and ns3::TcpSocketSmallAcks::SendEmptyPacket().
uint16_t ns3::Ipv6EndPoint::GetLocalPort | ( | ) | const |
Get the local port.
Definition at line 64 of file ipv6-end-point.cc.
References m_localPort.
Referenced by ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketBase::ForwardUp6(), ns3::TcpSocketBase::GetSockName(), ns3::UdpSocketImpl::GetSockName(), ns3::Ipv6EndPointDemux::Lookup(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpSocketBase::SendDataPacket(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketBase::SendEmptyPacket(), and ns3::TcpSocketSmallAcks::SendEmptyPacket().
Ipv6Address ns3::Ipv6EndPoint::GetPeerAddress | ( | ) | const |
Get the peer address.
Definition at line 76 of file ipv6-end-point.cc.
References m_peerAddr.
Referenced by ns3::TcpSocketBase::ForwardUp6(), ns3::TcpSocketBase::GetPeerName(), ns3::Ipv6EndPointDemux::Lookup(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpSocketBase::RecvFrom(), ns3::TcpSocketBase::SendDataPacket(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketBase::SendEmptyPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), and ns3::TcpSocketBase::SetupEndpoint6().
uint16_t ns3::Ipv6EndPoint::GetPeerPort | ( | ) | const |
Get the peer port.
Definition at line 82 of file ipv6-end-point.cc.
References m_peerPort.
Referenced by ns3::TcpSocketBase::ForwardUp6(), ns3::TcpSocketBase::GetPeerName(), ns3::Ipv6EndPointDemux::Lookup(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpSocketBase::RecvFrom(), ns3::TcpSocketBase::SendDataPacket(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketBase::SendEmptyPacket(), and ns3::TcpSocketSmallAcks::SendEmptyPacket().
bool ns3::Ipv6EndPoint::IsRxEnabled | ( | ) | const |
Checks if the endpoint can receive packets.
Definition at line 154 of file ipv6-end-point.cc.
References m_rxEnabled.
Referenced by ns3::Ipv6EndPointDemux::Lookup().
void ns3::Ipv6EndPoint::SetDestroyCallback | ( | Callback< void > | callback | ) |
Set the default destroy callback.
callback | callback function |
Definition at line 121 of file ipv6-end-point.cc.
References m_destroyCallback.
Referenced by ns3::TcpSocketBase::DeallocateEndPoint(), ns3::UdpSocketImpl::FinishBind(), and ns3::TcpSocketBase::SetupCallback().
void ns3::Ipv6EndPoint::SetIcmpCallback | ( | Callback< void, Ipv6Address, uint8_t, uint8_t, uint8_t, uint32_t > | callback | ) |
Set the ICMP callback.
callback | callback function |
Definition at line 114 of file ipv6-end-point.cc.
References m_icmpCallback.
Referenced by ns3::UdpSocketImpl::FinishBind(), and ns3::TcpSocketBase::SetupCallback().
void ns3::Ipv6EndPoint::SetLocalAddress | ( | Ipv6Address | addr | ) |
Set the local address.
addr | the address to set |
Definition at line 58 of file ipv6-end-point.cc.
References m_localAddr.
Referenced by ns3::TcpSocketBase::SetupEndpoint6().
void ns3::Ipv6EndPoint::SetLocalPort | ( | uint16_t | port | ) |
Set the local port.
port | the port to set |
Definition at line 70 of file ipv6-end-point.cc.
References m_localPort, and port.
void ns3::Ipv6EndPoint::SetPeer | ( | Ipv6Address | addr, |
uint16_t | port | ||
) |
Set the peer information (address and port).
addr | peer address |
port | peer port |
Definition at line 100 of file ipv6-end-point.cc.
References m_peerAddr, m_peerPort, and port.
Referenced by ns3::TcpSocketBase::Connect(), and ns3::TcpSocketBase::ProcessSynRcvd().
void ns3::Ipv6EndPoint::SetRxCallback | ( | Callback< void, Ptr< Packet >, Ipv6Header, uint16_t, Ptr< Ipv6Interface >> | callback | ) |
Set the reception callback.
callback | callback function |
Definition at line 107 of file ipv6-end-point.cc.
References m_rxCallback.
Referenced by ns3::UdpSocketImpl::FinishBind(), and ns3::TcpSocketBase::SetupCallback().
void ns3::Ipv6EndPoint::SetRxEnabled | ( | bool | enabled | ) |
Enable or Disable the endpoint Rx capability.
enabled | true if Rx is enabled |
Definition at line 148 of file ipv6-end-point.cc.
References m_rxEnabled.
Referenced by ns3::UdpSocketImpl::ShutdownRecv().
The NetDevice the EndPoint is bound to (if any).
Definition at line 221 of file ipv6-end-point.h.
Referenced by BindToNetDevice(), and GetBoundNetDevice().
|
private |
The destroy callback.
Definition at line 236 of file ipv6-end-point.h.
Referenced by ~Ipv6EndPoint(), and SetDestroyCallback().
|
private |
The ICMPv6 callback.
Definition at line 231 of file ipv6-end-point.h.
Referenced by ~Ipv6EndPoint(), ForwardIcmp(), and SetIcmpCallback().
|
private |
The local address.
Definition at line 201 of file ipv6-end-point.h.
Referenced by GetLocalAddress(), and SetLocalAddress().
|
private |
The local port.
Definition at line 206 of file ipv6-end-point.h.
Referenced by GetLocalPort(), and SetLocalPort().
|
private |
The peer address.
Definition at line 211 of file ipv6-end-point.h.
Referenced by GetPeerAddress(), and SetPeer().
|
private |
The peer port.
Definition at line 216 of file ipv6-end-point.h.
Referenced by GetPeerPort(), and SetPeer().
|
private |
The RX callback.
Definition at line 226 of file ipv6-end-point.h.
Referenced by ~Ipv6EndPoint(), ForwardUp(), and SetRxCallback().
|
private |
true if the endpoint can receive packets.
Definition at line 241 of file ipv6-end-point.h.
Referenced by IsRxEnabled(), and SetRxEnabled().