# HG changeset patch # User Alexander Krotov # Date 1446982328 -3600 # Parent fb2d87a560b88b18d5ca2f3962c3ce04dc62c121 Bug 2211 - Ipv{4,6}EndPoint can cause memory corruption diff --git a/src/internet/model/ipv4-end-point.cc b/src/internet/model/ipv4-end-point.cc --- a/src/internet/model/ipv4-end-point.cc +++ b/src/internet/model/ipv4-end-point.cc @@ -136,19 +136,6 @@ if (!m_rxCallback.IsNull ()) { - Simulator::ScheduleNow (&Ipv4EndPoint::DoForwardUp, this, p, header, sport, - incomingInterface); - } -} - -void -Ipv4EndPoint::DoForwardUp (Ptr p, const Ipv4Header& header, uint16_t sport, - Ptr incomingInterface) -{ - NS_LOG_FUNCTION (this << p << &header << sport << incomingInterface); - - if (!m_rxCallback.IsNull ()) - { m_rxCallback (p, header, sport, incomingInterface); } } @@ -162,21 +149,7 @@ (uint32_t)icmpCode << icmpInfo); if (!m_icmpCallback.IsNull ()) { - Simulator::ScheduleNow (&Ipv4EndPoint::DoForwardIcmp, this, - icmpSource, icmpTtl, icmpType, icmpCode, icmpInfo); - } -} - -void -Ipv4EndPoint::DoForwardIcmp (Ipv4Address icmpSource, uint8_t icmpTtl, - uint8_t icmpType, uint8_t icmpCode, - uint32_t icmpInfo) -{ - NS_LOG_FUNCTION (this << icmpSource << static_cast (icmpTtl) << static_cast (icmpType) << static_cast (icmpCode) << icmpInfo); - - if (!m_icmpCallback.IsNull ()) - { - m_icmpCallback (icmpSource,icmpTtl,icmpType,icmpCode,icmpInfo); + m_icmpCallback (icmpSource, icmpTtl, icmpType, icmpCode, icmpInfo); } } diff --git a/src/internet/model/ipv4-end-point.h b/src/internet/model/ipv4-end-point.h --- a/src/internet/model/ipv4-end-point.h +++ b/src/internet/model/ipv4-end-point.h @@ -182,27 +182,6 @@ private: /** - * \brief ForwardUp wrapper. - * \param p packet - * \param header the packet header - * \param sport source port - * \param incomingInterface incoming interface - */ - void DoForwardUp (Ptr p, const Ipv4Header& header, uint16_t sport, - Ptr incomingInterface); - /** - * \brief ForwardIcmp wrapper. - * \param icmpSource source IP address - * \param icmpTtl time-to-live - * \param icmpType ICMP type - * \param icmpCode ICMP code - * \param icmpInfo ICMP info - */ - void DoForwardIcmp (Ipv4Address icmpSource, uint8_t icmpTtl, - uint8_t icmpType, uint8_t icmpCode, - uint32_t icmpInfo); - - /** * \brief The local address. */ Ipv4Address m_localAddr; diff --git a/src/internet/model/ipv6-end-point.cc b/src/internet/model/ipv6-end-point.cc --- a/src/internet/model/ipv6-end-point.cc +++ b/src/internet/model/ipv6-end-point.cc @@ -115,8 +115,7 @@ { if (!m_rxCallback.IsNull ()) { - Simulator::ScheduleNow (&Ipv6EndPoint::DoForwardUp, this, p, header, port, - incomingInterface); + m_rxCallback (p, header, port, incomingInterface); } } @@ -125,22 +124,10 @@ { if (!m_icmpCallback.IsNull ()) { - Simulator::ScheduleNow (&Ipv6EndPoint::DoForwardIcmp, this, - src, ttl, type, code, info); + m_icmpCallback (src, ttl, type, code, info); } } -void Ipv6EndPoint::DoForwardUp (Ptr p, Ipv6Header header, uint16_t sport, Ptr incomingInterface) -{ - m_rxCallback (p, header, sport, incomingInterface); -} - -void Ipv6EndPoint::DoForwardIcmp (Ipv6Address src, uint8_t ttl, uint8_t type, - uint8_t code, uint32_t info) -{ - m_icmpCallback (src, ttl, type, code, info); -} - void Ipv6EndPoint::SetRxEnabled (bool enabled) { m_rxEnabled = enabled; diff --git a/src/internet/model/ipv6-end-point.h b/src/internet/model/ipv6-end-point.h --- a/src/internet/model/ipv6-end-point.h +++ b/src/internet/model/ipv6-end-point.h @@ -191,26 +191,6 @@ private: /** - * \brief ForwardUp wrapper. - * \param p packet - * \param header the packet header - * \param sport source port - * \param incomingInterface incoming interface - */ - void DoForwardUp (Ptr p, Ipv6Header header, uint16_t sport, Ptr incomingInterface); - - /** - * \brief ForwardIcmp wrapper. - * \param src source IPv6 address - * \param ttl time-to-live - * \param type ICMPv6 type - * \param code ICMPv6 code - * \param info ICMPv6 info - */ - void DoForwardIcmp (Ipv6Address src, uint8_t ttl, uint8_t type, - uint8_t code, uint32_t info); - - /** * \brief The local address. */ Ipv6Address m_localAddr;