|
|
| 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 ()); |
|
|
| 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 (); |
|
|
| 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 ()); |