mirror of
https://github.com/espressif/openthread.git
synced 2026-09-14 13:10:08 +00:00
[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:
@@ -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(),
|
||||
|
||||
@@ -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)));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user