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. | |
virtual int | Bind (const Address &address)=0 |
Allocate a local endpoint for this socket. | |
virtual int | Bind6 ()=0 |
Allocate a local IPv6 endpoint for this socket. | |
virtual void | BindToNetDevice (Ptr< NetDevice > netdevice) |
Bind a socket to specific device. | |
virtual int | Close ()=0 |
Close a socket. | |
virtual int | Connect (const Address &address)=0 |
Initiate a connection to a remote host. | |
virtual bool | GetAllowBroadcast () const =0 |
Query whether broadcast datagram transmissions are allowed. | |
Ptr< NetDevice > | GetBoundNetDevice () |
Returns socket's bound NetDevice, if any. | |
virtual Socket::SocketErrno | GetErrno () const =0 |
Get last error number. | |
uint8_t | GetIpTos () const |
Query the value of IP Type of Service of this socket. | |
virtual uint8_t | GetIpTtl () const |
Query the value of IP Time to Live field of this socket. | |
virtual uint8_t | GetIpv6HopLimit () const |
Query the value of IP Hop Limit field of this socket. | |
uint8_t | GetIpv6Tclass () const |
Query the value of IPv6 Traffic Class field of this socket. | |
virtual Ptr< Node > | GetNode () const =0 |
Return the node this socket is associated with. | |
virtual int | GetPeerName (Address &address) const =0 |
Get the peer address of a connected socket. | |
uint8_t | GetPriority () const |
Query the priority value of this socket. | |
virtual uint32_t | GetRxAvailable () const =0 |
Return number of bytes which can be returned from one or multiple calls to Recv. | |
virtual Socket::SocketType | GetSocketType () const =0 |
virtual int | GetSockName (Address &address) const =0 |
Get socket address. | |
virtual uint32_t | GetTxAvailable () const =0 |
Returns the number of bytes which can be sent in a single call to Send. | |
virtual void | Ipv6JoinGroup (Ipv6Address address) |
Joins a IPv6 multicast group without filters. | |
virtual void | Ipv6JoinGroup (Ipv6Address address, Ipv6MulticastFilterMode filterMode, std::vector< Ipv6Address > sourceAddresses) |
Joins a IPv6 multicast group. | |
virtual void | Ipv6LeaveGroup () |
Leaves IPv6 multicast group this socket is joined to. | |
bool | IsIpRecvTos () const |
Ask if the socket is currently passing information about IP Type of Service up the stack. | |
bool | IsIpRecvTtl () const |
Ask if the socket is currently passing information about IP_TTL up the stack. | |
bool | IsIpv6RecvHopLimit () const |
Ask if the socket is currently passing information about IPv6 Hop Limit up the stack. | |
bool | IsIpv6RecvTclass () const |
Ask if the socket is currently passing information about IPv6 Traffic Class up the stack. | |
bool | IsRecvPktInfo () const |
Get status indicating whether enable/disable packet information to socket. | |
virtual int | Listen ()=0 |
Listen for incoming connections. | |
Ptr< Packet > | Recv () |
Read a single packet from the socket. | |
virtual Ptr< Packet > | Recv (uint32_t maxSize, uint32_t flags)=0 |
Read data from the socket. | |
int | Recv (uint8_t *buf, uint32_t size, uint32_t flags) |
Recv data (or dummy data) from the remote host. | |
Ptr< Packet > | RecvFrom (Address &fromAddress) |
Read a single packet from the socket and retrieve the sender address. | |
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. | |
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. | |
int | Send (const uint8_t *buf, uint32_t size, uint32_t flags) |
Send data (or dummy data) to the remote host. | |
int | Send (Ptr< Packet > p) |
Send data (or dummy data) to the remote host. | |
virtual int | Send (Ptr< Packet > p, uint32_t flags)=0 |
Send data (or dummy data) to the remote host. | |
int | SendTo (const uint8_t *buf, uint32_t size, uint32_t flags, const Address &address) |
Send data to a specified peer. | |
virtual int | SendTo (Ptr< Packet > p, uint32_t flags, const Address &toAddress)=0 |
Send data to a specified peer. | |
void | SetAcceptCallback (Callback< bool, Ptr< Socket >, const Address & > connectionRequest, Callback< void, Ptr< Socket >, const Address & > newConnectionCreated) |
Accept connection requests from remote hosts. | |
virtual bool | SetAllowBroadcast (bool allowBroadcast)=0 |
Configure whether broadcast datagram transmissions are allowed. | |
void | SetCloseCallbacks (Callback< void, Ptr< Socket > > normalClose, Callback< void, Ptr< Socket > > errorClose) |
Detect socket recv() events such as graceful shutdown or error. | |
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. | |
void | SetDataSentCallback (Callback< void, Ptr< Socket >, uint32_t > dataSent) |
Notify application when a packet has been sent from transport protocol (non-standard socket call) | |
void | SetIpRecvTos (bool ipv4RecvTos) |
Tells a socket to pass information about IP Type of Service up the stack. | |
void | SetIpRecvTtl (bool ipv4RecvTtl) |
Tells a socket to pass information about IP_TTL up the stack. | |
void | SetIpTos (uint8_t ipTos) |
Manually set IP Type of Service field. | |
virtual void | SetIpTtl (uint8_t ipTtl) |
Manually set IP Time to Live field. | |
virtual void | SetIpv6HopLimit (uint8_t ipHopLimit) |
Manually set IPv6 Hop Limit. | |
void | SetIpv6RecvHopLimit (bool ipv6RecvHopLimit) |
Tells a socket to pass information about IPv6 Hop Limit up the stack. | |
void | SetIpv6RecvTclass (bool ipv6RecvTclass) |
Tells a socket to pass information about IPv6 Traffic Class up the stack. | |
void | SetIpv6Tclass (int ipTclass) |
Manually set IPv6 Traffic Class field. | |
void | SetPriority (uint8_t priority) |
Manually set the socket priority. | |
void | SetRecvCallback (Callback< void, Ptr< Socket > > receivedData) |
Notify application when new data is available to be read. | |
void | SetRecvPktInfo (bool flag) |
Enable/Disable receive packet information to socket. | |
void | SetSendCallback (Callback< void, Ptr< Socket >, uint32_t > sendCb) |
Notify application when space in transmit buffer is added. | |
virtual int | ShutdownRecv ()=0 |
virtual int | ShutdownSend ()=0 |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. | |
~Object () override | |
Destructor. | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. | |
void | Dispose () |
Dispose of this Object. | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. | |
bool | IsInitialized () const |
Check if the object has been initialized. | |
void | UnidirectionalAggregateObject (Ptr< Object > other) |
Aggregate an Object to another Object. | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. | |
void | Ref () const |
Increment the reference count. | |
void | Unref () const |
Decrement the reference count. | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. | |
void | GetAttribute (std::string name, AttributeValue &value, bool permissive=false) const |
Get the value of an attribute, raising fatal errors if unsuccessful. | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. | |
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. | |
static TypeId | GetTypeId () |
Get the type ID. | |
static uint8_t | IpTos2Priority (uint8_t ipTos) |
Return the priority corresponding to a given TOS value. | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. | |
Protected Member Functions | |
void | DoDispose () override |
Destructor implementation. | |
bool | IsManualIpTtl () const |
Checks if the socket has a specific IPv4 TTL set. | |
bool | IsManualIpv6HopLimit () const |
Checks if the socket has a specific IPv6 Hop Limit set. | |
bool | IsManualIpv6Tclass () const |
Checks if the socket has a specific IPv6 Tclass set. | |
void | NotifyConnectionFailed () |
Notify through the callback (if set) that the connection has not been established due to an error. | |
bool | NotifyConnectionRequest (const Address &from) |
Notify through the callback (if set) that an incoming connection is being requested by a remote host. | |
void | NotifyConnectionSucceeded () |
Notify through the callback (if set) that the connection has been established. | |
void | NotifyDataRecv () |
Notify through the callback (if set) that some data have been received. | |
void | NotifyDataSent (uint32_t size) |
Notify through the callback (if set) that some data have been sent. | |
void | NotifyErrorClose () |
Notify through the callback (if set) that the connection has been closed due to an error. | |
void | NotifyNewConnectionCreated (Ptr< Socket > socket, const Address &from) |
Notify through the callback (if set) that a new connection has been created. | |
void | NotifyNormalClose () |
Notify through the callback (if set) that the connection has been closed. | |
void | NotifySend (uint32_t spaceAvailable) |
Notify through the callback (if set) that some data have been sent. | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. | |
virtual void | DoInitialize () |
Initialize() implementation. | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. | |
Protected Attributes | |
Ptr< NetDevice > | m_boundnetdevice |
the device this socket is bound to (might be null). | |
Ipv6Address | m_ipv6MulticastGroupAddress |
IPv6 multicast group address. | |
bool | m_recvPktInfo |
if the socket should add packet info tags to the packet forwarded to L4. | |
Private Attributes | |
Callback< void, Ptr< Socket > > | m_connectionFailed |
connection failed callback | |
Callback< bool, Ptr< Socket >, const Address & > | m_connectionRequest |
connection request callback | |
Callback< void, Ptr< Socket > > | m_connectionSucceeded |
connection succeeded callback | |
Callback< void, Ptr< Socket >, uint32_t > | m_dataSent |
data sent callback | |
Callback< void, Ptr< Socket > > | m_errorClose |
connection closed due to errors callback | |
bool | m_ipRecvTos |
socket forwards IPv4 TOS tag to L4 | |
bool | m_ipRecvTtl |
socket forwards IPv4 TTL tag to L4 | |
uint8_t | m_ipTos |
the socket IPv4 TOS | |
uint8_t | m_ipTtl |
the socket IPv4 TTL | |
uint8_t | m_ipv6HopLimit |
the socket IPv6 Hop Limit | |
bool | m_ipv6RecvHopLimit |
socket forwards IPv6 Hop Limit tag to L4 | |
bool | m_ipv6RecvTclass |
socket forwards IPv6 Tclass tag to L4 | |
uint8_t | m_ipv6Tclass |
the socket IPv6 Tclass | |
bool | m_manualIpTtl |
socket has IPv4 TTL set | |
bool | m_manualIpv6HopLimit |
socket has IPv6 Hop Limit set | |
bool | m_manualIpv6Tclass |
socket has IPv6 Tclass set | |
Callback< void, Ptr< Socket >, const Address & > | m_newConnectionCreated |
connection created callback | |
Callback< void, Ptr< Socket > > | m_normalClose |
connection closed callback | |
uint8_t | m_priority |
the socket priority | |
Callback< void, Ptr< Socket > > | m_receivedData |
data received callback | |
Callback< void, Ptr< Socket >, uint32_t > | m_sendCb |
packet sent callback | |
Additional Inherited Members | |
Related Symbols inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
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 35 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 55 of file socket.cc.
References NS_LOG_FUNCTION.
|
pure virtual |
Allocate a local IPv4 endpoint for this socket.
Implemented in ns3::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
|
pure virtual |
Allocate a local endpoint for this socket.
address | the address to try to allocate |
Implemented in ns3::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by Tunnel::Tunnel(), Bug772ChainTest::CreateDevices(), ChainRegressionTest::CreateDevices(), ns3::olsr::Bug780Test::CreateNodes(), ns3::olsr::RoutingProtocol::DoInitialize(), ns3::Rip::DoInitialize(), ns3::RipNg::DoInitialize(), DualStackTestCase::DoRun(), ns3::aodv::LoopbackTestCase::DoRun(), FlameRegressionTest::InstallApplications(), HwmpDoRfRegressionTest::InstallApplications(), HwmpProactiveRegressionTest::InstallApplications(), HwmpReactiveRegressionTest::InstallApplications(), HwmpSimplestRegressionTest::InstallApplications(), ns3::Rip::NotifyInterfaceUp(), ns3::RipNg::NotifyInterfaceUp(), ns3::ThreeGppHttpClient::OpenConnection(), EpsBearerTagUdpClient::StartApplication(), ns3::BulkSendApplication::StartApplication(), ns3::DhcpClient::StartApplication(), ns3::DhcpServer::StartApplication(), ns3::OnOffApplication::StartApplication(), ns3::PacketSink::StartApplication(), ns3::PacketSocketClient::StartApplication(), ns3::PacketSocketServer::StartApplication(), ns3::Ping::StartApplication(), ns3::Radvd::StartApplication(), ns3::SocketWriter::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), ns3::TutorialApp::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), ns3::UdpEchoServer::StartApplication(), ns3::UdpServer::StartApplication(), ns3::UdpTraceClient::StartApplication(), ns3::V4TraceRoute::StartApplication(), Receiver::StartApplication(), Sender::StartApplication(), Ipv4FragmentationTest::StartClient(), Ipv6FragmentationTest::StartClient(), SixlowpanFragmentationTest::StartClient(), Ipv4FragmentationTest::StartServer(), Ipv6FragmentationTest::StartServer(), and SixlowpanFragmentationTest::StartServer().
|
pure virtual |
Allocate a local IPv6 endpoint for this socket.
Implemented in ns3::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
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::TcpSocketBase, and ns3::UdpSocketImpl.
Definition at line 316 of file socket.cc.
References ns3::Node::GetDevice(), ns3::Node::GetNDevices(), GetNode(), m_boundnetdevice, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::BindToNetDevice(), ns3::UdpSocketImpl::BindToNetDevice(), 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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by ns3::SocketWriter::Close(), ns3::olsr::RoutingProtocol::DoDispose(), ns3::Radvd::DoDispose(), ns3::Rip::DoDispose(), ns3::RipNg::DoDispose(), ns3::aodv::LoopbackTestCase::DoRun(), Ns3TcpStateTestCase::DoRun(), ns3::BulkSendApplication::SendData(), ns3::BulkSendApplication::StopApplication(), ns3::DhcpClient::StopApplication(), ns3::OnOffApplication::StopApplication(), ns3::PacketSink::StopApplication(), ns3::PacketSocketClient::StopApplication(), ns3::PacketSocketServer::StopApplication(), ns3::Ping::StopApplication(), ns3::ThreeGppHttpClient::StopApplication(), ns3::ThreeGppHttpServer::StopApplication(), ns3::TutorialApp::StopApplication(), ns3::UdpEchoClient::StopApplication(), ns3::UdpEchoServer::StopApplication(), and ns3::V4TraceRoute::StopApplication().
|
pure virtual |
Initiate a connection to a remote host.
address | Address of remote. |
Implemented in ns3::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by ns3::DhcpClient::AcceptAck(), ns3::SocketWriter::Connect(), Bug772ChainTest::CreateDevices(), ChainRegressionTest::CreateDevices(), ns3::olsr::Bug780Test::CreateNodes(), DualStackTestCase::DoRun(), FlameRegressionTest::InstallApplications(), HwmpDoRfRegressionTest::InstallApplications(), HwmpProactiveRegressionTest::InstallApplications(), HwmpReactiveRegressionTest::InstallApplications(), HwmpSimplestRegressionTest::InstallApplications(), ns3::ThreeGppHttpClient::OpenConnection(), EpsBearerTagUdpClient::StartApplication(), ns3::BulkSendApplication::StartApplication(), ns3::OnOffApplication::StartApplication(), ns3::PacketSocketClient::StartApplication(), ns3::TutorialApp::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), ns3::UdpTraceClient::StartApplication(), Ipv4FragmentationTest::StartClient(), Ipv6FragmentationTest::StartClient(), and SixlowpanFragmentationTest::StartClient().
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 61 of file socket.cc.
References ns3::TypeId::GetName(), NS_ASSERT, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by ns3::NoBackhaulEpcHelper::NoBackhaulEpcHelper(), Tunnel::Tunnel(), ns3::NoBackhaulEpcHelper::AddEnb(), ns3::NoBackhaulEpcHelper::AddS1Interface(), ns3::EpcX2::AddX2Interface(), Bug772ChainTest::CreateDevices(), ChainRegressionTest::CreateDevices(), ns3::olsr::Bug780Test::CreateNodes(), ns3::TcpSocketFactoryImpl::CreateSocket(), ns3::UdpSocketFactoryImpl::CreateSocket(), ns3::olsr::RoutingProtocol::DoInitialize(), ns3::Rip::DoInitialize(), ns3::RipNg::DoInitialize(), IcmpEchoReplyTestCase::DoRun(), IcmpTimeExceedTestCase::DoRun(), IcmpV6EchoReplyTestCase::DoRun(), IcmpV6TimeExceedTestCase::DoRun(), Ipv4DynamicGlobalRoutingTestCase::DoRun(), Ns3TcpLossTestCase::DoRun(), Ns3TcpStateTestCase::DoRun(), TcpEndPointBug2211Test::DoRun(), TcpSynConnectionFailedTest::DoRun(), FlameRegressionTest::InstallApplications(), HwmpDoRfRegressionTest::InstallApplications(), HwmpProactiveRegressionTest::InstallApplications(), HwmpReactiveRegressionTest::InstallApplications(), HwmpSimplestRegressionTest::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(), Experiment::Run(), Experiment::Run(), NetAnimExperiment::Run(), UanExperiment::SetupApplications(), DsdvManetExample::SetupPacketReceive(), Experiment::SetupPacketReceive(), RoutingExperiment::SetupPacketReceive(), SetupPacketReceive(), DualStackTestCase::SetUpSim(), EpsBearerTagUdpClient::StartApplication(), ns3::BulkSendApplication::StartApplication(), ns3::DhcpClient::StartApplication(), ns3::DhcpServer::StartApplication(), ns3::OnOffApplication::StartApplication(), ns3::PacketSink::StartApplication(), ns3::PacketSocketClient::StartApplication(), ns3::PacketSocketServer::StartApplication(), ns3::Ping::StartApplication(), ns3::Radvd::StartApplication(), ns3::SocketWriter::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), ns3::UdpEchoServer::StartApplication(), ns3::UdpServer::StartApplication(), ns3::UdpTraceClient::StartApplication(), ns3::V4TraceRoute::StartApplication(), Ipv4FragmentationTest::StartClient(), Ipv6FragmentationTest::StartClient(), SixlowpanFragmentationTest::StartClient(), Ipv4FragmentationTest::StartServer(), Ipv6FragmentationTest::StartServer(), and SixlowpanFragmentationTest::StartServer().
|
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.
Definition at line 301 of file socket.cc.
References m_connectionFailed, m_connectionRequest, m_connectionSucceeded, m_dataSent, m_errorClose, m_newConnectionCreated, m_normalClose, m_receivedData, m_sendCb, ns3::MakeNullCallback(), 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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Returns socket's bound NetDevice, if any.
This method corresponds to using getsockopt() SO_BINDTODEVICE of real network or BSD sockets.
Definition at line 336 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(), and ns3::Ipv6RawSocketImpl::ForwardUp().
|
pure virtual |
Get last error number.
Implemented in ns3::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by ns3::ThreeGppHttpClient::OpenConnection(), ns3::ThreeGppHttpClient::RequestEmbeddedObject(), ns3::ThreeGppHttpClient::RequestMainObject(), 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 439 of file socket.cc.
References m_ipTos.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSend(), ns3::TcpSocketCongestedRouter::SendDataPacket(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), ns3::Ipv4RawSocketImpl::SendTo(), and ns3::UdpSocketImpl::SendTo().
|
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 506 of file socket.cc.
References m_ipTtl.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), ns3::UdpSocket::GetTypeId(), ns3::TcpSocketCongestedRouter::SendDataPacket(), TcpDctcpCongestedRouter::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 531 of file socket.cc.
References m_ipv6HopLimit.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketCongestedRouter::SendDataPacket(), TcpDctcpCongestedRouter::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 481 of file socket.cc.
References m_ipv6Tclass.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketCongestedRouter::SendDataPacket(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), and ns3::Ipv6RawSocketImpl::SendTo().
Return the node this socket is associated with.
Implemented in ns3::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by BindToNetDevice(), Bug772ChainTest::CreateDevices(), Ipv4FragmentationTest::DoRun(), Ipv6FragmentationTest::DoRun(), ns3::aodv::LoopbackTestCase::DoRun(), SixlowpanFragmentationTest::DoRun(), FlameRegressionTest::InstallApplications(), HwmpDoRfRegressionTest::InstallApplications(), HwmpProactiveRegressionTest::InstallApplications(), HwmpReactiveRegressionTest::InstallApplications(), and HwmpSimplestRegressionTest::InstallApplications().
|
pure virtual |
Get the peer address of a connected socket.
address | the address this socket is connected to. |
Implemented in ns3::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by ns3::UdpClient::Send(), Ipv4FragmentationTest::SendClient(), and ns3::OnOffApplication::SendPacket().
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 382 of file socket.cc.
References m_priority.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketCongestedRouter::SendDataPacket(), TcpDctcpCongestedRouter::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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by ns3::olsr::Bug780Test::Receive(), ns3::Ping::Receive(), and ns3::V4TraceRoute::Receive().
|
pure virtual |
Implemented in ns3::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by SetIpTos(), and ns3::BulkSendApplication::StartApplication().
|
pure virtual |
Get socket address.
address | the address name this socket is associated with. |
Implemented in ns3::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by 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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
|
static |
Get the type ID.
Definition at line 29 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 388 of file socket.cc.
References NS3_PRIO_BESTEFFORT, NS3_PRIO_BULK, NS3_PRIO_INTERACTIVE, and NS3_PRIO_INTERACTIVE_BULK.
Referenced by PfifoFastQueueDiscOverflow::AddPacket(), ns3::UdpSocketImpl::DoSendTo(), ns3::Ipv4L3Protocol::IpForward(), ns3::Ipv4RawSocketImpl::SendTo(), SetIpTos(), PfifoFastQueueDiscDscpPrioritization::TestDscpValue(), and PfifoFastQueueDiscTosPrioritization::TestTosValue().
|
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 558 of file socket.cc.
References 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::Ipv6RawSocketImpl, and ns3::UdpSocketImpl.
Definition at line 549 of file socket.cc.
References 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 569 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 451 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 518 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 543 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 493 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 363 of file socket.cc.
References m_manualIpTtl.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketCongestedRouter::SendDataPacket(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), and ns3::Ipv4RawSocketImpl::SendTo().
|
protected |
Checks if the socket has a specific IPv6 Hop Limit set.
Definition at line 369 of file socket.cc.
References m_manualIpv6HopLimit.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketCongestedRouter::SendDataPacket(), TcpDctcpCongestedRouter::SendDataPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), and ns3::Ipv6RawSocketImpl::SendTo().
|
protected |
Checks if the socket has a specific IPv6 Tclass set.
Definition at line 357 of file socket.cc.
References m_manualIpv6Tclass.
Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketCongestedRouter::SendDataPacket(), TcpDctcpCongestedRouter::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 350 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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by Bug772ChainTest::CreateDevices(), DualStackTestCase::DoRun(), ns3::PacketSink::StartApplication(), and ns3::ThreeGppHttpServer::StartApplication().
|
protected |
Notify through the callback (if set) that the connection has not been established due to an error.
Definition at line 213 of file socket.cc.
References m_connectionFailed, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4RawSocketImpl::Connect(), ns3::Ipv6RawSocketImpl::Connect(), ns3::PacketSocket::Connect(), ns3::UdpSocketImpl::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 243 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 203 of file socket.cc.
References m_connectionSucceeded, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4RawSocketImpl::Connect(), ns3::Ipv6RawSocketImpl::Connect(), ns3::PacketSocket::Connect(), ns3::UdpSocketImpl::Connect(), and ns3::TcpSocketBase::ConnectionSucceeded().
|
protected |
Notify through the callback (if set) that some data have been received.
Definition at line 291 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 271 of file socket.cc.
References m_dataSent, and NS_LOG_FUNCTION.
Referenced by ns3::UdpSocketImpl::DoSendTo(), ns3::UdpSocketImpl::DoSendTo(), ns3::TcpSocketBase::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), TcpDctcpCongestedRouter::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 233 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 261 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 223 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 281 of file socket.cc.
References m_sendCb, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::ConnectionSucceeded(), ns3::UdpSocketImpl::DoSendTo(), 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 163 of file socket.cc.
References NS_LOG_FUNCTION, and Recv().
Referenced by Recv(), 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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
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 170 of file socket.cc.
References 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 183 of file socket.cc.
References 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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by ns3::DhcpClient::NetHandler(), ns3::DhcpServer::NetHandler(), ns3::olsr::Bug780Test::Receive(), ns3::Ping::Receive(), ns3::V4TraceRoute::Receive(), RecvFrom(), and RecvFrom().
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 190 of file socket.cc.
References NS_LOG_FUNCTION, and RecvFrom().
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 131 of file socket.cc.
References ns3::Create(), 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 124 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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by ns3::ThreeGppHttpClient::RequestEmbeddedObject(), ns3::ThreeGppHttpClient::RequestMainObject(), EpsBearerTagUdpClient::Send(), ns3::PacketSocketClient::Send(), Send(), Send(), ns3::UdpClient::Send(), ns3::UdpEchoClient::Send(), Ipv4FragmentationTest::SendClient(), Ipv6FragmentationTest::SendClient(), SixlowpanFragmentationTest::SendClient(), ns3::BulkSendApplication::SendData(), ns3::OnOffApplication::SendPacket(), ns3::TutorialApp::SendPacket(), ns3::UdpTraceClient::SendPacket(), ChainRegressionTest::SendPing(), ns3::olsr::Bug780Test::SendPing(), ns3::EpcEnbApplication::SendToLteSocket(), and ns3::SocketWriter::Write().
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 147 of file socket.cc.
References ns3::Create(), 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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, 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(), ns3::Rip::HandleRequests(), Tunnel::N0VirtualSend(), Tunnel::N1VirtualSend(), Tunnel::N3VirtualSend(), ns3::DhcpClient::Request(), ns3::Ping::Send(), ns3::V4TraceRoute::Send(), ns3::DhcpServer::SendAck(), Ipv4FragmentationTest::SendClient(), ns3::DhcpServer::SendOffer(), Sender::SendPacket(), SendTo(), ns3::EpcEnbApplication::SendToS1uSocket(), ns3::EpcSgwApplication::SendToS1uSocket(), ns3::EpcPgwApplication::SendToS5uSocket(), and ns3::EpcSgwApplication::SendToS5uSocket().
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 94 of file socket.cc.
References m_connectionRequest, m_newConnectionCreated, and NS_LOG_FUNCTION.
Referenced by DualStackTestCase::DoRun(), ns3::PacketSink::StartApplication(), ns3::ThreeGppHttpServer::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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by Bug772ChainTest::CreateDevices(), ns3::olsr::RoutingProtocol::DoInitialize(), ns3::DhcpClient::StartApplication(), ns3::DhcpServer::StartApplication(), ns3::OnOffApplication::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), ns3::UdpTraceClient::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 85 of file socket.cc.
References m_errorClose, m_normalClose, and NS_LOG_FUNCTION.
Referenced by ns3::ThreeGppHttpClient::NormalCloseCallback(), ns3::ThreeGppHttpClient::OpenConnection(), ns3::PacketSink::StartApplication(), ns3::ThreeGppHttpServer::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 76 of file socket.cc.
References m_connectionFailed, m_connectionSucceeded, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::TcpSocketBase(), ns3::ThreeGppHttpClient::OpenConnection(), 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 103 of file socket.cc.
References m_dataSent, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::TcpSocketBase().
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 445 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 512 of file socket.cc.
References m_ipRecvTtl.
Referenced by ns3::Rip::DoInitialize(), and ns3::Rip::NotifyInterfaceUp().
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. Setting the IP TOS also changes the socket priority as stated in the man page. This option affects only IPv4 sockets, it has no effect on IPv6 sockets.
ipTos | The desired TOS value for IP headers |
Definition at line 423 of file socket.cc.
References GetSocketType(), GetSockName(), IpTos2Priority(), m_ipTos, m_priority, and NS3_SOCK_STREAM.
Referenced by ns3::ThreeGppHttpClient::OpenConnection(), ns3::BulkSendApplication::StartApplication(), ns3::OnOffApplication::StartApplication(), ns3::Ping::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), ns3::UdpEchoServer::StartApplication(), ns3::UdpServer::StartApplication(), ns3::UdpTraceClient::StartApplication(), and ns3::V4TraceRoute::StartApplication().
|
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 499 of file socket.cc.
References m_ipTtl, and m_manualIpTtl.
Referenced by 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 524 of file socket.cc.
References m_ipv6HopLimit, and m_manualIpv6HopLimit.
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 537 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 487 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 457 of file socket.cc.
References 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 375 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 117 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::EpcEnbApplication::AddS1Interface(), ns3::EpcMmeApplication::AddSgw(), Bug772ChainTest::CreateDevices(), ns3::olsr::Bug780Test::CreateNodes(), ns3::olsr::HelloRegressionTest::CreateNodes(), ns3::olsr::TcRegressionTest::CreateNodes(), ns3::EpcPgwApplication::DoDispose(), ns3::EpcSgwApplication::DoDispose(), ns3::olsr::RoutingProtocol::DoInitialize(), ns3::Rip::DoInitialize(), ns3::RipNg::DoInitialize(), ns3::aodv::LoopbackTestCase::DoRun(), FlameRegressionTest::InstallApplications(), HwmpDoRfRegressionTest::InstallApplications(), HwmpProactiveRegressionTest::InstallApplications(), HwmpReactiveRegressionTest::InstallApplications(), HwmpSimplestRegressionTest::InstallApplications(), ns3::DhcpClient::LinkStateHandler(), ns3::Rip::NotifyInterfaceUp(), ns3::RipNg::NotifyInterfaceUp(), ns3::ThreeGppHttpClient::OpenConnection(), EpsBearerTagUdpClient::StartApplication(), ns3::DhcpClient::StartApplication(), ns3::DhcpServer::StartApplication(), ns3::PacketSink::StartApplication(), ns3::PacketSocketClient::StartApplication(), ns3::PacketSocketServer::StartApplication(), ns3::Ping::StartApplication(), ns3::Radvd::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), ns3::UdpClient::StartApplication(), ns3::UdpEchoClient::StartApplication(), ns3::UdpEchoServer::StartApplication(), ns3::UdpServer::StartApplication(), ns3::UdpTraceClient::StartApplication(), ns3::V4TraceRoute::StartApplication(), Receiver::StartApplication(), Ipv4FragmentationTest::StartClient(), Ipv6FragmentationTest::StartClient(), SixlowpanFragmentationTest::StartClient(), Ipv4FragmentationTest::StartServer(), Ipv6FragmentationTest::StartServer(), SixlowpanFragmentationTest::StartServer(), ns3::DhcpClient::StopApplication(), ns3::DhcpServer::StopApplication(), ns3::PacketSink::StopApplication(), ns3::PacketSocketServer::StopApplication(), ns3::Radvd::StopApplication(), ns3::ThreeGppHttpClient::StopApplication(), ns3::ThreeGppHttpServer::StopApplication(), ns3::UdpEchoClient::StopApplication(), ns3::UdpEchoServer::StopApplication(), ns3::UdpServer::StopApplication(), and Receiver::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 343 of file socket.cc.
References m_recvPktInfo, and NS_LOG_FUNCTION.
Referenced by ns3::olsr::RoutingProtocol::DoInitialize(), ns3::Rip::DoInitialize(), ns3::RipNg::DoInitialize(), ns3::Rip::NotifyInterfaceUp(), ns3::RipNg::NotifyInterfaceUp(), ns3::DhcpServer::StartApplication(), ns3::PacketSink::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 110 of file socket.cc.
References m_sendCb, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::TcpSocketBase(), ns3::BulkSendApplication::StartApplication(), ns3::ThreeGppHttpServer::StartApplication(), 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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by 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::Ipv4RawSocketImpl, ns3::Ipv6RawSocketImpl, ns3::PacketSocket, ns3::TcpSocketBase, and ns3::UdpSocketImpl.
Referenced by Bug772ChainTest::CreateDevices(), ns3::olsr::RoutingProtocol::DoInitialize(), ns3::PacketSink::StartApplication(), and ns3::Radvd::StartApplication().
the device this socket is bound to (might be null).
Definition at line 1070 of file socket.h.
Referenced by Socket(), ns3::UdpSocketImpl::Bind(), ns3::UdpSocketImpl::Bind(), ns3::UdpSocketImpl::Bind6(), BindToNetDevice(), ns3::UdpSocketImpl::BindToNetDevice(), ns3::PacketSocket::DoBind(), ns3::TcpSocketBase::DoForwardUp(), ns3::UdpSocketImpl::DoSendTo(), ns3::UdpSocketImpl::DoSendTo(), GetBoundNetDevice(), ns3::Ipv6RawSocketImpl::Ipv6JoinGroup(), ns3::UdpSocketImpl::Ipv6JoinGroup(), ns3::TcpSocketBase::PersistTimeout(), ns3::TcpSocketBase::SendDataPacket(), ns3::TcpSocketCongestedRouter::SendDataPacket(), TcpDctcpCongestedRouter::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 1077 of file socket.h.
Referenced by DoDispose(), NotifyConnectionFailed(), and SetConnectCallback().
connection request callback
Definition at line 1081 of file socket.h.
Referenced by DoDispose(), NotifyConnectionRequest(), and SetAcceptCallback().
connection succeeded callback
Definition at line 1076 of file socket.h.
Referenced by DoDispose(), NotifyConnectionSucceeded(), and SetConnectCallback().
data sent callback
Definition at line 1084 of file socket.h.
Referenced by DoDispose(), NotifyDataSent(), and SetDataSentCallback().
connection closed due to errors callback
Definition at line 1079 of file socket.h.
Referenced by DoDispose(), NotifyErrorClose(), and SetCloseCallbacks().
|
private |
socket forwards IPv4 TOS tag to L4
Definition at line 1092 of file socket.h.
Referenced by IsIpRecvTos(), and SetIpRecvTos().
|
private |
socket forwards IPv4 TTL tag to L4
Definition at line 1093 of file socket.h.
Referenced by IsIpRecvTtl(), and SetIpRecvTtl().
|
private |
the socket IPv4 TOS
Definition at line 1095 of file socket.h.
Referenced by Socket(), GetIpTos(), and SetIpTos().
|
private |
the socket IPv4 TTL
Definition at line 1096 of file socket.h.
Referenced by Socket(), GetIpTtl(), and SetIpTtl().
|
private |
the socket IPv6 Hop Limit
Definition at line 1105 of file socket.h.
Referenced by Socket(), GetIpv6HopLimit(), and SetIpv6HopLimit().
|
protected |
IPv6 multicast group address.
Definition at line 1073 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 1102 of file socket.h.
Referenced by IsIpv6RecvHopLimit(), and SetIpv6RecvHopLimit().
|
private |
socket forwards IPv6 Tclass tag to L4
Definition at line 1101 of file socket.h.
Referenced by IsIpv6RecvTclass(), and SetIpv6RecvTclass().
|
private |
the socket IPv6 Tclass
Definition at line 1104 of file socket.h.
Referenced by Socket(), GetIpv6Tclass(), and SetIpv6Tclass().
|
private |
socket has IPv4 TTL set
Definition at line 1091 of file socket.h.
Referenced by IsManualIpTtl(), and SetIpTtl().
|
private |
socket has IPv6 Hop Limit set
Definition at line 1100 of file socket.h.
Referenced by IsManualIpv6HopLimit(), and SetIpv6HopLimit().
|
private |
socket has IPv6 Tclass set
Definition at line 1099 of file socket.h.
Referenced by IsManualIpv6Tclass(), and SetIpv6Tclass().
connection created callback
Definition at line 1083 of file socket.h.
Referenced by DoDispose(), NotifyNewConnectionCreated(), and SetAcceptCallback().
connection closed callback
Definition at line 1078 of file socket.h.
Referenced by DoDispose(), NotifyNormalClose(), and SetCloseCallbacks().
|
private |
the socket priority
Definition at line 1088 of file socket.h.
Referenced by Socket(), GetPriority(), SetIpTos(), and SetPriority().
data received callback
Definition at line 1086 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 1072 of file socket.h.
Referenced by Socket(), IsRecvPktInfo(), and SetRecvPktInfo().
packet sent callback
Definition at line 1085 of file socket.h.
Referenced by DoDispose(), NotifySend(), and SetSendCallback().