22 #include "ns3/arp-l3-protocol.h"
23 #include "ns3/config.h"
24 #include "ns3/icmpv4-l4-protocol.h"
25 #include "ns3/icmpv6-l4-protocol.h"
26 #include "ns3/inet-socket-address.h"
27 #include "ns3/inet6-socket-address.h"
28 #include "ns3/ipv4-l3-protocol.h"
29 #include "ns3/ipv4-list-routing.h"
30 #include "ns3/ipv4-static-routing.h"
31 #include "ns3/ipv6-l3-protocol.h"
32 #include "ns3/ipv6-list-routing.h"
33 #include "ns3/ipv6-static-routing.h"
36 #include "ns3/simple-channel.h"
37 #include "ns3/simple-net-device.h"
38 #include "ns3/simulator.h"
39 #include "ns3/socket-factory.h"
40 #include "ns3/tcp-l4-protocol.h"
41 #include "ns3/tcp-socket-factory.h"
43 #include "ns3/traffic-control-layer.h"
44 #include "ns3/udp-l4-protocol.h"
45 #include "ns3/uinteger.h"
64 void DoRun()
override;
65 void DoTeardown()
override;
128 arp->SetTrafficControl(tc);
134 ipv4->SetRoutingProtocol(ipv4Routing);
136 ipv4Routing->AddRoutingProtocol(ipv4staticRouting, 0);
156 ipv6->SetRoutingProtocol(ipv6Routing);
158 ipv6Routing->AddRoutingProtocol(ipv6staticRouting, 0);
166 ipv6->RegisterExtensions();
167 ipv6->RegisterOptions();
184 uint32_t ndid =
ipv4->AddInterface(dev);
186 ipv4->AddAddress(ndid, ipv4Addr);
190 ndid = ipv6->AddInterface(dev);
192 ipv6->AddAddress(ndid, ipv6Addr);
222 server1 = sockFactory0->CreateSocket();
223 server2 = sockFactory0->CreateSocket();
224 server3 = sockFactory0->CreateSocket();
225 server4 = sockFactory0->CreateSocket();
227 source1 = sockFactory1->CreateSocket();
228 source2 = sockFactory1->CreateSocket();
229 source3 = sockFactory1->CreateSocket();
230 source4 = sockFactory1->CreateSocket();
236 receivedAddr1 = addr;
242 receivedAddr2 = addr;
248 receivedAddr3 = addr;
254 receivedAddr4 = addr;
271 uint16_t port1 = 5000;
272 uint16_t port2 = 5001;
273 uint16_t port3 = 5002;
274 uint16_t port4 = 5003;
321 "Accepted address is of proper type");
324 "Accepted address is correct");
329 "IPv4 socket correctly ignored IPv6 connection");
334 "Accepted address is of proper type");
337 "Accepted address is correct");
342 "Accepted address is of proper type");
345 "Accepted address is correct");
351 Simulator::Destroy();
void SetUpSim()
Setup the test.
void ServerHandleConnectionCreated1(Ptr< Socket > s, const Address &addr)
Handle connection created (1).
Ptr< Socket > server4
Server socket (4).
Ptr< Socket > server2
Server socket (2).
void ServerHandleConnectionCreated3(Ptr< Socket > s, const Address &addr)
Handle connection created (3).
Address receivedAddr3
Received address (3).
Ptr< Socket > server3
Server socket (3).
void ServerHandleConnectionCreated4(Ptr< Socket > s, const Address &addr)
Handle connection created (4).
Address receivedAddr4
Received address (4).
Ptr< Socket > source1
Sending socket (1).
void ServerHandleConnectionCreated2(Ptr< Socket > s, const Address &addr)
Handle connection created (2).
Ptr< Socket > source2
Sending socket (2).
Ptr< Socket > server1
Server socket (1).
Address receivedAddr2
Received address (2).
void DoRun() override
Implementation to actually run this TestCase.
Address receivedAddr1
Received address (1).
Ptr< Socket > source3
Sending socket (3).
void DoTeardown() override
Implementation to do any local setup required for this TestCase.
Ptr< Socket > source4
Sending socket (4).
IPv6 dual stack TestSuite.
a polymophic address class
Ipv4 addresses are stored in host order in this class.
Access to the IPv4 forwarding table, interfaces, and configuration.
a class to store IPv4 address information on an interface
a class to represent an Ipv4 address mask
Describes an IPv6 address.
Access to the IPv6 forwarding table, interfaces, and configuration.
IPv6 address associated with an interface.
Describes an IPv6 prefix.
static Mac48Address ConvertFrom(const Address &address)
static Mac48Address Allocate()
Allocate a new Mac48Address.
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node.
Ptr< T > GetObject() const
Get a pointer to the requested aggregated Object.
void AggregateObject(Ptr< Object > other)
Aggregate two Objects together.
void SetAcceptCallback(Callback< bool, Ptr< Socket >, const Address & > connectionRequest, Callback< void, Ptr< Socket >, const Address & > newConnectionCreated)
Accept connection requests from remote hosts.
virtual int Connect(const Address &address)=0
Initiate a connection to a remote host.
virtual int Bind(const Address &address)=0
Allocate a local endpoint for this socket.
virtual int Listen()=0
Listen for incoming connections.
API to create TCP socket instances.
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
@ UNIT
This test suite implements a Unit Test.
Callback< R, Args... > MakeNullCallback()
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
Ptr< Node > CreateDualStackNode()
static Ipv6DualStackTestSuite g_ipv6DualStackTestSuite
Static variable for test initialization.
Ptr< SimpleNetDevice > AddSimpleNetDevice(Ptr< Node > node, Ipv4Address v4Addr, Ipv4Mask v4Mask, Ipv6Address v6Addr, Ipv6Prefix v6Prefix)
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...