|
|
| 21 |
#include "ns3/test.h" |
21 |
#include "ns3/test.h" |
| 22 |
#include "ns3/socket-factory.h" |
22 |
#include "ns3/socket-factory.h" |
| 23 |
#include "ns3/udp-socket-factory.h" |
23 |
#include "ns3/udp-socket-factory.h" |
|
|
24 |
#include "ns3/tcp-socket-factory.h" |
| 24 |
#include "ns3/simulator.h" |
25 |
#include "ns3/simulator.h" |
| 25 |
#include "ns3/simple-channel.h" |
26 |
#include "ns3/simple-channel.h" |
| 26 |
#include "ns3/simple-net-device.h" |
27 |
#include "ns3/simple-net-device.h" |
|
|
| 36 |
#include "ns3/ipv4-l3-protocol.h" |
37 |
#include "ns3/ipv4-l3-protocol.h" |
| 37 |
#include "ns3/icmpv4-l4-protocol.h" |
38 |
#include "ns3/icmpv4-l4-protocol.h" |
| 38 |
#include "ns3/udp-l4-protocol.h" |
39 |
#include "ns3/udp-l4-protocol.h" |
|
|
40 |
#include "ns3/tcp-l4-protocol.h" |
| 39 |
#include "ns3/ipv4-static-routing.h" |
41 |
#include "ns3/ipv4-static-routing.h" |
|
|
42 |
#include "ns3/tcp-socket.h" |
| 43 |
#include "ns3/ipv4-address.h" |
| 40 |
|
44 |
|
| 41 |
#include <string> |
45 |
#include <string> |
| 42 |
#include <limits> |
46 |
#include <limits> |
| 43 |
|
47 |
|
| 44 |
using namespace ns3; |
48 |
using namespace ns3; |
| 45 |
|
49 |
|
|
|
50 |
NS_LOG_COMPONENT_DEFINE ("Ipv4ForwardingTest"); |
| 51 |
|
| 46 |
static void |
52 |
static void |
| 47 |
AddInternetStack (Ptr<Node> node) |
53 |
AddInternetStack (Ptr<Node> node) |
| 48 |
{ |
54 |
{ |
|
Lines 62-67
AddInternetStack (Ptr<Node> node)
|
Link Here
|
|---|
|
| 62 |
//UDP |
68 |
//UDP |
| 63 |
Ptr<UdpL4Protocol> udp = CreateObject<UdpL4Protocol> (); |
69 |
Ptr<UdpL4Protocol> udp = CreateObject<UdpL4Protocol> (); |
| 64 |
node->AggregateObject (udp); |
70 |
node->AggregateObject (udp); |
|
|
71 |
//UDP |
| 72 |
Ptr<TcpL4Protocol> tcp = CreateObject<TcpL4Protocol> (); |
| 73 |
node->AggregateObject (tcp); |
| 65 |
} |
74 |
} |
| 66 |
|
75 |
|
| 67 |
|
76 |
|
|
Lines 102-108
Ipv4ForwardingTest::DoSendData (Ptr<Socket> socket, std::string to)
|
Link Here
|
|---|
|
| 102 |
void |
111 |
void |
| 103 |
Ipv4ForwardingTest::SendData (Ptr<Socket> socket, std::string to) |
112 |
Ipv4ForwardingTest::SendData (Ptr<Socket> socket, std::string to) |
| 104 |
{ |
113 |
{ |
| 105 |
m_receivedPacket = Create<Packet> (); |
|
|
| 106 |
Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (0), |
114 |
Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (0), |
| 107 |
&Ipv4ForwardingTest::DoSendData, this, socket, to); |
115 |
&Ipv4ForwardingTest::DoSendData, this, socket, to); |
| 108 |
Simulator::Run (); |
116 |
Simulator::Run (); |
|
Lines 181-199
Ipv4ForwardingTest::DoRun (void)
|
Link Here
|
|---|
|
| 181 |
txDev->SetChannel (channel2); |
189 |
txDev->SetChannel (channel2); |
| 182 |
|
190 |
|
| 183 |
// Create the UDP sockets |
191 |
// Create the UDP sockets |
| 184 |
Ptr<SocketFactory> rxSocketFactory = rxNode->GetObject<UdpSocketFactory> (); |
192 |
Ptr<SocketFactory> udpRxSocketFactory = rxNode->GetObject<UdpSocketFactory> (); |
| 185 |
Ptr<Socket> rxSocket = rxSocketFactory->CreateSocket (); |
193 |
Ptr<Socket> udpRxSocket = udpRxSocketFactory->CreateSocket (); |
| 186 |
NS_TEST_EXPECT_MSG_EQ (rxSocket->Bind (InetSocketAddress (Ipv4Address ("10.0.0.2"), 1234)), 0, "trivial"); |
194 |
NS_TEST_EXPECT_MSG_EQ (udpRxSocket->Bind (InetSocketAddress (Ipv4Address ("10.0.0.2"), 1234)), 0, "trivial"); |
| 187 |
rxSocket->SetRecvCallback (MakeCallback (&Ipv4ForwardingTest::ReceivePkt, this)); |
195 |
udpRxSocket->SetRecvCallback (MakeCallback (&Ipv4ForwardingTest::ReceivePkt, this)); |
| 188 |
|
196 |
|
| 189 |
Ptr<SocketFactory> txSocketFactory = txNode->GetObject<UdpSocketFactory> (); |
197 |
Ptr<SocketFactory> udpTxSocketFactory = txNode->GetObject<UdpSocketFactory> (); |
| 190 |
Ptr<Socket> txSocket = txSocketFactory->CreateSocket (); |
198 |
Ptr<Socket> udpTxSocket = udpTxSocketFactory->CreateSocket (); |
| 191 |
txSocket->SetAllowBroadcast (true); |
199 |
udpTxSocket->SetAllowBroadcast (true); |
| 192 |
|
200 |
|
| 193 |
// ------ Now the tests ------------ |
201 |
// ------ Now the tests ------------ |
| 194 |
|
202 |
|
| 195 |
// Unicast test |
203 |
// Unicast test |
| 196 |
SendData (txSocket, "10.0.0.2"); |
204 |
SendData (udpTxSocket, "10.0.0.2"); |
| 197 |
NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 123, "IPv4 Forwarding on"); |
205 |
NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 123, "IPv4 Forwarding on"); |
| 198 |
|
206 |
|
| 199 |
m_receivedPacket->RemoveAllByteTags (); |
207 |
m_receivedPacket->RemoveAllByteTags (); |
|
Lines 201-209
Ipv4ForwardingTest::DoRun (void)
|
Link Here
|
|---|
|
| 201 |
|
209 |
|
| 202 |
Ptr<Ipv4> ipv4 = fwNode->GetObject<Ipv4> (); |
210 |
Ptr<Ipv4> ipv4 = fwNode->GetObject<Ipv4> (); |
| 203 |
ipv4->SetAttribute("IpForward", BooleanValue (false)); |
211 |
ipv4->SetAttribute("IpForward", BooleanValue (false)); |
| 204 |
SendData (txSocket, "10.0.0.2"); |
212 |
SendData (udpTxSocket, "10.0.0.2"); |
| 205 |
NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 0, "IPv4 Forwarding off"); |
213 |
NS_TEST_EXPECT_MSG_EQ (m_receivedPacket, 0, "IPv4 Forwarding off; no received packet"); |
|
|
214 |
|
| 215 |
Simulator::Destroy (); |
| 216 |
|
| 217 |
} |
| 218 |
|
| 219 |
class Ipv4BindToNetDeviceTest : public TestCase |
| 220 |
{ |
| 221 |
Ptr<Packet> m_receivedPacket; |
| 222 |
void DoSendData (Ptr<Socket> socket, std::string to, int expectedReturnValue); |
| 223 |
void SendData (Ptr<Socket> socket, std::string to, int expectedReturnValue); |
| 224 |
//, std::string to, int expectedReturnValue |
| 225 |
void OnConnection (Ptr<Socket> socket |
| 226 |
// , const ns3::Address& |
| 227 |
); |
| 228 |
|
| 229 |
public: |
| 230 |
virtual void DoRun (void); |
| 231 |
Ipv4BindToNetDeviceTest (); |
| 232 |
|
| 233 |
void ReceivePkt (Ptr<Socket> socket); |
| 234 |
}; |
| 235 |
|
| 236 |
Ipv4BindToNetDeviceTest::Ipv4BindToNetDeviceTest () |
| 237 |
: TestCase ("Test that Socket::BindToNetDevice () works") |
| 238 |
{ |
| 239 |
} |
| 240 |
|
| 241 |
void Ipv4BindToNetDeviceTest::ReceivePkt (Ptr<Socket> socket) |
| 242 |
{ |
| 243 |
NS_LOG_DEBUG ("Recv cb"); |
| 244 |
uint32_t availableData; |
| 245 |
availableData = socket->GetRxAvailable (); |
| 246 |
m_receivedPacket = socket->Recv (std::numeric_limits<uint32_t>::max (), 0); |
| 247 |
NS_ASSERT (availableData == m_receivedPacket->GetSize ()); |
| 248 |
} |
| 249 |
|
| 250 |
void |
| 251 |
Ipv4BindToNetDeviceTest::DoSendData (Ptr<Socket> socket, std::string to, int expectedReturnValue) |
| 252 |
{ |
| 253 |
Address realTo = InetSocketAddress (Ipv4Address (to.c_str ()), 1234); |
| 254 |
NS_TEST_EXPECT_MSG_EQ (socket->SendTo (Create<Packet> (123), 0, realTo), |
| 255 |
expectedReturnValue, "SendTo failure"); |
| 256 |
} |
| 257 |
|
| 258 |
void |
| 259 |
Ipv4BindToNetDeviceTest::SendData (Ptr<Socket> socket, std::string to, int expectedReturnValue) |
| 260 |
{ |
| 261 |
Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (0), |
| 262 |
&Ipv4BindToNetDeviceTest::DoSendData, this, socket, to, expectedReturnValue); |
| 263 |
} |
| 264 |
|
| 265 |
|
| 266 |
void |
| 267 |
Ipv4BindToNetDeviceTest::OnConnection (Ptr<Socket> socket |
| 268 |
// , const ns3::Address& |
| 269 |
) |
| 270 |
{ |
| 271 |
NS_LOG_DEBUG ("Send connection"); |
| 272 |
int ret = socket->Send(Create<Packet> (123)); |
| 273 |
NS_TEST_EXPECT_MSG_EQ ( ret, 0, "Could not send packet"); |
| 274 |
} |
| 275 |
|
| 276 |
void |
| 277 |
Ipv4BindToNetDeviceTest::DoRun (void) |
| 278 |
{ |
| 279 |
/** Create topology |
| 280 |
________________________________________ |
| 281 |
| txNode | |
| 282 |
| txDev1 (10.0.0.1) | txDev2 (11.0.0.1) | |
| 283 |
|___________________|___________________| |
| 284 |
| | |
| 285 |
| | |
| 286 |
| | |
| 287 |
| | |
| 288 |
________________________________________ |
| 289 |
| rxNode | |
| 290 |
| rxDev1 (10.0.0.2) | rxDev2 (11.0.0.2) | |
| 291 |
|___________________|___________________| |
| 292 |
**/ |
| 293 |
|
| 294 |
// Receiver Node |
| 295 |
Ptr<Node> rxNode = CreateObject<Node> (); |
| 296 |
AddInternetStack (rxNode); |
| 297 |
Ptr<SimpleNetDevice> rxDev1; |
| 298 |
Ptr<SimpleNetDevice> rxDev2; |
| 299 |
{ // first interface |
| 300 |
rxDev1 = CreateObject<SimpleNetDevice> (); |
| 301 |
rxDev1->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ())); |
| 302 |
rxNode->AddDevice (rxDev1); |
| 303 |
Ptr<Ipv4> ipv4 = rxNode->GetObject<Ipv4> (); |
| 304 |
uint32_t netdev_idx = ipv4->AddInterface (rxDev1); |
| 305 |
Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.2"), Ipv4Mask (0xffff0000U)); |
| 306 |
ipv4->AddAddress (netdev_idx, ipv4Addr); |
| 307 |
ipv4->SetUp (netdev_idx); |
| 308 |
} |
| 309 |
{ // second interface |
| 310 |
rxDev2 = CreateObject<SimpleNetDevice> (); |
| 311 |
rxDev2->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ())); |
| 312 |
rxNode->AddDevice (rxDev2); |
| 313 |
Ptr<Ipv4> ipv4 = rxNode->GetObject<Ipv4> (); |
| 314 |
uint32_t netdev_idx = ipv4->AddInterface (rxDev2); |
| 315 |
Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("11.0.0.2"), Ipv4Mask (0xffff0000U)); |
| 316 |
ipv4->AddAddress (netdev_idx, ipv4Addr); |
| 317 |
ipv4->SetUp (netdev_idx); |
| 318 |
} |
| 319 |
|
| 320 |
// Sender Node |
| 321 |
Ptr<Node> txNode = CreateObject<Node> (); |
| 322 |
AddInternetStack (txNode); |
| 323 |
Ptr<SimpleNetDevice> txDev1; |
| 324 |
Ptr<SimpleNetDevice> txDev2; |
| 325 |
{ |
| 326 |
// first interface |
| 327 |
txDev1 = CreateObject<SimpleNetDevice> (); |
| 328 |
txDev1->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ())); |
| 329 |
txNode->AddDevice (txDev1); |
| 330 |
Ptr<Ipv4> ipv4 = txNode->GetObject<Ipv4> (); |
| 331 |
uint32_t netdev_idx = ipv4->AddInterface (txDev1); |
| 332 |
Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.1"), Ipv4Mask (0xffff0000U)); |
| 333 |
ipv4->AddAddress (netdev_idx, ipv4Addr); |
| 334 |
ipv4->SetUp (netdev_idx); |
| 335 |
} |
| 336 |
{ |
| 337 |
// second interface |
| 338 |
txDev2 = CreateObject<SimpleNetDevice> (); |
| 339 |
txDev2->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ())); |
| 340 |
txNode->AddDevice (txDev2); |
| 341 |
Ptr<Ipv4> ipv4 = txNode->GetObject<Ipv4> (); |
| 342 |
uint32_t netdev_idx = ipv4->AddInterface (txDev2); |
| 343 |
Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("11.0.0.1"), Ipv4Mask (0xffff0000U)); |
| 344 |
ipv4->AddAddress (netdev_idx, ipv4Addr); |
| 345 |
ipv4->SetUp (netdev_idx); |
| 346 |
} |
| 347 |
|
| 348 |
// link the two nodes |
| 349 |
Ptr<SimpleChannel> channel1 = CreateObject<SimpleChannel> (); |
| 350 |
rxDev1->SetChannel (channel1); |
| 351 |
txDev1->SetChannel (channel1); |
| 352 |
|
| 353 |
Ptr<SimpleChannel> channel2 = CreateObject<SimpleChannel> (); |
| 354 |
rxDev2->SetChannel (channel2); |
| 355 |
txDev2->SetChannel (channel2); |
| 356 |
|
| 357 |
// Create the UDP sockets |
| 358 |
Ptr<SocketFactory> udpRxSocketFactory = rxNode->GetObject<UdpSocketFactory> (); |
| 359 |
Ptr<Socket> udpRxSocket = udpRxSocketFactory->CreateSocket (); |
| 360 |
NS_TEST_EXPECT_MSG_EQ (udpRxSocket->Bind (InetSocketAddress (Ipv4Address ("10.0.0.2"), 1234)), 0, "trivial"); |
| 361 |
// Must call BindToNetDevice() after Bind() |
| 362 |
udpRxSocket->SetRecvCallback (MakeCallback (&Ipv4BindToNetDeviceTest::ReceivePkt, this)); |
| 363 |
|
| 364 |
Ptr<SocketFactory> udpTxSocketFactory = txNode->GetObject<UdpSocketFactory> (); |
| 365 |
Ptr<Socket> udpTxSocket = udpTxSocketFactory->CreateSocket (); |
| 366 |
udpTxSocket->SetAllowBroadcast (true); |
| 367 |
|
| 368 |
// Create the TCP sockets |
| 369 |
Ptr<SocketFactory> tcpRxSocketFactory = rxNode->GetObject<TcpSocketFactory> (); |
| 370 |
Ptr<Socket> tcpRxSocket = tcpRxSocketFactory->CreateSocket (); |
| 371 |
NS_TEST_EXPECT_MSG_EQ (tcpRxSocket->Bind (InetSocketAddress (Ipv4Address ("10.0.0.2"), 1234)), 0, "trivial"); |
| 372 |
// Must call BindToNetDevice() after Bind() |
| 373 |
tcpRxSocket->SetRecvCallback (MakeCallback (&Ipv4BindToNetDeviceTest::ReceivePkt, this)); |
| 374 |
|
| 375 |
Ptr<SocketFactory> tcpTxSocketFactory = txNode->GetObject<UdpSocketFactory> (); |
| 376 |
// Ptr<TcpSocket> tcpTxSocket = DynamicCast<TcpSocket>(tcpTxSocketFactory->CreateSocket () ); |
| 377 |
Ptr<Socket> tcpTxSocket = tcpTxSocketFactory->CreateSocket (); |
| 378 |
// tcpTxSocket->SetAllowBroadcast (true); |
| 379 |
|
| 380 |
// ------ Now the UDP tests ------------ |
| 381 |
|
| 382 |
// Test that data is successful when RxNode binds to rxDev1 and TxNode binds |
| 383 |
// to txDev1 |
| 384 |
NS_LOG_DEBUG ("Bind test case 1"); |
| 385 |
udpRxSocket->BindToNetDevice (rxDev1); |
| 386 |
udpTxSocket->BindToNetDevice (txDev1); |
| 387 |
SendData (udpTxSocket, "10.0.0.2", 123); // 123 is the expected Send() return value |
| 388 |
Simulator::Run (); |
| 389 |
NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 123, "Correctly bound NetDevices"); |
| 390 |
m_receivedPacket = 0; |
| 391 |
|
| 392 |
// All three other bind combinations should fail |
| 393 |
|
| 394 |
NS_LOG_DEBUG ("Bind test case 2"); |
| 395 |
udpTxSocket = udpTxSocketFactory->CreateSocket (); |
| 396 |
udpRxSocket->BindToNetDevice (rxDev1); |
| 397 |
udpTxSocket->BindToNetDevice (txDev2); |
| 398 |
SendData (udpTxSocket, "10.0.0.2", -1); |
| 399 |
Simulator::Run (); |
| 400 |
NS_TEST_EXPECT_MSG_EQ (m_receivedPacket, 0, "No received packet"); |
| 401 |
|
| 402 |
NS_LOG_DEBUG ("Bind test case 3"); |
| 403 |
udpTxSocket = udpTxSocketFactory->CreateSocket (); |
| 404 |
udpRxSocket->BindToNetDevice (rxDev2); |
| 405 |
udpTxSocket->BindToNetDevice (txDev2); |
| 406 |
SendData (udpTxSocket, "10.0.0.2", -1); |
| 407 |
Simulator::Run (); |
| 408 |
NS_TEST_EXPECT_MSG_EQ (m_receivedPacket, 0, "No received packet"); |
| 409 |
|
| 410 |
NS_LOG_DEBUG ("Bind test case 4"); |
| 411 |
udpTxSocket = udpTxSocketFactory->CreateSocket (); |
| 412 |
udpRxSocket->BindToNetDevice (rxDev2); |
| 413 |
udpTxSocket->BindToNetDevice (txDev1); |
| 414 |
SendData (udpTxSocket, "10.0.0.2", 123); |
| 415 |
Simulator::Run (); |
| 416 |
NS_TEST_EXPECT_MSG_EQ (m_receivedPacket, 0, "No received packet"); |
| 417 |
|
| 418 |
// ------ Now the TCP tests ------------ |
| 419 |
|
| 420 |
// Test that data is successful when RxNode binds to rxDev1 and TxNode binds |
| 421 |
// to txDev1 |
| 422 |
NS_LOG_DEBUG ("Bind test case 1"); |
| 423 |
InetSocketAddress serverAddr ("11.0.0.2", 1234 ); |
| 424 |
InetSocketAddress clientAddr ("11.0.0.1", 4321 ); |
| 425 |
|
| 426 |
// tcpRxSocket->BindToNetDevice (rxDev1); |
| 427 |
// tcpTxSocket->BindToNetDevice (txDev1); |
| 428 |
tcpTxSocket->Bind( clientAddr ); |
| 429 |
// tcpRxSocket->SetAcceptCallback( MakeNullCallback<bool, Ptr<Socket>, const ns3::Address& > (), |
| 430 |
// MakeCallback(&Ipv4BindToNetDeviceTest::OnConnection, this) ); |
| 431 |
|
| 432 |
tcpTxSocket->SetConnectCallback ( MakeCallback(&Ipv4BindToNetDeviceTest::OnConnection, this), |
| 433 |
MakeNullCallback<void, Ptr<Socket> > () |
| 434 |
); |
| 435 |
|
| 436 |
tcpTxSocket->Connect( serverAddr ); |
| 437 |
//! Make sure packet can only travel through channel2 |
| 438 |
channel1->BlackList(txDev1, rxDev1); |
| 439 |
|
| 440 |
// SendData (tcpTxSocket, "10.0.0.2", 123); // 123 is the expected Send() return value |
| 441 |
|
| 442 |
Simulator::Run (); |
| 443 |
NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 123, "Correctly bound NetDevices"); |
| 444 |
m_receivedPacket = 0; |
| 445 |
|
| 446 |
// All three other bind combinations should fail |
| 447 |
|
| 448 |
// NS_LOG_DEBUG ("Bind test case 2"); |
| 449 |
// tcpTxSocket = tcpTxSocketFactory->CreateSocket (); |
| 450 |
// tcpRxSocket->BindToNetDevice (rxDev1); |
| 451 |
// tcpTxSocket->BindToNetDevice (txDev2); |
| 452 |
// SendData (tcpTxSocket, "10.0.0.2", -1); |
| 453 |
// Simulator::Run (); |
| 454 |
// NS_TEST_EXPECT_MSG_EQ (m_receivedPacket, 0, "No received packet"); |
| 455 |
// |
| 456 |
// NS_LOG_DEBUG ("Bind test case 3"); |
| 457 |
// tcpTxSocket = tcpTxSocketFactory->CreateSocket (); |
| 458 |
// tcpRxSocket->BindToNetDevice (rxDev2); |
| 459 |
// tcpTxSocket->BindToNetDevice (txDev2); |
| 460 |
// SendData (tcpTxSocket, "10.0.0.2", -1); |
| 461 |
// Simulator::Run (); |
| 462 |
// NS_TEST_EXPECT_MSG_EQ (m_receivedPacket, 0, "No received packet"); |
| 463 |
// |
| 464 |
// NS_LOG_DEBUG ("Bind test case 4"); |
| 465 |
// tcpTxSocket = tcpTxSocketFactory->CreateSocket (); |
| 466 |
// tcpRxSocket->BindToNetDevice (rxDev2); |
| 467 |
// tcpTxSocket->BindToNetDevice (txDev1); |
| 468 |
// SendData (tcpTxSocket, "10.0.0.2", 123); |
| 469 |
// Simulator::Run (); |
| 470 |
// NS_TEST_EXPECT_MSG_EQ (m_receivedPacket, 0, "No received packet"); |
| 206 |
|
471 |
|
|
|
472 |
|
| 207 |
Simulator::Destroy (); |
473 |
Simulator::Destroy (); |
| 208 |
|
474 |
|
| 209 |
} |
475 |
} |
|
|
| 217 |
Ipv4ForwardingTestSuite () : TestSuite ("ipv4-forwarding", UNIT) |
483 |
Ipv4ForwardingTestSuite () : TestSuite ("ipv4-forwarding", UNIT) |
| 218 |
{ |
484 |
{ |
| 219 |
AddTestCase (new Ipv4ForwardingTest, TestCase::QUICK); |
485 |
AddTestCase (new Ipv4ForwardingTest, TestCase::QUICK); |
|
|
486 |
AddTestCase (new Ipv4BindToNetDeviceTest, TestCase::QUICK); |
| 220 |
} |
487 |
} |
| 221 |
} g_ipv4forwardingTestSuite; |
488 |
} g_ipv4forwardingTestSuite; |