21 #include "ns3/simulator.h" 
   24 #include "ns3/boolean.h" 
   25 #include "ns3/inet6-socket-address.h" 
   27 #include "ns3/simple-net-device.h" 
   29 #include "ns3/ipv6-interface.h" 
   30 #include "ns3/ipv6-l3-protocol.h" 
   31 #include "ns3/icmpv6-l4-protocol.h" 
   47   virtual void DoRun ();
 
   51   TestCase (
"Verify the IPv6 layer 3 protocol")
 
   75   ipv6->Insert (icmpv6);
 
   79   interface->SetDevice (device);
 
   80   interface->SetNode (node);
 
   81   index = ipv6->AddIpv6Interface (interface);
 
   86   interface2->SetDevice (device2);
 
   87   interface2->SetNode (node);
 
   88   index = ipv6->AddIpv6Interface (interface2);
 
   93                          "Should be link local??");
 
   97                          "interface has always a link-local address"); 
 
  103   interface->AddAddress (ifaceAddr1);
 
  106   interface->AddAddress (ifaceAddr2);
 
  110   interface2->AddAddress (ifaceAddr3);
 
  112   uint32_t num = interface->GetNAddresses ();
 
  115   num = interface2->GetNAddresses ();
 
  118   interface->RemoveAddress (2);
 
  119   num = interface->GetNAddresses ();
 
  124                          "Should be the interface address 1?");
 
  126   index = ipv6->GetInterfaceForPrefix (
"2001:1234:5678:9000::0",
 
  130   index = ipv6->GetInterfaceForAddress (
"2001:ffff:5678:9001::2");
 
  133   index = ipv6->GetInterfaceForAddress (
"2001:ffff:5678:9000::1"); 
 
  137   output = interface->RemoveAddress (
Ipv6Address (
"2001:1234:5678:9000::1"));
 
  139   num = interface->GetNAddresses ();
 
  143   output = interface->RemoveAddress (
Ipv6Address (
"2001:1234:5678:9000::1"));
 
  145                          "Removed non-existent address??");
 
  146   num = interface->GetNAddresses ();
 
  150   output = interface->RemoveAddress (Ipv6Address::GetLoopback ());
 
  152                          "Able to remove loopback address??");
 
  153   num = interface->GetNAddresses ();
 
  157   index = ipv6->GetInterfaceForAddress (
"2001:ffff:5678:9001::2");
 
  158   bool result = ipv6->RemoveAddress (index, 
Ipv6Address  
  159                                      (
"2001:ffff:5678:9001::2"));
 
  161   num = interface2->GetNAddresses ();
 
  166                                 (
"2001:ffff:5678:9001::2"));
 
  168   num = interface2->GetNAddresses ();
 
  172   result = ipv6->RemoveAddress (index, Ipv6Address::GetLoopback ());
 
  174   num = interface2->GetNAddresses ();
 
  177   Simulator::Destroy ();
 
AttributeValue implementation for Boolean. 
 
void AggregateObject(Ptr< Object > other)
Aggregate two Objects together. 
 
bool IsLinkLocal() const 
If the IPv6 address is a link-local address (fe80::/64). 
 
virtual ~Ipv6L3ProtocolTestCase()
 
IPv6 address associated with an interface. 
 
This test suite implements a Unit Test. 
 
static IPv6L3ProtocolTestSuite g_ipv6protocolTestSuite
Static variable for test initialization. 
 
virtual void DoRun()
Implementation to actually run this TestCase. 
 
Ipv6Address GetAddress() const 
Get the IPv6 address. 
 
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite. 
 
#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. 
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
Describes an IPv6 address. 
 
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node. 
 
Describes an IPv6 prefix. 
 
Ptr< T > CreateObject(void)
Create an object by type, with varying number of constructor parameters. 
 
IPv6L3ProtocolTestSuite()