diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 018b45fcb..80b12fe20 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -70,6 +70,7 @@ Bugs fixed - Bug 2427 - 802.11ac selects wrong slot duration - Bug 2433 - Bic does not copy private parameters - Bug 2436 - SendBlockAckAfterAmpdu is called even if the A-MPDU frame is not addressed to the station +- Bug 2438 - Routing protocols should stop processing packets coming from a non-forwarding interface Known issues ------------ diff --git a/src/internet/model/ipv4-global-routing.cc b/src/internet/model/ipv4-global-routing.cc index 191258912..a429d585d 100644 --- a/src/internet/model/ipv4-global-routing.cc +++ b/src/internet/model/ipv4-global-routing.cc @@ -513,7 +513,7 @@ Ipv4GlobalRouting::RouteInput (Ptr p, const Ipv4Header &header, P { NS_LOG_LOGIC ("Forwarding disabled for this interface"); ecb (p, header, Socket::ERROR_NOROUTETOHOST); - return false; + return true; } // Next, try to find a route NS_LOG_LOGIC ("Unicast destination- looking up global route"); diff --git a/src/internet/model/ipv4-l3-protocol.cc b/src/internet/model/ipv4-l3-protocol.cc index a7e747d8b..9bfa2672a 100644 --- a/src/internet/model/ipv4-l3-protocol.cc +++ b/src/internet/model/ipv4-l3-protocol.cc @@ -1396,6 +1396,8 @@ Ipv4L3Protocol::RouteInputError (Ptr p, const Ipv4Header & ipHeade NS_LOG_FUNCTION (this << p << ipHeader << sockErrno); NS_LOG_LOGIC ("Route input failure-- dropping packet to " << ipHeader << " with errno " << sockErrno); m_dropTrace (ipHeader, p, DROP_ROUTE_ERROR, m_node->GetObject (), 0); + + // \todo Send an ICMP no route. } void diff --git a/src/internet/model/ipv4-list-routing.cc b/src/internet/model/ipv4-list-routing.cc index 1dd14fb20..c851b6f84 100644 --- a/src/internet/model/ipv4-list-routing.cc +++ b/src/internet/model/ipv4-list-routing.cc @@ -161,7 +161,7 @@ Ipv4ListRouting::RouteInput (Ptr p, const Ipv4Header &header, Ptr< { NS_LOG_LOGIC ("Forwarding disabled for this interface"); ecb (p, header, Socket::ERROR_NOROUTETOHOST); - return false; + return true; } // Next, try to find a route // If we have already delivered a packet locally (e.g. multicast) diff --git a/src/internet/model/ipv4-static-routing.cc b/src/internet/model/ipv4-static-routing.cc index 86088db4e..44d3b1351 100644 --- a/src/internet/model/ipv4-static-routing.cc +++ b/src/internet/model/ipv4-static-routing.cc @@ -543,7 +543,7 @@ Ipv4StaticRouting::RouteInput (Ptr p, const Ipv4Header &ipHeader, { NS_LOG_LOGIC ("Forwarding disabled for this interface"); ecb (p, ipHeader, Socket::ERROR_NOROUTETOHOST); - return false; + return true; } // Next, try to find a route Ptr rtentry = LookupStatic (ipHeader.GetDestination ()); diff --git a/src/internet/model/ipv6-l3-protocol.cc b/src/internet/model/ipv6-l3-protocol.cc index c951c57c2..9a2f52f9b 100644 --- a/src/internet/model/ipv6-l3-protocol.cc +++ b/src/internet/model/ipv6-l3-protocol.cc @@ -1230,7 +1230,7 @@ void Ipv6L3Protocol::IpForward (Ptr idev, Ptr rtentr NS_LOG_LOGIC ("Forwarding logic for node: " << m_node->GetId ()); // Drop RFC 3849 packets: 2001:db8::/32 - if (header.GetDestinationAddress().IsDocumentation()) + if (header.GetDestinationAddress().IsDocumentation ()) { NS_LOG_WARN ("Received a packet for 2001:db8::/32 (documentation class). Drop."); m_dropTrace (header, p, DROP_ROUTE_ERROR, m_node->GetObject (), 0); diff --git a/src/internet/model/ipv6-list-routing.cc b/src/internet/model/ipv6-list-routing.cc index 51d5b2bd1..3f0835279 100644 --- a/src/internet/model/ipv6-list-routing.cc +++ b/src/internet/model/ipv6-list-routing.cc @@ -115,7 +115,7 @@ Ipv6ListRouting::RouteInput (Ptr p, const Ipv6Header &header, Ptr< { NS_LOG_LOGIC ("Forwarding disabled for this interface"); ecb (p, header, Socket::ERROR_NOROUTETOHOST); - return false; + return true; } // We disable error callback for the called protocols. diff --git a/src/internet/model/ipv6-static-routing.cc b/src/internet/model/ipv6-static-routing.cc index 87cec3649..d7e2c24fe 100644 --- a/src/internet/model/ipv6-static-routing.cc +++ b/src/internet/model/ipv6-static-routing.cc @@ -623,7 +623,7 @@ bool Ipv6StaticRouting::RouteInput (Ptr p, const Ipv6Header &heade { ecb (p, header, Socket::ERROR_NOROUTETOHOST); } - return false; + return true; } // Next, try to find a route NS_LOG_LOGIC ("Unicast destination"); diff --git a/src/internet/model/rip.cc b/src/internet/model/rip.cc index b0909f100..973d60722 100644 --- a/src/internet/model/rip.cc +++ b/src/internet/model/rip.cc @@ -268,7 +268,7 @@ bool Rip::RouteInput (Ptr p, const Ipv4Header &header, Ptr p, const Ipv6Header &header, Ptr