26 #include "ns3/packet.h"
27 #include "ns3/uinteger.h"
28 #include "ns3/trace-source-accessor.h"
43 .AddConstructor<PacketSocket> ()
44 .AddTraceSource (
"Drop",
"Drop packet due to receive buffer overflow",
46 .AddAttribute (
"RcvBufSize",
47 "PacketSocket maximum receive buffer size (bytes)",
50 MakeUintegerChecker<uint32_t> ())
277 return device->GetMtu ();
281 uint32_t minMtu = 0xffff;
285 minMtu = std::min (minMtu, (uint32_t)device->GetMtu ());
377 uint16_t protocol,
const Address &from,
380 NS_LOG_FUNCTION (
this << device << packet << protocol << from << to << packetType);
415 NS_LOG_WARN (
"No receive buffer space available. Drop.");
546 .AddConstructor<PacketSocketTag> ()
589 if ( n.substr(0,5) ==
"ns3::" )
609 .AddConstructor<DeviceNameTag> ();
633 i.
Write ( (uint8_t*) n , (uint32_t) l);
641 i.
Read ( (uint8_t* ) buf, (uint32_t) l);
static TypeId GetTypeId(void)
uint16_t GetProtocol(void) const
void Write(const uint8_t *buffer, uint32_t size)
virtual enum SocketErrno GetErrno(void) const
#define NS_LOG_FUNCTION(parameters)
void NotifyDataRecv(void)
Address GetDestAddress(void) const
Ptr< Packet > Recv(void)
Read a single packet from the socket.
NetDevice::PacketType m_packetType
void AddPacketTag(const Tag &tag) const
void SetAddress(Address addr)
uint64_t GetUid(void) const
void NotifyConnectionFailed(void)
std::queue< Ptr< Packet > > m_deliveryQueue
Default destination address.
an address for a packet socket
virtual Ptr< Packet > RecvFrom(uint32_t maxSize, uint32_t flags, Address &fromAddress)
Read a single packet from the socket and retrieve the sender address.
#define NS_ASSERT(condition)
static bool IsMatchingType(const Address &address)
virtual void DoDispose(void)
uint32_t GetSize(void) const
virtual uint32_t GetSerializedSize(void) const
void SetPacketType(NetDevice::PacketType t)
virtual int Bind(void)
Allocate a local IPv4 endpoint for this socket.
virtual void Print(std::ostream &os) const
virtual int GetSockName(Address &address) const
uint32_t GetSingleDevice(void) const
void UnregisterProtocolHandler(ProtocolHandler handler)
void SetSingleDevice(uint32_t device)
TAG_BUFFER_INLINE uint8_t ReadU8(void)
a polymophic address class
virtual TypeId GetInstanceTypeId(void) const
virtual void Serialize(TagBuffer i) const
A low-level Socket API based loosely on the BSD Socket API.A few things to keep in mind about this ty...
bool PeekPacketTag(Tag &tag) const
virtual bool SetAllowBroadcast(bool allowBroadcast)
Configure whether broadcast datagram transmissions are allowed.
void SetDestAddress(Address a)
virtual int ShutdownRecv(void)
virtual void Deserialize(TagBuffer i)
Hold an unsigned integer type.
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
virtual uint32_t GetSerializedSize(void) const
static TypeId GetTypeId(void)
Ptr< NetDevice > GetDevice(uint32_t index) const
This class implements a tag that carries an address of a packet across the socket interface...
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
void NotifyDataSent(uint32_t size)
virtual Ptr< Node > GetNode(void) const
virtual int Listen(void)
Listen for incoming connections.
#define NS_LOG_LOGIC(msg)
void Deserialize(TagBuffer buffer)
void NotifyConnectionSucceeded(void)
uint32_t GetSerializedSize(void) const
uint32_t GetNDevices(void) const
Ptr< Packet > Copy(void) const
virtual uint32_t GetRxAvailable(void) const
tag a set of bytes in a packet
void SetPhysicalAddress(const Address address)
virtual int Send(Ptr< Packet > p, uint32_t flags)
Send data (or dummy data) to the remote host.
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
virtual int SendTo(Ptr< Packet > p, uint32_t flags, const Address &toAddress)
Send data to a specified peer.
Address GetPhysicalAddress(void) const
TAG_BUFFER_INLINE void WriteU8(uint8_t v)
This class implements a tag that carries the ns3 device name from where a packet is coming...
virtual bool GetAllowBroadcast() const
Query whether broadcast datagram transmissions are allowed.
void RegisterProtocolHandler(ProtocolHandler handler, uint16_t protocolType, Ptr< NetDevice > device, bool promiscuous=false)
virtual void Deserialize(TagBuffer i)
virtual int Close(void)
Close a socket.
NS_LOG_COMPONENT_DEFINE("PacketSocket")
void SetNode(Ptr< Node > node)
static TypeId GetTypeId(void)
Ptr< NetDevice > m_boundnetdevice
void Serialize(TagBuffer buffer) const
int DoBind(const PacketSocketAddress &address)
virtual uint32_t GetTxAvailable(void) const
Returns the number of bytes which can be sent in a single call to Send.
virtual void Serialize(TagBuffer i) const
Address GetAddress(void) const
NetDevice::PacketType GetPacketType(void) const
virtual void Print(std::ostream &os) const
bool IsSingleDevice(void) const
void SetProtocol(uint16_t protocol)
static PacketSocketAddress ConvertFrom(const Address &address)
virtual TypeId GetInstanceTypeId(void) const
virtual int Connect(const Address &address)
Initiate a connection to a remote host.
void Read(uint8_t *buffer, uint32_t size)
uint32_t GetMinMtu(PacketSocketAddress ad) const
virtual int Bind6(void)
Allocate a local IPv6 endpoint for this socket.
std::string GetDeviceName(void) const
This class implements a tag that carries the dest address of a packet and the packet type...
TracedCallback< Ptr< const Packet > > m_dropTrace
virtual int ShutdownSend(void)
a unique identifier for an interface.
void NotifySend(uint32_t spaceAvailable)
TypeId SetParent(TypeId tid)
virtual enum SocketType GetSocketType(void) const
void ForwardUp(Ptr< NetDevice > device, Ptr< const Packet > packet, uint16_t protocol, const Address &from, const Address &to, NetDevice::PacketType packetType)
void SetDeviceName(std::string n)