A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::Ipv6EndPoint Class Reference

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

#include <ipv6-end-point.h>

+ Collaboration diagram for ns3::Ipv6EndPoint:

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< NetDeviceGetBoundNetDevice (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< NetDevicem_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...
 

Detailed Description

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.

Constructor & Destructor Documentation

ns3::Ipv6EndPoint::Ipv6EndPoint ( Ipv6Address  addr,
uint16_t  port 
)

Constructor.

Parameters
addrthe IPv6 address
portthe port

Definition at line 32 of file ipv6-end-point.cc.

ns3::Ipv6EndPoint::~Ipv6EndPoint ( )

Member Function Documentation

void ns3::Ipv6EndPoint::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 81 of file ipv6-end-point.cc.

References m_boundnetdevice.

void ns3::Ipv6EndPoint::DoForwardIcmp ( Ipv6Address  src,
uint8_t  ttl,
uint8_t  type,
uint8_t  code,
uint32_t  info 
)
private

ForwardIcmp wrapper.

Parameters
srcsource IPv6 address
ttltime-to-live
typeICMPv6 type
codeICMPv6 code
infoICMPv6 info

Definition at line 137 of file ipv6-end-point.cc.

References m_icmpCallback.

Referenced by ForwardIcmp().

+ Here is the caller graph for this function:

void ns3::Ipv6EndPoint::DoForwardUp ( Ptr< Packet p,
Ipv6Header  header,
uint16_t  sport,
Ptr< Ipv6Interface incomingInterface 
)
private

ForwardUp wrapper.

Parameters
ppacket
headerthe packet header
sportsource port
incomingInterfaceincoming interface

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

References m_rxCallback.

Referenced by ForwardUp().

+ Here is the caller graph for this function:

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.

Parameters
srcsource IPv6 address
ttltime-to-live
typeICMPv6 type
codeICMPv6 code
infoICMPv6 info

Definition at line 122 of file ipv6-end-point.cc.

References DoForwardIcmp(), m_icmpCallback, and ns3::Simulator::ScheduleNow().

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

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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.

Parameters
pthe packet
headerthe packet header
portsource port
incomingInterfaceincoming interface

Definition at line 113 of file ipv6-end-point.cc.

References DoForwardUp(), m_rxCallback, and ns3::Simulator::ScheduleNow().

+ Here is the call graph for this function:

Ptr< NetDevice > ns3::Ipv6EndPoint::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 87 of file ipv6-end-point.cc.

References m_boundnetdevice.

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

+ Here is the caller graph for this function:

Ipv6Address ns3::Ipv6EndPoint::GetLocalAddress ( void  )
uint16_t ns3::Ipv6EndPoint::GetLocalPort ( void  )
Ipv6Address ns3::Ipv6EndPoint::GetPeerAddress ( void  )
uint16_t ns3::Ipv6EndPoint::GetPeerPort ( void  )
void ns3::Ipv6EndPoint::SetDestroyCallback ( Callback< void >  callback)

Set the default destroy callback.

Parameters
callbackcallback function

Definition at line 108 of file ipv6-end-point.cc.

References m_destroyCallback.

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

+ Here is the caller graph for this function:

void ns3::Ipv6EndPoint::SetIcmpCallback ( Callback< void, Ipv6Address, uint8_t, uint8_t, uint8_t, uint32_t >  callback)

Set the ICMP callback.

Parameters
callbackcallback function

Definition at line 103 of file ipv6-end-point.cc.

References m_icmpCallback.

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

+ Here is the caller graph for this function:

void ns3::Ipv6EndPoint::SetLocalAddress ( Ipv6Address  addr)

Set the local address.

Parameters
addrthe address to set

Definition at line 56 of file ipv6-end-point.cc.

References m_localAddr.

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

+ Here is the caller graph for this function:

void ns3::Ipv6EndPoint::SetLocalPort ( uint16_t  port)

Set the local port.

Parameters
portthe port to set

Definition at line 66 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).

Parameters
addrpeer address
portpeer port

Definition at line 92 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().

+ Here is the caller graph for this function:

void ns3::Ipv6EndPoint::SetRxCallback ( Callback< void, Ptr< Packet >, Ipv6Header, uint16_t, Ptr< Ipv6Interface > >  callback)

Set the reception callback.

Parameters
callbackcallback function

Definition at line 98 of file ipv6-end-point.cc.

References m_rxCallback.

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

+ Here is the caller graph for this function:

Member Data Documentation

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

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

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

Referenced by BindToNetDevice(), and GetBoundNetDevice().

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

The destroy callback.

Definition at line 239 of file ipv6-end-point.h.

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

Callback<void, Ipv6Address, uint8_t, uint8_t, uint8_t, uint32_t> ns3::Ipv6EndPoint::m_icmpCallback
private

The ICMPv6 callback.

Definition at line 234 of file ipv6-end-point.h.

Referenced by DoForwardIcmp(), ForwardIcmp(), SetIcmpCallback(), and ~Ipv6EndPoint().

Ipv6Address ns3::Ipv6EndPoint::m_localAddr
private

The local address.

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

Referenced by GetLocalAddress(), and SetLocalAddress().

uint16_t ns3::Ipv6EndPoint::m_localPort
private

The local port.

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

Referenced by GetLocalPort(), and SetLocalPort().

Ipv6Address ns3::Ipv6EndPoint::m_peerAddr
private

The peer address.

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

Referenced by GetPeerAddress(), and SetPeer().

uint16_t ns3::Ipv6EndPoint::m_peerPort
private

The peer port.

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

Referenced by GetPeerPort(), and SetPeer().

Callback<void, Ptr<Packet>, Ipv6Header, uint16_t, Ptr<Ipv6Interface> > ns3::Ipv6EndPoint::m_rxCallback
private

The RX callback.

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

Referenced by DoForwardUp(), ForwardUp(), SetRxCallback(), and ~Ipv6EndPoint().


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