[ip4] use Icmp4Header directly for ICMPv4 (#13180)

This commit updates the codebase to use the `Icmp4Header` type directly,
replacing the nested `Ip4::Icmp::Header` type. The empty `Ip4::Icmp`
wrapper class is removed to simplify the header definition. This change
aligns the ICMPv4 header structure with the flat naming conventions used
for other IP headers (e.g., `Ip6::Icmp6Header`, `Ip6::UpdHeader`).
This commit is contained in:
Abtin Keshavarzian
2026-06-02 07:45:50 -07:00
committed by GitHub
parent f6598900cf
commit 7ad13c8adb
5 changed files with 121 additions and 121 deletions
+8 -8
View File
@@ -120,13 +120,13 @@ static void HandleIp4Receive(otMessage *aMessage, void *aContext)
if (ip4Headers.IsIcmp4())
{
Log("Received ICMPv4 packet");
Ip4::Icmp::Header icmpHeader;
Ip4::Icmp4Header icmpHeader;
SuccessOrQuit(message->Read(sizeof(Ip4::Header), icmpHeader));
if (icmpHeader.GetType() == Ip4::Icmp::Header::kTypeEchoRequest)
if (icmpHeader.GetType() == Ip4::Icmp4Header::kTypeEchoRequest)
{
Log("Received ICMPv4 Echo Request, sending reply");
uint16_t payloadLen = message->GetLength() - sizeof(Ip4::Header) - sizeof(Ip4::Icmp::Header);
uint16_t payloadLen = message->GetLength() - sizeof(Ip4::Header) - sizeof(Ip4::Icmp4Header);
OwnedPtr<Message> replyMessage;
replyMessage.Reset(br1->Get<MessagePool>().Allocate(Message::kTypeIp4));
@@ -135,22 +135,22 @@ static void HandleIp4Receive(otMessage *aMessage, void *aContext)
Ip4::Header ip4Header;
ip4Header.Clear();
ip4Header.SetVersionIhl(0x45);
ip4Header.SetTotalLength(sizeof(Ip4::Header) + sizeof(Ip4::Icmp::Header) + payloadLen);
ip4Header.SetTotalLength(sizeof(Ip4::Header) + sizeof(Ip4::Icmp4Header) + payloadLen);
ip4Header.SetProtocol(Ip4::kProtoIcmp);
ip4Header.SetTtl(64);
ip4Header.SetSource(ip4Headers.GetDestinationAddress());
ip4Header.SetDestination(ip4Headers.GetSourceAddress());
SuccessOrQuit(replyMessage->Append(ip4Header));
Ip4::Icmp::Header replyIcmpHeader;
Ip4::Icmp4Header replyIcmpHeader;
replyIcmpHeader.Clear();
replyIcmpHeader.SetType(Ip4::Icmp::Header::kTypeEchoReply);
replyIcmpHeader.SetType(Ip4::Icmp4Header::kTypeEchoReply);
replyIcmpHeader.SetRestOfHeader(icmpHeader.GetRestOfHeader());
SuccessOrQuit(replyMessage->Append(replyIcmpHeader));
// Append the rest of the ICMP request (Id, Sequence, and Payload)
SuccessOrQuit(replyMessage->AppendBytesFromMessage(
*message, sizeof(Ip4::Header) + sizeof(Ip4::Icmp::Header), payloadLen));
SuccessOrQuit(replyMessage->AppendBytesFromMessage(*message, sizeof(Ip4::Header) + sizeof(Ip4::Icmp4Header),
payloadLen));
replyMessage->SetOffset(sizeof(Ip4::Header));
Checksum::UpdateMessageChecksum(*replyMessage, ip4Header.GetSource(), ip4Header.GetDestination(),
+2 -2
View File
@@ -432,8 +432,8 @@ void TestIcmp4MessageChecksum(void)
Ip4::Address source;
Ip4::Address dest;
uint8_t mPayload[sizeof(kExampleIcmpMessage)];
Ip4::Icmp::Header icmpHeader;
uint8_t mPayload[sizeof(kExampleIcmpMessage)];
Ip4::Icmp4Header icmpHeader;
SuccessOrQuit(message->AppendBytes(kExampleIcmpMessage, sizeof(kExampleIcmpMessage)));