20#include "ns3/boolean.h"
21#include "ns3/inet6-socket-address.h"
22#include "ns3/internet-stack-helper.h"
25#include "ns3/simple-channel.h"
26#include "ns3/simple-net-device.h"
27#include "ns3/simulator.h"
28#include "ns3/sixlowpan-net-device.h"
29#include "ns3/socket-factory.h"
30#include "ns3/socket.h"
32#include "ns3/udp-socket-factory.h"
65 void DoRun()
override;
85 :
TestCase(
"Sixlowpan implementation")
98 uint32_t availableData [[maybe_unused]] = socket->GetRxAvailable();
107 uint8_t buffer[] =
"\"Can you tell me where my country lies?\" \\ said the unifaun to his true "
108 "love's eyes. \\ \"It lies with me!\" cried the Queen of Maybe \\ - for her "
109 "merchandise, he traded in his prize.";
140 rxDev = CreateObject<SimpleNetDevice>();
142 rxNode->AddDevice(rxDev);
145 rxSix->SetAttribute(
"ForceEtherType",
BooleanValue(
true));
147 rxNode->AddDevice(rxSix);
148 rxSix->SetNetDevice(rxDev);
151 ipv6->AddInterface(rxDev);
152 uint32_t netdev_idx = ipv6->AddInterface(rxSix);
155 ipv6->AddAddress(netdev_idx, ipv6Addr);
156 ipv6->SetUp(netdev_idx);
164 txDev = CreateObject<SimpleNetDevice>();
166 txNode->AddDevice(txDev);
169 txSix->SetAttribute(
"ForceEtherType",
BooleanValue(
true));
171 txNode->AddDevice(txSix);
172 txSix->SetNetDevice(txDev);
175 ipv6->AddInterface(txDev);
176 uint32_t netdev_idx = ipv6->AddInterface(txSix);
179 ipv6->AddAddress(netdev_idx, ipv6Addr);
180 ipv6->SetUp(netdev_idx);
185 rxDev->SetChannel(channel1);
186 txDev->SetChannel(channel1);
190 Ptr<Socket> rxSocket = rxSocketFactory->CreateSocket();
197 Ptr<Socket> txSocket = txSocketFactory->CreateSocket();
198 txSocket->SetAllowBroadcast(
true);
204 uint8_t rxBuffer[180];
205 uint8_t txBuffer[180] =
"\"Can you tell me where my country lies?\" \\ said the unifaun to his "
206 "true love's eyes. \\ \"It lies with me!\" cried the Queen of Maybe \\ "
207 "- for her merchandise, he traded in his prize.";
void ReceivePkt(Ptr< Socket > socket)
Packet receive function.
void SendData(Ptr< Socket > socket, std::string to)
Send data function.
void DoRun() override
Implementation to actually run this TestCase.
void DoSendData(Ptr< Socket > socket, std::string to)
Send data function.
void ReceivePacket(Ptr< Socket > socket, Ptr< Packet > packet, const Address &from)
Packet receive function.
Ptr< Packet > m_receivedPacket
received packet
a polymophic address class
AttributeValue implementation for Boolean.
aggregate IP/TCP/UDP functionality to existing Nodes.
void SetIpv4StackInstall(bool enable)
Enable/disable IPv4 stack install.
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
Describes an IPv6 address.
Access to the IPv6 forwarding table, interfaces, and configuration.
IPv6 address associated with an interface.
Describes an IPv6 prefix.
static Mac48Address ConvertFrom(const Address &address)
static Mac48Address Allocate()
Allocate a new Mac48Address.
uint32_t GetSize() const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
uint32_t CopyData(uint8_t *buffer, uint32_t size) const
Copy the packet contents to a byte buffer.
void RemoveAllByteTags()
Remove all byte tags stored in this packet.
Smart pointer class similar to boost::intrusive_ptr.
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
static void ScheduleWithContext(uint32_t context, const Time &delay, FUNC f, Ts &&... args)
Schedule an event with the given context.
static void Run()
Run the simulation.
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
API to create UDP socket instances.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
Time Seconds(double value)
Construct a Time in the indicated unit.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Callback< R, Args... > MakeCallback(R(T::*memPtr)(Args...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
static SixlowpanHc1TestSuite g_sixlowpanHc1TestSuite
Static variable for test initialization.