A representation of an internet 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 (void) |
Returns socket's bound netdevice, if any. More... | |
Ipv6Address | GetLocalAddress () |
Get the local address. More... | |
uint16_t | GetLocalPort () |
Get the local port. More... | |
Ipv6Address | GetPeerAddress () |
Get the peer address. More... | |
uint16_t | GetPeerPort () |
Get the peer port. 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 informations (address and port). More... | |
void | SetRxCallback (Callback< void, Ptr< Packet >, Ipv6Header, uint16_t, Ptr< Ipv6Interface > > callback) |
Set the reception callback. More... | |
Private Member Functions | |
void | DoForwardIcmp (Ipv6Address src, uint8_t ttl, uint8_t type, uint8_t code, uint32_t info) |
ForwardIcmp wrapper. More... | |
void | DoForwardUp (Ptr< Packet > p, Ipv6Header header, uint16_t sport, Ptr< Ipv6Interface > incomingInterface) |
ForwardUp wrapper. 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... | |
A representation of an internet 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 48 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 33 of file ipv6-end-point.cc.
ns3::Ipv6EndPoint::~Ipv6EndPoint | ( | ) |
Definition at line 41 of file ipv6-end-point.cc.
References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_destroyCallback, m_icmpCallback, m_rxCallback, and ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::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 82 of file ipv6-end-point.cc.
References m_boundnetdevice.
|
private |
ForwardIcmp wrapper.
src | source IPv6 address |
ttl | time-to-live |
type | ICMPv6 type |
code | ICMPv6 code |
info | ICMPv6 info |
Definition at line 138 of file ipv6-end-point.cc.
References m_icmpCallback.
Referenced by ForwardIcmp().
|
private |
ForwardUp wrapper.
p | packet |
header | the packet header |
sport | source port |
incomingInterface | incoming interface |
Definition at line 133 of file ipv6-end-point.cc.
References m_rxCallback.
Referenced by ForwardUp().
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 123 of file ipv6-end-point.cc.
References DoForwardIcmp(), m_icmpCallback, and ns3::Simulator::ScheduleNow().
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 114 of file ipv6-end-point.cc.
References DoForwardUp(), m_rxCallback, and ns3::Simulator::ScheduleNow().
Returns socket's bound netdevice, if any.
This method corresponds to using getsockopt() SO_BINDTODEVICE of real network or BSD sockets.
Definition at line 88 of file ipv6-end-point.cc.
References m_boundnetdevice.
Referenced by ns3::Ipv6EndPointDemux::Lookup().
Ipv6Address ns3::Ipv6EndPoint::GetLocalAddress | ( | void | ) |
Get the local address.
Definition at line 52 of file ipv6-end-point.cc.
References m_localAddr.
Referenced by ns3::TcpSocketBase::DoForwardUp(), ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketBase::GetSockName(), ns3::Ipv6EndPointDemux::Lookup(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpSocketBase::SendDataPacket(), and ns3::TcpSocketBase::SendEmptyPacket().
uint16_t ns3::Ipv6EndPoint::GetLocalPort | ( | void | ) |
Get the local port.
Definition at line 62 of file ipv6-end-point.cc.
References m_localPort.
Referenced by ns3::TcpSocketBase::DoForwardUp(), ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketBase::GetSockName(), ns3::Ipv6EndPointDemux::Lookup(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpSocketBase::SendDataPacket(), and ns3::TcpSocketBase::SendEmptyPacket().
Ipv6Address ns3::Ipv6EndPoint::GetPeerAddress | ( | void | ) |
Get the peer address.
Definition at line 72 of file ipv6-end-point.cc.
References m_peerAddr.
Referenced by ns3::TcpSocketBase::DoForwardUp(), ns3::Ipv6EndPointDemux::Lookup(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpSocketBase::Recv(), ns3::TcpSocketBase::RecvFrom(), ns3::TcpSocketBase::SendDataPacket(), ns3::TcpSocketBase::SendEmptyPacket(), and ns3::TcpSocketBase::SetupEndpoint6().
uint16_t ns3::Ipv6EndPoint::GetPeerPort | ( | void | ) |
Get the peer port.
Definition at line 77 of file ipv6-end-point.cc.
References m_peerPort.
Referenced by ns3::TcpSocketBase::DoForwardUp(), ns3::Ipv6EndPointDemux::Lookup(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpSocketBase::Recv(), ns3::TcpSocketBase::RecvFrom(), ns3::TcpSocketBase::SendDataPacket(), and ns3::TcpSocketBase::SendEmptyPacket().
void ns3::Ipv6EndPoint::SetDestroyCallback | ( | Callback< void > | callback | ) |
Set the default destroy callback.
callback | callback function |
Definition at line 109 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 104 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 57 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 67 of file ipv6-end-point.cc.
References m_localPort, and port.
void ns3::Ipv6EndPoint::SetPeer | ( | Ipv6Address | addr, |
uint16_t | port | ||
) |
Set the peer informations (address and port).
addr | peer address |
port | peer port |
Definition at line 93 of file ipv6-end-point.cc.
References m_peerAddr, m_peerPort, and port.
Referenced by ns3::Ipv6EndPointDemux::Allocate(), 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 99 of file ipv6-end-point.cc.
References m_rxCallback.
Referenced by ns3::UdpSocketImpl::FinishBind(), and ns3::TcpSocketBase::SetupCallback().
The NetDevice the EndPoint is bound to (if any).
Definition at line 224 of file ipv6-end-point.h.
Referenced by BindToNetDevice(), and GetBoundNetDevice().
|
private |
The destroy callback.
Definition at line 239 of file ipv6-end-point.h.
Referenced by SetDestroyCallback(), and ~Ipv6EndPoint().
|
private |
The ICMPv6 callback.
Definition at line 234 of file ipv6-end-point.h.
Referenced by DoForwardIcmp(), ForwardIcmp(), SetIcmpCallback(), and ~Ipv6EndPoint().
|
private |
The local address.
Definition at line 204 of file ipv6-end-point.h.
Referenced by GetLocalAddress(), and SetLocalAddress().
|
private |
The local port.
Definition at line 209 of file ipv6-end-point.h.
Referenced by GetLocalPort(), and SetLocalPort().
|
private |
The peer address.
Definition at line 214 of file ipv6-end-point.h.
Referenced by GetPeerAddress(), and SetPeer().
|
private |
The peer port.
Definition at line 219 of file ipv6-end-point.h.
Referenced by GetPeerPort(), and SetPeer().
|
private |
The RX callback.
Definition at line 229 of file ipv6-end-point.h.
Referenced by DoForwardUp(), ForwardUp(), SetRxCallback(), and ~Ipv6EndPoint().