26 #include "ns3/callback.h" 
   29 #include "ns3/object.h" 
   30 #include "ns3/net-device.h" 
   33 #include "ns3/inet-socket-address.h" 
   34 #include "ns3/inet6-socket-address.h" 
  187                                    const Address &> connectionRequest,
 
  189                                    const Address&> newConnectionCreated);
 
  234   virtual int Bind () = 0;
 
  241   virtual int Bind6 () = 0;
 
  250   virtual int Close (
void) = 0;
 
  279   virtual int Listen (
void) = 0;
 
  473   int Send (
const uint8_t* buf, uint32_t size, uint32_t flags);
 
  492   int SendTo (
const uint8_t* buf, uint32_t size, uint32_t flags, 
 
  520   int Recv (uint8_t* buf, uint32_t size, uint32_t flags);
 
  554   int RecvFrom (uint8_t* buf, uint32_t size, uint32_t flags,
 
  742   virtual void SetIpTtl (uint8_t ipTtl);
 
  752   virtual uint8_t 
GetIpTtl (
void) 
const;
 
  989   virtual void Print (std::ostream &os) 
const;
 
 1009   void SetTtl (uint8_t ttl);
 
 1016   uint8_t 
GetTtl (
void) 
const;
 
 1037   virtual void Print (std::ostream &os) 
const;
 
 1085   virtual void Print (std::ostream &os) 
const;
 
 1136   virtual void Print (std::ostream &os) 
const;
 
 1155   void SetTos (uint8_t tos);
 
 1162   uint8_t 
GetTos (
void) 
const;
 
 1183   virtual void Print (std::ostream &os) 
const;
 
 1230   virtual void Print (std::ostream &os) 
const;
 
uint8_t m_ipv6HopLimit
the socket IPv6 Hop Limit 
 
static TypeId GetTypeId(void)
Get the type ID. 
 
void SetTclass(uint8_t tclass)
Set the tag's Tclass. 
 
virtual void Serialize(TagBuffer i) const 
 
bool IsManualIpTtl(void) const 
Checks if the socket has a specific IPv4 TTL set. 
 
virtual void Print(std::ostream &os) const 
 
virtual void Print(std::ostream &os) const 
 
bool IsIpv6RecvHopLimit(void) const 
Ask if the socket is currently passing information about IPv6 Hop Limit up the stack. 
 
bool m_manualIpv6HopLimit
socket has IPv6 Hop Limit set 
 
SocketErrno
Enumeration of the possible errors returned by a socket. 
 
virtual void Deserialize(TagBuffer i)
 
virtual uint8_t GetIpTtl(void) const 
Query the value of IP Time to Live field of this socket. 
 
void SetIpv6RecvTclass(bool ipv6RecvTclass)
Tells a socket to pass information about IPv6 Traffic Class up the stack. 
 
uint8_t GetIpTos(void) const 
Query the value of IP Type of Service of this socket. 
 
This class implements a tag that carries the socket-specific HOPLIMIT of a packet to the IPv6 layer...
 
virtual int Bind6()=0
Allocate a local IPv6 endpoint for this socket. 
 
virtual bool SetAllowBroadcast(bool allowBroadcast)=0
Configure whether broadcast datagram transmissions are allowed. 
 
uint8_t m_hopLimit
the Hop Limit carried by the tag 
 
void NotifyDataRecv(void)
Notify through the callback (if set) that some data have been received. 
 
uint8_t GetTos(void) const 
Get the tag's TOS. 
 
virtual uint32_t GetSerializedSize(void) const 
 
virtual int ShutdownSend(void)=0
 
Ptr< Packet > Recv(void)
Read a single packet from the socket. 
 
bool m_dontFragment
DF bit value for outgoing packets. 
 
void SetAddress(Address addr)
Set the tag's address. 
 
virtual void Serialize(TagBuffer i) const 
 
void NotifyConnectionFailed(void)
Notify through the callback (if set) that the connection has not been established due to an error...
 
static TypeId GetTypeId(void)
Get the type ID. 
 
Callback< bool, Ptr< Socket >, const Address & > m_connectionRequest
connection request callback 
 
virtual void Deserialize(TagBuffer i)
 
virtual int GetSockName(Address &address) const =0
Get socket address. 
 
virtual int ShutdownRecv(void)=0
 
void SetIpRecvTos(bool ipv4RecvTos)
Tells a socket to pass information about IP Type of Service up the stack. 
 
virtual TypeId GetInstanceTypeId(void) const 
Get the most derived TypeId for this Object. 
 
static TypeId GetTypeId(void)
Get the type ID. 
 
bool IsManualIpTos(void) const 
Checks if the socket has a specific IPv4 ToS set. 
 
virtual TypeId GetInstanceTypeId(void) const 
Get the most derived TypeId for this Object. 
 
void SetCloseCallbacks(Callback< void, Ptr< Socket > > normalClose, Callback< void, Ptr< Socket > > errorClose)
Detect socket recv() events such as graceful shutdown or error. 
 
virtual uint8_t GetIpv6HopLimit(void) const 
Query the value of IP Hop Limit field of this socket. 
 
SocketType
Enumeration of the possible socket types. 
 
Callback< void, Ptr< Socket > > m_connectionSucceeded
connection succeeded callback 
 
void SetTos(uint8_t tos)
Set the tag's TOS. 
 
bool m_recvPktInfo
if the socket should add packet info tags to the packet forwarded to L4. 
 
bool IsEnabled(void) const 
Checks if the DF (Don't Fragment) flag is set. 
 
virtual void Serialize(TagBuffer i) const 
 
This class implements a tag that carries the socket-specific TTL of a packet to the IP layer...
 
bool NotifyConnectionRequest(const Address &from)
Notify through the callback (if set) that an incoming connection is being requested by a remote host...
 
bool m_ipRecvTos
socket forwards IPv4 TOS tag to L4 
 
virtual void Print(std::ostream &os) const 
 
bool IsRecvPktInfo() const 
Get status indicating whether enable/disable packet information to socket. 
 
uint8_t m_ipv6Tclass
the socket IPv6 Tclass 
 
virtual enum Socket::SocketErrno GetErrno(void) const =0
Get last error number. 
 
a polymophic address class 
 
virtual int Listen(void)=0
Listen for incoming connections. 
 
bool IsIpRecvTos(void) const 
Ask if the socket is currently passing information about IP Type of Service up the stack...
 
void SetRecvPktInfo(bool flag)
Enable/Disable receive packet information to socket. 
 
Ptr< NetDevice > GetBoundNetDevice()
Returns socket's bound netdevice, if any. 
 
A low-level Socket API based loosely on the BSD Socket API. 
 
uint8_t GetTclass(void) const 
Get the tag's Tclass. 
 
void SetTtl(uint8_t ttl)
Set the tag's TTL. 
 
uint8_t m_ipTos
the socket IPv4 TOS 
 
virtual int Bind()=0
Allocate a local IPv4 endpoint for this socket. 
 
static TypeId GetTypeId(void)
Get the type ID. 
 
Callback< void, Ptr< Socket > > m_receivedData
data received callback 
 
Callback< void, Ptr< Socket >, const Address & > m_newConnectionCreated
connection created callback 
 
static TypeId GetTypeId(void)
Get the type ID. 
 
This class implements a tag that carries an address of a packet across the socket interface...
 
Callback< void, Ptr< Socket > > m_connectionFailed
connection failed callback 
 
virtual bool GetAllowBroadcast() const =0
Query whether broadcast datagram transmissions are allowed. 
 
bool IsManualIpv6Tclass(void) const 
Checks if the socket has a specific IPv6 Tclass set. 
 
void NotifyDataSent(uint32_t size)
Notify through the callback (if set) that some data have been sent. 
 
void SetRecvCallback(Callback< void, Ptr< Socket > >)
Notify application when new data is available to be read. 
 
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 specif...
 
virtual void Print(std::ostream &os) const 
 
virtual enum Socket::SocketType GetSocketType(void) const =0
 
void SetHopLimit(uint8_t hopLimit)
Set the tag's Hop Limit. 
 
uint8_t m_ipTos
the TOS carried by the tag 
 
bool m_manualIpTos
socket has IPv4 TOS set 
 
void NotifyConnectionSucceeded(void)
Notify through the callback (if set) that the connection has been established. 
 
Callback< void, Ptr< Socket > > m_errorClose
connection closed due to errors callback 
 
virtual int Connect(const Address &address)=0
Initiate a connection to a remote host. 
 
Callback< void, Ptr< Socket >, uint32_t > m_dataSent
data sent callback 
 
bool IsManualIpv6HopLimit(void) const 
Checks if the socket has a specific IPv6 Hop Limit set. 
 
virtual uint32_t GetSerializedSize(void) const 
 
void NotifyNormalClose(void)
Notify through the callback (if set) that the connection has been closed. 
 
tag a set of bytes in a packet 
 
uint8_t m_ipTtl
the socket IPv4 TTL 
 
void SetIpv6Tclass(int ipTclass)
Manually set IPv6 Traffic Class field. 
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
virtual void Serialize(TagBuffer i) const 
 
void NotifyNewConnectionCreated(Ptr< Socket > socket, const Address &from)
Notify through the callback (if set) that a new connection has been created. 
 
virtual uint32_t GetSerializedSize(void) const 
 
indicates whether the socket has IPV6_TCLASS set. 
 
uint8_t GetIpv6Tclass(void) const 
Query the value of IPv6 Traffic Class field of this socket. 
 
static TypeId GetTypeId(void)
Get the type ID. 
 
virtual TypeId GetInstanceTypeId(void) const 
Get the most derived TypeId for this Object. 
 
virtual void Deserialize(TagBuffer i)
 
Address m_address
the address carried by the tag 
 
bool IsIpv6RecvTclass(void) const 
Ask if the socket is currently passing information about IPv6 Traffic Class up the stack...
 
uint8_t m_ttl
the ttl carried by the tag 
 
void SetSendCallback(Callback< void, Ptr< Socket >, uint32_t > sendCb)
Notify application when space in transmit buffer is added. 
 
bool m_ipRecvTtl
socket forwards IPv4 TTL tag to L4 
 
void SetAcceptCallback(Callback< bool, Ptr< Socket >, const Address & > connectionRequest, Callback< void, Ptr< Socket >, const Address & > newConnectionCreated)
Accept connection requests from remote hosts. 
 
virtual void BindToNetDevice(Ptr< NetDevice > netdevice)
Bind a socket to specific device. 
 
SocketSetDontFragmentTag()
 
void SetDataSentCallback(Callback< void, Ptr< Socket >, uint32_t > dataSent)
Notify application when a packet has been sent from transport protocol (non-standard socket call) ...
 
virtual void DoDispose(void)
Destructor implementation. 
 
bool IsIpRecvTtl(void) const 
Ask if the socket is currently passing information about IP_TTL up the stack. 
 
static TypeId GetTypeId(void)
Get the type ID. 
 
uint8_t GetHopLimit(void) const 
Get the tag's Hop Limit. 
 
void Disable(void)
Disables the DF (Don't Fragment) flag. 
 
Ptr< NetDevice > m_boundnetdevice
the device this socket is bound to (might be null). 
 
void SetIpv6RecvHopLimit(bool ipv6RecvHopLimit)
Tells a socket to pass information about IPv6 Hop Limit up the stack. 
 
Callback< void, Ptr< Socket > > m_normalClose
connection closed callback 
 
virtual uint32_t GetSerializedSize(void) const 
 
virtual TypeId GetInstanceTypeId(void) const 
Get the most derived TypeId for this Object. 
 
virtual void Serialize(TagBuffer i) const 
 
virtual Ptr< Node > GetNode(void) const =0
Return the node this socket is associated with. 
 
Address GetAddress(void) const 
Get the tag's address. 
 
virtual void Print(std::ostream &os) const 
 
virtual void Deserialize(TagBuffer i)
 
indicates whether packets should be sent out with the DF (Don't Fragment) flag set. 
 
virtual void Serialize(TagBuffer i) const 
 
void SetIpRecvTtl(bool ipv4RecvTtl)
Tells a socket to pass information about IP_TTL up the stack. 
 
void Enable(void)
Enables the DF (Don't Fragment) flag. 
 
uint8_t m_ipv6Tclass
the Tclass carried by the tag 
 
virtual void Deserialize(TagBuffer i)
 
virtual int SendTo(Ptr< Packet > p, uint32_t flags, const Address &toAddress)=0
Send data to a specified peer. 
 
virtual void Deserialize(TagBuffer i)
 
virtual void Print(std::ostream &os) const 
 
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. 
 
A base class which provides memory management and object aggregation. 
 
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. 
 
uint8_t GetTtl(void) const 
Get the tag's TTL. 
 
virtual uint32_t GetSerializedSize(void) const 
 
Callback< void, Ptr< Socket >, uint32_t > m_sendCb
packet sent callback 
 
virtual int Send(Ptr< Packet > p, uint32_t flags)=0
Send data (or dummy data) to the remote host. 
 
virtual TypeId GetInstanceTypeId(void) const 
Get the most derived TypeId for this Object. 
 
virtual void SetIpv6HopLimit(uint8_t ipHopLimit)
Manually set IPv6 Hop Limit. 
 
virtual int Close(void)=0
Close a socket. 
 
virtual uint32_t GetTxAvailable(void) const =0
Returns the number of bytes which can be sent in a single call to Send. 
 
virtual uint32_t GetSerializedSize(void) const 
 
indicates whether the socket has IP_TOS set. 
 
void SetIpTos(uint8_t ipTos)
Manually set IP Type of Service field. 
 
virtual TypeId GetInstanceTypeId(void) const 
Get the most derived TypeId for this Object. 
 
a unique identifier for an interface. 
 
void NotifySend(uint32_t spaceAvailable)
Notify through the callback (if set) that some data have been sent. 
 
bool m_manualIpTtl
socket has IPv4 TTL set 
 
void NotifyErrorClose(void)
Notify through the callback (if set) that the connection has been closed due to an error...
 
virtual void SetIpTtl(uint8_t ipTtl)
Manually set IP Time to Live field. 
 
bool m_ipv6RecvHopLimit
socket forwards IPv6 Hop Limit tag to L4 
 
virtual uint32_t GetRxAvailable(void) const =0
Return number of bytes which can be returned from one or multiple calls to Recv. 
 
bool m_manualIpv6Tclass
socket has IPv6 Tclass set 
 
bool m_ipv6RecvTclass
socket forwards IPv6 Tclass tag to L4