19 #ifndef EMU_NET_DEVICE_H
20 #define EMU_NET_DEVICE_H
24 #include "ns3/address.h"
25 #include "ns3/net-device.h"
27 #include "ns3/callback.h"
28 #include "ns3/packet.h"
29 #include "ns3/traced-callback.h"
30 #include "ns3/event-id.h"
31 #include "ns3/nstime.h"
32 #include "ns3/data-rate.h"
34 #include "ns3/mac48-address.h"
35 #include "ns3/system-thread.h"
36 #include "ns3/system-mutex.h"
55 static TypeId GetTypeId (
void);
125 virtual void SetIfIndex (
const uint32_t index);
133 virtual bool SetMtu (
const uint16_t mtu);
134 virtual uint16_t
GetMtu (
void)
const;
256 void ForwardUp (uint8_t *buf, uint32_t len);
283 void NotifyLinkUp (
void);
527 uint32_t m_maxPendingReads;
528 uint32_t m_pendingReadCount;
smart pointer class similar to boost::intrusive_ptr
TracedCallback< Ptr< const Packet > > m_macPromiscRxTrace
virtual bool NeedsArp(void) const
TracedCallback< Ptr< const Packet > > m_promiscSnifferTrace
virtual void SetReceiveCallback(NetDevice::ReceiveCallback cb)
std::string FindCreator(std::string creatorName)
virtual bool Send(Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber)
virtual bool IsBroadcast(void) const
forward calls to a chain of CallbackAn ns3::TracedCallback has almost exactly the same API as a norma...
virtual bool SupportsSendFrom(void) const
Ptr< Queue > GetQueue(void) const
TracedCallback< Ptr< const Packet > > m_snifferTrace
virtual void SetNode(Ptr< Node > node)
TracedCallback< Ptr< const Packet > > m_phyTxDropTrace
bool TransmitStart(Ptr< Packet > p)
TracedCallback< Ptr< const Packet > > m_macRxTrace
virtual void SetIfIndex(const uint32_t index)
NetDevice::PromiscReceiveCallback m_promiscRxCallback
TracedCallback< Ptr< const Packet > > m_phyTxBeginTrace
TracedCallback< Ptr< const Packet > > m_macTxDropTrace
a polymophic address class
virtual uint32_t GetIfIndex(void) const
virtual Address GetAddress(void) const
Class for representing data rates.
TracedCallback< Ptr< const Packet > > m_phyRxBeginTrace
void SetQueue(Ptr< Queue > queue)
bool ProcessHeader(Ptr< Packet > p, uint16_t ¶m)
virtual uint16_t GetMtu(void) const
virtual Ptr< Node > GetNode(void) const
TracedCallback< Ptr< const Packet > > m_macRxDropTrace
virtual Ptr< Channel > GetChannel(void) const
EmuNetDevice::EncapsulationMode GetEncapsulationMode(void) const
void SetEncapsulationMode(EmuNetDevice::EncapsulationMode mode)
NetDevice::ReceiveCallback m_rxCallback
TracedCallback< Ptr< const Packet > > m_phyRxTrace
virtual void SetPromiscReceiveCallback(PromiscReceiveCallback cb)
TracedCallback m_linkChangeCallbacks
TracedCallback< Ptr< const Packet > > m_phyTxEndTrace
void ForwardUp(uint8_t *buf, uint32_t len)
virtual bool SendFrom(Ptr< Packet > packet, const Address &source, const Address &dest, uint16_t protocolNumber)
virtual bool IsPointToPoint(void) const
Callback< bool, Ptr< NetDevice >, Ptr< const Packet >, uint16_t, const Address &, const Address &, enum PacketType > PromiscReceiveCallback
virtual void SetAddress(Address address)
A class which provides a relatively platform-independent Mutual Exclusion thread synchronization prim...
virtual bool IsLinkUp(void) const
void SetDataRate(DataRate bps)
TracedCallback< Ptr< const Packet > > m_phyRxEndTrace
Describes an IPv6 address.
Ipv4 addresses are stored in host order in this class.
TracedCallback< Ptr< const Packet > > m_macTxTrace
an identifier for simulation events.
Network layer to device interface.
void AddHeader(Ptr< Packet > p, uint16_t protocolNumber)
virtual Address GetMulticast(Ipv4Address multicastGroup) const
Make and return a MAC multicast address using the provided multicast group.
virtual void DoDispose(void)
virtual void AddLinkChangeCallback(Callback< void > callback)
A Device for an Emu Network Link.
EncapsulationMode m_encapMode
virtual bool SetMtu(const uint16_t mtu)
a unique identifier for an interface.
virtual Address GetBroadcast(void) const
virtual bool IsMulticast(void) const
virtual bool IsBridge(void) const
TracedCallback< Ptr< const Packet > > m_phyRxDropTrace