mirror of
https://github.com/espressif/openthread.git
synced 2026-09-16 06:00:13 +00:00
[net] use TcpHeader and UdpHeader directly (#13179)
This commit updates the codebase to use `TcpHeader` and `UdpHeader` types directly, instead of the nested `Tcp::Header` and `Udp::Header` types. The `TcpHeader` and `UdpHeader` classes are already defined in `ip6_headers.hpp`. This change reduces dependencies on the `Tcp` and `Udp` class definitions, which is particularly useful when TCP is disabled in the build configuration, avoiding the need to include their respective class headers just for the header definitions.
This commit is contained in:
@@ -382,12 +382,12 @@ void InfraIf::SendUdp(const Ip6::Address &aSrcAddress,
|
||||
uint16_t aDestPort,
|
||||
Message &aPayload)
|
||||
{
|
||||
Ip6::Header ip6Header;
|
||||
Ip6::Udp::Header udpHeader;
|
||||
Ip6::Header ip6Header;
|
||||
Ip6::UdpHeader udpHeader;
|
||||
|
||||
ip6Header.Clear();
|
||||
ip6Header.InitVersionTrafficClassFlow();
|
||||
ip6Header.SetPayloadLength(sizeof(Ip6::Udp::Header) + aPayload.GetLength());
|
||||
ip6Header.SetPayloadLength(sizeof(Ip6::UdpHeader) + aPayload.GetLength());
|
||||
ip6Header.SetNextHeader(Ip6::kProtoUdp);
|
||||
ip6Header.SetHopLimit(64);
|
||||
ip6Header.SetSource(aSrcAddress);
|
||||
@@ -395,7 +395,7 @@ void InfraIf::SendUdp(const Ip6::Address &aSrcAddress,
|
||||
|
||||
udpHeader.SetSourcePort(aSourcePort);
|
||||
udpHeader.SetDestinationPort(aDestPort);
|
||||
udpHeader.SetLength(sizeof(Ip6::Udp::Header) + aPayload.GetLength());
|
||||
udpHeader.SetLength(sizeof(Ip6::UdpHeader) + aPayload.GetLength());
|
||||
udpHeader.SetChecksum(0);
|
||||
|
||||
SuccessOrQuit(aPayload.Prepend(udpHeader));
|
||||
@@ -435,7 +435,7 @@ void InfraIf::Receive(Message &aMessage)
|
||||
Message *payload = aMessage.Clone<kNoReservedHeader>();
|
||||
|
||||
VerifyOrQuit(payload != nullptr);
|
||||
payload->RemoveHeader(sizeof(Ip6::Header) + sizeof(Ip6::Udp::Header));
|
||||
payload->RemoveHeader(sizeof(Ip6::Header) + sizeof(Ip6::UdpHeader));
|
||||
otPlatInfraIfDhcp6PdClientHandleReceived(&GetInstance(), payload, mIfIndex);
|
||||
ExitNow();
|
||||
}
|
||||
@@ -483,7 +483,7 @@ void InfraIf::Receive(Message &aMessage)
|
||||
Message *payload = aMessage.Clone<kNoReservedHeader>();
|
||||
|
||||
VerifyOrQuit(payload != nullptr);
|
||||
payload->RemoveHeader(sizeof(Ip6::Header) + sizeof(Ip6::Udp::Header));
|
||||
payload->RemoveHeader(sizeof(Ip6::Header) + sizeof(Ip6::UdpHeader));
|
||||
|
||||
senderAddress.mAddress = headers.GetSourceAddress();
|
||||
senderAddress.mPort = headers.GetSourcePort();
|
||||
@@ -502,13 +502,13 @@ void InfraIf::Receive(Message &aMessage)
|
||||
{
|
||||
Ip6::SockAddr senderAddr;
|
||||
Heap::Data payload;
|
||||
uint16_t offset = sizeof(Ip6::Header) + sizeof(Ip6::Udp::Header);
|
||||
uint16_t offset = sizeof(Ip6::Header) + sizeof(Ip6::UdpHeader);
|
||||
|
||||
senderAddr.SetAddress(headers.GetSourceAddress());
|
||||
senderAddr.SetPort(headers.GetSourcePort());
|
||||
|
||||
SuccessOrQuit(
|
||||
payload.SetFrom(aMessage, offset, headers.GetUdpHeader().GetLength() - sizeof(Ip6::Udp::Header)));
|
||||
payload.SetFrom(aMessage, offset, headers.GetUdpHeader().GetLength() - sizeof(Ip6::UdpHeader)));
|
||||
Get<Trel>().Receive(GetInstance(), payload, senderAddr);
|
||||
}
|
||||
ExitNow();
|
||||
@@ -518,7 +518,7 @@ void InfraIf::Receive(Message &aMessage)
|
||||
#if OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE
|
||||
if (headers.IsUdp() && headers.GetDestinationPort() == UpstreamDns::kDnsPort)
|
||||
{
|
||||
aMessage.SetOffset(sizeof(Ip6::Header) + sizeof(Ip6::Udp::Header));
|
||||
aMessage.SetOffset(sizeof(Ip6::Header) + sizeof(Ip6::UdpHeader));
|
||||
if (Get<UpstreamDns>().HandleUpstreamDnsResponse(headers.GetSourceAddress(), aMessage))
|
||||
{
|
||||
ExitNow();
|
||||
@@ -540,7 +540,7 @@ void InfraIf::Receive(Message &aMessage)
|
||||
messageInfo.SetSockAddr(headers.GetDestinationAddress());
|
||||
messageInfo.SetSockPort(headers.GetDestinationPort());
|
||||
|
||||
aMessage.SetOffset(sizeof(Ip6::Header) + sizeof(Ip6::Udp::Header));
|
||||
aMessage.SetOffset(sizeof(Ip6::Header) + sizeof(Ip6::UdpHeader));
|
||||
if (mUdpHook(GetInstance(), aMessage, messageInfo))
|
||||
{
|
||||
ExitNow();
|
||||
|
||||
@@ -226,7 +226,7 @@ bool Udp::HandleReceive(const Message &aMessage, const Ip6::Headers &aHeaders)
|
||||
Message *payload = aMessage.Clone<kNoReservedHeader>();
|
||||
|
||||
VerifyOrExit(payload != nullptr);
|
||||
payload->RemoveHeader(sizeof(Ip6::Header) + sizeof(Ip6::Udp::Header));
|
||||
payload->RemoveHeader(sizeof(Ip6::Header) + sizeof(Ip6::UdpHeader));
|
||||
|
||||
socket.mHandler(socket.mContext, payload, &messageInfo);
|
||||
payload->Free();
|
||||
|
||||
@@ -294,10 +294,10 @@ Message *PrepareUdpMessage(Node &aNode,
|
||||
uint16_t aDstPort = 1235,
|
||||
uint16_t aPayloadLen = 10)
|
||||
{
|
||||
Message *message = nullptr;
|
||||
Ip6::Prefix nat64Prefix;
|
||||
Ip6::Header ip6Header;
|
||||
Ip6::Udp::Header udpHeader;
|
||||
Message *message = nullptr;
|
||||
Ip6::Prefix nat64Prefix;
|
||||
Ip6::Header ip6Header;
|
||||
Ip6::UdpHeader udpHeader;
|
||||
|
||||
message = aNode.Get<MessagePool>().Allocate(Message::kTypeIp6);
|
||||
VerifyOrQuit(message != nullptr);
|
||||
@@ -311,7 +311,7 @@ Message *PrepareUdpMessage(Node &aNode,
|
||||
ip6Header.GetDestination().SynthesizeFromIp4Address(nat64Prefix, aDstIp4Address);
|
||||
|
||||
ip6Header.SetNextHeader(Ip6::kProtoUdp);
|
||||
ip6Header.SetPayloadLength(sizeof(Ip6::Udp::Header) + aPayloadLen);
|
||||
ip6Header.SetPayloadLength(sizeof(Ip6::UdpHeader) + aPayloadLen);
|
||||
|
||||
SuccessOrQuit(message->Append(ip6Header));
|
||||
|
||||
@@ -337,10 +337,10 @@ Message *PrepareTcpMessage(Node &aNode,
|
||||
uint16_t aDstPort = 1235,
|
||||
uint16_t aPayloadLen = 10)
|
||||
{
|
||||
Message *message = nullptr;
|
||||
Ip6::Prefix nat64Prefix;
|
||||
Ip6::Header ip6Header;
|
||||
Ip6::Tcp::Header tcpHeader;
|
||||
Message *message = nullptr;
|
||||
Ip6::Prefix nat64Prefix;
|
||||
Ip6::Header ip6Header;
|
||||
Ip6::TcpHeader tcpHeader;
|
||||
|
||||
message = aNode.Get<MessagePool>().Allocate(Message::kTypeIp6);
|
||||
VerifyOrQuit(message != nullptr);
|
||||
@@ -354,7 +354,7 @@ Message *PrepareTcpMessage(Node &aNode,
|
||||
ip6Header.GetDestination().SynthesizeFromIp4Address(nat64Prefix, aDstIp4Address);
|
||||
|
||||
ip6Header.SetNextHeader(Ip6::kProtoTcp);
|
||||
ip6Header.SetPayloadLength(sizeof(Ip6::Tcp::Header) + aPayloadLen);
|
||||
ip6Header.SetPayloadLength(sizeof(Ip6::TcpHeader) + aPayloadLen);
|
||||
|
||||
SuccessOrQuit(message->Append(ip6Header));
|
||||
|
||||
@@ -1147,14 +1147,14 @@ void TestNat64IhlBypass(void)
|
||||
ip6Header.SetSource(ip6Addr);
|
||||
ip6Header.GetDestination().SynthesizeFromIp4Address(prefix, ip4Addr);
|
||||
ip6Header.SetNextHeader(Ip6::kProtoUdp);
|
||||
ip6Header.SetPayloadLength(sizeof(Ip6::Udp::Header) + payloadLen);
|
||||
ip6Header.SetPayloadLength(sizeof(Ip6::UdpHeader) + payloadLen);
|
||||
SuccessOrQuit(message->Append(ip6Header));
|
||||
|
||||
Ip6::Udp::Header udpHeader;
|
||||
Ip6::UdpHeader udpHeader;
|
||||
udpHeader.Clear();
|
||||
udpHeader.SetSourcePort(srcPort);
|
||||
udpHeader.SetDestinationPort(dstPort);
|
||||
udpHeader.SetLength(sizeof(Ip6::Udp::Header) + payloadLen);
|
||||
udpHeader.SetLength(sizeof(Ip6::UdpHeader) + payloadLen);
|
||||
SuccessOrQuit(message->Append(udpHeader));
|
||||
|
||||
for (uint16_t i = 0; i < payloadLen; i++)
|
||||
@@ -1176,7 +1176,7 @@ void TestNat64IhlBypass(void)
|
||||
ip4Header.Clear();
|
||||
// IHL=6 means header length is 6*4 = 24 bytes.
|
||||
ip4Header.SetVersionIhl(0x46);
|
||||
ip4Header.SetTotalLength(24 + sizeof(Ip4::Udp::Header) + payloadLen);
|
||||
ip4Header.SetTotalLength(24 + sizeof(Ip4::UdpHeader) + payloadLen);
|
||||
ip4Header.SetProtocol(Ip4::kProtoUdp);
|
||||
ip4Header.SetTtl(64);
|
||||
ip4Header.SetSource(ip4Addr);
|
||||
@@ -1194,11 +1194,11 @@ void TestNat64IhlBypass(void)
|
||||
uint8_t options[] = {0x01, 0x01, 0x01, 0x00};
|
||||
SuccessOrQuit(message->Append(options));
|
||||
|
||||
Ip4::Udp::Header udpHeader;
|
||||
Ip4::UdpHeader udpHeader;
|
||||
udpHeader.Clear();
|
||||
udpHeader.SetSourcePort(srcPort);
|
||||
udpHeader.SetDestinationPort(dstPort);
|
||||
udpHeader.SetLength(sizeof(Ip4::Udp::Header) + payloadLen);
|
||||
udpHeader.SetLength(sizeof(Ip4::UdpHeader) + payloadLen);
|
||||
SuccessOrQuit(message->Append(udpHeader));
|
||||
|
||||
for (uint16_t i = 0; i < payloadLen; i++)
|
||||
@@ -1230,7 +1230,7 @@ void TestNat64IhlBypass(void)
|
||||
ip4Header.Clear();
|
||||
// IHL=7 means header length is 7*4 = 28 bytes.
|
||||
ip4Header.SetVersionIhl(0x47);
|
||||
ip4Header.SetTotalLength(28 + sizeof(Ip4::Udp::Header) + payloadLen);
|
||||
ip4Header.SetTotalLength(28 + sizeof(Ip4::UdpHeader) + payloadLen);
|
||||
ip4Header.SetProtocol(Ip4::kProtoUdp);
|
||||
ip4Header.SetTtl(64);
|
||||
ip4Header.SetSource(ip4Addr);
|
||||
@@ -1248,11 +1248,11 @@ void TestNat64IhlBypass(void)
|
||||
uint8_t options[] = {0x83, 0x08, 0x04, 0x01, 0x01, 0x01, 0x01, 0x00};
|
||||
SuccessOrQuit(message->Append(options));
|
||||
|
||||
Ip4::Udp::Header udpHeader;
|
||||
Ip4::UdpHeader udpHeader;
|
||||
udpHeader.Clear();
|
||||
udpHeader.SetSourcePort(srcPort);
|
||||
udpHeader.SetDestinationPort(dstPort);
|
||||
udpHeader.SetLength(sizeof(Ip4::Udp::Header) + payloadLen);
|
||||
udpHeader.SetLength(sizeof(Ip4::UdpHeader) + payloadLen);
|
||||
SuccessOrQuit(message->Append(udpHeader));
|
||||
|
||||
for (uint16_t i = 0; i < payloadLen; i++)
|
||||
@@ -1276,7 +1276,7 @@ void TestNat64IhlBypass(void)
|
||||
ip4Header.Clear();
|
||||
// IHL=7 means header length is 7*4 = 28 bytes.
|
||||
ip4Header.SetVersionIhl(0x47);
|
||||
ip4Header.SetTotalLength(28 + sizeof(Ip4::Udp::Header) + payloadLen);
|
||||
ip4Header.SetTotalLength(28 + sizeof(Ip4::UdpHeader) + payloadLen);
|
||||
ip4Header.SetProtocol(Ip4::kProtoUdp);
|
||||
ip4Header.SetTtl(64);
|
||||
ip4Header.SetSource(ip4Addr);
|
||||
@@ -1294,11 +1294,11 @@ void TestNat64IhlBypass(void)
|
||||
uint8_t options[] = {0x89, 0x08, 0x04, 0x01, 0x01, 0x01, 0x01, 0x00};
|
||||
SuccessOrQuit(message->Append(options));
|
||||
|
||||
Ip4::Udp::Header udpHeader;
|
||||
Ip4::UdpHeader udpHeader;
|
||||
udpHeader.Clear();
|
||||
udpHeader.SetSourcePort(srcPort);
|
||||
udpHeader.SetDestinationPort(dstPort);
|
||||
udpHeader.SetLength(sizeof(Ip4::Udp::Header) + payloadLen);
|
||||
udpHeader.SetLength(sizeof(Ip4::UdpHeader) + payloadLen);
|
||||
SuccessOrQuit(message->Append(udpHeader));
|
||||
|
||||
for (uint16_t i = 0; i < payloadLen; i++)
|
||||
|
||||
@@ -52,11 +52,11 @@ void TestTmfOrigin(void)
|
||||
VerifyOrQuit(message != nullptr);
|
||||
|
||||
// 1. Inner UDP Header
|
||||
Ip6::Udp::Header udpHeader;
|
||||
Ip6::UdpHeader udpHeader;
|
||||
udpHeader.Clear();
|
||||
udpHeader.SetSourcePort(1234);
|
||||
udpHeader.SetDestinationPort(Tmf::kUdpPort);
|
||||
udpHeader.SetLength(sizeof(Ip6::Udp::Header));
|
||||
udpHeader.SetLength(sizeof(Ip6::UdpHeader));
|
||||
|
||||
// 2. Inner IPv6 Header
|
||||
Ip6::Header innerHeader;
|
||||
@@ -65,7 +65,7 @@ void TestTmfOrigin(void)
|
||||
innerHeader.SetSource(Ip6::Address::GetLinkLocalAllNodesMulticast()); // dummy LL source
|
||||
innerHeader.SetDestination(linkLocal);
|
||||
innerHeader.SetNextHeader(Ip6::kProtoUdp);
|
||||
innerHeader.SetPayloadLength(sizeof(Ip6::Udp::Header));
|
||||
innerHeader.SetPayloadLength(sizeof(Ip6::UdpHeader));
|
||||
|
||||
// 3. Outer IPv6 Header (IP-in-IP)
|
||||
Ip6::Header outerHeader;
|
||||
@@ -74,7 +74,7 @@ void TestTmfOrigin(void)
|
||||
outerHeader.SetSource(linkLocal);
|
||||
outerHeader.SetDestination(mlEid);
|
||||
outerHeader.SetNextHeader(Ip6::kProtoIp6);
|
||||
outerHeader.SetPayloadLength(sizeof(Ip6::Header) + sizeof(Ip6::Udp::Header));
|
||||
outerHeader.SetPayloadLength(sizeof(Ip6::Header) + sizeof(Ip6::UdpHeader));
|
||||
|
||||
// Append all headers to the message
|
||||
SuccessOrQuit(message->Append(outerHeader));
|
||||
@@ -113,11 +113,11 @@ void TestTmfOriginBypassed(void)
|
||||
VerifyOrQuit(message != nullptr);
|
||||
|
||||
// 1. Inner UDP Header
|
||||
Ip6::Udp::Header udpHeader;
|
||||
Ip6::UdpHeader udpHeader;
|
||||
udpHeader.Clear();
|
||||
udpHeader.SetSourcePort(1234);
|
||||
udpHeader.SetDestinationPort(Tmf::kUdpPort);
|
||||
udpHeader.SetLength(sizeof(Ip6::Udp::Header));
|
||||
udpHeader.SetLength(sizeof(Ip6::UdpHeader));
|
||||
|
||||
// 2. Inner IPv6 Header
|
||||
Ip6::Header innerHeader;
|
||||
@@ -126,7 +126,7 @@ void TestTmfOriginBypassed(void)
|
||||
innerHeader.SetSource(Ip6::Address::GetLinkLocalAllNodesMulticast()); // dummy LL source
|
||||
innerHeader.SetDestination(linkLocal);
|
||||
innerHeader.SetNextHeader(Ip6::kProtoUdp);
|
||||
innerHeader.SetPayloadLength(sizeof(Ip6::Udp::Header));
|
||||
innerHeader.SetPayloadLength(sizeof(Ip6::UdpHeader));
|
||||
|
||||
// 3. Destination Options Header (containing 6 bytes of padding to make it 8 bytes total)
|
||||
Ip6::ExtensionHeader dstHeader;
|
||||
@@ -143,7 +143,7 @@ void TestTmfOriginBypassed(void)
|
||||
outerHeader.SetSource(linkLocal);
|
||||
outerHeader.SetDestination(mlEid);
|
||||
outerHeader.SetNextHeader(Ip6::kProtoDstOpts);
|
||||
outerHeader.SetPayloadLength(dstHeader.GetSize() + sizeof(Ip6::Header) + sizeof(Ip6::Udp::Header));
|
||||
outerHeader.SetPayloadLength(dstHeader.GetSize() + sizeof(Ip6::Header) + sizeof(Ip6::UdpHeader));
|
||||
|
||||
// Append all headers to the message
|
||||
SuccessOrQuit(message->Append(outerHeader));
|
||||
|
||||
@@ -172,7 +172,7 @@ void CorruptMessage(Message &aMessage)
|
||||
|
||||
void TestUdpMessageChecksum(void)
|
||||
{
|
||||
constexpr uint16_t kMinSize = sizeof(Ip6::Udp::Header);
|
||||
constexpr uint16_t kMinSize = sizeof(Ip6::UdpHeader);
|
||||
constexpr uint16_t kMaxSize = Buffer::kSize * 3 + 24;
|
||||
|
||||
const char *kSourceAddress = "fd00:1122:3344:5566:7788:99aa:bbcc:ddee";
|
||||
@@ -185,7 +185,7 @@ void TestUdpMessageChecksum(void)
|
||||
for (uint16_t size = kMinSize; size <= kMaxSize; size++)
|
||||
{
|
||||
Message *message = instance->Get<Ip6::Ip6>().NewMessage();
|
||||
Ip6::Udp::Header udpHeader;
|
||||
Ip6::UdpHeader udpHeader;
|
||||
Ip6::MessageInfo messageInfo;
|
||||
|
||||
VerifyOrQuit(message != nullptr, "Ip6::NewMesssage() failed");
|
||||
@@ -309,7 +309,7 @@ void TestIcmp6MessageChecksum(void)
|
||||
|
||||
void TestTcp4MessageChecksum(void)
|
||||
{
|
||||
constexpr size_t kMinSize = sizeof(Ip4::Tcp::Header);
|
||||
constexpr size_t kMinSize = sizeof(Ip4::TcpHeader);
|
||||
constexpr size_t kMaxSize = Buffer::kSize * 3 + 24;
|
||||
|
||||
const char *kSourceAddress = "12.34.56.78";
|
||||
@@ -327,8 +327,8 @@ void TestTcp4MessageChecksum(void)
|
||||
|
||||
for (uint16_t size = kMinSize; size <= kMaxSize; size++)
|
||||
{
|
||||
Message *message = instance->Get<Ip6::Ip6>().NewMessage();
|
||||
Ip4::Tcp::Header tcpHeader;
|
||||
Message *message = instance->Get<Ip6::Ip6>().NewMessage();
|
||||
Ip4::TcpHeader tcpHeader;
|
||||
|
||||
VerifyOrQuit(message != nullptr, "Ip6::NewMesssage() failed");
|
||||
SuccessOrQuit(message->SetLength(size));
|
||||
@@ -364,7 +364,7 @@ void TestTcp4MessageChecksum(void)
|
||||
|
||||
void TestUdp4MessageChecksum(void)
|
||||
{
|
||||
constexpr uint16_t kMinSize = sizeof(Ip4::Udp::Header);
|
||||
constexpr uint16_t kMinSize = sizeof(Ip4::UdpHeader);
|
||||
constexpr uint16_t kMaxSize = Buffer::kSize * 3 + 24;
|
||||
|
||||
const char *kSourceAddress = "12.34.56.78";
|
||||
@@ -382,8 +382,8 @@ void TestUdp4MessageChecksum(void)
|
||||
|
||||
for (uint16_t size = kMinSize; size <= kMaxSize; size++)
|
||||
{
|
||||
Message *message = instance->Get<Ip6::Ip6>().NewMessage();
|
||||
Ip4::Udp::Header udpHeader;
|
||||
Message *message = instance->Get<Ip6::Ip6>().NewMessage();
|
||||
Ip4::UdpHeader udpHeader;
|
||||
|
||||
VerifyOrQuit(message != nullptr, "Ip6::NewMesssage() failed");
|
||||
SuccessOrQuit(message->SetLength(size));
|
||||
|
||||
@@ -237,11 +237,11 @@ public:
|
||||
/**
|
||||
* This fields represent uncompressed IPv6 packet.
|
||||
*/
|
||||
Mac::Addresses mMacAddrs;
|
||||
Ip6::Header mIpHeader;
|
||||
Payload mExtHeader;
|
||||
Ip6::Header mIpTunneledHeader;
|
||||
Ip6::Udp::Header mUdpHeader;
|
||||
Mac::Addresses mMacAddrs;
|
||||
Ip6::Header mIpHeader;
|
||||
Payload mExtHeader;
|
||||
Ip6::Header mIpTunneledHeader;
|
||||
Ip6::UdpHeader mUdpHeader;
|
||||
|
||||
/**
|
||||
* This fields represent compressed IPv6 packet.
|
||||
|
||||
Reference in New Issue
Block a user