[tcp] make IPv6 header available to TCP segment processing routine (#6790)

This commit is contained in:
Sam Kumar
2021-08-16 18:26:51 -07:00
committed by Jonathan Hui
parent 6ccd4ffd78
commit 517b1b762d
4 changed files with 15 additions and 7 deletions
+9 -4
View File
@@ -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;
}
+2 -1
View File
@@ -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);
+2 -1
View File
@@ -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);
+2 -1
View File
@@ -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