Bug 759: Ipv6 uses wrong outgoing interface.
authorSebastien Vincent <vincent@clarinet.u-strasbg.fr>
Fri, 18 Dec 2009 18:17:32 +0100
changeset 5863 a4b21e0ee84c
parent 5862 8f126818f691
child 5864 291c2b586657
Bug 759: Ipv6 uses wrong outgoing interface.
src/internet-stack/ipv6-l3-protocol.cc
src/routing/static-routing/ipv6-static-routing.cc
--- 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;