View | Details | Raw Unified | Return to bug 1697
Collapse All | Expand All

(-)a/RELEASE_NOTES (+2 lines)
 Lines 24-29    Link Here 
24
24
25
Bugs fixed
25
Bugs fixed
26
----------
26
----------
27
- Bug 1390 - ICMPv6 Redirect are handled correctly only for /64 networks
27
- Bug 1643 - NdiscCache creation and existence checks
28
- Bug 1643 - NdiscCache creation and existence checks
28
- Bug 1646 - ICMPv6 Redirect are sent from global address instead of link-local
29
- Bug 1646 - ICMPv6 Redirect are sent from global address instead of link-local
29
- Bug 1662 - m_type not set for Ipv6OptionRouterAlertHeader
30
- Bug 1662 - m_type not set for Ipv6OptionRouterAlertHeader
 Lines 32-37    Link Here 
32
- Bug 1669 - ns-3 should support binding two and three (possibly more) arguments
33
- Bug 1669 - ns-3 should support binding two and three (possibly more) arguments
33
- Bug 1688 - Routers should advertise themselves from the link-local address
34
- Bug 1688 - Routers should advertise themselves from the link-local address
34
- Bug 1689 - IPv6 shouldn't add a default gateway without checking the Router lifetime
35
- Bug 1689 - IPv6 shouldn't add a default gateway without checking the Router lifetime
36
- Bug 1697 - ICMPv6 Redirect trigger contains multiple bugs
35
- Bug 1700 - Ipv6RawSocket does not honor the bound address when sending packets
37
- Bug 1700 - Ipv6RawSocket does not honor the bound address when sending packets
36
- Bug 1701 - Ipv6StaticRouting: the source address should match the destination scope
38
- Bug 1701 - Ipv6StaticRouting: the source address should match the destination scope
37
- Bug 1702 - Ipv6InterfaceContainer::SetRouter should not always add the router as the default router
39
- Bug 1702 - Ipv6InterfaceContainer::SetRouter should not always add the router as the default router
(-)a/src/internet/model/ipv6-l3-protocol.cc (-5 / +3 lines)
 Lines 883-889    Link Here 
883
    }
883
    }
884
}
884
}
885
885
886
void Ipv6L3Protocol::IpForward (Ptr<Ipv6Route> rtentry, Ptr<const Packet> p, const Ipv6Header& header)
886
void Ipv6L3Protocol::IpForward (Ptr<const NetDevice> idev, Ptr<Ipv6Route> rtentry, Ptr<const Packet> p, const Ipv6Header& header)
887
{
887
{
888
  NS_LOG_FUNCTION (this << rtentry << p << header);
888
  NS_LOG_FUNCTION (this << rtentry << p << header);
889
  NS_LOG_LOGIC ("Forwarding logic for node: " << m_node->GetId ());
889
  NS_LOG_LOGIC ("Forwarding logic for node: " << m_node->GetId ());
 Lines 920-928    Link Here 
920
   * exists.
920
   * exists.
921
   */
921
   */
922
922
923
  if (m_sendIcmpv6Redirect &&
923
  if (m_sendIcmpv6Redirect && (rtentry->GetOutputDevice ()==idev))
924
      ((!rtentry->GetGateway ().IsAny () && rtentry->GetGateway ().CombinePrefix (Ipv6Prefix (64)) == header.GetSourceAddress ().CombinePrefix (Ipv6Prefix (64)))
925
      || (rtentry->GetDestination ().CombinePrefix (Ipv6Prefix (64)) == header.GetSourceAddress ().CombinePrefix (Ipv6Prefix (64)))))
926
    {
924
    {
927
      NS_LOG_LOGIC ("ICMPv6 redirect!");
925
      NS_LOG_LOGIC ("ICMPv6 redirect!");
928
      Ptr<Icmpv6L4Protocol> icmpv6 = GetIcmpv6 ();
926
      Ptr<Icmpv6L4Protocol> icmpv6 = GetIcmpv6 ();
 Lines 953-959    Link Here 
953
  SendRealOut (rtentry, packet, ipHeader);
951
  SendRealOut (rtentry, packet, ipHeader);
954
}
952
}
955
953
956
void Ipv6L3Protocol::IpMulticastForward (Ptr<Ipv6MulticastRoute> mrtentry, Ptr<const Packet> p, const Ipv6Header& header)
954
void Ipv6L3Protocol::IpMulticastForward (Ptr<const NetDevice> idev, Ptr<Ipv6MulticastRoute> mrtentry, Ptr<const Packet> p, const Ipv6Header& header)
957
{
955
{
958
  NS_LOG_FUNCTION (this << mrtentry << p << header);
956
  NS_LOG_FUNCTION (this << mrtentry << p << header);
959
  NS_LOG_LOGIC ("Multicast forwarding logic for node: " << m_node->GetId ());
957
  NS_LOG_LOGIC ("Multicast forwarding logic for node: " << m_node->GetId ());
(-)a/src/internet/model/ipv6-l3-protocol.h (-2 / +4 lines)
 Lines 420-438    Link Here 
420
420
421
  /**
421
  /**
422
   * \brief Forward a packet.
422
   * \brief Forward a packet.
423
   * \param idev Pointer to ingress network device
423
   * \param rtentry route 
424
   * \param rtentry route 
424
   * \param p packet to forward
425
   * \param p packet to forward
425
   * \param header IPv6 header to add to the packet
426
   * \param header IPv6 header to add to the packet
426
   */
427
   */
427
  void IpForward (Ptr<Ipv6Route> rtentry, Ptr<const Packet> p, const Ipv6Header& header);
428
  void IpForward (Ptr<const NetDevice> idev, Ptr<Ipv6Route> rtentry, Ptr<const Packet> p, const Ipv6Header& header);
428
429
429
  /**
430
  /**
430
   * \brief Forward a packet in multicast.
431
   * \brief Forward a packet in multicast.
432
   * \param idev Pointer to ingress network device
431
   * \param mrtentry route 
433
   * \param mrtentry route 
432
   * \param p packet to forward
434
   * \param p packet to forward
433
   * \param header IPv6 header to add to the packet
435
   * \param header IPv6 header to add to the packet
434
   */
436
   */
435
  void IpMulticastForward (Ptr<Ipv6MulticastRoute> mrtentry, Ptr<const Packet> p, const Ipv6Header& header);
437
  void IpMulticastForward (Ptr<const NetDevice> idev, Ptr<Ipv6MulticastRoute> mrtentry, Ptr<const Packet> p, const Ipv6Header& header);
436
438
437
  /**
439
  /**
438
   * \brief Deliver a packet.
440
   * \brief Deliver a packet.
(-)a/src/internet/model/ipv6-routing-protocol.h (-2 / +2 lines)
 Lines 56-63    Link Here 
56
public:
56
public:
57
  static TypeId GetTypeId (void);
57
  static TypeId GetTypeId (void);
58
58
59
  typedef Callback<void, Ptr<Ipv6Route>, Ptr<const Packet>, const Ipv6Header &> UnicastForwardCallback;
59
  typedef Callback<void, Ptr<const NetDevice>, Ptr<Ipv6Route>, Ptr<const Packet>, const Ipv6Header &> UnicastForwardCallback;
60
  typedef Callback<void, Ptr<Ipv6MulticastRoute>, Ptr<const Packet>, const Ipv6Header &> MulticastForwardCallback;
60
  typedef Callback<void, Ptr<const NetDevice>, Ptr<Ipv6MulticastRoute>, Ptr<const Packet>, const Ipv6Header &> MulticastForwardCallback;
61
  typedef Callback<void, Ptr<const Packet>, const Ipv6Header &, uint32_t > LocalDeliverCallback;
61
  typedef Callback<void, Ptr<const Packet>, const Ipv6Header &, uint32_t > LocalDeliverCallback;
62
  typedef Callback<void, Ptr<const Packet>, const Ipv6Header &, Socket::SocketErrno > ErrorCallback;
62
  typedef Callback<void, Ptr<const Packet>, const Ipv6Header &, Socket::SocketErrno > ErrorCallback;
63
63
(-)a/src/internet/model/ipv6-static-routing.cc (-2 / +2 lines)
 Lines 555-561    Link Here 
555
      if (mrtentry)
557
      if (mrtentry)
556
        {
558
        {
557
          NS_LOG_LOGIC ("Multicast route found");
559
          NS_LOG_LOGIC ("Multicast route found");
558
          mcb (mrtentry, p, header); // multicast forwarding callback
560
          mcb (idev, mrtentry, p, header); // multicast forwarding callback
559
          return true;
561
          return true;
560
        }
562
        }
561
      else
563
      else
 Lines 607-613    Link Here 
607
  if (rtentry != 0)
609
  if (rtentry != 0)
608
    {
610
    {
609
      NS_LOG_LOGIC ("Found unicast destination- calling unicast callback");
611
      NS_LOG_LOGIC ("Found unicast destination- calling unicast callback");
610
      ucb (rtentry, p, header);  // unicast forwarding callback
612
      ucb (idev, rtentry, p, header);  // unicast forwarding callback
611
      return true;
613
      return true;
612
    }
614
    }
613
  else
615
  else

Return to bug 1697