Bug 759: Ipv6 uses wrong outgoing interface.
--- a/src/internet-stack/ipv6-l3-protocol.cc Fri Dec 18 18:05:19 2009 +0100
+++ b/src/internet-stack/ipv6-l3-protocol.cc Fri Dec 18 18:17:32 2009 +0100
@@ -635,7 +635,13 @@
hdr = BuildHeader (source, destination, protocol, packet->GetSize (), ttl);
- if (!source.IsAny ())
+ //for link-local traffic, we need to determine the interface
+ if (source.IsLinkLocal() ||
+ destination.IsLinkLocal() ||
+ destination.IsAllNodesMulticast() ||
+ destination.IsAllRoutersMulticast() ||
+ destination.IsAllHostsMulticast() ||
+ destination.IsSolicitedMulticast())
{
int32_t index = GetInterfaceForAddress (source);
NS_ASSERT (index >= 0);
--- a/src/routing/static-routing/ipv6-static-routing.cc Fri Dec 18 18:05:19 2009 +0100
+++ b/src/routing/static-routing/ipv6-static-routing.cc Fri Dec 18 18:17:32 2009 +0100
@@ -213,7 +213,7 @@
return false;
}
-Ptr<Ipv6Route> Ipv6StaticRouting::LookupStatic (Ipv6Address dst, Ptr <NetDevice> interface)
+Ptr<Ipv6Route> Ipv6StaticRouting::LookupStatic (Ipv6Address dst, Ptr<NetDevice> interface)
{
NS_LOG_FUNCTION (this << dst << interface);
Ptr<Ipv6Route> rtentry = 0;