From 6bde2bde12ccdaf39ff93439ed073533797f25b6 Mon Sep 17 00:00:00 2001 From: Tommaso Pecorella Date: Wed, 18 Jun 2014 19:03:10 +0200 Subject: [PATCH] Bug 1921 - Icmpv6L4Protocol::ForgeEchoRequest returns a malformed packet --- CHANGES.html | 2 ++ RELEASE_NOTES | 1 + src/internet/model/icmpv6-l4-protocol.cc | 9 +++++++++ src/internet/model/icmpv6-l4-protocol.h | 2 +- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGES.html b/CHANGES.html index b4fdb9f40..9ac3a4e5f 100644 --- a/CHANGES.html +++ b/CHANGES.html @@ -58,6 +58,8 @@ us a note on ns-developers mailing list.

Changes to existing API:

Changes to build system:

diff --git a/RELEASE_NOTES b/RELEASE_NOTES index e17fcf50f..f919a9bb9 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -24,6 +24,7 @@ New user-visible features Bugs fixed ---------- +- Bug 1921 - Icmpv6L4Protocol::ForgeEchoRequest returns a malformed packet - Bug 1930 - Use of invalid reference in OLSR RemoveLinkTuple - Bug 1932 - NdiscCache entry is not failsafe on double neighbor probing. diff --git a/src/internet/model/icmpv6-l4-protocol.cc b/src/internet/model/icmpv6-l4-protocol.cc index f1b0a3a8e..380011453 100644 --- a/src/internet/model/icmpv6-l4-protocol.cc +++ b/src/internet/model/icmpv6-l4-protocol.cc @@ -588,8 +588,17 @@ Ptr Icmpv6L4Protocol::ForgeEchoRequest (Ipv6Address src, Ipv6Address dst req.SetId (id); req.SetSeq (seq); + req.CalculatePseudoHeaderChecksum (src, dst, p->GetSize () + req.GetSerializedSize (), PROT_NUMBER); p->AddHeader (req); + ipHeader.SetSourceAddress (src); + ipHeader.SetDestinationAddress (dst); + ipHeader.SetNextHeader (PROT_NUMBER); + ipHeader.SetPayloadLength (p->GetSize ()); + ipHeader.SetHopLimit (255); + + p->AddHeader (ipHeader); + return p; } diff --git a/src/internet/model/icmpv6-l4-protocol.h b/src/internet/model/icmpv6-l4-protocol.h index e46511105..6d2fdf5ac 100644 --- a/src/internet/model/icmpv6-l4-protocol.h +++ b/src/internet/model/icmpv6-l4-protocol.h @@ -329,7 +329,7 @@ public: * \param id ID of the packet * \param seq sequence number * \param data the data - * \return Echo Request packet (without IPv6 header) + * \return Echo Request packet (with IPv6 header) */ Ptr ForgeEchoRequest (Ipv6Address src, Ipv6Address dst, uint16_t id, uint16_t seq, Ptr data);