A Device for an Emu Network Link. More...
#include <emu-net-device.h>
Public Types | |
enum | EncapsulationMode { ILLEGAL, DIX, LLC } |
Public Member Functions | |
EmuNetDevice () | |
virtual | ~EmuNetDevice () |
void | SetDataRate (DataRate bps) |
void | Start (Time tStart) |
void | Stop (Time tStop) |
void | SetQueue (Ptr< Queue > queue) |
Ptr< Queue > | GetQueue (void) const |
virtual void | SetIfIndex (const uint32_t index) |
virtual uint32_t | GetIfIndex (void) const |
virtual Ptr< Channel > | GetChannel (void) const |
virtual void | SetAddress (Address address) |
virtual Address | GetAddress (void) const |
virtual bool | SetMtu (const uint16_t mtu) |
virtual uint16_t | GetMtu (void) const |
virtual bool | IsLinkUp (void) const |
virtual void | AddLinkChangeCallback (Callback< void > callback) |
virtual bool | IsBroadcast (void) const |
virtual Address | GetBroadcast (void) const |
virtual bool | IsMulticast (void) const |
virtual Address | GetMulticast (Ipv4Address multicastGroup) const |
Make and return a MAC multicast address using the provided multicast group. | |
virtual Address | GetMulticast (Ipv6Address addr) const |
Get the MAC multicast address corresponding to the IPv6 address provided. | |
virtual bool | IsPointToPoint (void) const |
virtual bool | IsBridge (void) const |
virtual bool | Send (Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber) |
virtual bool | SendFrom (Ptr< Packet > packet, const Address &source, const Address &dest, uint16_t protocolNumber) |
virtual Ptr< Node > | GetNode (void) const |
virtual void | SetNode (Ptr< Node > node) |
virtual bool | NeedsArp (void) const |
virtual void | SetReceiveCallback (NetDevice::ReceiveCallback cb) |
virtual void | SetPromiscReceiveCallback (PromiscReceiveCallback cb) |
virtual bool | SupportsSendFrom (void) const |
void | SetEncapsulationMode (EmuNetDevice::EncapsulationMode mode) |
EmuNetDevice::EncapsulationMode | GetEncapsulationMode (void) const |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
This method returns the TypeId associated to ns3::EmuNetDevice. |
A Device for an Emu Network Link.
Enumeration of the types of packets supported in the class.
ILLEGAL |
Encapsulation mode not set |
DIX |
DIX II / Ethernet II packet |
LLC |
802.2 LLC/SNAP Packet |
ns3::EmuNetDevice::EmuNetDevice | ( | ) |
Construct a EmuNetDevice
This is the constructor for the EmuNetDevice. It takes as a
virtual ns3::EmuNetDevice::~EmuNetDevice | ( | ) | [virtual] |
Destroy a EmuNetDevice
This is the destructor for the EmuNetDevice.
virtual void ns3::EmuNetDevice::AddLinkChangeCallback | ( | Callback< void > | callback | ) | [virtual] |
callback | the callback to invoke |
Add a callback invoked whenever the link status changes to UP. This callback is typically used by the IP/ARP layer to flush the ARP cache and by IPv6 stack to flush NDISC cache whenever the link goes up.
Implements ns3::NetDevice.
virtual Address ns3::EmuNetDevice::GetAddress | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.
virtual Address ns3::EmuNetDevice::GetBroadcast | ( | void | ) | const [virtual] |
Calling this method is invalid if IsBroadcast returns not true.
Implements ns3::NetDevice.
Implements ns3::NetDevice.
EmuNetDevice::EncapsulationMode ns3::EmuNetDevice::GetEncapsulationMode | ( | void | ) | const |
Get the encapsulation mode of this device.
virtual uint32_t ns3::EmuNetDevice::GetIfIndex | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.
virtual uint16_t ns3::EmuNetDevice::GetMtu | ( | void | ) | const [virtual] |
This value is typically used by the IP layer to perform IP fragmentation when needed.
Implements ns3::NetDevice.
virtual Address ns3::EmuNetDevice::GetMulticast | ( | Ipv6Address | addr | ) | const [virtual] |
Get the MAC multicast address corresponding to the IPv6 address provided.
addr | IPv6 address |
Implements ns3::NetDevice.
virtual Address ns3::EmuNetDevice::GetMulticast | ( | Ipv4Address | multicastGroup | ) | const [virtual] |
Make and return a MAC multicast address using the provided multicast group.
RFC 1112 says that an Ipv4 host group address is mapped to an Ethernet multicast address by placing the low-order 23-bits of the IP address into the low-order 23 bits of the Ethernet multicast address 01-00-5E-00-00-00 (hex).
This method performs the multicast address creation function appropriate to an EUI-48-based CSMA device. This MAC address is encapsulated in an abstract Address to avoid dependencies on the exact address format.
multicastGroup | The IP address for the multicast group destination of the packet. |
Implements ns3::NetDevice.
When a subclass needs to get access to the underlying node base class to print the nodeid for example, it can invoke this method.
Implements ns3::NetDevice.
static TypeId ns3::EmuNetDevice::GetTypeId | ( | void | ) | [static] |
This method returns the TypeId associated to ns3::EmuNetDevice.
This object is accessible through the following paths with Config::Set and Config::Connect:
Attributes defined for this type:
TraceSources defined for this type:
Reimplemented from ns3::NetDevice.
virtual bool ns3::EmuNetDevice::IsBridge | ( | void | ) | const [virtual] |
virtual bool ns3::EmuNetDevice::IsBroadcast | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.
virtual bool ns3::EmuNetDevice::IsLinkUp | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.
virtual bool ns3::EmuNetDevice::IsMulticast | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.
virtual bool ns3::EmuNetDevice::IsPointToPoint | ( | void | ) | const [virtual] |
virtual bool ns3::EmuNetDevice::NeedsArp | ( | void | ) | const [virtual] |
Called by higher-layers to check if this NetDevice requires ARP to be used.
Implements ns3::NetDevice.
virtual bool ns3::EmuNetDevice::Send | ( | Ptr< Packet > | packet, | |
const Address & | dest, | |||
uint16_t | protocolNumber | |||
) | [virtual] |
packet | packet sent from above down to Network Device | |
dest | mac address of the destination (already resolved) | |
protocolNumber | identifies the type of payload contained in this packet. Used to call the right L3Protocol when the packet is received. |
Called from higher layer to send packet into Network Device to the specified destination Address
Implements ns3::NetDevice.
virtual bool ns3::EmuNetDevice::SendFrom | ( | Ptr< Packet > | packet, | |
const Address & | source, | |||
const Address & | dest, | |||
uint16_t | protocolNumber | |||
) | [virtual] |
packet | packet sent from above down to Network Device | |
source | source mac address (so called "MAC spoofing") | |
dest | mac address of the destination (already resolved) | |
protocolNumber | identifies the type of payload contained in this packet. Used to call the right L3Protocol when the packet is received. |
Called from higher layer to send packet into Network Device with the specified source and destination Addresses.
Implements ns3::NetDevice.
virtual void ns3::EmuNetDevice::SetAddress | ( | Address | address | ) | [virtual] |
void ns3::EmuNetDevice::SetDataRate | ( | DataRate | bps | ) |
Set the Data Rate used for transmission of packets.
bps | the data rate at which this object operates |
void ns3::EmuNetDevice::SetEncapsulationMode | ( | EmuNetDevice::EncapsulationMode | mode | ) |
Set the encapsulation mode of this device.
mode | The encapsulation mode of this device. |
virtual void ns3::EmuNetDevice::SetIfIndex | ( | const uint32_t | index | ) | [virtual] |
index | ifIndex of the device |
Implements ns3::NetDevice.
virtual bool ns3::EmuNetDevice::SetMtu | ( | const uint16_t | mtu | ) | [virtual] |
mtu | MTU value, in bytes, to set for the device |
Override for default MTU defined on a per-type basis.
Implements ns3::NetDevice.
node | the node associated to this netdevice. |
This method is called from ns3::Node::AddDevice.
Implements ns3::NetDevice.
virtual void ns3::EmuNetDevice::SetPromiscReceiveCallback | ( | PromiscReceiveCallback | cb | ) | [virtual] |
cb | callback to invoke whenever a packet has been received in promiscuous mode and must be forwarded to the higher layers. |
Enables netdevice promiscuous mode and sets the callback that will handle promiscuous mode packets. Note, promiscuous mode packets means _all_ packets, including those packets that can be sensed by the netdevice but which are intended to be received by other hosts.
Implements ns3::NetDevice.
Attach a queue to the EmuNetDevice.
The EmuNetDevice "owns" a queue that implements a queueing method such as DropTail or RED.
queue | Ptr to the new queue. |
virtual void ns3::EmuNetDevice::SetReceiveCallback | ( | NetDevice::ReceiveCallback | cb | ) | [virtual] |
cb | callback to invoke whenever a packet has been received and must be forwarded to the higher layers. |
Implements ns3::NetDevice.
void ns3::EmuNetDevice::Start | ( | Time | tStart | ) |
Set a start time for the device.
tStart | the start time |
void ns3::EmuNetDevice::Stop | ( | Time | tStop | ) |
Set a stop time for the device.
tStop | the stop time |
virtual bool ns3::EmuNetDevice::SupportsSendFrom | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.