[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:
Abtin Keshavarzian
2026-05-29 18:25:36 -07:00
committed by GitHub
parent 55b3adbf81
commit 831f2d3868
18 changed files with 88 additions and 87 deletions
+10 -10
View File
@@ -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();
+1 -1
View File
@@ -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();
+22 -22
View File
@@ -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++)
+8 -8
View File
@@ -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));
+8 -8
View File
@@ -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));
+5 -5
View File
@@ -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.