21 #include "ns3/llc-snap-header.h" 22 #include "ns3/channel.h" 23 #include "ns3/pointer.h" 26 #include "ns3/uinteger.h" 45 .AddConstructor<WifiNetDevice> ()
46 .SetGroupName (
"Wifi")
47 .AddAttribute (
"Mtu",
"The MAC-level Maximum Transmission Unit",
52 .AddAttribute (
"Channel",
"The channel attached to this device",
55 MakePointerChecker<Channel> ())
56 .AddAttribute (
"Phy",
"The PHY layer attached to this device.",
60 MakePointerChecker<WifiPhy> ())
61 .AddAttribute (
"Mac",
"The MAC layer attached to this device.",
65 MakePointerChecker<WifiMac> ())
66 .AddAttribute (
"RemoteStationManager",
"The station manager attached to this device.",
70 MakePointerChecker<WifiRemoteStationManager> ())
71 .AddAttribute (
"HtConfiguration",
72 "The HtConfiguration object.",
75 MakePointerChecker<HtConfiguration> ())
76 .AddAttribute (
"VhtConfiguration",
77 "The VhtConfiguration object.",
80 MakePointerChecker<VhtConfiguration> ())
81 .AddAttribute (
"HeConfiguration",
82 "The HeConfiguration object.",
85 MakePointerChecker<HeConfiguration> ())
91 : m_configComplete (false)
144 m_mac->Initialize ();
236 return m_mac->GetAddress ();
321 m_mac->NotifyTx (packet);
322 m_mac->Enqueue (packet, realTo);
365 else if (to ==
m_mac->GetAddress ())
376 m_mac->NotifyRx (packet);
387 m_mac->NotifyPromiscRx (packet);
420 m_mac->NotifyTx (packet);
421 m_mac->Enqueue (packet, realTo, realFrom);
430 m_mac->SetPromisc ();
436 return m_mac->SupportsSendFrom ();
uint32_t RemoveHeader(Header &header)
Deserialize and remove the header from the internal buffer.
void Dispose(void)
Dispose of this Object.
static bool IsMatchingType(const Address &address)
virtual void DoInitialize(void)
Initialize() implementation.
bool SetMtu(const uint16_t mtu)
bool IsBroadcast(void) const
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 "...
Ptr< HeConfiguration > GetHeConfiguration(void) const
void LinkUp(void)
Set that the link is up.
Packet addressed to someone else.
Ptr< HeConfiguration > m_heConfiguration
the HeConfiguration
Address GetMulticast(Ipv4Address multicastGroup) const
Make and return a MAC multicast address using the provided multicast group.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Ptr< WifiRemoteStationManager > m_stationManager
the station manager
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
void SetHtConfiguration(Ptr< HtConfiguration > htConfiguration)
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
bool SupportsSendFrom(void) const
virtual void DoDispose(void)
Destructor implementation.
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
void ForwardUp(Ptr< Packet > packet, Mac48Address from, Mac48Address to)
Receive a packet from the lower layer and pass the packet up the stack.
uint32_t GetIfIndex(void) const
Address GetAddress(void) const
uint16_t GetMtu(void) const
a polymophic address class
virtual Ptr< Channel > GetChannel(void) const =0
Return the Channel this WifiPhy is connected to.
void SetHeConfiguration(Ptr< HeConfiguration > heConfiguration)
void DoDispose(void)
Destructor implementation.
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
Ptr< WifiRemoteStationManager > GetRemoteStationManager(void) const
static Mac48Address GetMulticast(Ipv4Address address)
void SetMac(const Ptr< WifiMac > mac)
static const uint16_t MAX_MSDU_SIZE
This value conforms to the 802.11 specification.
bool IsMulticast(void) const
Hold an unsigned integer type.
Ptr< WifiMac > m_mac
the MAC
Ptr< WifiPhy > m_phy
the phy
Address GetBroadcast(void) const
static Mac48Address GetBroadcast(void)
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
Ptr< Channel > GetChannel(void) const
virtual void SetupPhy(const Ptr< WifiPhy > phy)
Set up PHY associated with this device since it is the object that knows the full set of transmit rat...
bool IsBroadcast(void) const
static Mac48Address ConvertFrom(const Address &address)
static const uint16_t LLC_SNAP_HEADER_LENGTH
The length in octects of the LLC/SNAP header.
Ptr< WifiPhy > GetPhy(void) const
Every class exported by the ns3 library is enclosed in the ns3 namespace.
TracedCallback m_linkChanges
link change callback
Hold objects of type Ptr<T>.
bool Send(Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber)
Ptr< Node > m_node
the node
void DoInitialize(void)
Initialize() implementation.
uint32_t m_ifIndex
IF index.
bool SendFrom(Ptr< Packet > packet, const Address &source, const Address &dest, uint16_t protocolNumber)
Describes an IPv6 address.
void SetPhy(const Ptr< WifiPhy > phy)
virtual void SetupMac(const Ptr< WifiMac > mac)
Set up MAC associated with this device since it is the object that knows the full set of timing param...
Ipv4 addresses are stored in host order in this class.
void SetIfIndex(const uint32_t index)
Ptr< WifiMac > GetMac(void) const
NetDevice::ReceiveCallback m_forwardUp
forward up callback
bool IsBridge(void) const
Return true if the net device is acting as a bridge.
void ConnectWithoutContext(const CallbackBase &callback)
Append a Callback to the chain (without a context).
bool IsPointToPoint(void) const
Return true if the net device is on a point-to-point link.
Network layer to device interface.
Ptr< VhtConfiguration > m_vhtConfiguration
the VhtConfiguration
Ptr< HtConfiguration > m_htConfiguration
the HtConfiguration
void AddLinkChangeCallback(Callback< void > callback)
void CompleteConfig(void)
Complete the configuration of this Wi-Fi device by connecting all lower components (e...
void SetPromiscReceiveCallback(PromiscReceiveCallback cb)
bool IsLinkUp(void) const
PacketType
Packet types are used as they are in Linux.
void LinkDown(void)
Set that the link is down (i.e.
bool IsNull(void) const
Check for null implementation.
Ptr< VhtConfiguration > GetVhtConfiguration(void) const
Packet addressed to multicast group.
Ptr< HtConfiguration > GetHtConfiguration(void) const
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
void SetReceiveCallback(NetDevice::ReceiveCallback cb)
void SetVhtConfiguration(Ptr< VhtConfiguration > vhtConfiguration)
static TypeId GetTypeId(void)
Get the type ID.
NetDevice::PromiscReceiveCallback m_promiscRx
promiscious receive callback
void Initialize(void)
Invoke DoInitialize on all Objects aggregated to this one.
bool m_configComplete
configuration complete
void AddHeader(const Header &header)
Add header to this packet.
void SetNode(const Ptr< Node > node)
void SetAddress(Address address)
Set the address of this interface.
bool NeedsArp(void) const
void SetRemoteStationManager(const Ptr< WifiRemoteStationManager > manager)
Ptr< Node > GetNode(void) const