From 517b1b762d99f54984f5bd3f1df35c1a163d56ab Mon Sep 17 00:00:00 2001 From: Sam Kumar Date: Fri, 6 Aug 2021 20:06:34 -0700 Subject: [PATCH] [tcp] make IPv6 header available to TCP segment processing routine (#6790) --- src/core/net/ip6.cpp | 13 +++++++++---- src/core/net/ip6.hpp | 3 ++- src/core/net/tcp6.cpp | 3 ++- src/core/net/tcp6.hpp | 3 ++- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/core/net/ip6.cpp b/src/core/net/ip6.cpp index b728926cf..5cd0bb0b2 100644 --- a/src/core/net/ip6.cpp +++ b/src/core/net/ip6.cpp @@ -937,15 +937,20 @@ exit: return error; } -Error Ip6::HandlePayload(Message & aMessage, +Error Ip6::HandlePayload(Header & aIp6Header, + Message & aMessage, MessageInfo & aMessageInfo, uint8_t aIpProto, Message::Ownership aMessageOwnership) { +#if !OPENTHREAD_CONFIG_TCP_ENABLE + OT_UNUSED_VARIABLE(aIp6Header); +#endif + Error error = kErrorNone; Message *message = (aMessageOwnership == Message::kTakeCustody) ? &aMessage : nullptr; - VerifyOrExit(aIpProto == kProtoUdp || aIpProto == kProtoIcmp6); + VerifyOrExit(aIpProto == kProtoTcp || aIpProto == kProtoUdp || aIpProto == kProtoIcmp6); if (aMessageOwnership == Message::kCopyToUse) { @@ -956,7 +961,7 @@ Error Ip6::HandlePayload(Message & aMessage, { #if OPENTHREAD_CONFIG_TCP_ENABLE case kProtoTcp: - error = mTcp.ProcessReceivedSegment(*message, aMessageInfo); + error = mTcp.HandleMessage(aIp6Header, *message, aMessageInfo); if (error == kErrorDrop) { otLogNoteIp6("Error TCP Checksum"); @@ -1233,7 +1238,7 @@ start: forwardHost = false; } - error = HandlePayload(aMessage, messageInfo, nextHeader, + error = HandlePayload(header, aMessage, messageInfo, nextHeader, (forwardThread || forwardHost ? Message::kCopyToUse : Message::kTakeCustody)); shouldFreeMessage = forwardThread || forwardHost; } diff --git a/src/core/net/ip6.hpp b/src/core/net/ip6.hpp index 0789b49df..f2aa97429 100644 --- a/src/core/net/ip6.hpp +++ b/src/core/net/ip6.hpp @@ -348,7 +348,8 @@ private: Error InsertMplOption(Message &aMessage, Header &aHeader, MessageInfo &aMessageInfo); Error RemoveMplOption(Message &aMessage); Error HandleOptions(Message &aMessage, Header &aHeader, bool aIsOutbound, bool &aReceive); - Error HandlePayload(Message & aMessage, + Error HandlePayload(Header & aIp6Header, + Message & aMessage, MessageInfo & aMessageInfo, uint8_t aIpProto, Message::Ownership aMessageOwnership); diff --git a/src/core/net/tcp6.cpp b/src/core/net/tcp6.cpp index 9b9dffd3a..4bf7b2ae0 100644 --- a/src/core/net/tcp6.cpp +++ b/src/core/net/tcp6.cpp @@ -169,8 +169,9 @@ Error Tcp::Listener::Deinitialize(void) return kErrorNotImplemented; } -Error Tcp::ProcessReceivedSegment(Message &aMessage, MessageInfo &aMessageInfo) +Error Tcp::HandleMessage(ot::Ip6::Header &aIp6Header, Message &aMessage, MessageInfo &aMessageInfo) { + OT_UNUSED_VARIABLE(aIp6Header); OT_UNUSED_VARIABLE(aMessage); OT_UNUSED_VARIABLE(aMessageInfo); diff --git a/src/core/net/tcp6.hpp b/src/core/net/tcp6.hpp index 2b555ef0d..f0323d731 100644 --- a/src/core/net/tcp6.hpp +++ b/src/core/net/tcp6.hpp @@ -516,6 +516,7 @@ public: /** * Processes a received TCP segment. * + * @param[in] aIp6Header A reference to a structure containing the segment's IPv6 header. * @param[in] aMessage A reference to the message containing the TCP segment. * @param[in] aMessageInfo A reference to the message info associated with @p aMessage. * @@ -523,7 +524,7 @@ public: * @retval kErrorDrop Dropped the TCP segment due to an invalid checksum. * */ - Error ProcessReceivedSegment(Message &aMessage, MessageInfo &aMessageInfo); + Error HandleMessage(ot::Ip6::Header &aIp6Header, Message &aMessage, MessageInfo &aMessageInfo); }; } // namespace Ip6