Browse Source

Bug 1701 - Ipv6StaticRouting: the source address should match the destination scope

ndnSIM-v1
Tommaso Pecorella 12 years ago
parent
commit
7f9ede9841
  1. 1
      RELEASE_NOTES
  2. 7
      src/internet/model/ipv6-static-routing.cc

1
RELEASE_NOTES

@ -32,6 +32,7 @@ Bugs fixed
- Bug 1669 - ns-3 should support binding two and three (possibly more) arguments
- Bug 1689 - IPv6 shouldn't add a default gateway without checking the Router lifetime
- Bug 1700 - Ipv6RawSocket does not honor the bound address when sending packets
- Bug 1701 - Ipv6StaticRouting: the source address should match the destination scope
Known issues
------------

7
src/internet/model/ipv6-static-routing.cc

@ -302,7 +302,7 @@ Ptr<Ipv6Route> Ipv6StaticRouting::LookupStatic (Ipv6Address dst, Ptr<NetDevice>
}
else if (route->GetDest ().IsAny ()) /* default route */
{
rtentry->SetSource (SourceAddressSelection (interfaceIdx, route->GetPrefixToUse ().IsAny () ? route->GetGateway () : route->GetPrefixToUse ()));
rtentry->SetSource (SourceAddressSelection (interfaceIdx, route->GetPrefixToUse ().IsAny () ? dst : route->GetPrefixToUse ()));
}
else
{
@ -761,13 +761,14 @@ Ipv6Address Ipv6StaticRouting::SourceAddressSelection (uint32_t interface, Ipv6A
return ret;
}
/* useally IPv6 interfaces have one link-local address and one global address */
/* usually IPv6 interfaces have one link-local address and one global address */
for (uint32_t i = 1; i < m_ipv6->GetNAddresses (interface); i++)
{
Ipv6InterfaceAddress test = m_ipv6->GetAddress (interface, i);
Ipv6InterfaceAddress dst(dest);
if (test.GetAddress ().CombinePrefix (test.GetPrefix ()) == dest.CombinePrefix (test.GetPrefix ()))
if (test.GetScope() == dst.GetScope())
{
return test.GetAddress ();
}

Loading…
Cancel
Save