A low-level Socket API based loosely on the BSD Socket API. More...
#include "socket.h"
Public Types | |
enum | Ipv6MulticastFilterMode { INCLUDE = 1 , EXCLUDE } |
Enumeration of the possible filter of a socket. More... | |
enum | SocketErrno { ERROR_NOTERROR , ERROR_ISCONN , ERROR_NOTCONN , ERROR_MSGSIZE , ERROR_AGAIN , ERROR_SHUTDOWN , ERROR_OPNOTSUPP , ERROR_AFNOSUPPORT , ERROR_INVAL , ERROR_BADF , ERROR_NOROUTETOHOST , ERROR_NODEV , ERROR_ADDRNOTAVAIL , ERROR_ADDRINUSE , SOCKET_ERRNO_LAST } |
Enumeration of the possible errors returned by a socket. More... | |
enum | SocketPriority { NS3_PRIO_BESTEFFORT = 0 , NS3_PRIO_FILLER = 1 , NS3_PRIO_BULK = 2 , NS3_PRIO_INTERACTIVE_BULK = 4 , NS3_PRIO_INTERACTIVE = 6 , NS3_PRIO_CONTROL = 7 } |
Enumeration of the possible socket priorities. More... | |
enum | SocketType { NS3_SOCK_STREAM , NS3_SOCK_SEQPACKET , NS3_SOCK_DGRAM , NS3_SOCK_RAW } |
Enumeration of the possible socket types. More... | |
Public Member Functions | |
Socket () | |
~Socket () override | |
virtual int | Bind ()=0 |
Allocate a local IPv4 endpoint for this socket. More... | |
virtual int | Bind (const Address &address)=0 |
Allocate a local endpoint for this socket. More... | |
virtual int | Bind6 ()=0 |
Allocate a local IPv6 endpoint for this socket. More... | |
virtual void | BindToNetDevice (Ptr< NetDevice > netdevice) |
Bind a socket to specific device. More... | |
virtual int | Close ()=0 |
Close a socket. More... | |
virtual int | Connect (const Address &address)=0 |
Initiate a connection to a remote host. More... | |
virtual bool | GetAllowBroadcast () const =0 |
Query whether broadcast datagram transmissions are allowed. More... | |
Ptr< NetDevice > | GetBoundNetDevice () |
Returns socket's bound NetDevice, if any. More... | |
virtual Socket::SocketErrno | GetErrno () const =0 |
Get last error number. More... | |
uint8_t | GetIpTos () const |
Query the value of IP Type of Service of this socket. More... | |
virtual uint8_t | GetIpTtl () const |
Query the value of IP Time to Live field of this socket. More... | |
virtual uint8_t | GetIpv6HopLimit () const |
Query the value of IP Hop Limit field of this socket. More... | |
uint8_t | GetIpv6Tclass () const |
Query the value of IPv6 Traffic Class field of this socket. More... | |
virtual Ptr< Node > | GetNode () const =0 |
Return the node this socket is associated with. More... | |
virtual int | GetPeerName (Address &address) const =0 |
Get the peer address of a connected socket. More... | |
uint8_t | GetPriority () const |
Query the priority value of this socket. More... | |
virtual uint32_t | GetRxAvailable () const =0 |
Return number of bytes which can be returned from one or multiple calls to Recv. More... | |
virtual Socket::SocketType | GetSocketType () const =0 |
virtual int | GetSockName (Address &address) const =0 |
Get socket address. More... | |
virtual uint32_t | GetTxAvailable () const =0 |
Returns the number of bytes which can be sent in a single call to Send. More... | |
virtual void | Ipv6JoinGroup (Ipv6Address address) |
Joins a IPv6 multicast group without filters. More... | |
virtual void | Ipv6JoinGroup (Ipv6Address address, Ipv6MulticastFilterMode filterMode, std::vector< Ipv6Address > sourceAddresses) |
Joins a IPv6 multicast group. More... | |
virtual void | Ipv6LeaveGroup () |
Leaves IPv6 multicast group this socket is joined to. More... | |
bool | IsIpRecvTos () const |
Ask if the socket is currently passing information about IP Type of Service up the stack. More... | |
bool | IsIpRecvTtl () const |
Ask if the socket is currently passing information about IP_TTL up the stack. More... | |
bool | IsIpv6RecvHopLimit () const |
Ask if the socket is currently passing information about IPv6 Hop Limit up the stack. More... | |
bool | IsIpv6RecvTclass () const |
Ask if the socket is currently passing information about IPv6 Traffic Class up the stack. More... | |
bool | IsRecvPktInfo () const |
Get status indicating whether enable/disable packet information to socket. More... | |
virtual int | Listen ()=0 |
Listen for incoming connections. More... | |
Ptr< Packet > | Recv () |
Read a single packet from the socket. More... | |
virtual Ptr< Packet > | Recv (uint32_t maxSize, uint32_t flags)=0 |
Read data from the socket. More... | |
int | Recv (uint8_t *buf, uint32_t size, uint32_t flags) |
Recv data (or dummy data) from the remote host. More... | |
Ptr< Packet > | RecvFrom (Address &fromAddress) |
Read a single packet from the socket and retrieve the sender address. More... | |
virtual Ptr< Packet > | RecvFrom (uint32_t maxSize, uint32_t flags, Address &fromAddress)=0 |
Read a single packet from the socket and retrieve the sender address. More... | |
int | RecvFrom (uint8_t *buf, uint32_t size, uint32_t flags, Address &fromAddress) |
Read a single packet from the socket and retrieve the sender address. More... | |
int | Send (const uint8_t *buf, uint32_t size, uint32_t flags) |
Send data (or dummy data) to the remote host. More... | |
int | Send (Ptr< Packet > p) |
Send data (or dummy data) to the remote host. More... | |
virtual int | Send (Ptr< Packet > p, uint32_t flags)=0 |
Send data (or dummy data) to the remote host. More... | |
int | SendTo (const uint8_t *buf, uint32_t size, uint32_t flags, const Address &address) |
Send data to a specified peer. More... | |
virtual int | SendTo (Ptr< Packet > p, uint32_t flags, const Address &toAddress)=0 |
Send data to a specified peer. More... | |
void | SetAcceptCallback (Callback< bool, Ptr< Socket >, const Address & > connectionRequest, Callback< void, Ptr< Socket >, const Address & > newConnectionCreated) |
Accept connection requests from remote hosts. More... | |
virtual bool | SetAllowBroadcast (bool allowBroadcast)=0 |
Configure whether broadcast datagram transmissions are allowed. More... | |
void | SetCloseCallbacks (Callback< void, Ptr< Socket >> normalClose, Callback< void, Ptr< Socket >> errorClose) |
Detect socket recv() events such as graceful shutdown or error. More... | |
void | SetConnectCallback (Callback< void, Ptr< Socket >> connectionSucceeded, Callback< void, Ptr< Socket >> connectionFailed) |
Specify callbacks to allow the caller to determine if the connection succeeds of fails. More... | |
void | SetDataSentCallback (Callback< void, Ptr< Socket >, uint32_t > dataSent) |
Notify application when a packet has been sent from transport protocol (non-standard socket call) More... | |
void | SetIpRecvTos (bool ipv4RecvTos) |
Tells a socket to pass information about IP Type of Service up the stack. More... | |
void | SetIpRecvTtl (bool ipv4RecvTtl) |
Tells a socket to pass information about IP_TTL up the stack. More... | |
void | SetIpTos (uint8_t ipTos) |
Manually set IP Type of Service field. More... | |
virtual void | SetIpTtl (uint8_t ipTtl) |
Manually set IP Time to Live field. More... | |
virtual void | SetIpv6HopLimit (uint8_t ipHopLimit) |
Manually set IPv6 Hop Limit. More... | |
void | SetIpv6RecvHopLimit (bool ipv6RecvHopLimit) |
Tells a socket to pass information about IPv6 Hop Limit up the stack. More... | |
void | SetIpv6RecvTclass (bool ipv6RecvTclass) |
Tells a socket to pass information about IPv6 Traffic Class up the stack. More... | |
void | SetIpv6Tclass (int ipTclass) |
Manually set IPv6 Traffic Class field. More... | |
void | SetPriority (uint8_t priority) |
Manually set the socket priority. More... | |
void | SetRecvCallback (Callback< void, Ptr< Socket >> receivedData) |
Notify application when new data is available to be read. More... | |
void | SetRecvPktInfo (bool flag) |
Enable/Disable receive packet information to socket. More... | |
void | SetSendCallback (Callback< void, Ptr< Socket >, uint32_t > sendCb) |
Notify application when space in transmit buffer is added. More... | |
virtual int | ShutdownRecv ()=0 |
virtual int | ShutdownSend ()=0 |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. More... | |
~Object () override | |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose () |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. More... | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. More... | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. More... | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized () const |
Check if the object has been initialized. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o[[maybe_unused]]) |
Assignment operator. More... | |
void | Ref () const |
Increment the reference count. More... | |
void | Unref () const |
Decrement the reference count. More... | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static Ptr< Socket > | CreateSocket (Ptr< Node > node, TypeId tid) |
This method wraps the creation of sockets that is performed on a given node by a SocketFactory specified by TypeId. More... | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
static uint8_t | IpTos2Priority (uint8_t ipTos) |
Return the priority corresponding to a given TOS value. More... | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Protected Member Functions | |
void | DoDispose () override |
Destructor implementation. More... | |
bool | IsManualIpTtl () const |
Checks if the socket has a specific IPv4 TTL set. More... | |
bool | IsManualIpv6HopLimit () const |
Checks if the socket has a specific IPv6 Hop Limit set. More... | |
bool | IsManualIpv6Tclass () const |
Checks if the socket has a specific IPv6 Tclass set. More... | |
void | NotifyConnectionFailed () |
Notify through the callback (if set) that the connection has not been established due to an error. More... | |
bool | NotifyConnectionRequest (const Address &from) |
Notify through the callback (if set) that an incoming connection is being requested by a remote host. More... | |
void | NotifyConnectionSucceeded () |
Notify through the callback (if set) that the connection has been established. More... | |
void | NotifyDataRecv () |
Notify through the callback (if set) that some data have been received. More... | |
void | NotifyDataSent (uint32_t size) |
Notify through the callback (if set) that some data have been sent. More... | |
void | NotifyErrorClose () |
Notify through the callback (if set) that the connection has been closed due to an error. More... | |
void | NotifyNewConnectionCreated (Ptr< Socket > socket, const Address &from) |
Notify through the callback (if set) that a new connection has been created. More... | |
void | NotifyNormalClose () |
Notify through the callback (if set) that the connection has been closed. More... | |
void | NotifySend (uint32_t spaceAvailable) |
Notify through the callback (if set) that some data have been sent. More... | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoInitialize () |
Initialize() implementation. More... | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. More... | |
Protected Attributes | |
Ptr< NetDevice > | m_boundnetdevice |
the device this socket is bound to (might be null). More... | |
Ipv6Address | m_ipv6MulticastGroupAddress |
IPv6 multicast group address. More... | |
bool | m_recvPktInfo |
if the socket should add packet info tags to the packet forwarded to L4. More... | |
Private Attributes | |
Callback< void, Ptr< Socket > > | m_connectionFailed |
connection failed callback More... | |
Callback< bool, Ptr< Socket >, const Address & > | m_connectionRequest |
connection request callback More... | |
Callback< void, Ptr< Socket > > | m_connectionSucceeded |
connection succeeded callback More... | |
Callback< void, Ptr< Socket >, uint32_t > | m_dataSent |
data sent callback More... | |
Callback< void, Ptr< Socket > > | m_errorClose |
connection closed due to errors callback More... | |
bool | m_ipRecvTos |
socket forwards IPv4 TOS tag to L4 More... | |
bool | m_ipRecvTtl |
socket forwards IPv4 TTL tag to L4 More... | |
uint8_t | m_ipTos |
the socket IPv4 TOS More... | |
uint8_t | m_ipTtl |
the socket IPv4 TTL More... | |
uint8_t | m_ipv6HopLimit |
the socket IPv6 Hop Limit More... | |
bool | m_ipv6RecvHopLimit |
socket forwards IPv6 Hop Limit tag to L4 More... | |
bool | m_ipv6RecvTclass |
socket forwards IPv6 Tclass tag to L4 More... | |
uint8_t | m_ipv6Tclass |
the socket IPv6 Tclass More... | |
bool | m_manualIpTtl |
socket has IPv4 TTL set More... | |
bool | m_manualIpv6HopLimit |
socket has IPv6 Hop Limit set More... | |
bool | m_manualIpv6Tclass |
socket has IPv6 Tclass set More... | |
Callback< void, Ptr< Socket >, const Address & > | m_newConnectionCreated |
connection created callback More... | |
Callback< void, Ptr< Socket > > | m_normalClose |
connection closed callback More... | |
uint8_t | m_priority |
the socket priority More... | |
Callback< void, Ptr< Socket > > | m_receivedData |
data received callback More... | |
Callback< void, Ptr< Socket >, uint32_t > | m_sendCb |
packet sent callback More... | |
Additional Inherited Members | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
A low-level Socket API based loosely on the BSD Socket API.
A few things to keep in mind about this type of socket:
Other than that, it tries to stick to the BSD API to make it easier for those who know the BSD API to use this API. More details are provided in the ns-3 tutorial.
Enumeration of the possible filter of a socket.
A socket can have filters on specific sources to include only packets incoming from them, or to exclude packets incoming from specific sources. Moreover, inclusion and exclusion also works as a leave, since "joining" a group without allowed sources is equivalent to leaving it.
Enumerator | |
---|---|
INCLUDE | |
EXCLUDE |
ns3::Socket::Socket | ( | ) |
Definition at line 46 of file socket.cc.
References m_boundnetdevice, m_ipTos, m_ipTtl, m_ipv6HopLimit, m_ipv6Tclass, m_priority, m_recvPktInfo, and NS_LOG_FUNCTION_NOARGS.
|
override |
Definition at line 66 of file socket.cc.
References NS_LOG_FUNCTION.
|
pure virtual |
Allocate a local IPv4 endpoint for this socket.
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
|
pure virtual |
Allocate a local endpoint for this socket.
address | the address to try to allocate |
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::NoBackhaulEpcHelper::NoBackhaulEpcHelper(), Tunnel::Tunnel(), ns3::NoBackhaulEpcHelper::AddEnb(), ns3::QKDKeyManagerSystemApplication::AddNewLink(), ns3::NoBackhaulEpcHelper::AddS1Interface(), ns3::EpcX2::AddX2Interface(), ns3::QKDKeyManagerSystemApplication::CheckSocketsKMS(), ns3::QKDKeyManagerSystemApplication::ConnectToSDNController(), ChainRegressionTest::CreateDevices(), Bug772ChainTest::CreateDevices(), ns3::olsr::Bug780Test::CreateNodes(), ns3::Rip::DoInitialize(), ns3::RipNg::DoInitialize(), ns3::olsr::RoutingProtocol::DoInitialize(), ns3::aodv::LoopbackTestCase::DoRun(), IcmpEchoReplyTestCase::DoRun(), IcmpTimeExceedTestCase::DoRun(), IcmpV6EchoReplyTestCase::DoRun(), IcmpV6TimeExceedTestCase::DoRun(), Ipv4DynamicGlobalRoutingTestCase::DoRun(), Ipv4RawSocketImplTest::DoRun(), DualStackTestCase::DoRun(), Ipv6RawSocketImplTest::DoRun(), DynamicNeighborCacheTest::DoRun(), TcpEndPointBug2211Test::DoRun(), TcpSynConnectionFailedTest::DoRun(), UdpSocketImplTest::DoRun(), Udp6SocketImplTest::DoRun(), NixVectorRoutingTest::DoRun(), Ns3TcpLossTestCase::DoRun(), Ns3TcpStateTestCase::DoRun(), ns3::QKDKeyManagerSystemApplication::HandleAccept(), ns3::QKDSDNController::HandleAccept(), HwmpProactiveRegressionTest::InstallApplications(), HwmpReactiveRegressionTest::InstallApplications(), HwmpSimplestRegressionTest::InstallApplications(), HwmpDoRfRegressionTest::InstallApplications(), FlameRegressionTest::InstallApplications(), ns3::aodv::RoutingProtocol::NotifyAddAddress(), ns3::dsdv::RoutingProtocol::NotifyAddAddress(), ns3::aodv::RoutingProtocol::NotifyInterfaceUp(), ns3::dsdv::RoutingProtocol::NotifyInterfaceUp(), ns3::Rip::NotifyInterfaceUp(), ns3::RipNg::NotifyInterfaceUp(), ns3::aodv::RoutingProtocol::NotifyRemoveAddress(), ns3::dsdv::RoutingProtocol::NotifyRemoveAddress(), ns3::ThreeGppHttpClient::OpenConnection(), ns3::QKDApp014::PrepareSendSocketToApp(), ns3::QKDApp014::PrepareSendSocketToKMS(), ns3::QKDKeyManagerSystemApplication::PrepareSinkSocket(), ns3::QKDSDNController::PrepareSinkSocket(), ns3::QKDApp004::PrepareSinkSocketFromApp(), ns3::QKDApp014::PrepareSinkSocketFromApp(), ns3::QKDApp004::PrepareSinkSocketFromKMS(), ns3::QKDApp014::PrepareSinkSocketFromKMS(), NetAnimExperiment::Run(), Experiment::Run(), ns3::TutorialApp::StartApplication(), ns3::BulkSendApplication::StartApplication(), ns3::OnOffApplication::StartApplication(), ns3::PacketSink::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), ns3::UdpEchoServer::StartApplication(), ns3::UdpServer::StartApplication(), ns3::UdpTraceClient::StartApplication(), ns3::DhcpClient::StartApplication(), ns3::DhcpServer::StartApplication(), ns3::Ping::StartApplication(), ns3::Radvd::StartApplication(), ns3::V4TraceRoute::StartApplication(), EpsBearerTagUdpClient::StartApplication(), ns3::PacketSocketClient::StartApplication(), ns3::PacketSocketServer::StartApplication(), ns3::SocketWriter::StartApplication(), ns3::QKDPostprocessingApplication::StartApplication(), Ipv4FragmentationTest::StartClient(), Ipv6FragmentationTest::StartClient(), SixlowpanFragmentationTest::StartClient(), StartFlow(), Ipv4FragmentationTest::StartServer(), Ipv6FragmentationTest::StartServer(), and SixlowpanFragmentationTest::StartServer().
|
pure virtual |
Allocate a local IPv6 endpoint for this socket.
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::ThreeGppHttpClient::OpenConnection(), ns3::BulkSendApplication::StartApplication(), ns3::OnOffApplication::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), and ns3::UdpTraceClient::StartApplication().
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 |
Reimplemented in ns3::UdpSocketImpl, and ns3::TcpSocketBase.
Definition at line 327 of file socket.cc.
References ns3::Node::GetDevice(), ns3::Node::GetNDevices(), GetNode(), m_boundnetdevice, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by BindSock(), ns3::TcpSocketBase::BindToNetDevice(), ns3::UdpSocketImpl::BindToNetDevice(), ns3::Rip::DoInitialize(), ns3::RipNg::DoInitialize(), ns3::olsr::RoutingProtocol::DoInitialize(), ns3::aodv::RoutingProtocol::NotifyAddAddress(), ns3::dsdv::RoutingProtocol::NotifyAddAddress(), ns3::aodv::RoutingProtocol::NotifyInterfaceUp(), ns3::dsdv::RoutingProtocol::NotifyInterfaceUp(), ns3::Rip::NotifyInterfaceUp(), ns3::RipNg::NotifyInterfaceUp(), ns3::aodv::RoutingProtocol::NotifyRemoveAddress(), ns3::DhcpClient::StartApplication(), and ns3::DhcpServer::StartApplication().
|
pure virtual |
Close a socket.
After the Close call, the socket is no longer valid, and cannot safely be used for subsequent operations.
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::SocketWriter::Close(), ns3::QKDApp004::CloseSocketToKms(), ns3::Radvd::DoDispose(), ns3::Rip::DoDispose(), ns3::RipNg::DoDispose(), ns3::olsr::RoutingProtocol::DoDispose(), ns3::aodv::LoopbackTestCase::DoRun(), GenerateTraffic(), Experiment::GenerateTraffic(), TcpEndPointBug2211Test::HandleConnect(), ns3::aodv::RoutingProtocol::NotifyInterfaceDown(), ns3::dsdv::RoutingProtocol::NotifyInterfaceDown(), ns3::aodv::RoutingProtocol::NotifyRemoveAddress(), ns3::QKDApp004::ProcessCloseResponse(), TcpEndPointBug2211Test::Recv(), ns3::BulkSendApplication::SendData(), SendPacket(), ns3::TcpGeneralTest::SendPacket(), TcpTestCase::ServerHandleSend(), TcpTestCase::SourceHandleRecv(), ns3::TutorialApp::StopApplication(), ns3::BulkSendApplication::StopApplication(), ns3::OnOffApplication::StopApplication(), ns3::PacketSink::StopApplication(), ns3::ThreeGppHttpClient::StopApplication(), ns3::ThreeGppHttpServer::StopApplication(), ns3::UdpEchoClient::StopApplication(), ns3::UdpEchoServer::StopApplication(), ns3::DhcpClient::StopApplication(), ns3::Ping::StopApplication(), ns3::V4TraceRoute::StopApplication(), ns3::PacketSocketClient::StopApplication(), ns3::PacketSocketServer::StopApplication(), ns3::QKDApp004::StopApplication(), ns3::QKDApp014::StopApplication(), ns3::QKDKeyManagerSystemApplication::StopApplication(), ns3::QKDSDNController::StopApplication(), Ns3TcpLossTestCase::WriteUntilBufferFull(), Ns3TcpStateTestCase::WriteUntilBufferFull(), and WriteUntilBufferFull().
|
pure virtual |
Initiate a connection to a remote host.
address | Address of remote. |
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::DhcpClient::AcceptAck(), ns3::NoBackhaulEpcHelper::AddEnb(), ns3::QKDKeyManagerSystemApplication::CheckSocketsKMS(), ns3::SocketWriter::Connect(), ns3::QKDKeyManagerSystemApplication::ConnectToSDNController(), ChainRegressionTest::CreateDevices(), Bug772ChainTest::CreateDevices(), ns3::olsr::Bug780Test::CreateNodes(), DualStackTestCase::DoRun(), TcpEndPointBug2211Test::DoRun(), TcpSynConnectionFailedTest::DoRun(), ns3::QKDKeyManagerSystemApplication::HandleAccept(), ns3::QKDSDNController::HandleAccept(), HwmpProactiveRegressionTest::InstallApplications(), HwmpReactiveRegressionTest::InstallApplications(), HwmpSimplestRegressionTest::InstallApplications(), HwmpDoRfRegressionTest::InstallApplications(), FlameRegressionTest::InstallApplications(), ns3::ThreeGppHttpClient::OpenConnection(), ns3::QKDApp004::PrepareSendSocketToApp(), ns3::QKDApp014::PrepareSendSocketToApp(), ns3::QKDApp004::PrepareSendSocketToKMS(), ns3::QKDApp014::PrepareSendSocketToKMS(), TcpTestCase::SetupDefaultSim(), TcpTestCase::SetupDefaultSim6(), ns3::TutorialApp::StartApplication(), ns3::BulkSendApplication::StartApplication(), ns3::OnOffApplication::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), ns3::UdpTraceClient::StartApplication(), EpsBearerTagUdpClient::StartApplication(), ns3::PacketSocketClient::StartApplication(), Ipv4FragmentationTest::StartClient(), Ipv6FragmentationTest::StartClient(), SixlowpanFragmentationTest::StartClient(), Ns3TcpLossTestCase::StartFlow(), Ns3TcpStateTestCase::StartFlow(), and StartFlow().
This method wraps the creation of sockets that is performed on a given node by a SocketFactory specified by TypeId.
node | The node on which to create the socket |
tid | The TypeId of a SocketFactory class to use |
Definition at line 72 of file socket.cc.
References ns3::TypeId::GetName(), ns3::Object::GetObject(), NS_ASSERT, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by ns3::NoBackhaulEpcHelper::NoBackhaulEpcHelper(), Tunnel::Tunnel(), ns3::NoBackhaulEpcHelper::AddEnb(), ns3::QKDKeyManagerSystemApplication::AddNewLink(), ns3::NoBackhaulEpcHelper::AddS1Interface(), ns3::EpcX2::AddX2Interface(), ns3::QKDKeyManagerSystemApplication::CheckSocketsKMS(), ns3::QKDKeyManagerSystemApplication::ConnectToSDNController(), ns3::olsr::Bug780Test::CreateNodes(), ns3::Rip::DoInitialize(), ns3::RipNg::DoInitialize(), ns3::olsr::RoutingProtocol::DoInitialize(), ns3::QKDKeyManagerSystemApplication::HandleAccept(), ns3::QKDSDNController::HandleAccept(), ns3::QKDAppHelper::InstallPostProcessing(), ns3::aodv::RoutingProtocol::NotifyAddAddress(), ns3::dsdv::RoutingProtocol::NotifyAddAddress(), ns3::aodv::RoutingProtocol::NotifyInterfaceUp(), ns3::dsdv::RoutingProtocol::NotifyInterfaceUp(), ns3::Rip::NotifyInterfaceUp(), ns3::RipNg::NotifyInterfaceUp(), ns3::aodv::RoutingProtocol::NotifyRemoveAddress(), ns3::dsdv::RoutingProtocol::NotifyRemoveAddress(), ns3::ThreeGppHttpClient::OpenConnection(), ns3::QKDApp004::PrepareSendSocketToApp(), ns3::QKDApp014::PrepareSendSocketToApp(), ns3::QKDApp004::PrepareSendSocketToKMS(), ns3::QKDApp014::PrepareSendSocketToKMS(), ns3::QKDKeyManagerSystemApplication::PrepareSinkSocket(), ns3::QKDSDNController::PrepareSinkSocket(), ns3::QKDApp004::PrepareSinkSocketFromApp(), ns3::QKDApp014::PrepareSinkSocketFromApp(), ns3::QKDApp004::PrepareSinkSocketFromKMS(), ns3::QKDApp014::PrepareSinkSocketFromKMS(), UanExperiment::SetupApplications(), TcpTestCase::SetupDefaultSim(), TcpTestCase::SetupDefaultSim6(), RoutingExperiment::SetupPacketReceive(), SetupPacketReceive(), ns3::BulkSendApplication::StartApplication(), ns3::OnOffApplication::StartApplication(), ns3::PacketSink::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), ns3::UdpEchoServer::StartApplication(), ns3::UdpServer::StartApplication(), ns3::UdpTraceClient::StartApplication(), ns3::DhcpClient::StartApplication(), ns3::DhcpServer::StartApplication(), ns3::Ping::StartApplication(), ns3::Radvd::StartApplication(), ns3::V4TraceRoute::StartApplication(), ns3::PacketSocketClient::StartApplication(), ns3::PacketSocketServer::StartApplication(), ns3::SocketWriter::StartApplication(), and ns3::QKDPostprocessingApplication::StartApplication().
|
overrideprotectedvirtual |
Destructor implementation.
This method is called by Dispose() or by the Object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overridden version of this method and chain up to their parent's implementation once they are done. i.e, for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose() method.
It is safe to call GetObject() from within this method.
Reimplemented from ns3::Object.
Reimplemented in ns3::PacketSocket.
Definition at line 312 of file socket.cc.
References m_connectionFailed, m_connectionRequest, m_connectionSucceeded, m_dataSent, m_errorClose, m_newConnectionCreated, m_normalClose, m_receivedData, m_sendCb, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4RawSocketImpl::DoDispose(), and ns3::Ipv6RawSocketImpl::DoDispose().
|
pure virtual |
Query whether broadcast datagram transmissions are allowed.
This method corresponds to using getsockopt() SO_BROADCAST of real network or BSD sockets.
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Returns socket's bound NetDevice, if any.
This method corresponds to using getsockopt() SO_BINDTODEVICE of real network or BSD sockets.
Definition at line 347 of file socket.cc.
References m_boundnetdevice, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::Bind(), ns3::UdpSocketImpl::Bind(), ns3::TcpSocketBase::CompleteFork(), ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::Ipv6RawSocketImpl::ForwardUp(), and srcSocketRecv().
|
pure virtual |
Get last error number.
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::ThreeGppHttpClient::ErrorCloseCallback(), ns3::ThreeGppHttpClient::NormalCloseCallback(), ns3::ThreeGppHttpClient::OpenConnection(), ns3::ThreeGppHttpClient::RequestEmbeddedObject(), ns3::ThreeGppHttpClient::RequestMainObject(), ns3::ThreeGppHttpServer::ServeFromTxBuffer(), TcpTestCase::ServerHandleRecv(), TcpTestCase::SetupDefaultSim(), TcpTestCase::SetupDefaultSim6(), TcpTestCase::SourceHandleRecv(), and ns3::ThreeGppHttpServer::StartApplication().
uint8_t ns3::Socket::GetIpTos | ( | ) | const |
Query the value of IP Type of Service of this socket.
This method corresponds to using getsockopt () IP_TOS of real network or BSD sockets.
Definition at line 450 of file socket.cc.
References m_ipTos.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSend(), ns3::UdpSocketImpl::GetPeerName(), ns3::Ipv4RawSocketImpl::Send(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), and ns3::TcpSocketSmallAcks::SendEmptyPacket().
|
virtual |
Query the value of IP Time to Live field of this socket.
This method corresponds to using getsockopt () IP_TTL of real network or BSD sockets.
Definition at line 517 of file socket.cc.
References m_ipTtl.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), ns3::UdpSocket::GetTypeId(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), and ns3::Ipv4RawSocketImpl::SendTo().
|
virtual |
Query the value of IP Hop Limit field of this socket.
This method corresponds to using getsockopt () IPV6_HOPLIMIT of real network or BSD sockets.
Definition at line 542 of file socket.cc.
References m_ipv6HopLimit.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), and ns3::Ipv6RawSocketImpl::SendTo().
uint8_t ns3::Socket::GetIpv6Tclass | ( | ) | const |
Query the value of IPv6 Traffic Class field of this socket.
This method corresponds to using getsockopt () IPV6_TCLASS of real network or BSD sockets.
Definition at line 492 of file socket.cc.
References m_ipv6Tclass.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), and ns3::Ipv6RawSocketImpl::SendTo().
Return the node this socket is associated with.
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by BindToNetDevice(), Bug772ChainTest::CreateDevices(), ns3::TcpGeneralTest::DataSentCb(), ns3::aodv::LoopbackTestCase::DoRun(), IcmpEchoReplyTestCase::DoRun(), IcmpTimeExceedTestCase::DoRun(), IcmpV6EchoReplyTestCase::DoRun(), IcmpV6TimeExceedTestCase::DoRun(), Ipv4FragmentationTest::DoRun(), Ipv6FragmentationTest::DoRun(), SixlowpanFragmentationTest::DoRun(), ns3::TcpGeneralTest::ErrorCloseCb(), HwmpProactiveRegressionTest::InstallApplications(), HwmpReactiveRegressionTest::InstallApplications(), HwmpSimplestRegressionTest::InstallApplications(), HwmpDoRfRegressionTest::InstallApplications(), FlameRegressionTest::InstallApplications(), ns3::TcpGeneralTest::NormalCloseCb(), PrintReceivedPacket(), Ipv4DeduplicationTest::ReceivePkt(), Bug772ChainTest::SendData(), ns3::aodv::LoopbackTestCase::SendData(), UdpSocketImplTest::SendData(), HwmpProactiveRegressionTest::SendData(), HwmpReactiveRegressionTest::SendData(), HwmpSimplestRegressionTest::SendData(), FlameRegressionTest::SendData(), DynamicNeighborCacheTest::SendData(), Ipv4ForwardingTest::SendData(), Ipv4GlobalRoutingSlash32TestCase::SendData(), Ipv4RawSocketImplTest::SendData(), Ipv4RipTest::SendData(), Ipv4RipCountToInfinityTest::SendData(), Ipv4StaticRoutingSlash32TestCase::SendData(), Ipv6ForwardingTest::SendData(), Ipv6RawSocketImplTest::SendData(), Ipv6RipngTest::SendData(), Ipv6RipngCountToInfinityTest::SendData(), SixlowpanHc1ImplTest::SendData(), SixlowpanIphcImplTest::SendData(), NixVectorRoutingTest::SendData(), Ipv4RawSocketImplTest::SendData_IpHdr(), Ipv4HeaderTest::SendData_IpHdr_Dscp(), HwmpDoRfRegressionTest::SendDataA(), HwmpDoRfRegressionTest::SendDataB(), HwmpDoRfRegressionTest::SendDataC(), UdpSocketImplTest::SendDataTo(), Udp6SocketImplTest::SendDataTo(), and Ipv4DeduplicationTest::SendPacket().
|
pure virtual |
Get the peer address of a connected socket.
address | the address this socket is connected to. |
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::QKDKeyManagerSystemApplication::CheckDoSAttack(), ns3::QKDApp004::Close(), ns3::BulkSendApplication::ConnectionSucceeded(), ns3::BulkSendApplication::DataSend(), ns3::QKDApp004::GetKeyFromKMS(), ns3::QKDApp004::OpenConnect(), ns3::QKDApp004::PrepareSendSocketToKMS(), ns3::QKDApp004::ProcessPacketsToKMSFromQueue(), ns3::QKDKeyManagerSystemApplication::ProcessRequest(), ns3::UdpClient::Send(), Ipv4FragmentationTest::SendClient(), ns3::QKDApp004::SendMaliciousRequestToKMS(), ns3::OnOffApplication::SendPacket(), ns3::QKDKeyManagerSystemApplication::SendToSocketPair(), ns3::QKDSDNController::SendToSocketPair(), TcpTestCase::SetupDefaultSim(), and TcpTestCase::SetupDefaultSim6().
uint8_t ns3::Socket::GetPriority | ( | ) | const |
Query the priority value of this socket.
This method corresponds to using getsockopt () SO_PRIORITY of real network or BSD sockets.
Definition at line 393 of file socket.cc.
References m_priority.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::Ipv4RawSocketImpl::SendTo(), and ns3::PacketSocket::SendTo().
|
pure virtual |
Return number of bytes which can be returned from one or multiple calls to Recv.
Must be possible to call this method from the Recv callback.
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by UanExperiment::PrintReceivedPacket(), ns3::Ping::Receive(), ns3::V4TraceRoute::Receive(), ns3::olsr::Bug780Test::Receive(), Ipv4DeduplicationTest::ReceivePkt(), Ipv4ForwardingTest::ReceivePkt(), Ipv4GlobalRoutingSlash32TestCase::ReceivePkt(), Ipv4HeaderTest::ReceivePkt(), Ipv4RawSocketImplTest::ReceivePkt(), Ipv4RipTest::ReceivePkt(), Ipv4RipCountToInfinityTest::ReceivePkt(), Ipv4StaticRoutingSlash32TestCase::ReceivePkt(), Ipv6ForwardingTest::ReceivePkt(), Ipv6RawSocketImplTest::ReceivePkt(), Ipv6RipngTest::ReceivePkt(), Ipv6RipngCountToInfinityTest::ReceivePkt(), DynamicNeighborCacheTest::ReceivePkt(), UdpSocketLoopbackTest::ReceivePkt(), Udp6SocketLoopbackTest::ReceivePkt(), UdpSocketImplTest::ReceivePkt(), Udp6SocketImplTest::ReceivePkt(), NixVectorRoutingTest::ReceivePkt(), SixlowpanHc1ImplTest::ReceivePkt(), SixlowpanIphcImplTest::ReceivePkt(), Ipv4RawSocketImplTest::ReceivePkt2(), Ipv6RawSocketImplTest::ReceivePkt2(), UdpSocketImplTest::ReceivePkt2(), Udp6SocketImplTest::ReceivePkt2(), Ipv4RipSplitHorizonStrategyTest::ReceivePktProbe(), Ipv6RipngSplitHorizonStrategyTest::ReceivePktProbe(), ns3::olsr::HelloRegressionTest::ReceivePktProbeA(), ns3::olsr::TcRegressionTest::ReceivePktProbeA(), ns3::olsr::HelloRegressionTest::ReceivePktProbeB(), ns3::olsr::TcRegressionTest::ReceivePktProbeB(), ns3::olsr::TcRegressionTest::ReceivePktProbeC(), TcpEndPointBug2211Test::Recv(), Ipv4PacketInfoTagTest::RxCb(), Ipv6PacketInfoTagTest::RxCb(), TcpTestCase::ServerHandleRecv(), and TcpTestCase::SourceHandleRecv().
|
pure virtual |
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::QKDKeyManagerSystemApplication::CheckSocketsKMS(), ns3::QKDKeyManagerSystemApplication::HandleAccept(), ns3::QKDSDNController::HandleAccept(), SetIpTos(), and ns3::BulkSendApplication::StartApplication().
|
pure virtual |
Get socket address.
address | the address name this socket is associated with. |
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::BulkSendApplication::ConnectionSucceeded(), ns3::BulkSendApplication::DataSend(), ns3::PacketSink::HandleRead(), ns3::UdpEchoClient::HandleRead(), ns3::UdpEchoServer::HandleRead(), ns3::UdpServer::HandleRead(), PrintReceivedPacket(), ns3::UdpClient::Send(), ns3::UdpEchoClient::Send(), ns3::OnOffApplication::SendPacket(), SetIpTos(), SetIpv6Tclass(), and ns3::BulkSendApplication::StartApplication().
|
pure virtual |
Returns the number of bytes which can be sent in a single call to Send.
For datagram sockets, this returns the number of bytes that can be passed atomically through the underlying protocol.
For stream sockets, this returns the available space in bytes left in the transmit buffer.
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::ThreeGppHttpServer::ServeFromTxBuffer(), TcpTestCase::ServerHandleRecv(), TcpTestCase::ServerHandleSend(), TcpTestCase::SourceHandleSend(), Ns3TcpLossTestCase::StartFlow(), Ns3TcpStateTestCase::StartFlow(), StartFlow(), Ns3TcpLossTestCase::WriteUntilBufferFull(), Ns3TcpStateTestCase::WriteUntilBufferFull(), and WriteUntilBufferFull().
|
static |
Get the type ID.
Definition at line 40 of file socket.cc.
References ns3::TypeId::SetParent().
|
static |
Return the priority corresponding to a given TOS value.
This function is implemented after the Linux rt_tos2priority function. The usage of the TOS byte has been originally defined by RFC 1349 (http://www.ietf.org/rfc/rfc1349.txt):
0 1 2 3 4 5 6 7 +-----+-----+-----+-----+-----+-----+-----+-----+ | PRECEDENCE | TOS | MBZ | +-----+-----+-----+-----+-----+-----+-----+-----+
where MBZ stands for 'must be zero'.
The Linux rt_tos2priority function ignores the precedence bits and maps each of the 16 values coded in bits 3-6 as follows:
Bits 3-6 | Means | Linux Priority |
---|---|---|
0 | Normal Service | Best Effort (0) |
1 | Minimize Monetary Cost | Best Effort (0) |
2 | Maximize Reliability | Best Effort (0) |
3 | mmc+mr | Best Effort (0) |
4 | Maximize Throughput | Bulk (2) |
5 | mmc+mt | Bulk (2) |
6 | mr+mt | Bulk (2) |
7 | mmc+mr+mt | Bulk (2) |
8 | Minimize Delay | Interactive (6) |
9 | mmc+md | Interactive (6) |
10 | mr+md | Interactive (6) |
11 | mmc+mr+md | Interactive (6) |
12 | mt+md | Int. Bulk (4) |
13 | mmc+mt+md | Int. Bulk (4) |
14 | mr+mt+md | Int. Bulk (4) |
15 | mmc+mr+mt+md | Int. Bulk (4) |
RFC 2474 (http://www.ietf.org/rfc/rfc2474.txt) redefines the TOS byte:
0 1 2 3 4 5 6 7 +-----+-----+-----+-----+-----+-----+-----+-----+ | DSCP | CU | +-----+-----+-----+-----+-----+-----+-----+-----+
where DSCP is the Differentiated Services Code Point and CU stands for 'currently unused' (actually, RFC 3168 proposes to use these two bits for ECN purposes). The table above allows to determine how the Linux rt_tos2priority function maps each DSCP value to a priority value. Such a mapping is shown below.
DSCP | Hex | TOS (binary) | bits 3-6 | Linux Priority |
---|---|---|---|---|
EF | 0x2E | 101110xx | 12-13 | Int. Bulk (4) |
AF11 | 0x0A | 001010xx | 4-5 | Bulk (2) |
AF21 | 0x12 | 010010xx | 4-5 | Bulk (2) |
AF31 | 0x1A | 011010xx | 4-5 | Bulk (2) |
AF41 | 0x22 | 100010xx | 4-5 | Bulk (2) |
AF12 | 0x0C | 001100xx | 8-9 | Interactive (6) |
AF22 | 0x14 | 010100xx | 8-9 | Interactive (6) |
AF32 | 0x1C | 011100xx | 8-9 | Interactive (6) |
AF42 | 0x24 | 100100xx | 8-9 | Interactive (6) |
AF13 | 0x0E | 001110xx | 12-13 | Int. Bulk (4) |
AF23 | 0x16 | 010110xx | 12-13 | Int. Bulk (4) |
AF33 | 0x1E | 011110xx | 12-13 | Int. Bulk (4) |
AF43 | 0x26 | 100110xx | 12-13 | Int. Bulk (4) |
CS0 | 0x00 | 000000xx | 0-1 | Best Effort (0) |
CS1 | 0x08 | 001000xx | 0-1 | Best Effort (0) |
CS2 | 0x10 | 010000xx | 0-1 | Best Effort (0) |
CS3 | 0x18 | 011000xx | 0-1 | Best Effort (0) |
CS4 | 0x20 | 100000xx | 0-1 | Best Effort (0) |
CS5 | 0x28 | 101000xx | 0-1 | Best Effort (0) |
CS6 | 0x30 | 110000xx | 0-1 | Best Effort (0) |
CS7 | 0x38 | 111000xx | 0-1 | Best Effort (0) |
ipTos | the TOS value (in the range 0..255) |
Definition at line 399 of file socket.cc.
References NS3_PRIO_BESTEFFORT, NS3_PRIO_BULK, NS3_PRIO_INTERACTIVE, and NS3_PRIO_INTERACTIVE_BULK.
Referenced by ns3::UdpSocketImpl::DoSendTo(), ns3::Ipv4L3Protocol::IpForward(), ns3::Ipv4RawSocketImpl::SendTo(), and SetIpTos().
|
virtual |
Joins a IPv6 multicast group without filters.
A socket can join only one multicast group. Any attempt to join another group will remove the old one.
address | Group address on which socket wants to join. |
Definition at line 569 of file socket.cc.
References first::address, EXCLUDE, Ipv6JoinGroup(), and NS_LOG_FUNCTION.
|
virtual |
Joins a IPv6 multicast group.
Based on the filter mode and source addresses this can be interpreted as a join, leave, or modification to source filtering on a multicast group.
Mind that a socket can join only one multicast group. Any attempt to join another group will remove the old one.
address | Requested multicast address. |
filterMode | Socket filtering mode (INCLUDE | EXCLUDE). |
sourceAddresses | All the source addresses on which socket is interested or not interested. |
Reimplemented in ns3::UdpSocketImpl, and ns3::Ipv6RawSocketImpl.
Definition at line 560 of file socket.cc.
References first::address, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by Ipv6JoinGroup(), and Ipv6LeaveGroup().
|
virtual |
Leaves IPv6 multicast group this socket is joined to.
Definition at line 580 of file socket.cc.
References ns3::Ipv6Address::GetAny(), INCLUDE, Ipv6JoinGroup(), ns3::Ipv6Address::IsAny(), m_ipv6MulticastGroupAddress, NS_LOG_FUNCTION, and NS_LOG_INFO.
Referenced by ns3::Ipv6RawSocketImpl::Close(), and ns3::UdpSocketImpl::Close().
bool ns3::Socket::IsIpRecvTos | ( | ) | const |
Ask if the socket is currently passing information about IP Type of Service up the stack.
This method corresponds to using getsockopt () IP_RECVTOS of real network or BSD sockets.
Definition at line 462 of file socket.cc.
References m_ipRecvTos.
Referenced by ns3::Ipv4RawSocketImpl::ForwardUp(), and ns3::UdpSocketImpl::ForwardUp().
bool ns3::Socket::IsIpRecvTtl | ( | ) | const |
Ask if the socket is currently passing information about IP_TTL up the stack.
This method corresponds to using getsockopt () IP_RECVTTL of real network or BSD sockets.
Definition at line 529 of file socket.cc.
References m_ipRecvTtl.
Referenced by ns3::Ipv4RawSocketImpl::ForwardUp(), and ns3::UdpSocketImpl::ForwardUp().
bool ns3::Socket::IsIpv6RecvHopLimit | ( | ) | const |
Ask if the socket is currently passing information about IPv6 Hop Limit up the stack.
This method corresponds to using getsockopt () IPV6_RECVHOPLIMIT of real network or BSD sockets.
Definition at line 554 of file socket.cc.
References m_ipv6RecvHopLimit.
Referenced by ns3::Ipv6RawSocketImpl::ForwardUp(), and ns3::UdpSocketImpl::ForwardUp6().
bool ns3::Socket::IsIpv6RecvTclass | ( | ) | const |
Ask if the socket is currently passing information about IPv6 Traffic Class up the stack.
This method corresponds to using getsockopt () IPV6_RECVTCLASS of real network or BSD sockets.
Definition at line 504 of file socket.cc.
References m_ipv6RecvTclass.
Referenced by ns3::Ipv6RawSocketImpl::ForwardUp(), and ns3::UdpSocketImpl::ForwardUp6().
|
protected |
Checks if the socket has a specific IPv4 TTL set.
Definition at line 374 of file socket.cc.
References m_manualIpTtl.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), and ns3::Ipv4RawSocketImpl::SendTo().
|
protected |
Checks if the socket has a specific IPv6 Hop Limit set.
Definition at line 380 of file socket.cc.
References m_manualIpv6HopLimit.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), and ns3::Ipv6RawSocketImpl::SendTo().
|
protected |
Checks if the socket has a specific IPv6 Tclass set.
Definition at line 368 of file socket.cc.
References m_manualIpv6Tclass.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), and ns3::Ipv6RawSocketImpl::SendTo().
bool ns3::Socket::IsRecvPktInfo | ( | ) | const |
Get status indicating whether enable/disable packet information to socket.
Definition at line 361 of file socket.cc.
References m_recvPktInfo, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::Ipv6RawSocketImpl::ForwardUp(), ns3::UdpSocketImpl::ForwardUp(), and ns3::UdpSocketImpl::ForwardUp6().
|
pure virtual |
Listen for incoming connections.
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::QKDKeyManagerSystemApplication::AddNewLink(), ns3::QKDKeyManagerSystemApplication::ConnectToSDNController(), Bug772ChainTest::CreateDevices(), Ipv4DynamicGlobalRoutingTestCase::DoRun(), DualStackTestCase::DoRun(), ns3::QKDKeyManagerSystemApplication::PrepareSinkSocket(), ns3::QKDSDNController::PrepareSinkSocket(), ns3::QKDApp004::PrepareSinkSocketFromApp(), ns3::QKDApp014::PrepareSinkSocketFromApp(), ns3::QKDApp004::PrepareSinkSocketFromKMS(), ns3::QKDApp014::PrepareSinkSocketFromKMS(), ns3::PacketSink::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), and ns3::QKDPostprocessingApplication::StartApplication().
|
protected |
Notify through the callback (if set) that the connection has not been established due to an error.
Definition at line 224 of file socket.cc.
References m_connectionFailed, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4RawSocketImpl::Connect(), ns3::Ipv6RawSocketImpl::Connect(), ns3::UdpSocketImpl::Connect(), ns3::PacketSocket::Connect(), and ns3::TcpSocketBase::SendEmptyPacket().
|
protected |
Notify through the callback (if set) that an incoming connection is being requested by a remote host.
This function returns true by default (i.e., accept all the incoming connections). The callback (if set) might restrict this behaviour by returning zero for a connection that should be refused.
from | the address the connection is incoming from |
Definition at line 254 of file socket.cc.
References m_connectionRequest, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::ProcessListen().
|
protected |
Notify through the callback (if set) that the connection has been established.
Definition at line 214 of file socket.cc.
References m_connectionSucceeded, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4RawSocketImpl::Connect(), ns3::Ipv6RawSocketImpl::Connect(), ns3::UdpSocketImpl::Connect(), ns3::PacketSocket::Connect(), and ns3::TcpSocketBase::ConnectionSucceeded().
|
protected |
Notify through the callback (if set) that some data have been received.
Definition at line 302 of file socket.cc.
References m_receivedData, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::Ipv6RawSocketImpl::ForwardUp(), ns3::PacketSocket::ForwardUp(), ns3::UdpSocketImpl::ForwardUp(), ns3::UdpSocketImpl::ForwardUp6(), ns3::TcpSocketBase::ProcessWait(), and ns3::TcpSocketBase::ReceivedData().
|
protected |
Notify through the callback (if set) that some data have been sent.
size | number of sent bytes. |
Definition at line 282 of file socket.cc.
References m_dataSent, and NS_LOG_FUNCTION.
Referenced by ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketBase::SendDataPacket(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::Ipv4RawSocketImpl::SendTo(), ns3::Ipv6RawSocketImpl::SendTo(), and ns3::PacketSocket::SendTo().
|
protected |
Notify through the callback (if set) that the connection has been closed due to an error.
Definition at line 244 of file socket.cc.
References m_errorClose, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::LastAckTimeout(), ns3::TcpSocketBase::ReTxTimeout(), and ns3::TcpSocketBase::SendRST().
|
protected |
Notify through the callback (if set) that a new connection has been created.
socket | The socket receiving the new connection. |
from | The address of the node initiating the connection. |
Definition at line 272 of file socket.cc.
References m_newConnectionCreated, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::ProcessSynRcvd().
|
protected |
Notify through the callback (if set) that the connection has been closed.
Definition at line 234 of file socket.cc.
References m_normalClose, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::CloseAndNotify(), ns3::TcpSocketBase::DoPeerClose(), and ns3::TcpSocketBase::TimeWait().
|
protected |
Notify through the callback (if set) that some data have been sent.
spaceAvailable | the number of bytes available in the transmission buffer. |
Definition at line 292 of file socket.cc.
References m_sendCb, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::ConnectionSucceeded(), ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketBase::NewAck(), ns3::TcpSocketBase::ProcessSynRcvd(), ns3::TcpSocketBase::SendPendingData(), ns3::Ipv4RawSocketImpl::SendTo(), ns3::Ipv6RawSocketImpl::SendTo(), and ns3::PacketSocket::SendTo().
Read a single packet from the socket.
Overloaded version of Recv(maxSize, flags) with maxSize implicitly set to maximum sized integer, and flags set to zero.
Definition at line 174 of file socket.cc.
References max, and NS_LOG_FUNCTION.
Referenced by Recv(), and ns3::TcpSocketBase::RecvFrom().
Read data from the socket.
This function matches closely in semantics to the recv() function call in the standard C library (libc): ssize_t recv (int s, void *buf, size_t len, int flags); except that the receive I/O is asynchronous. This is the primary Recv method at this low-level API and must be implemented by subclasses.
This method is normally used only on a connected socket. In a typical blocking sockets model, this call would block until at least one byte is returned or the connection closes. In ns-3 at this API, the call returns immediately in such a case and returns 0 if nothing is available to be read. However, an application can set a callback, ns3::SetRecvCallback, to be notified of data being available to be read (when it conceptually unblocks); this is an asynchronous I/O model for recv().
This variant of Recv() uses class ns3::Packet to encapsulate data, rather than providing a raw pointer and length field. This allows an ns-3 application to attach tags if desired (such as a flow ID) and may allow the simulator to avoid some data copies. Despite the appearance of receiving Packets on a stream socket, just think of it as a fancy byte buffer with streaming semantics.
The semantics depend on the type of socket. For a datagram socket, each Recv() returns the data from at most one Send(), and order is not necessarily preserved. For a stream socket, the bytes are delivered in order, and on-the-wire packet boundaries are not preserved.
The flags argument is formed by or'ing one or more of the values: MSG_OOB process out-of-band data MSG_PEEK peek at incoming message None of these flags are supported for now.
Some variants of Recv() are supported as additional API, including RecvFrom(), overloaded Recv() without arguments, and variants that use raw character buffers.
maxSize | reader will accept packet up to maxSize |
flags | Socket control flags |
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by Tunnel::N0SocketRecv(), Tunnel::N1SocketRecv(), Tunnel::N3SocketRecv(), PrintReceivedPacket(), ReceivePacket(), Experiment::ReceivePacket(), DsdvManetExample::ReceivePacket(), NetAnimExperiment::ReceivePacket(), ns3::aodv::LoopbackTestCase::ReceivePkt(), Ipv4DeduplicationTest::ReceivePkt(), Ipv4ForwardingTest::ReceivePkt(), Ipv4GlobalRoutingSlash32TestCase::ReceivePkt(), Ipv4HeaderTest::ReceivePkt(), Ipv4RawSocketImplTest::ReceivePkt(), Ipv4RipTest::ReceivePkt(), Ipv4RipCountToInfinityTest::ReceivePkt(), Ipv4StaticRoutingSlash32TestCase::ReceivePkt(), Ipv6ForwardingTest::ReceivePkt(), Ipv6RawSocketImplTest::ReceivePkt(), Ipv6RipngTest::ReceivePkt(), Ipv6RipngCountToInfinityTest::ReceivePkt(), DynamicNeighborCacheTest::ReceivePkt(), UdpSocketLoopbackTest::ReceivePkt(), Udp6SocketLoopbackTest::ReceivePkt(), UdpSocketImplTest::ReceivePkt(), Udp6SocketImplTest::ReceivePkt(), NixVectorRoutingTest::ReceivePkt(), SixlowpanHc1ImplTest::ReceivePkt(), SixlowpanIphcImplTest::ReceivePkt(), Ipv4RawSocketImplTest::ReceivePkt2(), Ipv6RawSocketImplTest::ReceivePkt2(), UdpSocketImplTest::ReceivePkt2(), Udp6SocketImplTest::ReceivePkt2(), ns3::olsr::HelloRegressionTest::ReceivePktProbeA(), ns3::olsr::TcRegressionTest::ReceivePktProbeA(), ns3::olsr::HelloRegressionTest::ReceivePktProbeB(), ns3::olsr::TcRegressionTest::ReceivePktProbeB(), ns3::olsr::TcRegressionTest::ReceivePktProbeC(), ns3::EpcEnbApplication::RecvFromLteSocket(), ns3::EpcMmeApplication::RecvFromS11Socket(), ns3::EpcSgwApplication::RecvFromS11Socket(), ns3::EpcEnbApplication::RecvFromS1uSocket(), ns3::EpcSgwApplication::RecvFromS1uSocket(), ns3::EpcPgwApplication::RecvFromS5cSocket(), ns3::EpcSgwApplication::RecvFromS5cSocket(), ns3::EpcPgwApplication::RecvFromS5uSocket(), ns3::EpcSgwApplication::RecvFromS5uSocket(), ns3::EpcX2::RecvFromX2cSocket(), ns3::EpcX2::RecvFromX2uSocket(), Ipv4PacketInfoTagTest::RxCb(), Ipv6PacketInfoTagTest::RxCb(), TcpTestCase::ServerHandleRecv(), SocketPrinter(), and TcpTestCase::SourceHandleRecv().
int ns3::Socket::Recv | ( | uint8_t * | buf, |
uint32_t | size, | ||
uint32_t | flags | ||
) |
Recv data (or dummy data) from the remote host.
This method is provided so as to have an API which is closer in appearance to that of real network or BSD sockets.
If the underlying packet was carring null (fake) data, this buffer will be zeroed up to the length specified by the return value.
buf | A pointer to a raw byte buffer to write the data to. |
size | Number of bytes (at most) to copy to buf |
flags | any flags to pass to the socket |
Definition at line 181 of file socket.cc.
References ns3::Packet::CopyData(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, and Recv().
Read a single packet from the socket and retrieve the sender address.
Calls RecvFrom (maxSize, flags, fromAddress) with maxSize implicitly set to maximum sized integer, and flags set to zero.
fromAddress | output parameter that will return the address of the sender of the received packet, if any. Remains untouched if no packet is received. |
Definition at line 194 of file socket.cc.
References max, NS_LOG_FUNCTION, and RecvFrom().
|
pure virtual |
Read a single packet from the socket and retrieve the sender address.
Calls Recv(maxSize, flags) with maxSize implicitly set to maximum sized integer, and flags set to zero.
This method has similar semantics to Recv () but subclasses may want to provide checks on socket state, so the implementation is pushed to subclasses.
maxSize | reader will accept packet up to maxSize |
flags | Socket control flags |
fromAddress | output parameter that will return the address of the sender of the received packet, if any. Remains untouched if no packet is received. |
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by dstSocketRecv(), ns3::aodv::LoopbackTestCase::EchoData(), ns3::PacketSink::HandleRead(), ns3::QKDKeyManagerSystemApplication::HandleRead(), ns3::QKDSDNController::HandleRead(), ns3::UdpEchoClient::HandleRead(), ns3::UdpEchoServer::HandleRead(), ns3::UdpServer::HandleRead(), ns3::Radvd::HandleRead(), Ipv4DynamicGlobalRoutingTestCase::HandleRead(), ns3::PacketSocketServer::HandleRead(), Ipv4FragmentationTest::HandleReadClient(), Ipv6FragmentationTest::HandleReadClient(), HwmpProactiveRegressionTest::HandleReadClient(), HwmpReactiveRegressionTest::HandleReadClient(), HwmpSimplestRegressionTest::HandleReadClient(), HwmpDoRfRegressionTest::HandleReadClient(), FlameRegressionTest::HandleReadClient(), SixlowpanFragmentationTest::HandleReadClient(), ns3::QKDApp004::HandleReadFromApp(), ns3::QKDApp014::HandleReadFromApp(), ns3::QKDApp004::HandleReadFromKMS(), ns3::QKDApp014::HandleReadFromKMS(), ns3::QKDKeyManagerSystemApplication::HandleReadKMSs(), ns3::QKDKeyManagerSystemApplication::HandleReadSDN(), Ipv4FragmentationTest::HandleReadServer(), Ipv6FragmentationTest::HandleReadServer(), HwmpProactiveRegressionTest::HandleReadServer(), HwmpReactiveRegressionTest::HandleReadServer(), HwmpSimplestRegressionTest::HandleReadServer(), HwmpDoRfRegressionTest::HandleReadServer(), FlameRegressionTest::HandleReadServer(), SixlowpanFragmentationTest::HandleReadServer(), ns3::QKDApp004::HandleReadSignalingFromApp(), ns3::QKDApp014::HandleReadSignalingFromApp(), ns3::DhcpClient::NetHandler(), ns3::DhcpServer::NetHandler(), UanExperiment::PrintReceivedPacket(), Receiver::Receive(), ns3::Ping::Receive(), ns3::V4TraceRoute::Receive(), ns3::Rip::Receive(), ns3::RipNg::Receive(), ns3::olsr::Bug780Test::Receive(), ns3::ThreeGppHttpClient::ReceivedDataCallback(), ns3::ThreeGppHttpServer::ReceivedDataCallback(), ReceivePacket(), RoutingExperiment::ReceivePacket(), ns3::TcpGeneralTest::ReceivePacket(), IcmpEchoReplyTestCase::ReceivePkt(), IcmpTimeExceedTestCase::ReceivePkt(), IcmpV6EchoReplyTestCase::ReceivePkt(), IcmpV6TimeExceedTestCase::ReceivePkt(), Ipv6RawSocketImplTest::ReceivePkt2(), Ipv4RipSplitHorizonStrategyTest::ReceivePktProbe(), Ipv6RipngSplitHorizonStrategyTest::ReceivePktProbe(), ns3::aodv::RoutingProtocol::RecvAodv(), ns3::dsdv::RoutingProtocol::RecvDsdv(), RecvFrom(), ns3::olsr::RoutingProtocol::RecvOlsr(), and srcSocketRecv().
int ns3::Socket::RecvFrom | ( | uint8_t * | buf, |
uint32_t | size, | ||
uint32_t | flags, | ||
Address & | fromAddress | ||
) |
Read a single packet from the socket and retrieve the sender address.
This method is provided so as to have an API which is closer in appearance to that of real network or BSD sockets.
buf | A pointer to a raw byte buffer to write the data to. If the underlying packet was carring null (fake) data, this buffer will be zeroed up to the length specified by the return value. |
size | Number of bytes (at most) to copy to buf |
flags | any flags to pass to the socket |
fromAddress | output parameter that will return the address of the sender of the received packet, if any. Remains untouched if no packet is received. |
Definition at line 201 of file socket.cc.
References ns3::Packet::CopyData(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, and RecvFrom().
int ns3::Socket::Send | ( | const uint8_t * | buf, |
uint32_t | size, | ||
uint32_t | flags | ||
) |
Send data (or dummy data) to the remote host.
This method is provided so as to have an API which is closer in appearance to that of real network or BSD sockets.
buf | A pointer to a raw byte buffer of some data to send. If this buffer is 0, we send dummy data whose size is specified by the second parameter |
size | the number of bytes to copy from the buffer |
flags | Socket control flags |
Definition at line 142 of file socket.cc.
References NS_LOG_FUNCTION, and Send().
Send data (or dummy data) to the remote host.
Overloaded version of Send(..., flags) with flags set to zero.
p | ns3::Packet to send |
Definition at line 135 of file socket.cc.
References NS_LOG_FUNCTION, and Send().
Send data (or dummy data) to the remote host.
This function matches closely in semantics to the send() function call in the standard C library (libc): ssize_t send (int s, const void *msg, size_t len, int flags); except that the send I/O is asynchronous. This is the primary Send method at this low-level API and must be implemented by subclasses.
In a typical blocking sockets model, this call would block upon lack of space to hold the message to be sent. In ns-3 at this API, the call returns immediately in such a case, but the callback registered with SetSendCallback() is invoked when the socket has space (when it conceptually unblocks); this is an asynchronous I/O model for send().
This variant of Send() uses class ns3::Packet to encapsulate data, rather than providing a raw pointer and length field. This allows an ns-3 application to attach tags if desired (such as a flow ID) and may allow the simulator to avoid some data copies. Despite the appearance of sending Packets on a stream socket, just think of it as a fancy byte buffer with streaming semantics.
If either the message buffer within the Packet is too long to pass atomically through the underlying protocol (for datagram sockets), or the message buffer cannot entirely fit in the transmit buffer (for stream sockets), -1 is returned and SocketErrno is set to ERROR_MSGSIZE. If the packet does not fit, the caller can split the Packet (based on information obtained from GetTxAvailable) and reattempt to send the data.
The flags argument is formed by or'ing one or more of the values: MSG_OOB process out-of-band data MSG_DONTROUTE bypass routing, use direct interface These flags are unsupported as of ns-3.1.
p | ns3::Packet to send |
flags | Socket control flags |
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::QKDKeyManagerSystemApplication::AddNewLink(), ns3::QKDApp004::Close(), ns3::QKDKeyManagerSystemApplication::ConnectionToSDNSucceeded(), ns3::QKDApp004::CreateKeyQueues(), ns3::QKDApp004::CreateKeyQueuesResponse(), UdpSocketImplTest::DoSendData(), ns3::QKDApp014::ExchangeInfoMessages(), GenerateTraffic(), Experiment::GenerateTraffic(), ns3::QKDApp004::GetKeyFromKMS(), ns3::QKDApp014::GetKeysFromKMS(), ns3::QKDApp014::GetKeyWithKeyIDs(), ns3::QKDApp014::GetStatusFromKMS(), TcpEndPointBug2211Test::HandleConnect(), ns3::QKDKeyManagerSystemApplication::NegotiateKeysForAssociation(), ns3::QKDKeyManagerSystemApplication::NewAppRequest(), ns3::QKDApp004::OpenConnect(), ns3::QKDKeyManagerSystemApplication::ProcessCloseRequest(), ns3::QKDApp004::ProcessPacketsToKMSFromQueue(), ns3::QKDKeyManagerSystemApplication::RegisterApplicationEntry(), ns3::QKDKeyManagerSystemApplication::RegisterRequest(), ns3::ThreeGppHttpClient::RequestEmbeddedObject(), ns3::ThreeGppHttpClient::RequestMainObject(), ns3::UdpClient::Send(), ns3::UdpEchoClient::Send(), EpsBearerTagUdpClient::Send(), ns3::PacketSocketClient::Send(), Send(), Ipv4FragmentationTest::SendClient(), Ipv6FragmentationTest::SendClient(), SixlowpanFragmentationTest::SendClient(), ns3::BulkSendApplication::SendData(), Bug772ChainTest::SendData(), HwmpProactiveRegressionTest::SendData(), HwmpReactiveRegressionTest::SendData(), HwmpSimplestRegressionTest::SendData(), FlameRegressionTest::SendData(), HwmpDoRfRegressionTest::SendDataA(), HwmpDoRfRegressionTest::SendDataB(), HwmpDoRfRegressionTest::SendDataC(), ns3::QKDApp004::SendKsidRequest(), ns3::QKDApp004::SendKsidResponse(), ns3::QKDApp004::SendMaliciousRequestToKMS(), ns3::TutorialApp::SendPacket(), ns3::OnOffApplication::SendPacket(), SendPacket(), ns3::TcpGeneralTest::SendPacket(), ns3::UdpTraceClient::SendPacket(), ns3::QKDApp004::SendPacket(), ns3::QKDApp014::SendPacket(), ns3::dsdv::RoutingProtocol::SendPeriodicUpdate(), ChainRegressionTest::SendPing(), ns3::olsr::Bug780Test::SendPing(), ns3::QKDKeyManagerSystemApplication::SendQKDLinkStatusToSDN(), ns3::EpcEnbApplication::SendToLteSocket(), ns3::QKDKeyManagerSystemApplication::SendToSocketPair(), ns3::QKDSDNController::SendToSocketPair(), ns3::QKDKeyManagerSystemApplication::SendToSocketPairKMS(), ns3::ThreeGppHttpServer::ServeFromTxBuffer(), TcpTestCase::ServerHandleSend(), TcpTestCase::SourceHandleSend(), ns3::QKDKeyManagerSystemApplication::TransformKeys(), ns3::SocketWriter::Write(), Ns3TcpLossTestCase::WriteUntilBufferFull(), Ns3TcpStateTestCase::WriteUntilBufferFull(), and WriteUntilBufferFull().
int ns3::Socket::SendTo | ( | const uint8_t * | buf, |
uint32_t | size, | ||
uint32_t | flags, | ||
const Address & | address | ||
) |
Send data to a specified peer.
This method is provided so as to have an API which is closer in appearance to that of real network or BSD sockets.
buf | A pointer to a raw byte buffer of some data to send. If this is 0, we send dummy data whose size is specified by the third parameter |
size | the number of bytes to copy from the buffer |
flags | Socket control flags |
address | IP Address of remote host |
Definition at line 158 of file socket.cc.
References NS_LOG_FUNCTION, and SendTo().
|
pure virtual |
Send data to a specified peer.
This method has similar semantics to Send () but subclasses may want to provide checks on socket state, so the implementation is pushed to subclasses.
Implemented in ns3::PacketSocket, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, ns3::Ipv4RawSocketImpl, and ns3::UdpSocketImpl.
Referenced by ns3::DhcpClient::Boot(), ns3::EpcMmeApplication::DoErabReleaseIndication(), ns3::EpcMmeApplication::DoInitialUeMessage(), ns3::EpcMmeApplication::DoPathSwitchRequest(), ns3::EpcPgwApplication::DoRecvCreateSessionRequest(), ns3::EpcSgwApplication::DoRecvCreateSessionRequest(), ns3::EpcSgwApplication::DoRecvCreateSessionResponse(), ns3::EpcPgwApplication::DoRecvDeleteBearerCommand(), ns3::EpcSgwApplication::DoRecvDeleteBearerCommand(), ns3::EpcMmeApplication::DoRecvDeleteBearerRequest(), ns3::EpcSgwApplication::DoRecvDeleteBearerRequest(), ns3::EpcSgwApplication::DoRecvDeleteBearerResponse(), ns3::EpcPgwApplication::DoRecvModifyBearerRequest(), ns3::EpcSgwApplication::DoRecvModifyBearerRequest(), ns3::EpcSgwApplication::DoRecvModifyBearerResponse(), UdpSocketLoopbackTest::DoRun(), Udp6SocketLoopbackTest::DoRun(), Ipv4DeduplicationPerformanceTest::DoSendData(), Ipv4ForwardingTest::DoSendData(), Ipv4GlobalRoutingSlash32TestCase::DoSendData(), Ipv4PacketInfoTagTest::DoSendData(), Ipv4RawSocketImplTest::DoSendData(), Ipv4RipTest::DoSendData(), Ipv4RipCountToInfinityTest::DoSendData(), Ipv4StaticRoutingSlash32TestCase::DoSendData(), Ipv6ForwardingTest::DoSendData(), Ipv6PacketInfoTagTest::DoSendData(), Ipv6RawSocketImplTest::DoSendData(), Ipv6RipngTest::DoSendData(), Ipv6RipngCountToInfinityTest::DoSendData(), SixlowpanHc1ImplTest::DoSendData(), SixlowpanIphcImplTest::DoSendData(), Ipv4RawSocketImplTest::DoSendData_IpHdr(), Ipv4HeaderTest::DoSendData_IpHdr_Dscp(), UdpSocketImplTest::DoSendDataTo(), Udp6SocketImplTest::DoSendDataTo(), DynamicNeighborCacheTest::DoSendDatav4(), NixVectorRoutingTest::DoSendDatav4(), DynamicNeighborCacheTest::DoSendDatav6(), NixVectorRoutingTest::DoSendDatav6(), ns3::EpcX2::DoSendHandoverCancel(), ns3::EpcX2::DoSendHandoverPreparationFailure(), ns3::EpcX2::DoSendHandoverRequest(), ns3::EpcX2::DoSendHandoverRequestAck(), ns3::EpcX2::DoSendLoadInformation(), Ipv4DeduplicationTest::DoSendPacket(), ns3::EpcX2::DoSendResourceStatusUpdate(), ns3::EpcX2::DoSendSnStatusTransfer(), ns3::EpcX2::DoSendUeContextRelease(), ns3::EpcX2::DoSendUeData(), ns3::aodv::LoopbackTestCase::EchoData(), ns3::UdpEchoServer::HandleRead(), HwmpProactiveRegressionTest::HandleReadServer(), HwmpReactiveRegressionTest::HandleReadServer(), HwmpSimplestRegressionTest::HandleReadServer(), HwmpDoRfRegressionTest::HandleReadServer(), FlameRegressionTest::HandleReadServer(), ns3::Rip::HandleRequests(), ns3::RipNg::HandleRequests(), Tunnel::N0VirtualSend(), Tunnel::N1VirtualSend(), Tunnel::N3VirtualSend(), ns3::aodv::RoutingProtocol::RecvReply(), ns3::DhcpClient::Request(), ns3::Ping::Send(), ns3::V4TraceRoute::Send(), ns3::DhcpServer::SendAck(), Ipv4FragmentationTest::SendClient(), ns3::aodv::LoopbackTestCase::SendData(), IcmpEchoReplyTestCase::SendData(), IcmpTimeExceedTestCase::SendData(), IcmpV6EchoReplyTestCase::SendData(), IcmpV6TimeExceedTestCase::SendData(), ns3::DhcpServer::SendOffer(), ns3::dsdv::RoutingProtocol::SendPeriodicUpdate(), ns3::aodv::RoutingProtocol::SendReply(), ns3::aodv::RoutingProtocol::SendReplyAck(), ns3::aodv::RoutingProtocol::SendReplyByIntermediateNode(), ns3::aodv::RoutingProtocol::SendRerrWhenNoRouteToForward(), SendStuff(), SendTo(), ns3::aodv::RoutingProtocol::SendTo(), ns3::EpcSgwApplication::SendToS1uSocket(), ns3::EpcEnbApplication::SendToS1uSocket(), ns3::EpcSgwApplication::SendToS5uSocket(), ns3::EpcPgwApplication::SendToS5uSocket(), and ns3::dsdv::RoutingProtocol::SendTriggeredUpdate().
void ns3::Socket::SetAcceptCallback | ( | Callback< bool, Ptr< Socket >, const Address & > | connectionRequest, |
Callback< void, Ptr< Socket >, const Address & > | newConnectionCreated | ||
) |
Accept connection requests from remote hosts.
connectionRequest | Callback for connection request from peer. This user callback is passed a pointer to this socket, the ip address and the port number of the connection originator. This callback must return true to accept the incoming connection, false otherwise. If the connection is accepted, the "newConnectionCreated" callback will be invoked later to give access to the user to the socket created to match this new connection. If the user does not explicitly specify this callback, all incoming connections will be refused. |
newConnectionCreated | Callback for new connection: when a new is accepted, it is created and the corresponding socket is passed back to the user through this callback. This user callback is passed a pointer to the new socket, and the ip address and port number of the connection originator. |
Definition at line 105 of file socket.cc.
References m_connectionRequest, m_newConnectionCreated, and NS_LOG_FUNCTION.
Referenced by ns3::QKDKeyManagerSystemApplication::AddNewLink(), ns3::QKDKeyManagerSystemApplication::ConnectToSDNController(), DualStackTestCase::DoRun(), ns3::QKDKeyManagerSystemApplication::PrepareSinkSocket(), ns3::QKDSDNController::PrepareSinkSocket(), ns3::QKDApp004::PrepareSinkSocketFromApp(), ns3::QKDApp014::PrepareSinkSocketFromApp(), ns3::QKDApp004::PrepareSinkSocketFromKMS(), ns3::QKDApp014::PrepareSinkSocketFromKMS(), ns3::PacketSink::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), ns3::QKDPostprocessingApplication::StartApplication(), and ns3::ThreeGppHttpServer::StopApplication().
|
pure virtual |
Configure whether broadcast datagram transmissions are allowed.
This method corresponds to using setsockopt() SO_BROADCAST of real network or BSD sockets. If set on a socket, this option will enable or disable packets to be transmitted to broadcast destination addresses.
allowBroadcast | Whether broadcast is allowed |
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by Bug772ChainTest::CreateDevices(), ns3::olsr::RoutingProtocol::DoInitialize(), ns3::aodv::RoutingProtocol::NotifyAddAddress(), ns3::dsdv::RoutingProtocol::NotifyAddAddress(), ns3::aodv::RoutingProtocol::NotifyInterfaceUp(), ns3::dsdv::RoutingProtocol::NotifyInterfaceUp(), ns3::aodv::RoutingProtocol::NotifyRemoveAddress(), ns3::dsdv::RoutingProtocol::NotifyRemoveAddress(), ns3::OnOffApplication::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), ns3::UdpTraceClient::StartApplication(), ns3::DhcpClient::StartApplication(), ns3::DhcpServer::StartApplication(), and Ipv4FragmentationTest::StartClient().
void ns3::Socket::SetCloseCallbacks | ( | Callback< void, Ptr< Socket >> | normalClose, |
Callback< void, Ptr< Socket >> | errorClose | ||
) |
Detect socket recv() events such as graceful shutdown or error.
For connection-oriented sockets, the first callback is used to signal that the remote side has gracefully shut down the connection, and the second callback denotes an error corresponding to cases in which a traditional recv() socket call might return -1 (error), such as a connection reset. For datagram sockets, these callbacks may never be invoked.
normalClose | this callback is invoked when the peer closes the connection gracefully |
errorClose | this callback is invoked when the connection closes abnormally |
Definition at line 96 of file socket.cc.
References m_errorClose, m_normalClose, and NS_LOG_FUNCTION.
Referenced by ns3::QKDKeyManagerSystemApplication::AddNewLink(), ns3::QKDKeyManagerSystemApplication::ConnectToSDNController(), ns3::TcpGeneralTest::HandleAccept(), ns3::QKDApp004::HandlePeerCloseToKMS(), ns3::QKDApp004::HandlePeerErrorToKMS(), ns3::ThreeGppHttpServer::NewConnectionCreatedCallback(), ns3::ThreeGppHttpClient::NormalCloseCallback(), ns3::ThreeGppHttpClient::OpenConnection(), ns3::QKDApp004::PrepareSendSocketToKMS(), ns3::QKDKeyManagerSystemApplication::PrepareSinkSocket(), ns3::QKDSDNController::PrepareSinkSocket(), ns3::QKDApp004::PrepareSinkSocketFromApp(), ns3::QKDApp014::PrepareSinkSocketFromApp(), ns3::QKDApp004::PrepareSinkSocketFromKMS(), ns3::QKDApp014::PrepareSinkSocketFromKMS(), ns3::PacketSink::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), ns3::QKDPostprocessingApplication::StartApplication(), and ns3::ThreeGppHttpServer::StopApplication().
void ns3::Socket::SetConnectCallback | ( | Callback< void, Ptr< Socket >> | connectionSucceeded, |
Callback< void, Ptr< Socket >> | connectionFailed | ||
) |
Specify callbacks to allow the caller to determine if the connection succeeds of fails.
connectionSucceeded | this callback is invoked when the connection request initiated by the user is successfully completed. The callback is passed back a pointer to the same socket object. |
connectionFailed | this callback is invoked when the connection request initiated by the user is unsuccessfuly completed. The callback is passed back a pointer to the same socket object. |
Definition at line 87 of file socket.cc.
References m_connectionFailed, m_connectionSucceeded, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::TcpSocketBase(), ns3::QKDKeyManagerSystemApplication::CheckSocketsKMS(), ns3::QKDKeyManagerSystemApplication::ConnectToSDNController(), TcpEndPointBug2211Test::DoRun(), TcpSynConnectionFailedTest::DoRun(), ns3::QKDKeyManagerSystemApplication::HandleAccept(), ns3::QKDSDNController::HandleAccept(), ns3::QKDApp004::HandlePeerCloseToKMS(), ns3::QKDApp004::HandlePeerErrorToKMS(), ns3::ThreeGppHttpClient::OpenConnection(), ns3::QKDApp004::PrepareSendSocketToApp(), ns3::QKDApp014::PrepareSendSocketToApp(), ns3::QKDApp004::PrepareSendSocketToKMS(), ns3::QKDApp014::PrepareSendSocketToKMS(), ns3::BulkSendApplication::StartApplication(), ns3::OnOffApplication::StartApplication(), and ns3::ThreeGppHttpClient::StopApplication().
Notify application when a packet has been sent from transport protocol (non-standard socket call)
dataSent | Callback for the event that data is sent from the underlying transport protocol. This callback is passed a pointer to the socket, and the number of bytes sent. |
Definition at line 114 of file socket.cc.
References m_dataSent, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::TcpSocketBase(), ns3::QKDKeyManagerSystemApplication::CheckSocketsKMS(), ns3::QKDKeyManagerSystemApplication::ConnectToSDNController(), ns3::QKDKeyManagerSystemApplication::HandleAccept(), ns3::QKDSDNController::HandleAccept(), ns3::QKDApp004::PrepareSendSocketToKMS(), and ns3::QKDApp014::PrepareSendSocketToKMS().
void ns3::Socket::SetIpRecvTos | ( | bool | ipv4RecvTos | ) |
Tells a socket to pass information about IP Type of Service up the stack.
This method corresponds to using setsockopt () IP_RECVTOS of real network or BSD sockets. In our implementation, the socket simply adds a SocketIpTosTag tag to the packet before passing the packet up the stack.
ipv4RecvTos | Whether the socket should add SocketIpv4TosTag tag to the packet |
Definition at line 456 of file socket.cc.
References m_ipRecvTos.
void ns3::Socket::SetIpRecvTtl | ( | bool | ipv4RecvTtl | ) |
Tells a socket to pass information about IP_TTL up the stack.
This method corresponds to using setsockopt () IP_RECVTTL of real network or BSD sockets. In our implementation, the socket simply adds a SocketIpTtlTag tag to the packet before passing the packet up the stack.
ipv4RecvTtl | Whether the socket should add SocketIpv4TtlTag tag to the packet |
Definition at line 523 of file socket.cc.
References m_ipRecvTtl.
Referenced by ns3::Rip::DoInitialize(), ns3::aodv::RoutingProtocol::NotifyAddAddress(), ns3::aodv::RoutingProtocol::NotifyInterfaceUp(), ns3::Rip::NotifyInterfaceUp(), and ns3::aodv::RoutingProtocol::NotifyRemoveAddress().
void ns3::Socket::SetIpTos | ( | uint8_t | ipTos | ) |
Manually set IP Type of Service field.
This method corresponds to using setsockopt () IP_TOS of real network or BSD sockets. This option is for IPv4 only. Setting the IP TOS also changes the socket priority as stated in the man page.
ipTos | The desired TOS value for IP headers |
Definition at line 434 of file socket.cc.
References first::address, GetSocketType(), GetSockName(), IpTos2Priority(), m_ipTos, m_priority, and NS3_SOCK_STREAM.
Referenced by ns3::TcpSocketBase::Bind(), ns3::UdpSocketImpl::Bind(), ns3::Ipv4RawSocketImpl::Connect(), ns3::TcpSocketBase::Connect(), and ns3::UdpSocketImpl::Connect().
|
virtual |
Manually set IP Time to Live field.
This method corresponds to using setsockopt () IP_TTL of real network or BSD sockets.
ipTtl | The desired TTL value for IP headers |
Definition at line 510 of file socket.cc.
References m_ipTtl, and m_manualIpTtl.
Referenced by ns3::olsr::RoutingProtocol::DoInitialize(), IcmpEchoReplyTestCase::DoRun(), IcmpTimeExceedTestCase::DoRun(), IcmpV6EchoReplyTestCase::DoRun(), ns3::UdpSocket::GetTypeId(), and ns3::V4TraceRoute::Send().
|
virtual |
Manually set IPv6 Hop Limit.
This method corresponds to using setsockopt () IPV6_HOPLIMIT of real network or BSD sockets.
ipHopLimit | The desired Hop Limit value for IPv6 headers |
Definition at line 535 of file socket.cc.
References m_ipv6HopLimit, and m_manualIpv6HopLimit.
Referenced by IcmpV6TimeExceedTestCase::DoRun().
void ns3::Socket::SetIpv6RecvHopLimit | ( | bool | ipv6RecvHopLimit | ) |
Tells a socket to pass information about IPv6 Hop Limit up the stack.
This method corresponds to using setsockopt () IPV6_RECVHOPLIMIT of real network or BSD sockets. In our implementation, the socket simply adds a SocketIpv6HopLimitTag tag to the packet before passing the packet up the stack.
ipv6RecvHopLimit | Whether the socket should add SocketIpv6HopLimitTag tag to the packet |
Definition at line 548 of file socket.cc.
References m_ipv6RecvHopLimit.
Referenced by ns3::RipNg::DoInitialize(), and ns3::RipNg::NotifyInterfaceUp().
void ns3::Socket::SetIpv6RecvTclass | ( | bool | ipv6RecvTclass | ) |
Tells a socket to pass information about IPv6 Traffic Class up the stack.
This method corresponds to using setsockopt () IPV6_RECVTCLASS of real network or BSD sockets. In our implementation, the socket simply adds a SocketIpv6TclasssTag tag to the packet before passing the packet up the stack.
ipv6RecvTclass | Whether the socket should add SocketIpv6TclassTag tag to the packet |
Definition at line 498 of file socket.cc.
References m_ipv6RecvTclass.
void ns3::Socket::SetIpv6Tclass | ( | int | ipTclass | ) |
Manually set IPv6 Traffic Class field.
This method corresponds to using setsockopt () IPV6_TCLASS of real network or BSD sockets. This option is for IPv6 only. Setting the IPV6_TCLASSS to -1 clears the option and let the socket uses the default value.
ipTclass | The desired TCLASS value for IPv6 headers |
Definition at line 468 of file socket.cc.
References first::address, GetSockName(), m_ipv6Tclass, m_manualIpv6Tclass, and NS_LOG_WARN.
void ns3::Socket::SetPriority | ( | uint8_t | priority | ) |
Manually set the socket priority.
This method corresponds to using setsockopt () SO_PRIORITY of real network or BSD sockets. On Linux, the socket priority can be set to a value in the range [0..6], unless the user process has the CAP_NET_ADMIN capability (see the man page for socket). ns-3 allows users to set the socket priority to any 8-bit non-negative value, which is equivalent to assuming that the CAP_NET_ADMIN capability is set.
priority | The socket priority |
Definition at line 386 of file socket.cc.
References m_priority, and NS_LOG_FUNCTION.
Referenced by ns3::PacketSocketClient::SetPriority(), and ns3::PacketSocketClient::StartApplication().
Notify application when new data is available to be read.
This callback is intended to notify a socket that would have been blocked in a blocking socket model that data is available to be read.
receivedData | Callback for the event that data is received from the underlying transport protocol. This callback is passed a pointer to the socket. |
Definition at line 128 of file socket.cc.
References m_receivedData, and NS_LOG_FUNCTION.
Referenced by ns3::EpcEnbApplication::EpcEnbApplication(), ns3::EpcPgwApplication::EpcPgwApplication(), ns3::EpcSgwApplication::EpcSgwApplication(), ns3::TcpSocketBase::TcpSocketBase(), Tunnel::Tunnel(), ns3::EpcSgwApplication::AddMme(), ns3::QKDKeyManagerSystemApplication::AddNewLink(), ns3::EpcEnbApplication::AddS1Interface(), ns3::EpcMmeApplication::AddSgw(), ns3::EpcX2::AddX2Interface(), ns3::ThreeGppHttpClient::ConnectionSucceededCallback(), ns3::QKDKeyManagerSystemApplication::ConnectToSDNController(), Bug772ChainTest::CreateDevices(), ns3::olsr::Bug780Test::CreateNodes(), ns3::olsr::HelloRegressionTest::CreateNodes(), ns3::olsr::TcRegressionTest::CreateNodes(), ns3::EpcPgwApplication::DoDispose(), ns3::EpcSgwApplication::DoDispose(), ns3::Rip::DoInitialize(), ns3::RipNg::DoInitialize(), ns3::olsr::RoutingProtocol::DoInitialize(), ns3::aodv::LoopbackTestCase::DoRun(), IcmpEchoReplyTestCase::DoRun(), IcmpTimeExceedTestCase::DoRun(), IcmpV6EchoReplyTestCase::DoRun(), IcmpV6TimeExceedTestCase::DoRun(), Ipv4DynamicGlobalRoutingTestCase::DoRun(), Ipv4RawSocketImplTest::DoRun(), Ipv6RawSocketImplTest::DoRun(), DynamicNeighborCacheTest::DoRun(), UdpSocketImplTest::DoRun(), Udp6SocketImplTest::DoRun(), NixVectorRoutingTest::DoRun(), ns3::QKDKeyManagerSystemApplication::HandleAccept(), ns3::QKDSDNController::HandleAccept(), TcpEndPointBug2211Test::HandleAccept(), ns3::PacketSink::HandleAccept(), ns3::TcpGeneralTest::HandleAccept(), ns3::QKDApp004::HandleAcceptFromApp(), ns3::QKDApp014::HandleAcceptFromApp(), ns3::QKDApp004::HandleAcceptFromKMS(), ns3::QKDApp014::HandleAcceptFromKMS(), ns3::QKDKeyManagerSystemApplication::HandleAcceptKMSs(), ns3::QKDKeyManagerSystemApplication::HandleAcceptSDN(), ns3::QKDApp004::HandleAcceptSignalingFromApp(), ns3::QKDApp014::HandleAcceptSignalingFromApp(), HwmpProactiveRegressionTest::InstallApplications(), HwmpReactiveRegressionTest::InstallApplications(), HwmpSimplestRegressionTest::InstallApplications(), HwmpDoRfRegressionTest::InstallApplications(), FlameRegressionTest::InstallApplications(), ns3::DhcpClient::LinkStateHandler(), ns3::ThreeGppHttpServer::NewConnectionCreatedCallback(), ns3::aodv::RoutingProtocol::NotifyAddAddress(), ns3::dsdv::RoutingProtocol::NotifyAddAddress(), ns3::aodv::RoutingProtocol::NotifyInterfaceUp(), ns3::dsdv::RoutingProtocol::NotifyInterfaceUp(), ns3::Rip::NotifyInterfaceUp(), ns3::RipNg::NotifyInterfaceUp(), ns3::aodv::RoutingProtocol::NotifyRemoveAddress(), ns3::dsdv::RoutingProtocol::NotifyRemoveAddress(), ns3::ThreeGppHttpClient::OpenConnection(), ns3::QKDKeyManagerSystemApplication::PrepareSinkSocket(), ns3::QKDSDNController::PrepareSinkSocket(), ns3::QKDApp004::PrepareSinkSocketFromApp(), ns3::QKDApp014::PrepareSinkSocketFromApp(), ns3::QKDApp004::PrepareSinkSocketFromKMS(), ns3::QKDApp014::PrepareSinkSocketFromKMS(), NetAnimExperiment::Run(), Experiment::Run(), TcpTestCase::ServerHandleConnectionCreated(), TcpTestCase::SetupDefaultSim(), TcpTestCase::SetupDefaultSim6(), ns3::PacketSink::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), ns3::UdpEchoServer::StartApplication(), ns3::UdpServer::StartApplication(), ns3::UdpTraceClient::StartApplication(), ns3::DhcpClient::StartApplication(), ns3::DhcpServer::StartApplication(), ns3::Ping::StartApplication(), ns3::Radvd::StartApplication(), ns3::V4TraceRoute::StartApplication(), EpsBearerTagUdpClient::StartApplication(), ns3::PacketSocketClient::StartApplication(), ns3::PacketSocketServer::StartApplication(), ns3::QKDPostprocessingApplication::StartApplication(), Ipv4FragmentationTest::StartClient(), Ipv6FragmentationTest::StartClient(), SixlowpanFragmentationTest::StartClient(), Ipv4FragmentationTest::StartServer(), Ipv6FragmentationTest::StartServer(), SixlowpanFragmentationTest::StartServer(), ns3::PacketSink::StopApplication(), ns3::ThreeGppHttpClient::StopApplication(), ns3::ThreeGppHttpServer::StopApplication(), ns3::UdpEchoClient::StopApplication(), ns3::UdpEchoServer::StopApplication(), ns3::UdpServer::StopApplication(), ns3::DhcpClient::StopApplication(), ns3::DhcpServer::StopApplication(), ns3::Radvd::StopApplication(), ns3::PacketSocketServer::StopApplication(), ns3::QKDKeyManagerSystemApplication::StopApplication(), and ns3::QKDSDNController::StopApplication().
void ns3::Socket::SetRecvPktInfo | ( | bool | flag | ) |
Enable/Disable receive packet information to socket.
For IP_PKTINFO/IP6_PKTINFO. This method is only usable for Raw socket and Datagram Socket. Not supported for Stream socket.
Method doesn't make distinction between IPv4 and IPv6. If it is enabled, it is enabled for all types of sockets that supports packet information
flag | Enable/Disable receive information |
Definition at line 354 of file socket.cc.
References m_recvPktInfo, and NS_LOG_FUNCTION.
Referenced by ns3::Rip::DoInitialize(), ns3::RipNg::DoInitialize(), ns3::olsr::RoutingProtocol::DoInitialize(), Ipv4DynamicGlobalRoutingTestCase::DoRun(), ns3::Rip::NotifyInterfaceUp(), ns3::RipNg::NotifyInterfaceUp(), ns3::PacketSink::StartApplication(), ns3::DhcpServer::StartApplication(), ns3::Ping::StartApplication(), and ns3::Radvd::StartApplication().
Notify application when space in transmit buffer is added.
This callback is intended to notify a socket that would have been blocked in a blocking socket model that space is available in the transmit buffer and that it can call Send() again.
sendCb | Callback for the event that the socket transmit buffer fill level has decreased. This callback is passed a pointer to the socket, and the number of bytes available for writing into the buffer (an absolute value). If there is no transmit buffer limit, a maximum-sized integer is always returned. |
Definition at line 121 of file socket.cc.
References m_sendCb, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::TcpSocketBase(), ns3::ThreeGppHttpServer::NewConnectionCreatedCallback(), TcpTestCase::ServerHandleConnectionCreated(), TcpTestCase::SetupDefaultSim(), TcpTestCase::SetupDefaultSim6(), ns3::BulkSendApplication::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), Ns3TcpLossTestCase::StartFlow(), Ns3TcpStateTestCase::StartFlow(), StartFlow(), and ns3::ThreeGppHttpServer::StopApplication().
|
pure virtual |
Do not allow any further Recv calls. This method is typically implemented for Tcp sockets by a half close.
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::QKDKeyManagerSystemApplication::CheckSocketsKMS(), ns3::QKDKeyManagerSystemApplication::ConnectToSDNController(), ns3::QKDKeyManagerSystemApplication::HandleAccept(), ns3::QKDSDNController::HandleAccept(), ns3::QKDApp014::PrepareSendSocketToKMS(), ns3::BulkSendApplication::StartApplication(), and ns3::OnOffApplication::StartApplication().
|
pure virtual |
Do not allow any further Send calls. This method is typically implemented for Tcp sockets by a half close.
Implemented in ns3::PacketSocket, ns3::UdpSocketImpl, ns3::TcpSocketBase, ns3::Ipv6RawSocketImpl, and ns3::Ipv4RawSocketImpl.
Referenced by ns3::QKDKeyManagerSystemApplication::AddNewLink(), ns3::QKDKeyManagerSystemApplication::ConnectToSDNController(), Bug772ChainTest::CreateDevices(), ns3::olsr::RoutingProtocol::DoInitialize(), Ipv4DynamicGlobalRoutingTestCase::DoRun(), ns3::ThreeGppHttpServer::NormalCloseCallback(), ns3::QKDKeyManagerSystemApplication::PrepareSinkSocket(), ns3::QKDSDNController::PrepareSinkSocket(), ns3::QKDApp004::PrepareSinkSocketFromApp(), ns3::QKDApp014::PrepareSinkSocketFromApp(), ns3::QKDApp004::PrepareSinkSocketFromKMS(), ns3::QKDApp014::PrepareSinkSocketFromKMS(), ns3::PacketSink::StartApplication(), ns3::Radvd::StartApplication(), and ns3::QKDPostprocessingApplication::StartApplication().
the device this socket is bound to (might be null).
Definition at line 1079 of file socket.h.
Referenced by Socket(), ns3::UdpSocketImpl::Bind(), ns3::UdpSocketImpl::Bind6(), BindToNetDevice(), ns3::UdpSocketImpl::BindToNetDevice(), ns3::PacketSocket::DoBind(), ns3::TcpSocketBase::DoForwardUp(), ns3::UdpSocketImpl::DoSendTo(), GetBoundNetDevice(), ns3::Ipv6RawSocketImpl::Ipv6JoinGroup(), ns3::UdpSocketImpl::Ipv6JoinGroup(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpSocketBase::SendDataPacket(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketBase::SendEmptyPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), ns3::Ipv4RawSocketImpl::SendTo(), ns3::Ipv6RawSocketImpl::SendTo(), ns3::TcpSocketBase::SetupEndpoint(), and ns3::TcpSocketBase::SetupEndpoint6().
connection failed callback
Definition at line 1086 of file socket.h.
Referenced by DoDispose(), NotifyConnectionFailed(), and SetConnectCallback().
connection request callback
Definition at line 1090 of file socket.h.
Referenced by DoDispose(), NotifyConnectionRequest(), and SetAcceptCallback().
connection succeeded callback
Definition at line 1085 of file socket.h.
Referenced by DoDispose(), NotifyConnectionSucceeded(), and SetConnectCallback().
data sent callback
Definition at line 1093 of file socket.h.
Referenced by DoDispose(), NotifyDataSent(), and SetDataSentCallback().
connection closed due to errors callback
Definition at line 1088 of file socket.h.
Referenced by DoDispose(), NotifyErrorClose(), and SetCloseCallbacks().
|
private |
socket forwards IPv4 TOS tag to L4
Definition at line 1101 of file socket.h.
Referenced by IsIpRecvTos(), and SetIpRecvTos().
|
private |
socket forwards IPv4 TTL tag to L4
Definition at line 1102 of file socket.h.
Referenced by IsIpRecvTtl(), and SetIpRecvTtl().
|
private |
the socket IPv4 TOS
Definition at line 1104 of file socket.h.
Referenced by Socket(), GetIpTos(), and SetIpTos().
|
private |
the socket IPv4 TTL
Definition at line 1105 of file socket.h.
Referenced by Socket(), GetIpTtl(), and SetIpTtl().
|
private |
the socket IPv6 Hop Limit
Definition at line 1114 of file socket.h.
Referenced by Socket(), GetIpv6HopLimit(), and SetIpv6HopLimit().
|
protected |
IPv6 multicast group address.
Definition at line 1082 of file socket.h.
Referenced by ns3::Ipv6RawSocketImpl::Ipv6JoinGroup(), ns3::UdpSocketImpl::Ipv6JoinGroup(), and Ipv6LeaveGroup().
|
private |
socket forwards IPv6 Hop Limit tag to L4
Definition at line 1111 of file socket.h.
Referenced by IsIpv6RecvHopLimit(), and SetIpv6RecvHopLimit().
|
private |
socket forwards IPv6 Tclass tag to L4
Definition at line 1110 of file socket.h.
Referenced by IsIpv6RecvTclass(), and SetIpv6RecvTclass().
|
private |
the socket IPv6 Tclass
Definition at line 1113 of file socket.h.
Referenced by Socket(), GetIpv6Tclass(), and SetIpv6Tclass().
|
private |
socket has IPv4 TTL set
Definition at line 1100 of file socket.h.
Referenced by IsManualIpTtl(), and SetIpTtl().
|
private |
socket has IPv6 Hop Limit set
Definition at line 1109 of file socket.h.
Referenced by IsManualIpv6HopLimit(), and SetIpv6HopLimit().
|
private |
socket has IPv6 Tclass set
Definition at line 1108 of file socket.h.
Referenced by IsManualIpv6Tclass(), and SetIpv6Tclass().
connection created callback
Definition at line 1092 of file socket.h.
Referenced by DoDispose(), NotifyNewConnectionCreated(), and SetAcceptCallback().
connection closed callback
Definition at line 1087 of file socket.h.
Referenced by DoDispose(), NotifyNormalClose(), and SetCloseCallbacks().
|
private |
the socket priority
Definition at line 1097 of file socket.h.
Referenced by Socket(), GetPriority(), SetIpTos(), and SetPriority().
data received callback
Definition at line 1095 of file socket.h.
Referenced by DoDispose(), NotifyDataRecv(), and SetRecvCallback().
|
protected |
if the socket should add packet info tags to the packet forwarded to L4.
Definition at line 1081 of file socket.h.
Referenced by Socket(), IsRecvPktInfo(), and SetRecvPktInfo().
packet sent callback
Definition at line 1094 of file socket.h.
Referenced by DoDispose(), NotifySend(), and SetSendCallback().