View | Details | Raw Unified | Return to bug 1941
Collapse All | Expand All

(-)a/src/mesh/examples/wscript (-1 / +1 lines)
 Lines 1-5    Link Here 
1
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
1
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
2
2
3
def build(bld):
3
def build(bld):
4
    obj = bld.create_ns3_program('mesh', ['internet', 'mobility', 'wifi', 'mesh'])
4
    obj = bld.create_ns3_program('mesh', ['internet', 'mobility', 'wifi', 'mesh', 'applications'])
5
    obj.source = 'mesh.cc'
5
    obj.source = 'mesh.cc'
(-)a/src/mesh/test/dot11s/hwmp-proactive-regression.cc (-13 / +49 lines)
 Lines 31-37    Link Here 
31
#include "ns3/ipv4-interface-container.h"
31
#include "ns3/ipv4-interface-container.h"
32
#include "ns3/ipv4-address-helper.h"
32
#include "ns3/ipv4-address-helper.h"
33
#include "ns3/abort.h"
33
#include "ns3/abort.h"
34
#include "ns3/udp-echo-helper.h"
35
#include "ns3/mobility-model.h"
34
#include "ns3/mobility-model.h"
36
#include "ns3/pcap-test.h"
35
#include "ns3/pcap-test.h"
37
#include <sstream>
36
#include <sstream>
 Lines 45-51    Link Here 
45
44
46
HwmpProactiveRegressionTest::HwmpProactiveRegressionTest () : TestCase ("HWMP proactive regression test"),
45
HwmpProactiveRegressionTest::HwmpProactiveRegressionTest () : TestCase ("HWMP proactive regression test"),
47
                                                              m_nodes (0),
46
                                                              m_nodes (0),
48
                                                              m_time (Seconds (5))
47
                                                              m_time (Seconds (5)),
48
                                                              m_sentPktsCounter (0)
49
{
49
{
50
}
50
}
51
51
 Lines 89-105    Link Here 
89
void
89
void
90
HwmpProactiveRegressionTest::InstallApplications ()
90
HwmpProactiveRegressionTest::InstallApplications ()
91
{
91
{
92
  UdpEchoServerHelper echoServer (9);
92
  // client socket
93
  ApplicationContainer serverApps = echoServer.Install (m_nodes->Get (0));
93
  m_clientSocket = Socket::CreateSocket (m_nodes->Get (4), TypeId::LookupByName ("ns3::UdpSocketFactory"));
94
  serverApps.Start (Seconds (0.0));
94
  m_clientSocket->Bind ();
95
  serverApps.Stop (m_time);
95
  m_clientSocket->Connect (InetSocketAddress (m_interfaces.GetAddress (0), 9));
96
  UdpEchoClientHelper echoClient (m_interfaces.GetAddress (0), 9);
96
  m_clientSocket->SetRecvCallback (MakeCallback (&HwmpProactiveRegressionTest::HandleReadClient, this));
97
  echoClient.SetAttribute ("MaxPackets", UintegerValue (300));
97
  Simulator::ScheduleWithContext (m_clientSocket->GetNode ()->GetId (), Seconds (2.5),
98
  echoClient.SetAttribute ("Interval", TimeValue (Seconds (0.5)));
98
                                  &HwmpProactiveRegressionTest::SendData, this, m_clientSocket);
99
  echoClient.SetAttribute ("PacketSize", UintegerValue (100));
99
100
  ApplicationContainer clientApps = echoClient.Install (m_nodes->Get (4));
100
  // server socket
101
  clientApps.Start (Seconds (2.5));
101
  m_serverSocket = Socket::CreateSocket (m_nodes->Get (0), TypeId::LookupByName ("ns3::UdpSocketFactory"));
102
  clientApps.Stop (m_time);
102
  m_serverSocket->Bind (InetSocketAddress (Ipv4Address::GetAny (), 9));
103
  m_serverSocket->SetRecvCallback (MakeCallback (&HwmpProactiveRegressionTest::HandleReadServer, this));
103
}
104
}
104
void
105
void
105
HwmpProactiveRegressionTest::CreateDevices ()
106
HwmpProactiveRegressionTest::CreateDevices ()
 Lines 145-147    Link Here 
145
    }
146
    }
146
}
147
}
147
148
149
void
150
HwmpProactiveRegressionTest::SendData (Ptr<Socket> socket)
151
{
152
  if ((Simulator::Now () < m_time) && (m_sentPktsCounter < 300))
153
    {
154
      socket->Send (Create<Packet> (100));
155
      m_sentPktsCounter ++;
156
      Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (0.5),
157
                                      &HwmpProactiveRegressionTest::SendData, this, socket);
158
    }
159
}
160
161
void
162
HwmpProactiveRegressionTest::HandleReadServer (Ptr<Socket> socket)
163
{
164
  Ptr<Packet> packet;
165
  Address from;
166
  while ((packet = socket->RecvFrom (from)))
167
    {
168
      packet->RemoveAllPacketTags ();
169
      packet->RemoveAllByteTags ();
170
171
      socket->SendTo (packet, 0, from);
172
    }
173
}
174
175
void
176
HwmpProactiveRegressionTest::HandleReadClient (Ptr<Socket> socket)
177
{
178
  Ptr<Packet> packet;
179
  Address from;
180
  while ((packet = socket->RecvFrom (from)))
181
    {
182
    }
183
}
(-)a/src/mesh/test/dot11s/hwmp-proactive-regression.h (+32 lines)
 Lines 74-78    Link Here 
74
  void CreateDevices ();
74
  void CreateDevices ();
75
  void InstallApplications ();
75
  void InstallApplications ();
76
  void ResetPosition ();
76
  void ResetPosition ();
77
78
  /// Server-side socket
79
  Ptr<Socket> m_serverSocket;
80
  /// Client-side socket
81
  Ptr<Socket> m_clientSocket;
82
83
  // sent packets counter
84
  uint32_t m_sentPktsCounter;
85
86
  /**
87
   * Send data
88
   * \param socket the sending socket
89
   */
90
  void SendData (Ptr<Socket> socket);
91
92
  /**
93
   * \brief Handle a packet reception.
94
   *
95
   * This function is called by lower layers.
96
   *
97
   * \param socket the socket the packet was received to.
98
   */
99
  void HandleReadServer (Ptr<Socket> socket);
100
101
  /**
102
   * \brief Handle a packet reception.
103
   *
104
   * This function is called by lower layers.
105
   *
106
   * \param socket the socket the packet was received to.
107
   */
108
  void HandleReadClient (Ptr<Socket> socket);
77
};
109
};
78
110
(-)a/src/mesh/test/dot11s/hwmp-reactive-regression.cc (-13 / +49 lines)
 Lines 30-36    Link Here 
30
#include "ns3/internet-stack-helper.h"
30
#include "ns3/internet-stack-helper.h"
31
#include "ns3/ipv4-address-helper.h"
31
#include "ns3/ipv4-address-helper.h"
32
#include "ns3/abort.h"
32
#include "ns3/abort.h"
33
#include "ns3/udp-echo-helper.h"
34
#include "ns3/mobility-model.h"
33
#include "ns3/mobility-model.h"
35
#include "ns3/pcap-test.h"
34
#include "ns3/pcap-test.h"
36
#include <sstream>
35
#include <sstream>
 Lines 42-48    Link Here 
42
41
43
HwmpReactiveRegressionTest::HwmpReactiveRegressionTest () : TestCase ("HWMP on-demand regression test"),
42
HwmpReactiveRegressionTest::HwmpReactiveRegressionTest () : TestCase ("HWMP on-demand regression test"),
44
                                                            m_nodes (0),
43
                                                            m_nodes (0),
45
                                                            m_time (Seconds (10))
44
                                                            m_time (Seconds (10)),
45
                                                            m_sentPktsCounter (0)
46
{
46
{
47
}
47
}
48
HwmpReactiveRegressionTest::~HwmpReactiveRegressionTest ()
48
HwmpReactiveRegressionTest::~HwmpReactiveRegressionTest ()
 Lines 86-102    Link Here 
86
void
86
void
87
HwmpReactiveRegressionTest::InstallApplications ()
87
HwmpReactiveRegressionTest::InstallApplications ()
88
{
88
{
89
  UdpEchoServerHelper echoServer (9);
89
  // client socket
90
  ApplicationContainer serverApps = echoServer.Install (m_nodes->Get (0));
90
  m_clientSocket = Socket::CreateSocket (m_nodes->Get (5), TypeId::LookupByName ("ns3::UdpSocketFactory"));
91
  serverApps.Start (Seconds (0.0));
91
  m_clientSocket->Bind ();
92
  serverApps.Stop (m_time);
92
  m_clientSocket->Connect (InetSocketAddress (m_interfaces.GetAddress (0), 9));
93
  UdpEchoClientHelper echoClient (m_interfaces.GetAddress (0), 9);
93
  m_clientSocket->SetRecvCallback (MakeCallback (&HwmpReactiveRegressionTest::HandleReadClient, this));
94
  echoClient.SetAttribute ("MaxPackets", UintegerValue (300));
94
  Simulator::ScheduleWithContext (m_clientSocket->GetNode ()->GetId (), Seconds (2.0),
95
  echoClient.SetAttribute ("Interval", TimeValue (Seconds (0.5)));
95
                                  &HwmpReactiveRegressionTest::SendData, this, m_clientSocket);
96
  echoClient.SetAttribute ("PacketSize", UintegerValue (20));
96
97
  ApplicationContainer clientApps = echoClient.Install (m_nodes->Get (5));
97
  // server socket
98
  clientApps.Start (Seconds (2.0));
98
  m_serverSocket = Socket::CreateSocket (m_nodes->Get (0), TypeId::LookupByName ("ns3::UdpSocketFactory"));
99
  clientApps.Stop (m_time);
99
  m_serverSocket->Bind (InetSocketAddress (Ipv4Address::GetAny (), 9));
100
  m_serverSocket->SetRecvCallback (MakeCallback (&HwmpReactiveRegressionTest::HandleReadServer, this));
100
}
101
}
101
void
102
void
102
HwmpReactiveRegressionTest::CreateDevices ()
103
HwmpReactiveRegressionTest::CreateDevices ()
 Lines 152-156    Link Here 
152
      return;
153
      return;
153
    }
154
    }
154
  model->SetPosition (Vector (9000, 0, 0));
155
  model->SetPosition (Vector (9000, 0, 0));
156
}
155
157
158
void
159
HwmpReactiveRegressionTest::SendData (Ptr<Socket> socket)
160
{
161
  if ((Simulator::Now () < m_time) && (m_sentPktsCounter < 300))
162
    {
163
      socket->Send (Create<Packet> (20));
164
      m_sentPktsCounter ++;
165
      Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (0.5),
166
                                      &HwmpReactiveRegressionTest::SendData, this, socket);
167
    }
156
}
168
}
169
170
void
171
HwmpReactiveRegressionTest::HandleReadServer (Ptr<Socket> socket)
172
{
173
  Ptr<Packet> packet;
174
  Address from;
175
  while ((packet = socket->RecvFrom (from)))
176
    {
177
      packet->RemoveAllPacketTags ();
178
      packet->RemoveAllByteTags ();
179
180
      socket->SendTo (packet, 0, from);
181
    }
182
}
183
184
void
185
HwmpReactiveRegressionTest::HandleReadClient (Ptr<Socket> socket)
186
{
187
  Ptr<Packet> packet;
188
  Address from;
189
  while ((packet = socket->RecvFrom (from)))
190
    {
191
    }
192
}
(-)a/src/mesh/test/dot11s/hwmp-reactive-regression.h (+32 lines)
 Lines 87-91    Link Here 
87
  void CreateDevices ();
87
  void CreateDevices ();
88
  void InstallApplications ();
88
  void InstallApplications ();
89
  void ResetPosition ();
89
  void ResetPosition ();
90
91
  /// Server-side socket
92
  Ptr<Socket> m_serverSocket;
93
  /// Client-side socket
94
  Ptr<Socket> m_clientSocket;
95
96
  // sent packets counter
97
  uint32_t m_sentPktsCounter;
98
99
  /**
100
   * Send data
101
   * \param socket the sending socket
102
   */
103
  void SendData (Ptr<Socket> socket);
104
105
  /**
106
   * \brief Handle a packet reception.
107
   *
108
   * This function is called by lower layers.
109
   *
110
   * \param socket the socket the packet was received to.
111
   */
112
  void HandleReadServer (Ptr<Socket> socket);
113
114
  /**
115
   * \brief Handle a packet reception.
116
   *
117
   * This function is called by lower layers.
118
   *
119
   * \param socket the socket the packet was received to.
120
   */
121
  void HandleReadClient (Ptr<Socket> socket);
90
};
122
};
91
123
(-)a/src/mesh/test/dot11s/hwmp-simplest-regression.cc (-13 / +49 lines)
 Lines 30-36    Link Here 
30
#include "ns3/internet-stack-helper.h"
30
#include "ns3/internet-stack-helper.h"
31
#include "ns3/ipv4-address-helper.h"
31
#include "ns3/ipv4-address-helper.h"
32
#include "ns3/abort.h"
32
#include "ns3/abort.h"
33
#include "ns3/udp-echo-helper.h"
34
#include "ns3/mobility-model.h"
33
#include "ns3/mobility-model.h"
35
#include "ns3/pcap-test.h"
34
#include "ns3/pcap-test.h"
36
#include <sstream>
35
#include <sstream>
 Lines 44-50    Link Here 
44
43
45
HwmpSimplestRegressionTest::HwmpSimplestRegressionTest () : TestCase ("Simplest HWMP regression test"),
44
HwmpSimplestRegressionTest::HwmpSimplestRegressionTest () : TestCase ("Simplest HWMP regression test"),
46
                                                            m_nodes (0),
45
                                                            m_nodes (0),
47
                                                            m_time (Seconds (15))
46
                                                            m_time (Seconds (15)),
47
                                                            m_sentPktsCounter (0)
48
{
48
{
49
}
49
}
50
50
 Lines 100-116    Link Here 
100
void
100
void
101
HwmpSimplestRegressionTest::InstallApplications ()
101
HwmpSimplestRegressionTest::InstallApplications ()
102
{
102
{
103
  UdpEchoServerHelper echoServer (9);
103
  // client socket
104
  ApplicationContainer serverApps = echoServer.Install (m_nodes->Get (0));
104
  m_clientSocket = Socket::CreateSocket (m_nodes->Get (1), TypeId::LookupByName ("ns3::UdpSocketFactory"));
105
  serverApps.Start (Seconds (0.0));
105
  m_clientSocket->Bind ();
106
  serverApps.Stop (m_time);
106
  m_clientSocket->Connect (InetSocketAddress (m_interfaces.GetAddress (0), 9));
107
  UdpEchoClientHelper echoClient (m_interfaces.GetAddress (0), 9);
107
  m_clientSocket->SetRecvCallback (MakeCallback (&HwmpSimplestRegressionTest::HandleReadClient, this));
108
  echoClient.SetAttribute ("MaxPackets", UintegerValue (300));
108
  Simulator::ScheduleWithContext (m_clientSocket->GetNode ()->GetId (), Seconds (2.0),
109
  echoClient.SetAttribute ("Interval", TimeValue (Seconds (0.05)));
109
                                  &HwmpSimplestRegressionTest::SendData, this, m_clientSocket);
110
  echoClient.SetAttribute ("PacketSize", UintegerValue (100));
110
111
  ApplicationContainer clientApps = echoClient.Install (m_nodes->Get (1));
111
  // server socket
112
  clientApps.Start (Seconds (2.0));
112
  m_serverSocket = Socket::CreateSocket (m_nodes->Get (0), TypeId::LookupByName ("ns3::UdpSocketFactory"));
113
  clientApps.Stop (m_time);
113
  m_serverSocket->Bind (InetSocketAddress (Ipv4Address::GetAny (), 9));
114
  m_serverSocket->SetRecvCallback (MakeCallback (&HwmpSimplestRegressionTest::HandleReadServer, this));
114
}
115
}
115
void
116
void
116
HwmpSimplestRegressionTest::CreateDevices ()
117
HwmpSimplestRegressionTest::CreateDevices ()
 Lines 153-155    Link Here 
153
    }
154
    }
154
}
155
}
155
156
157
void
158
HwmpSimplestRegressionTest::SendData (Ptr<Socket> socket)
159
{
160
  if ((Simulator::Now () < m_time) && (m_sentPktsCounter < 300))
161
    {
162
      socket->Send (Create<Packet> (100));
163
      m_sentPktsCounter ++;
164
      Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (0.05),
165
                                      &HwmpSimplestRegressionTest::SendData, this, socket);
166
    }
167
}
168
169
void
170
HwmpSimplestRegressionTest::HandleReadServer (Ptr<Socket> socket)
171
{
172
  Ptr<Packet> packet;
173
  Address from;
174
  while ((packet = socket->RecvFrom (from)))
175
    {
176
      packet->RemoveAllPacketTags ();
177
      packet->RemoveAllByteTags ();
178
179
      socket->SendTo (packet, 0, from);
180
    }
181
}
182
183
void
184
HwmpSimplestRegressionTest::HandleReadClient (Ptr<Socket> socket)
185
{
186
  Ptr<Packet> packet;
187
  Address from;
188
  while ((packet = socket->RecvFrom (from)))
189
    {
190
    }
191
}
(-)a/src/mesh/test/dot11s/hwmp-simplest-regression.h (+32 lines)
 Lines 85-89    Link Here 
85
  void CreateDevices ();
85
  void CreateDevices ();
86
  void InstallApplications ();
86
  void InstallApplications ();
87
  void ResetPosition ();
87
  void ResetPosition ();
88
89
  /// Server-side socket
90
  Ptr<Socket> m_serverSocket;
91
  /// Client-side socket
92
  Ptr<Socket> m_clientSocket;
93
94
  // sent packets counter
95
  uint32_t m_sentPktsCounter;
96
97
  /**
98
   * Send data
99
   * \param socket the sending socket
100
   */
101
  void SendData (Ptr<Socket> socket);
102
103
  /**
104
   * \brief Handle a packet reception.
105
   *
106
   * This function is called by lower layers.
107
   *
108
   * \param socket the socket the packet was received to.
109
   */
110
  void HandleReadServer (Ptr<Socket> socket);
111
112
  /**
113
   * \brief Handle a packet reception.
114
   *
115
   * This function is called by lower layers.
116
   *
117
   * \param socket the socket the packet was received to.
118
   */
119
  void HandleReadClient (Ptr<Socket> socket);
88
};
120
};
89
121
(-)a/src/mesh/test/dot11s/hwmp-target-flags-regression.cc (-29 / +100 lines)
 Lines 44-50    Link Here 
44
44
45
HwmpDoRfRegressionTest::HwmpDoRfRegressionTest () : TestCase ("HWMP target flags regression test"),
45
HwmpDoRfRegressionTest::HwmpDoRfRegressionTest () : TestCase ("HWMP target flags regression test"),
46
                                                    m_nodes (0),
46
                                                    m_nodes (0),
47
                                                    m_time (Seconds (5))
47
                                                    m_time (Seconds (5)),
48
                                                    m_sentPktsCounterA (0),
49
                                                    m_sentPktsCounterB (0),
50
                                                    m_sentPktsCounterC (0)
48
{
51
{
49
}
52
}
50
53
 Lines 52-57    Link Here 
52
{
55
{
53
  delete m_nodes;
56
  delete m_nodes;
54
}
57
}
58
55
void
59
void
56
HwmpDoRfRegressionTest::DoRun ()
60
HwmpDoRfRegressionTest::DoRun ()
57
{
61
{
 Lines 69-74    Link Here 
69
73
70
  delete m_nodes, m_nodes = 0;
74
  delete m_nodes, m_nodes = 0;
71
}
75
}
76
72
void
77
void
73
HwmpDoRfRegressionTest::CreateNodes ()
78
HwmpDoRfRegressionTest::CreateNodes ()
74
{
79
{
 Lines 85-122    Link Here 
85
  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
90
  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
86
  mobility.Install (*m_nodes);
91
  mobility.Install (*m_nodes);
87
}
92
}
93
88
void
94
void
89
HwmpDoRfRegressionTest::InstallApplications ()
95
HwmpDoRfRegressionTest::InstallApplications ()
90
{
96
{
91
  UdpEchoServerHelper echoServer (9);
97
  // server socket A
92
  ApplicationContainer serverApps = echoServer.Install (m_nodes->Get (0));
98
  m_serverSocketA = Socket::CreateSocket (m_nodes->Get (0), TypeId::LookupByName ("ns3::UdpSocketFactory"));
93
  serverApps.Start (Seconds (0.0));
99
  m_serverSocketA->Bind (InetSocketAddress (Ipv4Address::GetAny (), 9));
94
  serverApps.Stop (m_time);
100
  m_serverSocketA->SetRecvCallback (MakeCallback (&HwmpDoRfRegressionTest::HandleReadServer, this));
95
  UdpEchoClientHelper echoClient (m_interfaces.GetAddress (0), 9);
101
96
  echoClient.SetAttribute ("MaxPackets", UintegerValue (300));
102
  // server socket B
97
  echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
103
  m_serverSocketB = Socket::CreateSocket (m_nodes->Get (3), TypeId::LookupByName ("ns3::UdpSocketFactory"));
98
  echoClient.SetAttribute ("PacketSize", UintegerValue (100));
104
  m_serverSocketB->Bind (InetSocketAddress (Ipv4Address::GetAny (), 10));
99
  //Install first client
105
  m_serverSocketB->SetRecvCallback (MakeCallback (&HwmpDoRfRegressionTest::HandleReadServer, this));
100
  ApplicationContainer clientApps = echoClient.Install (m_nodes->Get (1));
106
101
  clientApps.Start (Seconds (2.2));
107
  // client socket A
102
  clientApps.Stop (m_time);
108
  m_clientSocketA = Socket::CreateSocket (m_nodes->Get (1), TypeId::LookupByName ("ns3::UdpSocketFactory"));
103
  //Install second client
109
  m_clientSocketA->Bind ();
104
  clientApps = echoClient.Install (m_nodes->Get (2));
110
  m_clientSocketA->Connect (InetSocketAddress (m_interfaces.GetAddress (0), 9));
105
  clientApps.Start (Seconds (2.0));
111
  m_clientSocketA->SetRecvCallback (MakeCallback (&HwmpDoRfRegressionTest::HandleReadClient, this));
106
  clientApps.Stop (m_time);
112
  Simulator::ScheduleWithContext (m_clientSocketA->GetNode ()->GetId (), Seconds (2.2),
107
  //Install second server and attach client to it:
113
                                  &HwmpDoRfRegressionTest::SendDataA, this, m_clientSocketA);
108
  UdpEchoServerHelper echoServer1 (10);
114
109
  serverApps = echoServer1.Install (m_nodes->Get (3));
115
  // client socket B
110
  serverApps.Start (Seconds (0.0));
116
  m_clientSocketB = Socket::CreateSocket (m_nodes->Get (2), TypeId::LookupByName ("ns3::UdpSocketFactory"));
111
  serverApps.Stop (m_time);
117
  m_clientSocketB->Bind ();
112
  UdpEchoClientHelper echoClient1 (m_interfaces.GetAddress (3), 10);
118
  m_clientSocketB->Connect (InetSocketAddress (m_interfaces.GetAddress (0), 9));
113
  echoClient1.SetAttribute ("MaxPackets", UintegerValue (300));
119
  m_clientSocketB->SetRecvCallback (MakeCallback (&HwmpDoRfRegressionTest::HandleReadClient, this));
114
  echoClient1.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
120
  Simulator::ScheduleWithContext (m_clientSocketB->GetNode ()->GetId (), Seconds (2.0),
115
  echoClient1.SetAttribute ("PacketSize", UintegerValue (100));
121
                                  &HwmpDoRfRegressionTest::SendDataB, this, m_clientSocketB);
116
  clientApps = echoClient1.Install (m_nodes->Get (0));
122
117
  clientApps.Start (Seconds (2.4));
123
  // client socket C
118
  clientApps.Stop (m_time);
124
  m_clientSocketB = Socket::CreateSocket (m_nodes->Get (0), TypeId::LookupByName ("ns3::UdpSocketFactory"));
125
  m_clientSocketB->Bind ();
126
  m_clientSocketB->Connect (InetSocketAddress (m_interfaces.GetAddress (3), 10));
127
  m_clientSocketB->SetRecvCallback (MakeCallback (&HwmpDoRfRegressionTest::HandleReadClient, this));
128
  Simulator::ScheduleWithContext (m_clientSocketB->GetNode ()->GetId (), Seconds (2.4),
129
                                  &HwmpDoRfRegressionTest::SendDataC, this, m_clientSocketB);
119
}
130
}
131
120
void
132
void
121
HwmpDoRfRegressionTest::CreateDevices ()
133
HwmpDoRfRegressionTest::CreateDevices ()
122
{
134
{
 Lines 160-162    Link Here 
160
    }
172
    }
161
}
173
}
162
174
175
void
176
HwmpDoRfRegressionTest::SendDataA (Ptr<Socket> socket)
177
{
178
  if ((Simulator::Now () < m_time) && (m_sentPktsCounterA < 300))
179
    {
180
      socket->Send (Create<Packet> (100));
181
      m_sentPktsCounterA ++;
182
      Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (1.0),
183
                                      &HwmpDoRfRegressionTest::SendDataA, this, socket);
184
    }
185
}
186
187
void
188
HwmpDoRfRegressionTest::SendDataB (Ptr<Socket> socket)
189
{
190
  if ((Simulator::Now () < m_time) && (m_sentPktsCounterA < 300))
191
    {
192
      socket->Send (Create<Packet> (100));
193
      m_sentPktsCounterB ++;
194
      Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (1.0),
195
                                      &HwmpDoRfRegressionTest::SendDataB, this, socket);
196
    }
197
}
198
199
void
200
HwmpDoRfRegressionTest::SendDataC (Ptr<Socket> socket)
201
{
202
  if ((Simulator::Now () < m_time) && (m_sentPktsCounterA < 300))
203
    {
204
      socket->Send (Create<Packet> (100));
205
      m_sentPktsCounterC ++;
206
      Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (1.0),
207
                                      &HwmpDoRfRegressionTest::SendDataC, this, socket);
208
    }
209
}
210
211
void
212
HwmpDoRfRegressionTest::HandleReadServer (Ptr<Socket> socket)
213
{
214
  Ptr<Packet> packet;
215
  Address from;
216
  while ((packet = socket->RecvFrom (from)))
217
    {
218
      packet->RemoveAllPacketTags ();
219
      packet->RemoveAllByteTags ();
220
221
      socket->SendTo (packet, 0, from);
222
    }
223
}
224
225
void
226
HwmpDoRfRegressionTest::HandleReadClient (Ptr<Socket> socket)
227
{
228
  Ptr<Packet> packet;
229
  Address from;
230
  while ((packet = socket->RecvFrom (from)))
231
    {
232
    }
233
}
(-)a/src/mesh/test/dot11s/hwmp-target-flags-regression.h (+54 lines)
 Lines 84-88    Link Here 
84
  void CreateDevices ();
84
  void CreateDevices ();
85
  void InstallApplications ();
85
  void InstallApplications ();
86
  void ResetPosition ();
86
  void ResetPosition ();
87
88
  /// Server-side socket
89
  Ptr<Socket> m_serverSocketA;
90
  /// Server-side socket
91
  Ptr<Socket> m_serverSocketB;
92
  /// Client-side socket
93
  Ptr<Socket> m_clientSocketA;
94
  /// Client-side socket
95
  Ptr<Socket> m_clientSocketB;
96
  /// Client-side socket
97
  Ptr<Socket> m_clientSocketC;
98
99
  // sent packets counter A
100
  uint32_t m_sentPktsCounterA;
101
  // sent packets counter B
102
  uint32_t m_sentPktsCounterB;
103
  // sent packets counter C
104
  uint32_t m_sentPktsCounterC;
105
106
  /**
107
   * Send data A
108
   * \param socket the sending socket
109
   */
110
  void SendDataA (Ptr<Socket> socket);
111
112
  /**
113
   * Send data B
114
   * \param socket the sending socket
115
   */
116
  void SendDataB (Ptr<Socket> socket);
117
118
  /**
119
   * Send data C
120
   * \param socket the sending socket
121
   */
122
  void SendDataC (Ptr<Socket> socket);
123
124
  /**
125
   * \brief Handle a packet reception.
126
   *
127
   * This function is called by lower layers.
128
   *
129
   * \param socket the socket the packet was received to.
130
   */
131
  void HandleReadServer (Ptr<Socket> socket);
132
133
  /**
134
   * \brief Handle a packet reception.
135
   *
136
   * This function is called by lower layers.
137
   *
138
   * \param socket the socket the packet was received to.
139
   */
140
  void HandleReadClient (Ptr<Socket> socket);
87
};
141
};
88
142
(-)a/src/mesh/test/flame/flame-regression.cc (-13 / +49 lines)
 Lines 30-36    Link Here 
30
#include "ns3/ipv4-address-helper.h"
30
#include "ns3/ipv4-address-helper.h"
31
#include "ns3/abort.h"
31
#include "ns3/abort.h"
32
#include "ns3/pcap-test.h"
32
#include "ns3/pcap-test.h"
33
#include "ns3/udp-echo-helper.h"
34
#include "ns3/mobility-model.h"
33
#include "ns3/mobility-model.h"
35
#include <sstream>
34
#include <sstream>
36
35
 Lines 44-50    Link Here 
44
43
45
FlameRegressionTest::FlameRegressionTest () : TestCase ("FLAME regression test"),
44
FlameRegressionTest::FlameRegressionTest () : TestCase ("FLAME regression test"),
46
                                              m_nodes (0),
45
                                              m_nodes (0),
47
                                              m_time (Seconds (10))
46
                                              m_time (Seconds (10)),
47
                                              m_sentPktsCounter (0)
48
{
48
{
49
}
49
}
50
50
 Lines 125-141    Link Here 
125
void
125
void
126
FlameRegressionTest::InstallApplications ()
126
FlameRegressionTest::InstallApplications ()
127
{
127
{
128
  UdpEchoServerHelper echoServer (9);
128
  // client socket
129
  ApplicationContainer serverApps = echoServer.Install (m_nodes->Get (0));
129
  m_clientSocket = Socket::CreateSocket (m_nodes->Get (2), TypeId::LookupByName ("ns3::UdpSocketFactory"));
130
  serverApps.Start (Seconds (0.0));
130
  m_clientSocket->Bind ();
131
  serverApps.Stop (m_time);
131
  m_clientSocket->Connect (InetSocketAddress (m_interfaces.GetAddress (0), 9));
132
  UdpEchoClientHelper echoClient (m_interfaces.GetAddress (0), 9);
132
  m_clientSocket->SetRecvCallback (MakeCallback (&FlameRegressionTest::HandleReadClient, this));
133
  echoClient.SetAttribute ("MaxPackets", UintegerValue (300));
133
  Simulator::ScheduleWithContext (m_clientSocket->GetNode ()->GetId (), Seconds (1.0),
134
  echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.1)));
134
                                  &FlameRegressionTest::SendData, this, m_clientSocket);
135
  echoClient.SetAttribute ("PacketSize", UintegerValue (20));
135
136
  ApplicationContainer clientApps = echoClient.Install (m_nodes->Get (2));
136
  // server socket
137
  clientApps.Start (Seconds (1.0));
137
  m_serverSocket = Socket::CreateSocket (m_nodes->Get (0), TypeId::LookupByName ("ns3::UdpSocketFactory"));
138
  clientApps.Stop (m_time);
138
  m_serverSocket->Bind (InetSocketAddress (Ipv4Address::GetAny (), 9));
139
  m_serverSocket->SetRecvCallback (MakeCallback (&FlameRegressionTest::HandleReadServer, this));
139
}
140
}
140
141
141
void
142
void
 Lines 147-149    Link Here 
147
    }
148
    }
148
}
149
}
149
150
151
void
152
FlameRegressionTest::SendData (Ptr<Socket> socket)
153
{
154
  if ((Simulator::Now () < m_time) && (m_sentPktsCounter < 300))
155
    {
156
      socket->Send (Create<Packet> (20));
157
      m_sentPktsCounter ++;
158
      Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (1.1),
159
                                      &FlameRegressionTest::SendData, this, socket);
160
    }
161
}
162
163
void
164
FlameRegressionTest::HandleReadServer (Ptr<Socket> socket)
165
{
166
  Ptr<Packet> packet;
167
  Address from;
168
  while ((packet = socket->RecvFrom (from)))
169
    {
170
      packet->RemoveAllPacketTags ();
171
      packet->RemoveAllByteTags ();
172
173
      socket->SendTo (packet, 0, from);
174
    }
175
}
176
177
void
178
FlameRegressionTest::HandleReadClient (Ptr<Socket> socket)
179
{
180
  Ptr<Packet> packet;
181
  Address from;
182
  while ((packet = socket->RecvFrom (from)))
183
    {
184
    }
185
}
(-)a/src/mesh/test/flame/flame-regression.h (+32 lines)
 Lines 73-77    Link Here 
73
  void CreateNodes ();
73
  void CreateNodes ();
74
  void CreateDevices ();
74
  void CreateDevices ();
75
  void InstallApplications ();
75
  void InstallApplications ();
76
77
  /// Server-side socket
78
  Ptr<Socket> m_serverSocket;
79
  /// Client-side socket
80
  Ptr<Socket> m_clientSocket;
81
82
  // sent packets counter
83
  uint32_t m_sentPktsCounter;
84
85
  /**
86
   * Send data
87
   * \param socket the sending socket
88
   */
89
  void SendData (Ptr<Socket> socket);
90
91
  /**
92
   * \brief Handle a packet reception.
93
   *
94
   * This function is called by lower layers.
95
   *
96
   * \param socket the socket the packet was received to.
97
   */
98
  void HandleReadServer (Ptr<Socket> socket);
99
100
  /**
101
   * \brief Handle a packet reception.
102
   *
103
   * This function is called by lower layers.
104
   *
105
   * \param socket the socket the packet was received to.
106
   */
107
  void HandleReadClient (Ptr<Socket> socket);
76
};
108
};
77
109
(-)a/src/mesh/wscript (-1 / +1 lines)
 Lines 1-7    Link Here 
1
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
1
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
2
2
3
def build(bld):
3
def build(bld):
4
    obj = bld.create_ns3_module('mesh', ['internet', 'wifi', 'applications'])
4
    obj = bld.create_ns3_module('mesh', ['internet', 'wifi'])
5
5
6
    obj.source = [
6
    obj.source = [
7
        'model/mesh-information-element-vector.cc',
7
        'model/mesh-information-element-vector.cc',

Return to bug 1941