A Discrete-Event Network Simulator
API
Public Member Functions | Private Attributes | List of all members
ns3::Ipv4EndPoint Class Reference

A representation of an internet endpoint/connection. More...

#include "ipv4-end-point.h"

Public Member Functions

 Ipv4EndPoint (Ipv4Address address, uint16_t port)
 Constructor. More...
 
 ~Ipv4EndPoint ()
 
void BindToNetDevice (Ptr< NetDevice > netdevice)
 Bind a socket to specific device. More...
 
void ForwardIcmp (Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo)
 Forward the ICMP packet to the upper level. More...
 
void ForwardUp (Ptr< Packet > p, const Ipv4Header &header, uint16_t sport, Ptr< Ipv4Interface > incomingInterface)
 Forward the packet to the upper level. More...
 
Ptr< NetDeviceGetBoundNetDevice (void)
 Returns socket's bound netdevice, if any. More...
 
Ipv4Address GetLocalAddress (void)
 Get the local address. More...
 
uint16_t GetLocalPort (void)
 Get the local port. More...
 
Ipv4Address GetPeerAddress (void)
 Get the peer address. More...
 
uint16_t GetPeerPort (void)
 Get the peer port. More...
 
bool IsRxEnabled (void)
 Checks if the endpoint can receive packets. More...
 
void SetDestroyCallback (Callback< void > callback)
 Set the default destroy callback. More...
 
void SetIcmpCallback (Callback< void, Ipv4Address, uint8_t, uint8_t, uint8_t, uint32_t > callback)
 Set the ICMP callback. More...
 
void SetLocalAddress (Ipv4Address address)
 Set the local address. More...
 
void SetPeer (Ipv4Address address, uint16_t port)
 Set the peer information (address and port). More...
 
void SetRxCallback (Callback< void, Ptr< Packet >, Ipv4Header, uint16_t, Ptr< Ipv4Interface > > callback)
 Set the reception callback. More...
 
void SetRxEnabled (bool enabled)
 Enable or Disable the endpoint Rx capability. More...
 

Private Attributes

Ptr< NetDevicem_boundnetdevice
 The NetDevice the EndPoint is bound to (if any). More...
 
Callback< void > m_destroyCallback
 The destroy callback. More...
 
Callback< void, Ipv4Address, uint8_t, uint8_t, uint8_t, uint32_t > m_icmpCallback
 The ICMPv6 callback. More...
 
Ipv4Address m_localAddr
 The local address. More...
 
uint16_t m_localPort
 The local port. More...
 
Ipv4Address m_peerAddr
 The peer address. More...
 
uint16_t m_peerPort
 The peer port. More...
 
Callback< void, Ptr< Packet >, Ipv4Header, uint16_t, Ptr< Ipv4Interface > > m_rxCallback
 The RX callback. More...
 
bool m_rxEnabled
 true if the endpoint can receive packets. More...
 

Detailed Description

A representation of an internet endpoint/connection.

This class provides an internet four-tuple (source and destination ports and addresses). These are used in the ns3::Ipv4EndPointDemux 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 49 of file ipv4-end-point.h.

Constructor & Destructor Documentation

◆ Ipv4EndPoint()

ns3::Ipv4EndPoint::Ipv4EndPoint ( Ipv4Address  address,
uint16_t  port 
)

Constructor.

Parameters
addressthe IPv4 address
portthe port

Definition at line 30 of file ipv4-end-point.cc.

References first::address, NS_LOG_FUNCTION, and port.

◆ ~Ipv4EndPoint()

ns3::Ipv4EndPoint::~Ipv4EndPoint ( )

Member Function Documentation

◆ BindToNetDevice()

void ns3::Ipv4EndPoint::BindToNetDevice ( Ptr< NetDevice netdevice)

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.

Parameters
netdevicePointer to Netdevice of desired interface

Definition at line 96 of file ipv4-end-point.cc.

References m_boundnetdevice, and NS_LOG_FUNCTION.

Referenced by ns3::UdpSocketImpl::Bind(), ns3::NscTcpSocketImpl::BindToNetDevice(), ns3::UdpSocketImpl::BindToNetDevice(), and ns3::TcpSocketBase::BindToNetDevice().

◆ ForwardIcmp()

void ns3::Ipv4EndPoint::ForwardIcmp ( Ipv4Address  icmpSource,
uint8_t  icmpTtl,
uint8_t  icmpType,
uint8_t  icmpCode,
uint32_t  icmpInfo 
)

Forward the ICMP packet to the upper level.

Called from an L4Protocol implementation to notify an endpoint of an icmp message reception.

Parameters
icmpSourcesource IP address
icmpTtltime-to-live
icmpTypeICMP type
icmpCodeICMP code
icmpInfoICMP info

Definition at line 144 of file ipv4-end-point.cc.

References m_icmpCallback, and NS_LOG_FUNCTION.

Referenced by ns3::UdpL4Protocol::ReceiveIcmp(), and ns3::TcpL4Protocol::ReceiveIcmp().

◆ ForwardUp()

void ns3::Ipv4EndPoint::ForwardUp ( Ptr< Packet p,
const Ipv4Header header,
uint16_t  sport,
Ptr< Ipv4Interface incomingInterface 
)

Forward the packet to the upper level.

Called from an L4Protocol implementation to notify an endpoint of a packet reception.

Parameters
pthe packet
headerthe packet header
sportsource port
incomingInterfaceincoming interface

Definition at line 132 of file ipv4-end-point.cc.

References m_rxCallback, and NS_LOG_FUNCTION.

◆ GetBoundNetDevice()

Ptr< NetDevice > ns3::Ipv4EndPoint::GetBoundNetDevice ( void  )

Returns socket's bound netdevice, if any.

This method corresponds to using getsockopt() SO_BINDTODEVICE of real network or BSD sockets.

Returns
Pointer to interface.

Definition at line 104 of file ipv4-end-point.cc.

References m_boundnetdevice, and NS_LOG_FUNCTION.

Referenced by ns3::Ipv4EndPointDemux::Lookup().

◆ GetLocalAddress()

Ipv4Address ns3::Ipv4EndPoint::GetLocalAddress ( void  )

◆ GetLocalPort()

uint16_t ns3::Ipv4EndPoint::GetLocalPort ( void  )

◆ GetPeerAddress()

Ipv4Address ns3::Ipv4EndPoint::GetPeerAddress ( void  )

◆ GetPeerPort()

uint16_t ns3::Ipv4EndPoint::GetPeerPort ( void  )

◆ IsRxEnabled()

bool ns3::Ipv4EndPoint::IsRxEnabled ( void  )

Checks if the endpoint can receive packets.

Returns
true if the endpoint can receive packets.

Definition at line 163 of file ipv4-end-point.cc.

References m_rxEnabled.

Referenced by ns3::Ipv4EndPointDemux::Lookup().

◆ SetDestroyCallback()

void ns3::Ipv4EndPoint::SetDestroyCallback ( Callback< void >  callback)

◆ SetIcmpCallback()

void ns3::Ipv4EndPoint::SetIcmpCallback ( Callback< void, Ipv4Address, uint8_t, uint8_t, uint8_t, uint32_t >  callback)

Set the ICMP callback.

Parameters
callbackcallback function

Definition at line 118 of file ipv4-end-point.cc.

References m_icmpCallback, and NS_LOG_FUNCTION.

Referenced by ns3::UdpSocketImpl::FinishBind(), and ns3::TcpSocketBase::SetupCallback().

◆ SetLocalAddress()

void ns3::Ipv4EndPoint::SetLocalAddress ( Ipv4Address  address)

Set the local address.

Parameters
addressthe address to set

Definition at line 60 of file ipv4-end-point.cc.

References first::address, m_localAddr, and NS_LOG_FUNCTION.

Referenced by ns3::TcpSocketBase::SetupEndpoint().

◆ SetPeer()

void ns3::Ipv4EndPoint::SetPeer ( Ipv4Address  address,
uint16_t  port 
)

Set the peer information (address and port).

Parameters
addresspeer address
portpeer port

Definition at line 88 of file ipv4-end-point.cc.

References first::address, m_peerAddr, m_peerPort, NS_LOG_FUNCTION, and port.

Referenced by ns3::Ipv4EndPointDemux::Allocate(), ns3::TcpSocketBase::Connect(), and ns3::TcpSocketBase::ProcessSynRcvd().

◆ SetRxCallback()

void ns3::Ipv4EndPoint::SetRxCallback ( Callback< void, Ptr< Packet >, Ipv4Header, uint16_t, Ptr< Ipv4Interface > >  callback)

Set the reception callback.

Parameters
callbackcallback function

Definition at line 111 of file ipv4-end-point.cc.

References m_rxCallback, and NS_LOG_FUNCTION.

Referenced by ns3::NscTcpSocketImpl::CompleteFork(), ns3::NscTcpSocketImpl::FinishBind(), ns3::UdpSocketImpl::FinishBind(), and ns3::TcpSocketBase::SetupCallback().

◆ SetRxEnabled()

void ns3::Ipv4EndPoint::SetRxEnabled ( bool  enabled)

Enable or Disable the endpoint Rx capability.

Parameters
enabledtrue if Rx is enabled

Definition at line 157 of file ipv4-end-point.cc.

References m_rxEnabled.

Referenced by ns3::UdpSocketImpl::ShutdownRecv().

Member Data Documentation

◆ m_boundnetdevice

Ptr<NetDevice> ns3::Ipv4EndPoint::m_boundnetdevice
private

The NetDevice the EndPoint is bound to (if any).

Definition at line 209 of file ipv4-end-point.h.

Referenced by BindToNetDevice(), and GetBoundNetDevice().

◆ m_destroyCallback

Callback<void> ns3::Ipv4EndPoint::m_destroyCallback
private

The destroy callback.

Definition at line 224 of file ipv4-end-point.h.

Referenced by SetDestroyCallback(), and ~Ipv4EndPoint().

◆ m_icmpCallback

Callback<void,Ipv4Address,uint8_t,uint8_t,uint8_t,uint32_t> ns3::Ipv4EndPoint::m_icmpCallback
private

The ICMPv6 callback.

Definition at line 219 of file ipv4-end-point.h.

Referenced by ForwardIcmp(), SetIcmpCallback(), and ~Ipv4EndPoint().

◆ m_localAddr

Ipv4Address ns3::Ipv4EndPoint::m_localAddr
private

The local address.

Definition at line 189 of file ipv4-end-point.h.

Referenced by GetLocalAddress(), and SetLocalAddress().

◆ m_localPort

uint16_t ns3::Ipv4EndPoint::m_localPort
private

The local port.

Definition at line 194 of file ipv4-end-point.h.

Referenced by GetLocalPort().

◆ m_peerAddr

Ipv4Address ns3::Ipv4EndPoint::m_peerAddr
private

The peer address.

Definition at line 199 of file ipv4-end-point.h.

Referenced by GetPeerAddress(), and SetPeer().

◆ m_peerPort

uint16_t ns3::Ipv4EndPoint::m_peerPort
private

The peer port.

Definition at line 204 of file ipv4-end-point.h.

Referenced by GetPeerPort(), and SetPeer().

◆ m_rxCallback

Callback<void,Ptr<Packet>, Ipv4Header, uint16_t, Ptr<Ipv4Interface> > ns3::Ipv4EndPoint::m_rxCallback
private

The RX callback.

Definition at line 214 of file ipv4-end-point.h.

Referenced by ForwardUp(), SetRxCallback(), and ~Ipv4EndPoint().

◆ m_rxEnabled

bool ns3::Ipv4EndPoint::m_rxEnabled
private

true if the endpoint can receive packets.

Definition at line 229 of file ipv4-end-point.h.

Referenced by IsRxEnabled(), and SetRxEnabled().


The documentation for this class was generated from the following files: