26 #include "ns3/ipv6-address.h"
27 #include "ns3/ipv6-packet-info-tag.h"
29 #include "ns3/abort.h"
30 #include "ns3/attribute.h"
31 #include "ns3/simple-net-device.h"
32 #include "ns3/object-factory.h"
33 #include "ns3/socket-factory.h"
34 #include "ns3/udp-socket-factory.h"
35 #include "ns3/udp-socket.h"
36 #include "ns3/ipv6-l3-protocol.h"
37 #include "ns3/ipv6-raw-socket-factory.h"
38 #include "ns3/ipv6-interface.h"
39 #include "ns3/icmpv6-l4-protocol.h"
40 #include "ns3/ipv6-static-routing.h"
41 #include "ns3/ipv6-list-routing.h"
42 #include "ns3/inet6-socket-address.h"
43 #include "ns3/simulator.h"
44 #include "ns3/uinteger.h"
45 #include "ns3/boolean.h"
47 #include "ns3/traffic-control-layer.h"
48 #include "ns3/internet-stack-helper.h"
49 #include "ns3/simple-net-device-helper.h"
89 virtual void DoRun (
void);
100 void DoSendData (
Ptr<Socket> socket, std::string to);
104 :
TestCase (
"Ipv6PacketInfoTagTest")
111 uint32_t availableData;
128 if (DynamicCast<UdpSocket> (socket) != 0)
136 socket->
SendTo (Create<Packet> (123), 0, realTo);
161 uint32_t index = ipv6->AddInterface (device);
164 ipv6->AddAddress (index, ifaceAddr1);
165 ipv6->SetMetric (index, 1);
175 index = ipv6->AddInterface (device2);
178 ipv6->AddAddress (index, ifaceAddr2);
179 ipv6->SetMetric (index, 1);
186 socket->SetAttribute (
"Protocol",
UintegerValue (Ipv6Header::IPV6_ICMPV6));
187 socket->Bind (local);
188 socket->SetRecvPktInfo (
true);
192 Simulator::ScheduleWithContext (socket->GetNode ()->GetId (),
Seconds (0),
198 std::stringstream dst;
200 Simulator::ScheduleWithContext (socket2->GetNode ()->GetId (),
Seconds (0),
205 #ifdef UDP6_SUPPORTED
208 socket = factory->CreateSocket ();
210 socket->Bind (local);
211 socket->SetRecvPktInfo (
true);
215 Simulator::ScheduleWithContext (socket->GetNode ()->GetId (),
Seconds (0),
220 socket2 = factory2->CreateSocket ();
221 Simulator::ScheduleWithContext (socket2->GetNode ()->GetId (),
Seconds (0),
227 Simulator::Destroy ();
245 :
TestSuite (
"ipv6-packet-info-tag", UNIT)
virtual void DoRun(void)
Implementation to actually run this TestCase.
void RxCb(Ptr< Socket > socket)
Receive callback.
void DoSendData(Ptr< Socket > socket, std::string to)
Send data.
IPv6 PacketInfoTag TestSuite.
Ipv6PacketInfoTagTestSuite()
a polymophic address class
AttributeValue implementation for Boolean.
An implementation of the ICMPv6 protocol.
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.
Ipv6Address GetAddress() const
Get the IPv6 address.
This class implements a tag that carries socket ancillary data to the socket interface.
Describes an IPv6 prefix.
holds a vector of ns3::NetDevice pointers
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
keep track of a set of node pointers.
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node.
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
bool RemovePacketTag(Tag &tag)
Remove a packet tag.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
build a set of SimpleNetDevice objects
NetDeviceContainer Install(Ptr< Node > node) const
This method creates an ns3::SimpleChannel with the attributes configured by SimpleNetDeviceHelper::Se...
Object to create transport layer instances that provide a socket API to applications.
virtual Ptr< Packet > Recv(uint32_t maxSize, uint32_t flags)=0
Read data from the socket.
virtual uint32_t GetRxAvailable(void) const =0
Return number of bytes which can be returned from one or multiple calls to Recv.
virtual int SendTo(Ptr< Packet > p, uint32_t flags, const Address &toAddress)=0
Send data to a specified peer.
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Hold an unsigned integer type.
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
#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.
static Ipv6PacketInfoTagTestSuite g_packetinfotagTests
Static variable for test initialization.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Callback< R, Ts... > MakeCallback(R(T::*memPtr)(Ts...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...