20 #ifndef UDP_SOCKET_IMPL_H
21 #define UDP_SOCKET_IMPL_H
25 #include "ns3/callback.h"
26 #include "ns3/traced-callback.h"
27 #include "ns3/socket.h"
29 #include "ns3/ipv4-address.h"
30 #include "ns3/udp-socket.h"
31 #include "ns3/ipv4-interface.h"
66 virtual int Bind (
void);
67 virtual int Bind6 (
void);
69 virtual int Close (
void);
115 uint8_t icmpType, uint8_t icmpCode,
118 uint8_t icmpType, uint8_t icmpCode,
(abstract) base class of all UdpSockets
virtual bool GetAllowBroadcast() const
Query whether broadcast datagram transmissions are allowed.
Ptr< UdpL4Protocol > m_udp
virtual bool GetIpMulticastLoop(void) const
Ipv4EndPoint * m_endPoint
virtual void SetIpMulticastIf(int32_t ipIf)
Ptr< Packet > Recv(void)
Read a single packet from the socket.
std::queue< Ptr< Packet > > m_deliveryQueue
forward calls to a chain of CallbackAn ns3::TracedCallback has almost exactly the same API as a norma...
virtual int Close(void)
Close a socket.
virtual uint8_t GetIpMulticastTtl(void) const
virtual void BindToNetDevice(Ptr< NetDevice > netdevice)
Bind a socket to specific device.
virtual void SetRcvBufSize(uint32_t size)
A sockets interface to UDP.
void ForwardIcmp6(Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo)
a polymophic address class
virtual int Bind(void)
Allocate a local IPv4 endpoint for this socket.
virtual enum SocketErrno GetErrno(void) const
virtual int ShutdownRecv(void)
virtual int GetSockName(Address &address) const
virtual int MulticastLeaveGroup(uint32_t interfaceIndex, const Address &groupAddress)
Corresponds to socket option MCAST_LEAVE_GROUP.
int DoSendTo(Ptr< Packet > p, const Address &daddr)
void ForwardIcmp(Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo)
Callback< void, Ipv6Address, uint8_t, uint8_t, uint8_t, uint32_t > m_icmpCallback6
int DoSend(Ptr< Packet > p)
void SetNode(Ptr< Node > node)
virtual uint32_t GetRcvBufSize(void) const
virtual uint32_t GetRxAvailable(void) const
virtual int Bind6(void)
Allocate a local IPv6 endpoint for this socket.
virtual int Connect(const Address &address)
Initiate a connection to a remote host.
virtual int MulticastJoinGroup(uint32_t interfaceIndex, const Address &groupAddress)
Corresponds to socket option MCAST_JOIN_GROUP.
virtual enum SocketType GetSocketType(void) const
virtual void SetMtuDiscover(bool discover)
virtual int32_t GetIpMulticastIf(void) const
static TypeId GetTypeId(void)
virtual void SetIpMulticastLoop(bool loop)
virtual int Send(Ptr< Packet > p, uint32_t flags)
Send data (or dummy data) to the remote host.
virtual int ShutdownSend(void)
Describes an IPv6 address.
Ipv4 addresses are stored in host order in this class.
virtual uint32_t GetTxAvailable(void) const
virtual bool SetAllowBroadcast(bool allowBroadcast)
Configure whether broadcast datagram transmissions are allowed.
void SetUdp(Ptr< UdpL4Protocol > udp)
virtual int Listen(void)
Listen for incoming connections.
An IPv6 end point, four tuples identification.
virtual int SendTo(Ptr< Packet > p, uint32_t flags, const Address &address)
Send data to a specified peer.
Ipv6EndPoint * m_endPoint6
virtual Ptr< Packet > RecvFrom(uint32_t maxSize, uint32_t flags, Address &fromAddress)
Read a single packet from the socket and retrieve the sender address.
void ForwardUp6(Ptr< Packet > p, Ipv6Header header, uint16_t port)
void ForwardUp(Ptr< Packet > p, Ipv4Header header, uint16_t port, Ptr< Ipv4Interface > incomingInterface)
API to create UDP socket instances.
TracedCallback< Ptr< const Packet > > m_dropTrace
a unique identifier for an interface.
Callback< void, Ipv4Address, uint8_t, uint8_t, uint8_t, uint32_t > m_icmpCallback
A representation of an internet endpoint/connection.
virtual bool GetMtuDiscover(void) const
virtual void SetIpMulticastTtl(uint8_t ipTtl)
virtual Ptr< Node > GetNode(void) const