A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
socket.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2006 Georgia Tech Research Corporation
4  * 2007 INRIA
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation;
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Authors: George F. Riley<riley@ece.gatech.edu>
20  * Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
21  */
22 
23 #ifndef NS3_SOCKET_H
24 #define NS3_SOCKET_H
25 
26 #include "ns3/callback.h"
27 #include "ns3/ptr.h"
28 #include "ns3/tag.h"
29 #include "ns3/object.h"
30 #include "ns3/net-device.h"
31 #include "address.h"
32 #include <stdint.h>
33 #include "ns3/inet-socket-address.h"
34 #include "ns3/inet6-socket-address.h"
35 
36 namespace ns3 {
37 
38 
39 class Node;
40 class Packet;
41 
66 class Socket : public Object
67 {
68 public:
73  static TypeId GetTypeId (void);
74 
75  Socket (void);
76  virtual ~Socket (void);
77 
82  enum SocketErrno {
98  };
99 
104  enum SocketType {
109  };
110 
120  static Ptr<Socket> CreateSocket (Ptr<Node> node, TypeId tid);
128  virtual enum Socket::SocketErrno GetErrno (void) const = 0;
132  virtual enum Socket::SocketType GetSocketType (void) const = 0;
137  virtual Ptr<Node> GetNode (void) const = 0;
150  void SetConnectCallback (Callback<void, Ptr<Socket> > connectionSucceeded,
151  Callback<void, Ptr<Socket> > connectionFailed);
167  void SetCloseCallbacks (Callback<void, Ptr<Socket> > normalClose,
168  Callback<void, Ptr<Socket> > errorClose);
187  const Address &> connectionRequest,
188  Callback<void, Ptr<Socket>,
189  const Address&> newConnectionCreated);
198  uint32_t> dataSent);
213  void SetSendCallback (Callback<void, Ptr<Socket>, uint32_t> sendCb);
221  void SetRecvCallback (Callback<void, Ptr<Socket> >);
227  virtual int Bind (const Address &address) = 0;
228 
234  virtual int Bind () = 0;
235 
241  virtual int Bind6 () = 0;
242 
250  virtual int Close (void) = 0;
251 
258  virtual int ShutdownSend (void) = 0;
259 
266  virtual int ShutdownRecv (void) = 0;
267 
273  virtual int Connect (const Address &address) = 0;
274 
279  virtual int Listen (void) = 0;
280 
293  virtual uint32_t GetTxAvailable (void) const = 0;
294 
340  virtual int Send (Ptr<Packet> p, uint32_t flags) = 0;
341 
355  virtual int SendTo (Ptr<Packet> p, uint32_t flags,
356  const Address &toAddress) = 0;
357 
366  virtual uint32_t GetRxAvailable (void) const = 0;
367 
419  virtual Ptr<Packet> Recv (uint32_t maxSize, uint32_t flags) = 0;
420 
440  virtual Ptr<Packet> RecvFrom (uint32_t maxSize, uint32_t flags,
441  Address &fromAddress) = 0;
442 
444  // The remainder of these public methods are overloaded methods //
445  // or variants of Send() and Recv(), and they are non-virtual //
447 
457  int Send (Ptr<Packet> p);
458 
473  int Send (const uint8_t* buf, uint32_t size, uint32_t flags);
474 
475 
492  int SendTo (const uint8_t* buf, uint32_t size, uint32_t flags,
493  const Address &address);
494 
504  Ptr<Packet> Recv (void);
505 
520  int Recv (uint8_t* buf, uint32_t size, uint32_t flags);
521 
535  Ptr<Packet> RecvFrom (Address &fromAddress);
536 
554  int RecvFrom (uint8_t* buf, uint32_t size, uint32_t flags,
555  Address &fromAddress);
561  virtual int GetSockName (Address &address) const = 0;
562 
582  virtual void BindToNetDevice (Ptr<NetDevice> netdevice);
583 
594 
595 
607  virtual bool SetAllowBroadcast (bool allowBroadcast) = 0;
608 
617  virtual bool GetAllowBroadcast () const = 0;
618 
631  void SetRecvPktInfo (bool flag);
632 
638  bool IsRecvPktInfo () const;
639 
651  void SetIpTos (uint8_t ipTos);
652 
661  uint8_t GetIpTos (void) const;
662 
674  void SetIpRecvTos (bool ipv4RecvTos);
675 
684  bool IsIpRecvTos (void) const;
685 
696  void SetIpv6Tclass (int ipTclass);
697 
706  uint8_t GetIpv6Tclass (void) const;
707 
719  void SetIpv6RecvTclass (bool ipv6RecvTclass);
720 
729  bool IsIpv6RecvTclass (void) const;
730 
739  virtual void SetIpTtl (uint8_t ipTtl);
740 
749  virtual uint8_t GetIpTtl (void) const;
750 
762  void SetIpRecvTtl (bool ipv4RecvTtl);
763 
772  bool IsIpRecvTtl (void) const;
773 
782  virtual void SetIpv6HopLimit (uint8_t ipHopLimit);
783 
792  virtual uint8_t GetIpv6HopLimit (void) const;
793 
805  void SetIpv6RecvHopLimit (bool ipv6RecvHopLimit);
806 
815  bool IsIpv6RecvHopLimit (void) const;
816 
817 protected:
822  void NotifyConnectionSucceeded (void);
823 
828  void NotifyConnectionFailed (void);
829 
834  void NotifyNormalClose (void);
835 
840  void NotifyErrorClose (void);
841 
853  bool NotifyConnectionRequest (const Address &from);
854 
859  void NotifyNewConnectionCreated (Ptr<Socket> socket, const Address &from);
860 
866  void NotifyDataSent (uint32_t size);
867 
873  void NotifySend (uint32_t spaceAvailable);
874 
878  void NotifyDataRecv (void);
879 
880  // inherited function, no doc necessary
881  virtual void DoDispose (void);
882 
888  bool IsManualIpTos (void) const;
889 
895  bool IsManualIpv6Tclass (void) const;
896 
902  bool IsManualIpTtl (void) const;
903 
909  bool IsManualIpv6HopLimit (void) const;
910 
913 
914 private:
924 
925  //IPv4 options
928  bool m_ipRecvTos;
929  bool m_ipRecvTtl;
930 
931  uint8_t m_ipTos;
932  uint8_t m_ipTtl;
933 
934  //IPv6 options
939 
940  uint8_t m_ipv6Tclass;
941  uint8_t m_ipv6HopLimit;
942 };
943 
948 class SocketAddressTag : public Tag
949 {
950 public:
951  SocketAddressTag ();
952 
958  void SetAddress (Address addr);
959 
965  Address GetAddress (void) const;
966 
971  static TypeId GetTypeId (void);
972 
973  // inherited function, no need to doc.
974  virtual TypeId GetInstanceTypeId (void) const;
975 
976  // inherited function, no need to doc.
977  virtual uint32_t GetSerializedSize (void) const;
978 
979  // inherited function, no need to doc.
980  virtual void Serialize (TagBuffer i) const;
981 
982  // inherited function, no need to doc.
983  virtual void Deserialize (TagBuffer i);
984 
985  // inherited function, no need to doc.
986  virtual void Print (std::ostream &os) const;
987 
988 private:
990 };
991 
996 class SocketIpTtlTag : public Tag
997 {
998 public:
999  SocketIpTtlTag ();
1000 
1006  void SetTtl (uint8_t ttl);
1007 
1013  uint8_t GetTtl (void) const;
1014 
1019  static TypeId GetTypeId (void);
1020 
1021  // inherited function, no need to doc.
1022  virtual TypeId GetInstanceTypeId (void) const;
1023 
1024  // inherited function, no need to doc.
1025  virtual uint32_t GetSerializedSize (void) const;
1026 
1027  // inherited function, no need to doc.
1028  virtual void Serialize (TagBuffer i) const;
1029 
1030  // inherited function, no need to doc.
1031  virtual void Deserialize (TagBuffer i);
1032 
1033  // inherited function, no need to doc.
1034  virtual void Print (std::ostream &os) const;
1035 
1036 private:
1037  uint8_t m_ttl;
1038 };
1039 
1045 {
1046 public:
1048 
1054  void SetHopLimit (uint8_t hopLimit);
1055 
1061  uint8_t GetHopLimit (void) const;
1062 
1067  static TypeId GetTypeId (void);
1068 
1069  // inherited function, no need to doc.
1070  virtual TypeId GetInstanceTypeId (void) const;
1071 
1072  // inherited function, no need to doc.
1073  virtual uint32_t GetSerializedSize (void) const;
1074 
1075  // inherited function, no need to doc.
1076  virtual void Serialize (TagBuffer i) const;
1077 
1078  // inherited function, no need to doc.
1079  virtual void Deserialize (TagBuffer i);
1080 
1081  // inherited function, no need to doc.
1082  virtual void Print (std::ostream &os) const;
1083 
1084 private:
1085  uint8_t m_hopLimit;
1086 };
1087 
1093 {
1094 public:
1096 
1100  void Enable (void);
1101 
1105  void Disable (void);
1106 
1112  bool IsEnabled (void) const;
1113 
1118  static TypeId GetTypeId (void);
1119 
1120  // inherited function, no need to doc.
1121  virtual TypeId GetInstanceTypeId (void) const;
1122 
1123  // inherited function, no need to doc.
1124  virtual uint32_t GetSerializedSize (void) const;
1125 
1126  // inherited function, no need to doc.
1127  virtual void Serialize (TagBuffer i) const;
1128 
1129  // inherited function, no need to doc.
1130  virtual void Deserialize (TagBuffer i);
1131 
1132  // inherited function, no need to doc.
1133  virtual void Print (std::ostream &os) const;
1134 private:
1136 };
1137 
1142 class SocketIpTosTag : public Tag
1143 {
1144 public:
1145  SocketIpTosTag ();
1146 
1152  void SetTos (uint8_t tos);
1153 
1159  uint8_t GetTos (void) const;
1160 
1165  static TypeId GetTypeId (void);
1166 
1167  // inherited function, no need to doc.
1168  virtual TypeId GetInstanceTypeId (void) const;
1169 
1170  // inherited function, no need to doc.
1171  virtual uint32_t GetSerializedSize (void) const;
1172 
1173  // inherited function, no need to doc.
1174  virtual void Serialize (TagBuffer i) const;
1175 
1176  // inherited function, no need to doc.
1177  virtual void Deserialize (TagBuffer i);
1178 
1179  // inherited function, no need to doc.
1180  virtual void Print (std::ostream &os) const;
1181 private:
1182  uint8_t m_ipTos;
1183 };
1184 
1189 class SocketIpv6TclassTag : public Tag
1190 {
1191 public:
1193 
1199  void SetTclass (uint8_t tclass);
1200 
1206  uint8_t GetTclass (void) const;
1207 
1212  static TypeId GetTypeId (void);
1213 
1214  // inherited function, no need to doc.
1215  virtual TypeId GetInstanceTypeId (void) const;
1216 
1217  // inherited function, no need to doc.
1218  virtual uint32_t GetSerializedSize (void) const;
1219 
1220  // inherited function, no need to doc.
1221  virtual void Serialize (TagBuffer i) const;
1222 
1223  // inherited function, no need to doc.
1224  virtual void Deserialize (TagBuffer i);
1225 
1226  // inherited function, no need to doc.
1227  virtual void Print (std::ostream &os) const;
1228 private:
1229  uint8_t m_ipv6Tclass;
1230 };
1231 
1232 } // namespace ns3
1233 
1234 #endif /* NS3_SOCKET_H */
uint8_t m_ipv6HopLimit
the socket IPv6 Hop Limit
Definition: socket.h:941
static TypeId GetTypeId(void)
Get the type ID.
Definition: socket.cc:601
void SetTclass(uint8_t tclass)
Set the tag's Tclass.
Definition: socket.cc:821
virtual void Serialize(TagBuffer i) const
Definition: socket.cc:855
bool IsManualIpTtl(void) const
Checks if the socket has a specific IPv4 TTL set.
Definition: socket.cc:383
virtual void Print(std::ostream &os) const
Definition: socket.cc:866
virtual void Print(std::ostream &os) const
Definition: socket.cc:634
bool IsIpv6RecvHopLimit(void) const
Ask if the socket is currently passing information about IPv6 Hop Limit up the stack.
Definition: socket.cc:508
bool m_manualIpv6HopLimit
socket has IPv6 Hop Limit set
Definition: socket.h:936
virtual void Deserialize(TagBuffer i)
Definition: socket.cc:566
virtual uint8_t GetIpTtl(void) const
Query the value of IP Time to Live field of this socket.
Definition: socket.cc:471
Callback template class.
Definition: callback.h:920
void SetIpv6RecvTclass(bool ipv6RecvTclass)
Tells a socket to pass information about IPv6 Traffic Class up the stack.
Definition: socket.cc:452
uint8_t GetIpTos(void) const
Query the value of IP Type of Service of this socket.
Definition: socket.cc:404
This class implements a tag that carries the socket-specific HOPLIMIT of a packet to the IPv6 layer...
Definition: socket.h:1044
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
Definition: socket.h:1085
void NotifyDataRecv(void)
Notify through the callback (if set) that some data have been received.
Definition: socket.cc:305
uint8_t GetTos(void) const
Get the tag's TOS.
Definition: socket.cc:771
virtual uint32_t GetSerializedSize(void) const
Definition: socket.cc:735
virtual int ShutdownSend(void)=0
Ptr< Packet > Recv(void)
Read a single packet from the socket.
Definition: socket.cc:175
bool m_dontFragment
DF bit value for outgoing packets.
Definition: socket.h:1135
Socket(void)
Definition: socket.cc:45
void SetAddress(Address addr)
Set the tag's address.
Definition: socket.cc:523
virtual void Serialize(TagBuffer i) const
Definition: socket.cc:560
void NotifyConnectionFailed(void)
Notify through the callback (if set) that the connection has not been established due to an error...
Definition: socket.cc:227
static TypeId GetTypeId(void)
Get the type ID.
Definition: socket.cc:722
Callback< bool, Ptr< Socket >, const Address & > m_connectionRequest
connection request callback
Definition: socket.h:919
virtual void Deserialize(TagBuffer i)
Definition: socket.cc:861
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.
Definition: socket.cc:410
virtual TypeId GetInstanceTypeId(void) const
Definition: socket.cc:549
static TypeId GetTypeId(void)
Get the type ID.
Definition: socket.cc:833
bool IsManualIpTos(void) const
Checks if the socket has a specific IPv4 ToS set.
Definition: socket.cc:371
virtual TypeId GetInstanceTypeId(void) const
Definition: socket.cc:787
void SetCloseCallbacks(Callback< void, Ptr< Socket > > normalClose, Callback< void, Ptr< Socket > > errorClose)
Detect socket recv() events such as graceful shutdown or error.
Definition: socket.cc:94
virtual uint8_t GetIpv6HopLimit(void) const
Query the value of IP Hop Limit field of this socket.
Definition: socket.cc:496
Callback< void, Ptr< Socket > > m_connectionSucceeded
connection succeeded callback
Definition: socket.h:915
void SetTos(uint8_t tos)
Set the tag's TOS.
Definition: socket.cc:765
bool m_recvPktInfo
if the socket should add packet info tags to the packet forwarded to L4.
Definition: socket.h:912
bool IsEnabled(void) const
Checks if the DF (Don't Fragment) flag is set.
Definition: socket.cc:712
virtual void Serialize(TagBuffer i) const
Definition: socket.cc:741
This class implements a tag that carries the socket-specific TTL of a packet to the IP layer...
Definition: socket.h:996
SocketErrno
Enumeration of the possible errors returned by a socket.
Definition: socket.h:82
bool NotifyConnectionRequest(const Address &from)
Notify through the callback (if set) that an incoming connection is being requested by a remote host...
Definition: socket.cc:257
bool m_ipRecvTos
socket forwards IPv4 TOS tag to L4
Definition: socket.h:928
virtual void Print(std::ostream &os) const
Definition: socket.cc:572
bool IsRecvPktInfo() const
Get status indicating whether enable/disable packet information to socket.
Definition: socket.cc:364
uint8_t m_ipv6Tclass
the socket IPv6 Tclass
Definition: socket.h:940
virtual enum Socket::SocketErrno GetErrno(void) const =0
Get last error number.
a polymophic address class
Definition: address.h:86
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...
Definition: socket.cc:416
void SetRecvPktInfo(bool flag)
Enable/Disable receive packet information to socket.
Definition: socket.cc:358
Ptr< NetDevice > GetBoundNetDevice()
Returns socket's bound netdevice, if any.
Definition: socket.cc:351
A low-level Socket API based loosely on the BSD Socket API.
Definition: socket.h:66
uint8_t GetTclass(void) const
Get the tag's Tclass.
Definition: socket.cc:827
void SetTtl(uint8_t ttl)
Set the tag's TTL.
Definition: socket.cc:584
uint8_t m_ipTos
the socket IPv4 TOS
Definition: socket.h:931
virtual int Bind()=0
Allocate a local IPv4 endpoint for this socket.
static TypeId GetTypeId(void)
Get the type ID.
Definition: socket.cc:540
Callback< void, Ptr< Socket > > m_receivedData
data received callback
Definition: socket.h:923
Callback< void, Ptr< Socket >, const Address & > m_newConnectionCreated
connection created callback
Definition: socket.h:920
static TypeId GetTypeId(void)
Get the type ID.
Definition: socket.cc:777
This class implements a tag that carries an address of a packet across the socket interface...
Definition: socket.h:948
Callback< void, Ptr< Socket > > m_connectionFailed
connection failed callback
Definition: socket.h:916
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.
Definition: socket.cc:377
void NotifyDataSent(uint32_t size)
Notify through the callback (if set) that some data have been sent.
Definition: socket.cc:285
virtual ~Socket(void)
Definition: socket.cc:65
void SetRecvCallback(Callback< void, Ptr< Socket > >)
Notify application when new data is available to be read.
Definition: socket.cc:128
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...
Definition: socket.cc:71
virtual void Print(std::ostream &os) const
Definition: socket.cc:753
virtual enum Socket::SocketType GetSocketType(void) const =0
void SetHopLimit(uint8_t hopLimit)
Set the tag's Hop Limit.
Definition: socket.cc:645
uint8_t m_ipTos
the TOS carried by the tag
Definition: socket.h:1182
bool m_manualIpTos
socket has IPv4 TOS set
Definition: socket.h:926
void NotifyConnectionSucceeded(void)
Notify through the callback (if set) that the connection has been established.
Definition: socket.cc:217
Callback< void, Ptr< Socket > > m_errorClose
connection closed due to errors callback
Definition: socket.h:918
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
Definition: socket.h:921
bool IsManualIpv6HopLimit(void) const
Checks if the socket has a specific IPv6 Hop Limit set.
Definition: socket.cc:389
virtual uint32_t GetSerializedSize(void) const
Definition: socket.cc:616
void NotifyNormalClose(void)
Notify through the callback (if set) that the connection has been closed.
Definition: socket.cc:237
tag a set of bytes in a packet
Definition: tag.h:36
uint8_t m_ipTtl
the socket IPv4 TTL
Definition: socket.h:932
void SetIpv6Tclass(int ipTclass)
Manually set IPv6 Traffic Class field.
Definition: socket.cc:422
virtual void Serialize(TagBuffer i) const
Definition: socket.cc:680
void NotifyNewConnectionCreated(Ptr< Socket > socket, const Address &from)
Notify through the callback (if set) that a new connection has been created.
Definition: socket.cc:275
virtual uint32_t GetSerializedSize(void) const
Definition: socket.cc:675
indicates whether the socket has IPV6_TCLASS set.
Definition: socket.h:1189
uint8_t GetIpv6Tclass(void) const
Query the value of IPv6 Traffic Class field of this socket.
Definition: socket.cc:446
static TypeId GetTypeId(void)
Get the type ID.
Definition: socket.cc:38
virtual TypeId GetInstanceTypeId(void) const
Definition: socket.cc:843
virtual void Deserialize(TagBuffer i)
Definition: socket.cc:747
Address m_address
the address carried by the tag
Definition: socket.h:989
bool IsIpv6RecvTclass(void) const
Ask if the socket is currently passing information about IPv6 Traffic Class up the stack...
Definition: socket.cc:458
uint8_t m_ttl
the ttl carried by the tag
Definition: socket.h:1037
void SetSendCallback(Callback< void, Ptr< Socket >, uint32_t > sendCb)
Notify application when space in transmit buffer is added.
Definition: socket.cc:121
bool m_ipRecvTtl
socket forwards IPv4 TTL tag to L4
Definition: socket.h:929
void SetAcceptCallback(Callback< bool, Ptr< Socket >, const Address & > connectionRequest, Callback< void, Ptr< Socket >, const Address & > newConnectionCreated)
Accept connection requests from remote hosts.
Definition: socket.cc:104
virtual void BindToNetDevice(Ptr< NetDevice > netdevice)
Bind a socket to specific device.
Definition: socket.cc:330
void SetDataSentCallback(Callback< void, Ptr< Socket >, uint32_t > dataSent)
Notify application when a packet has been sent from transport protocol (non-standard socket call) ...
Definition: socket.cc:114
virtual void DoDispose(void)
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
Definition: socket.cc:315
bool IsIpRecvTtl(void) const
Ask if the socket is currently passing information about IP_TTL up the stack.
Definition: socket.cc:483
static TypeId GetTypeId(void)
Get the type ID.
Definition: socket.cc:660
uint8_t GetHopLimit(void) const
Get the tag's Hop Limit.
Definition: socket.cc:651
void Disable(void)
Disables the DF (Don't Fragment) flag.
Definition: socket.cc:706
read and write tag data
Definition: tag-buffer.h:51
Ptr< NetDevice > m_boundnetdevice
the device this socket is bound to (might be null).
Definition: socket.h:911
void SetIpv6RecvHopLimit(bool ipv6RecvHopLimit)
Tells a socket to pass information about IPv6 Hop Limit up the stack.
Definition: socket.cc:502
Callback< void, Ptr< Socket > > m_normalClose
connection closed callback
Definition: socket.h:917
virtual uint32_t GetSerializedSize(void) const
Definition: socket.cc:849
virtual TypeId GetInstanceTypeId(void) const
Definition: socket.cc:610
virtual void Serialize(TagBuffer i) const
Definition: socket.cc:799
virtual Ptr< Node > GetNode(void) const =0
Return the node this socket is associated with.
Address GetAddress(void) const
Get the tag's address.
Definition: socket.cc:530
virtual void Print(std::ostream &os) const
Definition: socket.cc:810
virtual void Deserialize(TagBuffer i)
Definition: socket.cc:685
indicates whether packets should be sent out with the DF (Don't Fragment) flag set.
Definition: socket.h:1092
virtual void Serialize(TagBuffer i) const
Definition: socket.cc:622
void SetIpRecvTtl(bool ipv4RecvTtl)
Tells a socket to pass information about IP_TTL up the stack.
Definition: socket.cc:477
void Enable(void)
Enables the DF (Don't Fragment) flag.
Definition: socket.cc:700
uint8_t m_ipv6Tclass
the Tclass carried by the tag
Definition: socket.h:1229
virtual void Deserialize(TagBuffer i)
Definition: socket.cc:628
virtual int SendTo(Ptr< Packet > p, uint32_t flags, const Address &toAddress)=0
Send data to a specified peer.
virtual void Deserialize(TagBuffer i)
Definition: socket.cc:805
virtual void Print(std::ostream &os) const
Definition: socket.cc:690
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.
Definition: socket.cc:84
a base class which provides memory management and object aggregation
Definition: object.h:63
tuple address
Definition: first.py:37
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.
Definition: socket.cc:591
virtual uint32_t GetSerializedSize(void) const
Definition: socket.cc:554
Callback< void, Ptr< Socket >, uint32_t > m_sendCb
packet sent callback
Definition: socket.h:922
virtual int Send(Ptr< Packet > p, uint32_t flags)=0
Send data (or dummy data) to the remote host.
virtual TypeId GetInstanceTypeId(void) const
Definition: socket.cc:730
virtual void SetIpv6HopLimit(uint8_t ipHopLimit)
Manually set IPv6 Hop Limit.
Definition: socket.cc:489
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
Definition: socket.cc:793
indicates whether the socket has IP_TOS set.
Definition: socket.h:1142
SocketType
Enumeration of the possible socket types.
Definition: socket.h:104
void SetIpTos(uint8_t ipTos)
Manually set IP Type of Service field.
Definition: socket.cc:395
virtual TypeId GetInstanceTypeId(void) const
Definition: socket.cc:669
a unique identifier for an interface.
Definition: type-id.h:49
void NotifySend(uint32_t spaceAvailable)
Notify through the callback (if set) that some data have been sent.
Definition: socket.cc:295
bool m_manualIpTtl
socket has IPv4 TTL set
Definition: socket.h:927
void NotifyErrorClose(void)
Notify through the callback (if set) that the connection has been closed due to an error...
Definition: socket.cc:247
virtual void SetIpTtl(uint8_t ipTtl)
Manually set IP Time to Live field.
Definition: socket.cc:464
bool m_ipv6RecvHopLimit
socket forwards IPv6 Hop Limit tag to L4
Definition: socket.h:938
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
Definition: socket.h:935
bool m_ipv6RecvTclass
socket forwards IPv6 Tclass tag to L4
Definition: socket.h:937