25#include "ns3/arp-l3-protocol.h"
26#include "ns3/attribute.h"
27#include "ns3/icmpv4-l4-protocol.h"
28#include "ns3/inet-socket-address.h"
29#include "ns3/internet-stack-helper.h"
30#include "ns3/ipv4-address.h"
31#include "ns3/ipv4-interface.h"
32#include "ns3/ipv4-l3-protocol.h"
33#include "ns3/ipv4-list-routing.h"
34#include "ns3/ipv4-packet-info-tag.h"
35#include "ns3/ipv4-raw-socket-factory.h"
36#include "ns3/ipv4-static-routing.h"
39#include "ns3/object-factory.h"
40#include "ns3/simple-net-device-helper.h"
41#include "ns3/simple-net-device.h"
42#include "ns3/simulator.h"
43#include "ns3/socket-factory.h"
44#include "ns3/tcp-l4-protocol.h"
46#include "ns3/traffic-control-layer.h"
47#include "ns3/udp-l4-protocol.h"
48#include "ns3/udp-socket-factory.h"
49#include "ns3/udp-socket.h"
66 void DoRun()
override;
92 availableData = socket->GetRxAvailable();
93 m_receivedPacket = socket->Recv(std::numeric_limits<uint32_t>::max(), 0);
98 found = m_receivedPacket->RemovePacketTag(tag);
106 if (DynamicCast<UdpSocket>(socket))
113 socket->SendTo(Create<Packet>(123), 0, realTo);
129 internet.SetIpv6StackInstall(
false);
132 node0->AddDevice(device);
133 internet.Install(node0);
136 uint32_t index = ipv4->AddInterface(device);
138 ipv4->AddAddress(index, ifaceAddr1);
139 ipv4->SetMetric(index, 1);
143 node1->AddDevice(device2);
144 internet.Install(node1);
145 ipv4 = node1->GetObject<
Ipv4>();
147 index = ipv4->AddInterface(device2);
149 ipv4->AddAddress(index, ifaceAddr2);
150 ipv4->SetMetric(index, 1);
158 socket->SetRecvPktInfo(
true);
182 socket = factory->CreateSocket();
185 socket->SetRecvPktInfo(
true);
198 socket2 = factory2->CreateSocket();
223 :
TestSuite(
"ipv4-packet-info-tag", UNIT)
void DoRun() override
Implementation to actually run this TestCase.
void DoSendData(Ptr< Socket > socket, std::string to)
Send data.
void RxCb(Ptr< Socket > socket)
Receive callback.
IPv4 PacketInfoTag TestSuite.
Ipv4PacketInfoTagTestSuite()
a polymophic address class
aggregate IP/TCP/UDP functionality to existing Nodes.
Ipv4 addresses are stored in host order in this class.
static Ipv4Address GetAny()
Access to the IPv4 forwarding table, interfaces, and configuration.
a class to store IPv4 address information on an interface
This class implements Linux struct pktinfo in order to deliver ancillary information to the socket in...
static TypeId GetTypeId()
Get the type ID.
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.
Smart pointer class similar to boost::intrusive_ptr.
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...
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.
Object to create transport layer instances that provide a socket API to applications.
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
static TypeId GetTypeId()
Get the type ID.
#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 Ipv4PacketInfoTagTestSuite g_packetinfotagTests
Static variable for test initialization.
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...