Setup a sixlowpan stack to be used as a shim between IPv6 and a generic NetDevice. More...
#include "sixlowpan-helper.h"
Public Member Functions | |
SixLowPanHelper () | |
void | AddContext (NetDeviceContainer c, uint8_t contextId, Ipv6Prefix context, Time validity) |
Adds a compression Context to a set of NetDevices. | |
int64_t | AssignStreams (NetDeviceContainer c, int64_t stream) |
Assign a fixed random variable stream number to the random variables used by this model. | |
NetDeviceContainer | Install (NetDeviceContainer c) |
Install the SixLoWPAN stack on top of an existing NetDevice. | |
void | InvalidateContext (NetDeviceContainer c, uint8_t contextId) |
Invalidates a compression Context in a set of NetDevices. | |
void | RemoveContext (NetDeviceContainer c, uint8_t contextId) |
Remove a compression Context in a set of NetDevices. | |
void | RenewContext (NetDeviceContainer c, uint8_t contextId, Time validity) |
Renew a compression Context in a set of NetDevices. | |
void | SetDeviceAttribute (std::string n1, const AttributeValue &v1) |
Set an attribute on each ns3::SixlowpanNetDevice created by SixlowpanHelper::Install. | |
Private Attributes | |
ObjectFactory | m_deviceFactory |
Object factory. | |
Setup a sixlowpan stack to be used as a shim between IPv6 and a generic NetDevice.
Definition at line 29 of file sixlowpan-helper.h.
ns3::SixLowPanHelper::SixLowPanHelper | ( | ) |
Definition at line 24 of file sixlowpan-helper.cc.
References m_deviceFactory, NS_LOG_FUNCTION, and ns3::ObjectFactory::SetTypeId().
void ns3::SixLowPanHelper::AddContext | ( | NetDeviceContainer | c, |
uint8_t | contextId, | ||
Ipv6Prefix | context, | ||
Time | validity ) |
Adds a compression Context to a set of NetDevices.
This function installs one Compression Context on a set of NetDevices. The context is used only in IPHC compression and decompression.
[in] | c | The NetDevice container. |
[in] | contextId | The context id (must be less than 16). |
[in] | context | The context prefix. |
[in] | validity | the context validity time (relative to the actual time). |
Definition at line 61 of file sixlowpan-helper.cc.
References ns3::DynamicCast(), ns3::NetDeviceContainer::Get(), ns3::NetDeviceContainer::GetN(), and NS_LOG_FUNCTION.
Referenced by SixlowpanIphcStatefulImplTest::DoRun().
int64_t ns3::SixLowPanHelper::AssignStreams | ( | NetDeviceContainer | c, |
int64_t | stream ) |
Assign a fixed random variable stream number to the random variables used by this model.
Return the number of streams (possibly zero) that have been assigned. The Install() method should have previously been called by the user.
[in] | c | NetDeviceContainer of the set of net devices for which the SixLowPanNetDevice should be modified to use a fixed stream. |
[in] | stream | First stream index to use. |
Definition at line 128 of file sixlowpan-helper.cc.
References ns3::NetDeviceContainer::Begin(), ns3::DynamicCast(), and ns3::NetDeviceContainer::End().
NetDeviceContainer ns3::SixLowPanHelper::Install | ( | NetDeviceContainer | c | ) |
Install the SixLoWPAN stack on top of an existing NetDevice.
This function requires a set of properly configured NetDevices passed in as the parameter "c". The new NetDevices will have to be used instead of the original ones. In this way these SixLoWPAN devices will behave as shims between the NetDevices passed in and IPv6.
Note that only IPv6 (and related protocols, such as ICMPv6) can be transmitted over a 6LoWPAN interface. Any other protocol (e.g., IPv4) will be discarded by 6LoWPAN.
Other protocols (e.g., IPv4) could be used on the original NetDevices with some limitations. See the manual for a complete discussion.
[in] | c | The NetDevice container. |
Definition at line 38 of file sixlowpan-helper.cc.
References ns3::NetDeviceContainer::Add(), ns3::ObjectFactory::Create(), ns3::NetDeviceContainer::Get(), ns3::NetDeviceContainer::GetN(), m_deviceFactory, NS_ASSERT_MSG, NS_LOG_FUNCTION, and NS_LOG_LOGIC.
Referenced by SixlowpanIphcStatefulImplTest::DoRun(), and UanExperiment::SetupCommunications().
void ns3::SixLowPanHelper::InvalidateContext | ( | NetDeviceContainer | c, |
uint8_t | contextId ) |
Invalidates a compression Context in a set of NetDevices.
An invalid context is used only in IPHC decompression and not in IPHC compression.
This is necessary to avoid that a context reaching its validity lifetime can not be used for decompression whie packets are traveling the network.
[in] | c | The NetDevice container. |
[in] | contextId | The context id (must be less than 16). |
Definition at line 96 of file sixlowpan-helper.cc.
References ns3::DynamicCast(), ns3::NetDeviceContainer::Get(), ns3::NetDeviceContainer::GetN(), and NS_LOG_FUNCTION.
void ns3::SixLowPanHelper::RemoveContext | ( | NetDeviceContainer | c, |
uint8_t | contextId ) |
Remove a compression Context in a set of NetDevices.
The context is removed immediately from the contexts in the devices.
[in] | c | The NetDevice container. |
[in] | contextId | The context id (must be less than 16). |
Definition at line 112 of file sixlowpan-helper.cc.
References ns3::DynamicCast(), ns3::NetDeviceContainer::Get(), ns3::NetDeviceContainer::GetN(), and NS_LOG_FUNCTION.
void ns3::SixLowPanHelper::RenewContext | ( | NetDeviceContainer | c, |
uint8_t | contextId, | ||
Time | validity ) |
Renew a compression Context in a set of NetDevices.
The context will have its lifetime extended and its validity for compression re-enabled.
[in] | c | The NetDevice container. |
[in] | contextId | The context id (must be less than 16). |
[in] | validity | the context validity time (relative to the actual time). |
Definition at line 80 of file sixlowpan-helper.cc.
References ns3::DynamicCast(), ns3::NetDeviceContainer::Get(), ns3::NetDeviceContainer::GetN(), and NS_LOG_FUNCTION.
void ns3::SixLowPanHelper::SetDeviceAttribute | ( | std::string | n1, |
const AttributeValue & | v1 ) |
Set an attribute on each ns3::SixlowpanNetDevice created by SixlowpanHelper::Install.
n1 | [in] The name of the attribute to set. |
v1 | [in] The value of the attribute to set. |
Definition at line 31 of file sixlowpan-helper.cc.
References m_deviceFactory, NS_LOG_FUNCTION, and ns3::ObjectFactory::Set().
|
private |
Object factory.
Definition at line 134 of file sixlowpan-helper.h.
Referenced by SixLowPanHelper(), Install(), and SetDeviceAttribute().