23 #include "ns3/packet.h" 
   25 #include "ns3/pointer.h" 
   26 #include "ns3/error-model.h" 
   27 #include "ns3/trace-source-accessor.h" 
   28 #include "ns3/boolean.h" 
   29 #include "ns3/string.h" 
   31 #include "ns3/simulator.h" 
   32 #include "ns3/drop-tail-queue.h" 
   87   void Print (std::ostream &os) 
const;
 
  103     .AddConstructor<SimpleTag> ()
 
  190     .AddConstructor<SimpleNetDevice> ()
 
  191     .AddAttribute (
"ReceiveErrorModel",
 
  192                    "The receiver error model used to simulate packet loss",
 
  195                    MakePointerChecker<ErrorModel> ())
 
  196     .AddAttribute (
"PointToPointMode",
 
  197                    "The device is configured in Point to Point mode",
 
  201     .AddAttribute (
"TxQueue",
 
  202                    "A queue to use as the transmit queue in the device.",
 
  205                    MakePointerChecker<Queue> ())
 
  206     .AddAttribute (
"DataRate",
 
  207                    "The default data rate for point to point links. Zero means infinite",
 
  211     .AddTraceSource (
"PhyRxDrop",
 
  212                      "Trace source indicating a packet has been dropped " 
  213                      "by the device during reception",
 
  215                      "ns3::Packet::TracedCallback")
 
  447       if (
m_queue->GetNPackets () == 1)
 
  456           m_channel->Send (p, protocolNumber, to, from, 
this);
 
  463   m_channel->Send (packet, protocolNumber, to, from, 
this);
 
  473   if (
m_queue->GetNPackets () == 0)
 
  487   m_channel->Send (packet, proto, dst, src, 
this);
 
virtual Address GetAddress(void) const 
virtual bool Send(Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber)
Mac48Address m_src
source address 
void Write(const uint8_t *buffer, uint32_t size)
Simulation virtual time values and global simulation resolution. 
EventId TransmitCompleteEvent
the Tx Complete event 
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
AttributeValue implementation for Boolean. 
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system. 
Ptr< Node > m_node
Node this netDevice is associated to. 
Hold variables of type string. 
virtual TypeId GetInstanceTypeId(void) const 
Get the most derived TypeId for this Object. 
virtual Ptr< Channel > GetChannel(void) const 
uint16_t m_protocolNumber
protocol number 
TracedCallback m_linkChangeCallbacks
List of callbacks to fire if the link changes state (up or down). 
Ptr< const AttributeAccessor > MakeBooleanAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
void AddPacketTag(const Tag &tag) const 
Add a packet tag. 
void Receive(Ptr< Packet > packet, uint16_t protocol, Mac48Address to, Mac48Address from)
Receive a packet from a connected SimpleChannel. 
bool IsNull(void) const 
Check for null implementation. 
PacketType
Packet types are used as they are in Linux. 
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
uint32_t GetSize(void) const 
Returns the the size in bytes of the packet (including the zero-filled initial payload). 
bool IsBroadcast(void) const 
virtual void SetIfIndex(const uint32_t index)
virtual void DoDispose(void)
Destructor implementation. 
Packet addressed to multicast group. 
bool IsRunning(void) const 
This method is syntactic sugar for !IsExpired(). 
virtual bool IsBroadcast(void) const 
virtual bool NeedsArp(void) const 
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event to expire at the relative time "time" is reached. 
bool m_pointToPointMode
Flag indicating whether or not the NetDevice is a Point to Point model. 
void SetProto(uint16_t proto)
Set the protocol number. 
virtual bool IsMulticast(void) const 
a polymophic address class 
Ptr< const AttributeChecker > MakeDataRateChecker(void)
bool m_linkUp
Flag indicating whether or not the link is up. 
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source. 
Class for representing data rates. 
virtual void SetNode(Ptr< Node > node)
void CopyTo(uint8_t buffer[6]) const 
double CalculateTxTime(uint32_t bytes) const 
Calculate transmission time. 
void SetDst(Mac48Address dst)
Set the destination address. 
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
static Mac48Address GetMulticast(Ipv4Address address)
virtual void SetPromiscReceiveCallback(PromiscReceiveCallback cb)
virtual bool SetMtu(const uint16_t mtu)
This device assumes 48-bit mac addressing; there is also the possibility to add an ErrorModel if you ...
virtual bool IsPointToPoint(void) const 
Return true if the net device is on a point-to-point link. 
Mac48Address m_address
MAC address. 
Ptr< Queue > m_queue
The Queue for outgoing packets. 
Mac48Address GetSrc(void) const 
Get the source address. 
TAG_BUFFER_INLINE void WriteU16(uint16_t v)
Ptr< const AttributeAccessor > MakeDataRateAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
SimpleNetDevice tag to store source, destination and protocol of each packet. 
virtual void Serialize(TagBuffer i) const 
static Mac48Address ConvertFrom(const Address &address)
Ptr< Packet > Copy(void) const 
performs a COW copy of the packet. 
tag a set of bytes in a packet 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
Hold objects of type Ptr. 
virtual Address GetMulticast(Ipv4Address multicastGroup) const 
Make and return a MAC multicast address using the provided multicast group. 
Ptr< const AttributeChecker > MakeBooleanChecker(void)
Packet addressed to someone else. 
virtual void SetReceiveCallback(NetDevice::ReceiveCallback cb)
virtual uint16_t GetMtu(void) const 
void SetReceiveErrorModel(Ptr< ErrorModel > em)
Attach a receive ErrorModel to the SimpleNetDevice. 
Mac48Address m_dst
destination address 
void CopyFrom(const uint8_t buffer[6])
virtual Ptr< Node > GetNode(void) const 
NetDevice::PromiscReceiveCallback m_promiscCallback
Promiscuous receive callback. 
uint16_t GetProto(void) const 
Get the protocol number. 
Mac48Address GetDst(void) const 
Get the destination address. 
Describes an IPv6 address. 
Ipv4 addresses are stored in host order in this class. 
TracedCallback< Ptr< const Packet > > m_phyRxDropTrace
The trace source fired when the phy layer drops a packet it has received due to the error model being...
void SetSrc(Mac48Address src)
Set the source address. 
void ConnectWithoutContext(const CallbackBase &callback)
Append a Callback to the chain (without a context). 
Network layer to device interface. 
virtual void AddLinkChangeCallback(Callback< void > callback)
AttributeValue implementation for DataRate. 
bool RemovePacketTag(Tag &tag)
Remove a packet tag. 
virtual void SetAddress(Address address)
Set the address of this interface. 
Time Seconds(double value)
Construct a Time in the indicated unit. 
Ptr< ErrorModel > m_receiveErrorModel
Receive error model. 
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method. 
void Read(uint8_t *buffer, uint32_t size)
virtual void DoDispose(void)
Destructor implementation. 
virtual bool SendFrom(Ptr< Packet > packet, const Address &source, const Address &dest, uint16_t protocolNumber)
NetDevice::ReceiveCallback m_rxCallback
Receive callback. 
TAG_BUFFER_INLINE uint16_t ReadU16(void)
Ptr< SimpleChannel > m_channel
the channel the device is connected to 
virtual void Deserialize(TagBuffer i)
void TransmitComplete(void)
The TransmitComplete method is used internally to finish the process of sending a packet out on the c...
void SetQueue(Ptr< Queue > queue)
Attach a queue to the SimpleNetDevice. 
virtual bool IsBridge(void) const 
Return true if the net device is acting as a bridge. 
void SetChannel(Ptr< SimpleChannel > channel)
Attach a channel to this net device. 
Ptr< Queue > GetQueue(void) const 
Get a copy of the attached Queue. 
DataRate m_bps
The device nominal Data rate. 
a unique identifier for an interface. 
virtual Address GetBroadcast(void) const 
TypeId SetParent(TypeId tid)
void Print(std::ostream &os) const 
virtual uint32_t GetIfIndex(void) const 
static TypeId GetTypeId(void)
Get the type ID. 
static TypeId GetTypeId(void)
Get the type ID. 
virtual bool SupportsSendFrom(void) const 
virtual bool IsLinkUp(void) const 
virtual uint32_t GetSerializedSize(void) const 
uint32_t m_ifIndex
Interface index.