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/net-device-queue-interface.h" 87 void Print (std::ostream &os)
const;
103 .SetGroupName(
"Network")
191 .SetGroupName(
"Network")
193 .AddAttribute (
"ReceiveErrorModel",
194 "The receiver error model used to simulate packet loss",
197 MakePointerChecker<ErrorModel> ())
198 .AddAttribute (
"PointToPointMode",
199 "The device is configured in Point to Point mode",
203 .AddAttribute (
"TxQueue",
204 "A queue to use as the transmit queue in the device.",
208 .AddAttribute (
"DataRate",
209 "The default data rate for point to point links. Zero means infinite",
213 .AddTraceSource (
"PhyRxDrop",
214 "Trace source indicating a packet has been dropped " 215 "by the device during reception",
217 "ns3::Packet::TracedCallback")
492 m_channel->Send (p, protocolNumber, to, from,
this);
499 m_channel->Send (packet, protocolNumber, to, from,
this);
509 if (
m_queue->GetNPackets () == 0)
523 m_channel->Send (packet, proto, dst, src,
this);
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)
virtual void DoInitialize(void)
Initialize() implementation.
bool IsBroadcast(void) const
Simulation virtual time values and global simulation resolution.
EventId TransmitCompleteEvent
the Tx Complete event
Smart pointer class similar to boost::intrusive_ptr.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
void Print(std::ostream &os) const
AttributeValue implementation for Boolean.
virtual void DoInitialize(void)
Initialize() implementation.
Packet addressed to someone else.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
Ptr< Node > m_node
Node this netDevice is associated to.
NS_ASSERT_MSG(false, "Ipv4AddressGenerator::MaskToIndex(): Impossible")
Hold variables of type string.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
Ptr< AttributeChecker > MakePointerChecker(void)
Create a PointerChecker for a type.
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 Receive(Ptr< Packet > packet, uint16_t protocol, Mac48Address to, Mac48Address from)
Receive a packet from a connected SimpleChannel.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
void SetDst(Mac48Address dst)
Set the destination address.
virtual void SetIfIndex(const uint32_t index)
void(* Time)(Time oldValue, Time newValue)
TracedValue callback signature for Time.
virtual void DoDispose(void)
Destructor implementation.
virtual bool IsLinkUp(void) const
bool m_pointToPointMode
Flag indicating whether or not the NetDevice is a Point to Point model.
virtual void Deserialize(TagBuffer i)
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 SetProto(uint16_t proto)
Set the protocol number.
void CopyTo(uint8_t buffer[6]) const
virtual bool IsMulticast(void) const
virtual bool SupportsSendFrom(void) const
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
static EventId Schedule(Time const &delay, MEM mem_ptr, OBJ obj)
Schedule an event to expire after delay.
static Mac48Address GetMulticast(Ipv4Address address)
virtual void SetPromiscReceiveCallback(PromiscReceiveCallback cb)
virtual bool SetMtu(const uint16_t mtu)
virtual bool NeedsArp(void) const
This device assumes 48-bit mac addressing; there is also the possibility to add an ErrorModel if you ...
Mac48Address m_address
MAC address.
virtual bool IsBridge(void) const
Return true if the net device is acting as a bridge.
virtual Address GetAddress(void) const
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...
virtual Address GetMulticast(Ipv4Address multicastGroup) const
Make and return a MAC multicast address using the provided multicast group.
SimpleNetDevice tag to store source, destination and protocol of each packet.
static Mac48Address ConvertFrom(const Address &address)
Ptr< Queue< Packet > > m_queue
The Queue for outgoing packets.
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<T>.
Ptr< const AttributeChecker > MakeBooleanChecker(void)
virtual void SetReceiveCallback(NetDevice::ReceiveCallback cb)
Ptr< Packet > Copy(void) const
performs a COW copy of the packet.
static TypeId GetTypeId(void)
Get the type ID.
void SetReceiveErrorModel(Ptr< ErrorModel > em)
Attach a receive ErrorModel to the SimpleNetDevice.
Mac48Address m_dst
destination address
void CopyFrom(const uint8_t buffer[6])
NetDevice::PromiscReceiveCallback m_promiscCallback
Promiscuous receive callback.
virtual Ptr< Node > GetNode(void) const
uint16_t GetProto(void) const
Get the protocol number.
Describes an IPv6 address.
Mac48Address GetDst(void) const
Get the destination 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...
virtual void NotifyNewAggregate(void)
Notify all Objects aggregated to this one of a new Object being aggregated.
void ConnectWithoutContext(const CallbackBase &callback)
Append a Callback to the chain (without a context).
Network layer to device interface.
void AddPacketTag(const Tag &tag) const
Add a packet tag.
virtual void AddLinkChangeCallback(Callback< void > callback)
AttributeValue implementation for DataRate.
void SetQueue(Ptr< Queue< Packet > > queue)
Attach a queue to the SimpleNetDevice.
bool RemovePacketTag(Tag &tag)
Remove a packet tag.
virtual void SetAddress(Address address)
Set the address of this interface.
bool IsRunning(void) const
This method is syntactic sugar for !IsExpired().
Ptr< ErrorModel > m_receiveErrorModel
Receive error model.
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method.
virtual uint32_t GetSerializedSize(void) const
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)
virtual uint16_t GetMtu(void) const
NetDevice::ReceiveCallback m_rxCallback
Receive callback.
virtual Address GetBroadcast(void) const
TAG_BUFFER_INLINE uint16_t ReadU16(void)
Ptr< SimpleChannel > m_channel
the channel the device is connected to
virtual uint32_t GetIfIndex(void) const
void TransmitComplete(void)
The TransmitComplete method is used internally to finish the process of sending a packet out on the c...
virtual void NotifyNewAggregate(void)
Notify all Objects aggregated to this one of a new Object being aggregated.
void SetSrc(Mac48Address src)
Set the source address.
PacketType
Packet types are used as they are in Linux.
virtual Ptr< Channel > GetChannel(void) const
bool IsNull(void) const
Check for null implementation.
Ptr< NetDeviceQueueInterface > m_queueInterface
NetDevice queue interface.
void SetChannel(Ptr< SimpleChannel > channel)
Attach a channel to this net device.
Packet addressed to multicast group.
Ptr< Queue< Packet > > GetQueue(void) const
Get a copy of the attached Queue.
DataRate m_bps
The device nominal Data rate.
virtual bool IsBroadcast(void) const
a unique identifier for an interface.
Time CalculateBytesTxTime(uint32_t bytes) const
Calculate transmission time.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
static TypeId GetTypeId(void)
Get the type ID.
Mac48Address GetSrc(void) const
Get the source address.
virtual bool IsPointToPoint(void) const
Return true if the net device is on a point-to-point link.
virtual void Serialize(TagBuffer i) const
uint32_t m_ifIndex
Interface index.