12#include "ns3/boolean.h" 
   13#include "ns3/double.h" 
   14#include "ns3/internet-stack-helper.h" 
   15#include "ns3/ipv4-address-helper.h" 
   16#include "ns3/ipv4-raw-socket-factory.h" 
   17#include "ns3/olsr-header.h" 
   18#include "ns3/olsr-helper.h" 
   19#include "ns3/random-variable-stream.h" 
   20#include "ns3/rng-seed-manager.h" 
   21#include "ns3/simple-net-device-helper.h" 
   22#include "ns3/simple-net-device.h" 
   23#include "ns3/simulator.h" 
   24#include "ns3/socket-factory.h" 
   25#include "ns3/string.h" 
   26#include "ns3/udp-header.h" 
   27#include "ns3/udp-l4-protocol.h" 
   28#include "ns3/uinteger.h" 
   36    : 
TestCase(
"Test OLSR Topology Control message generation"),
 
 
   74    internet.SetRoutingHelper(
olsr);
 
   76    int64_t streamsUsed = 
olsr.AssignStreams(c, 0);
 
   89    ch->BlackList(nd0, nd2);
 
   90    ch->BlackList(nd2, nd0);
 
   94    ipv4.SetBase(
"10.1.1.0", 
"255.255.255.0");
 
 
  119    availableData = socket->GetRxAvailable();
 
  120    Ptr<Packet> receivedPacketProbe = socket->Recv(std::numeric_limits<uint32_t>::max(), 0);
 
  121    NS_ASSERT(availableData == receivedPacketProbe->GetSize());
 
  124    receivedPacketProbe->RemoveHeader(ipHdr);
 
  126    receivedPacketProbe->RemoveHeader(udpHdr);
 
  128    receivedPacketProbe->RemoveHeader(pktHdr);
 
  133        receivedPacketProbe->RemoveHeader(msgHdr);
 
  137                              "Originator address.");
 
  143        receivedPacketProbe->RemoveHeader(msgHdr);
 
  146                              "Originator address.");
 
  169            receivedPacketProbe->RemoveHeader(msgHdr);
 
  173                                  "Originator address.");
 
  176                                  int(
m_countA) << 
" - TC, one message.");
 
  187            receivedPacketProbe->RemoveHeader(msgHdr);
 
  190                                  "Originator address.");
 
  194                                  int(
m_countA) << 
" - Hello, one message.");
 
  197                                  int(
m_countA) << 
" - Symmetric Link.");
 
  206                                  int(
m_countA) << 
" - Symmetric Link.");
 
 
  222    availableData = socket->GetRxAvailable();
 
  223    Ptr<Packet> receivedPacketProbe = socket->Recv(std::numeric_limits<uint32_t>::max(), 0);
 
  224    NS_ASSERT(availableData == receivedPacketProbe->GetSize());
 
  227    receivedPacketProbe->RemoveHeader(ipHdr);
 
  229    receivedPacketProbe->RemoveHeader(udpHdr);
 
  231    receivedPacketProbe->RemoveHeader(pktHdr);
 
  234    receivedPacketProbe->RemoveHeader(msgHdr);
 
  242                              "Originator address.");
 
  248                              "Originator address.");
 
  255                              int(
m_countC) << 
" - Hello, links announced.");
 
  261                              int(
m_countC) << 
" - Hello, links announced.");
 
  266                                  int(
m_countC) << 
" - Asymmetric Link.");
 
  272                                  int(
m_countC) << 
" - Symmetric Link.");
 
 
  294    availableData = socket->GetRxAvailable();
 
  295    Ptr<Packet> receivedPacketProbe = socket->Recv(std::numeric_limits<uint32_t>::max(), 0);
 
  296    NS_ASSERT(availableData == receivedPacketProbe->GetSize());
 
  299    receivedPacketProbe->RemoveHeader(ipHdr);
 
  301    receivedPacketProbe->RemoveHeader(udpHdr);
 
  303    receivedPacketProbe->RemoveHeader(pktHdr);
 
  308        receivedPacketProbe->RemoveHeader(msgHdr);
 
  312                              "Originator address.");
 
  318        receivedPacketProbe->RemoveHeader(msgHdr);
 
  321                              "Originator address.");
 
  344            receivedPacketProbe->RemoveHeader(msgHdr);
 
  348                                  "Originator address.");
 
  351                                  int(
m_countC) << 
" - TC, one message.");
 
  362            receivedPacketProbe->RemoveHeader(msgHdr);
 
  365                                  "Originator address.");
 
  369                                  int(
m_countC) << 
" - Hello, one message.");
 
  372                                  int(
m_countC) << 
" - Symmetric Link.");
 
  381                                  int(
m_countC) << 
" - Symmetric Link.");
 
 
aggregate IP/TCP/UDP functionality to existing Nodes.
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
Ipv4 addresses are stored in host order in this class.
API to create RAW socket instances.
void SetProtocol(uint16_t protocol)
Set protocol field.
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.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
Ptr< T > GetObject() const
Get a pointer to the requested aggregated Object.
Helper class that adds OLSR routing to nodes.
Smart pointer class similar to boost::intrusive_ptr.
static void SetRun(uint64_t run)
Set the run number of simulation.
static void SetSeed(uint32_t seed)
Set the seed.
build a set of SimpleNetDevice objects
void SetChannelAttribute(std::string n1, const AttributeValue &v1)
void SetDeviceAttribute(std::string n1, const AttributeValue &v1)
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 Run()
Run the simulation.
static void Stop()
Tell the Simulator the calling event should be the last one executed.
void SetRecvCallback(Callback< void, Ptr< Socket > > receivedData)
Notify application when new data is available to be read.
Hold variables of type string.
static constexpr uint8_t PROT_NUMBER
Protocol number (see http://www.iana.org/assignments/protocol-numbers)
void CreateNodes()
Create & configure test network.
void ReceivePktProbeB(Ptr< Socket > socket)
Receive raw data on node B.
~TcRegressionTest() override
uint8_t m_countB
Packet counter on node B.
Ptr< Ipv4RawSocketImpl > m_rxSocketB
Receiving socket on node B.
void ReceivePktProbeC(Ptr< Socket > socket)
Receive raw data on node C.
uint8_t m_countC
Packet counter on node C.
void DoRun() override
Implementation to actually run this TestCase.
Ptr< Ipv4RawSocketImpl > m_rxSocketC
Receiving socket on node C.
void ReceivePktProbeA(Ptr< Socket > socket)
Receive raw data on node A.
const Time m_time
Total simulation time.
Ptr< Ipv4RawSocketImpl > m_rxSocketA
Receiving socket on node A.
uint8_t m_countA
Packet counter on node A.
#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...
Ptr< T1 > DynamicCast(const Ptr< T2 > &p)
Cast a Ptr.