Skip to content

Commit 831f2d3

Browse files
authored
[net] use TcpHeader and UdpHeader directly (openthread#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.
1 parent 55b3adb commit 831f2d3

18 files changed

Lines changed: 88 additions & 87 deletions

src/core/net/checksum.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,11 @@ void Checksum::UpdateMessageChecksum(Message &aMessage,
176176
switch (aIpProto)
177177
{
178178
case Ip6::kProtoTcp:
179-
headerOffset = Ip6::Tcp::Header::kChecksumFieldOffset;
179+
headerOffset = Ip6::TcpHeader::kChecksumFieldOffset;
180180
break;
181181

182182
case Ip6::kProtoUdp:
183-
headerOffset = Ip6::Udp::Header::kChecksumFieldOffset;
183+
headerOffset = Ip6::UdpHeader::kChecksumFieldOffset;
184184
break;
185185

186186
case Ip6::kProtoIcmp6:
@@ -211,11 +211,11 @@ void Checksum::UpdateMessageChecksum(Message &aMessage,
211211
switch (aIpProto)
212212
{
213213
case Ip4::kProtoTcp:
214-
headerOffset = Ip4::Tcp::Header::kChecksumFieldOffset;
214+
headerOffset = Ip4::TcpHeader::kChecksumFieldOffset;
215215
break;
216216

217217
case Ip4::kProtoUdp:
218-
headerOffset = Ip4::Udp::Header::kChecksumFieldOffset;
218+
headerOffset = Ip4::UdpHeader::kChecksumFieldOffset;
219219
break;
220220

221221
case Ip4::kProtoIcmp:

src/core/net/ip4_types.hpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -687,8 +687,8 @@ static constexpr uint8_t kProtoTcp = Ip6::kProtoTcp; ///< Transmission Control
687687
static constexpr uint8_t kProtoUdp = Ip6::kProtoUdp; ///< User Datagram
688688
static constexpr uint8_t kProtoIcmp = 1; ///< ICMP for IPv4
689689

690-
using Tcp = Ip6::Tcp; // TCP in IPv4 is the same as TCP in IPv6
691-
using Udp = Ip6::Udp; // UDP in IPv4 is the same as UDP in IPv6
690+
using TcpHeader = Ip6::TcpHeader; ///< TCP header (the same as in IPv6)
691+
using UdpHeader = Ip6::UdpHeader; ///< UDP header (the same as in IPv6)
692692

693693
/**
694694
* Represents parsed IPv4 header along with UDP/TCP/ICMP4 headers from a received message/frame.
@@ -781,7 +781,7 @@ class Headers : private Clearable<Headers>
781781
*
782782
* @returns The UDP header.
783783
*/
784-
const Udp::Header &GetUdpHeader(void) const { return mHeader.mUdp; }
784+
const UdpHeader &GetUdpHeader(void) const { return mHeader.mUdp; }
785785

786786
/**
787787
* Returns the TCP header.
@@ -790,7 +790,7 @@ class Headers : private Clearable<Headers>
790790
*
791791
* @returns The TCP header.
792792
*/
793-
const Tcp::Header &GetTcpHeader(void) const { return mHeader.mTcp; }
793+
const TcpHeader &GetTcpHeader(void) const { return mHeader.mTcp; }
794794

795795
/**
796796
* Returns the ICMPv4 header.
@@ -833,8 +833,8 @@ class Headers : private Clearable<Headers>
833833
Header mIp4Header;
834834
union
835835
{
836-
Udp::Header mUdp;
837-
Tcp::Header mTcp;
836+
UdpHeader mUdp;
837+
TcpHeader mTcp;
838838
Icmp::Header mIcmp;
839839
} mHeader;
840840
};

src/core/net/ip6.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,7 +1021,7 @@ Error Ip6::PassToHost(OwnedPtr<Message> &aMessagePtr,
10211021

10221022
case kProtoUdp:
10231023
{
1024-
Udp::Header udp;
1024+
UdpHeader udp;
10251025

10261026
IgnoreError(aMessagePtr->Read(aMessagePtr->GetOffset(), udp));
10271027
VerifyOrExit(!Get<Udp>().IsPortInUse(udp.GetDestinationPort()), error = kErrorNoRoute);
@@ -1358,7 +1358,7 @@ Error Ip6::HandleDatagram(OwnedPtr<Message> aMessagePtr, bool aIsReassembled, ui
13581358
{
13591359
if (aMessagePtr->IsOriginHostUntrusted() && (nextHeader == kProtoUdp))
13601360
{
1361-
Udp::Header udpHeader;
1361+
UdpHeader udpHeader;
13621362

13631363
SuccessOrExit(error = aMessagePtr->Read(aMessagePtr->GetOffset(), udpHeader));
13641364

src/core/net/ip6.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ class Headers : private Clearable<Headers>
525525
*
526526
* @returns The UDP header.
527527
*/
528-
const Udp::Header &GetUdpHeader(void) const { return mHeader.mUdp; }
528+
const UdpHeader &GetUdpHeader(void) const { return mHeader.mUdp; }
529529

530530
/**
531531
* Returns the TCP header.
@@ -534,7 +534,7 @@ class Headers : private Clearable<Headers>
534534
*
535535
* @returns The TCP header.
536536
*/
537-
const Tcp::Header &GetTcpHeader(void) const { return mHeader.mTcp; }
537+
const TcpHeader &GetTcpHeader(void) const { return mHeader.mTcp; }
538538

539539
/**
540540
* Returns the ICMPv6 header.
@@ -577,8 +577,8 @@ class Headers : private Clearable<Headers>
577577
Header mIp6Header;
578578
union
579579
{
580-
Udp::Header mUdp;
581-
Tcp::Header mTcp;
580+
UdpHeader mUdp;
581+
TcpHeader mTcp;
582582
Icmp::Header mIcmp;
583583
} mHeader;
584584
};

src/core/net/srp_client.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -983,7 +983,7 @@ void Client::SendUpdate(void)
983983
info.mSingleServiceMode = false;
984984
SuccessOrExit(error = PrepareUpdateMessage(info));
985985

986-
length = info.mMessage->GetLength() + sizeof(Ip6::Udp::Header) + sizeof(Ip6::Header);
986+
length = info.mMessage->GetLength() + sizeof(Ip6::UdpHeader) + sizeof(Ip6::Header);
987987

988988
if (length >= Ip6::kMaxDatagramLength)
989989
{

src/core/net/srp_client.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -766,7 +766,7 @@ class Client : public InstanceLocator, private NonCopyable
766766
OPENTHREAD_CONFIG_SRP_CLIENT_MAX_TIMEOUT_FAILURES_TO_SWITCH_SERVER;
767767
#endif
768768

769-
static constexpr uint16_t kUdpPayloadSize = Ip6::kMaxDatagramLength - sizeof(Ip6::Udp::Header);
769+
static constexpr uint16_t kUdpPayloadSize = Ip6::kMaxDatagramLength - sizeof(Ip6::UdpHeader);
770770

771771
// -------------------------------
772772
// Lease related constants

src/core/net/srp_server.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,7 @@ class Server : public InstanceLocator, private NonCopyable
832832
private:
833833
static constexpr uint8_t kSrpVersion = 0;
834834

835-
static constexpr uint16_t kUdpPayloadSize = Ip6::kMaxDatagramLength - sizeof(Ip6::Udp::Header);
835+
static constexpr uint16_t kUdpPayloadSize = Ip6::kMaxDatagramLength - sizeof(Ip6::UdpHeader);
836836

837837
static constexpr uint32_t kDefaultMinLease = 30; // 30 seconds.
838838
static constexpr uint32_t kDefaultMaxLease = 27u * 3600; // 27 hours (in seconds).

src/core/net/tcp6.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,7 @@ Error Tcp::HandleMessage(ot::Ip6::Header &aIp6Header, Message &aMessage, Message
640640
int nextAction;
641641

642642
VerifyOrExit(length == aMessage.DetermineLengthAfterOffset(), error = kErrorParse);
643-
VerifyOrExit(length >= sizeof(Tcp::Header), error = kErrorParse);
643+
VerifyOrExit(length >= sizeof(TcpHeader), error = kErrorParse);
644644
SuccessOrExit(error = aMessage.Read(aMessage.GetOffset() + offsetof(struct tcphdr, th_off_x2), headerSize));
645645
headerSize = static_cast<uint8_t>((headerSize >> TH_OFF_SHIFT) << 2);
646646
VerifyOrExit(headerSize >= sizeof(struct tcphdr) && headerSize <= sizeof(header) &&

src/core/net/tcp6.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ namespace Ip6 {
8686
class Tcp : public InstanceLocator, private NonCopyable
8787
{
8888
public:
89-
typedef TcpHeader Header; ///< TCP Header.
90-
9189
/**
9290
* Represents an endpoint of a TCP/IPv6 connection.
9391
*/
@@ -562,6 +560,8 @@ class Tcp : public InstanceLocator, private NonCopyable
562560
static constexpr uint8_t kReceiveAvailableCallbackFlag = (1 << 3);
563561
static constexpr uint8_t kDisconnectedCallbackFlag = (1 << 4);
564562

563+
typedef TcpHeader Header;
564+
565565
void ProcessSignals(Endpoint &aEndpoint,
566566
otLinkedBuffer *aPriorHead,
567567
size_t aPriorBacklog,

src/core/net/udp6.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ enum NetifIdentifier : uint8_t
8383
class Udp : public InstanceLocator, public MessageAllocator<Udp, ReservedHeaderSize::kUdpMessage>, private NonCopyable
8484
{
8585
public:
86-
typedef UdpHeader Header; ///< UDP header.
8786
typedef otUdpReceive ReceiveHandler; ///< Receive handler callback.
8887

8988
/**
@@ -535,6 +534,8 @@ class Udp : public InstanceLocator, public MessageAllocator<Udp, ReservedHeaderS
535534
static constexpr uint16_t kSrpServerPortMin = OPENTHREAD_CONFIG_SRP_SERVER_UDP_PORT_MIN;
536535
static constexpr uint16_t kSrpServerPortMax = OPENTHREAD_CONFIG_SRP_SERVER_UDP_PORT_MAX;
537536

537+
typedef UdpHeader Header;
538+
538539
#if OPENTHREAD_CONFIG_PLATFORM_UDP_ENABLE
539540
struct Plat
540541
{

0 commit comments

Comments
 (0)