mirror of
https://github.com/espressif/openthread.git
synced 2026-07-28 14:47:46 +00:00
[ip6] add new versions of NewMessage() (#9038)
This commit adds new versions of `NewMessage()` in `Ip6`, `Udp` with different set of parameters. It also updated the code to avoid use of default parameter value.
This commit is contained in:
@@ -300,7 +300,7 @@ template <> void BorderAgent::HandleTmf<kUriProxyTx>(Coap::Message &aMessage, co
|
||||
|
||||
VerifyOrExit(udpEncapHeader.GetSourcePort() > 0 && udpEncapHeader.GetDestinationPort() > 0, error = kErrorDrop);
|
||||
|
||||
VerifyOrExit((message = Get<Ip6::Udp>().NewMessage(0)) != nullptr, error = kErrorNoBufs);
|
||||
VerifyOrExit((message = Get<Ip6::Udp>().NewMessage()) != nullptr, error = kErrorNoBufs);
|
||||
SuccessOrExit(error = message->AppendBytesFromMessage(aMessage, offset, length));
|
||||
|
||||
messageInfo.SetSockPort(udpEncapHeader.GetSourcePort());
|
||||
|
||||
@@ -975,7 +975,7 @@ Error Dtls::HandleDtlsSend(const uint8_t *aBuf, uint16_t aLength, Message::SubTy
|
||||
Error error = kErrorNone;
|
||||
ot::Message *message = nullptr;
|
||||
|
||||
VerifyOrExit((message = mSocket.NewMessage(0)) != nullptr, error = kErrorNoBufs);
|
||||
VerifyOrExit((message = mSocket.NewMessage()) != nullptr, error = kErrorNoBufs);
|
||||
message->SetSubType(aMessageSubType);
|
||||
message->SetLinkSecurityEnabled(mLayerTwoSecurity);
|
||||
|
||||
|
||||
@@ -263,7 +263,7 @@ void Client::Solicit(uint16_t aRloc16)
|
||||
Message *message;
|
||||
Ip6::MessageInfo messageInfo;
|
||||
|
||||
VerifyOrExit((message = mSocket.NewMessage(0)) != nullptr, error = kErrorNoBufs);
|
||||
VerifyOrExit((message = mSocket.NewMessage()) != nullptr, error = kErrorNoBufs);
|
||||
|
||||
SuccessOrExit(error = AppendHeader(*message));
|
||||
SuccessOrExit(error = AppendElapsedTime(*message));
|
||||
|
||||
@@ -339,7 +339,7 @@ Error Server::SendReply(const Ip6::Address &aDst,
|
||||
Ip6::MessageInfo messageInfo;
|
||||
Message *message;
|
||||
|
||||
VerifyOrExit((message = mSocket.NewMessage(0)) != nullptr, error = kErrorNoBufs);
|
||||
VerifyOrExit((message = mSocket.NewMessage()) != nullptr, error = kErrorNoBufs);
|
||||
SuccessOrExit(error = AppendHeader(*message, aTransactionId));
|
||||
SuccessOrExit(error = AppendServerIdentifier(*message));
|
||||
SuccessOrExit(error = AppendClientIdentifier(*message, aClientId));
|
||||
|
||||
@@ -1054,7 +1054,7 @@ Error Client::SendQuery(Query &aQuery, QueryInfo &aInfo, bool aUpdateTimer)
|
||||
|
||||
header.SetQuestionCount(kQuestionCount[aInfo.mQueryType]);
|
||||
|
||||
message = mSocket.NewMessage(0);
|
||||
message = mSocket.NewMessage();
|
||||
VerifyOrExit(message != nullptr, error = kErrorNoBufs);
|
||||
|
||||
SuccessOrExit(error = message->Append(header));
|
||||
@@ -1658,7 +1658,7 @@ void Client::HandleTcpReceiveAvailable(otTcpEndpoint *aEndpoint,
|
||||
SuccessOrExit(mEndpoint.ReceiveByReference(data));
|
||||
VerifyOrExit(data != nullptr);
|
||||
|
||||
message = mSocket.NewMessage(0);
|
||||
message = mSocket.NewMessage();
|
||||
VerifyOrExit(message != nullptr);
|
||||
|
||||
while (aBytesAvailable > totalRead)
|
||||
|
||||
@@ -179,7 +179,7 @@ void Server::ProcessQuery(const Header &aRequestHeader, Message &aRequestMessage
|
||||
}
|
||||
#endif
|
||||
|
||||
responseMessage = mSocket.NewMessage(0);
|
||||
responseMessage = mSocket.NewMessage();
|
||||
VerifyOrExit(responseMessage != nullptr, error = kErrorNoBufs);
|
||||
|
||||
// Allocate space for DNS header
|
||||
|
||||
@@ -54,7 +54,7 @@ Icmp::Icmp(Instance &aInstance)
|
||||
{
|
||||
}
|
||||
|
||||
Message *Icmp::NewMessage(uint16_t aReserved) { return Get<Ip6>().NewMessage(sizeof(Header) + aReserved); }
|
||||
Message *Icmp::NewMessage(void) { return Get<Ip6>().NewMessage(sizeof(Header)); }
|
||||
|
||||
Error Icmp::RegisterHandler(Handler &aHandler) { return mHandlers.Add(aHandler); }
|
||||
|
||||
|
||||
@@ -242,12 +242,10 @@ public:
|
||||
/**
|
||||
* This method returns a new ICMP message with sufficient header space reserved.
|
||||
*
|
||||
* @param[in] aReserved The number of header bytes to reserve after the ICMP header.
|
||||
*
|
||||
* @returns A pointer to the message or `nullptr` if no buffers are available.
|
||||
*
|
||||
*/
|
||||
Message *NewMessage(uint16_t aReserved);
|
||||
Message *NewMessage(void);
|
||||
|
||||
/**
|
||||
* This method registers ICMPv6 handler.
|
||||
|
||||
@@ -81,6 +81,10 @@ Ip6::Ip6(Instance &aInstance)
|
||||
#endif
|
||||
}
|
||||
|
||||
Message *Ip6::NewMessage(void) { return NewMessage(0); }
|
||||
|
||||
Message *Ip6::NewMessage(uint16_t aReserved) { return NewMessage(aReserved, Message::Settings::GetDefault()); }
|
||||
|
||||
Message *Ip6::NewMessage(uint16_t aReserved, const Message::Settings &aSettings)
|
||||
{
|
||||
return Get<MessagePool>().Allocate(
|
||||
@@ -594,7 +598,7 @@ Error Ip6::FragmentDatagram(Message &aMessage, uint8_t aIpProto)
|
||||
offset = fragmentCnt * FragmentHeader::BytesToFragmentOffset(maxPayloadFragment);
|
||||
fragmentHeader.SetOffset(offset);
|
||||
|
||||
VerifyOrExit((fragment = NewMessage(0)) != nullptr, error = kErrorNoBufs);
|
||||
VerifyOrExit((fragment = NewMessage()) != nullptr, error = kErrorNoBufs);
|
||||
IgnoreError(fragment->SetPriority(aMessage.GetPriority()));
|
||||
SuccessOrExit(error = fragment->SetLength(aMessage.GetOffset() + sizeof(fragmentHeader) + payloadFragment));
|
||||
|
||||
@@ -677,7 +681,7 @@ Error Ip6::HandleFragment(Message &aMessage, MessageOrigin aOrigin, MessageInfo
|
||||
if (message == nullptr)
|
||||
{
|
||||
LogDebg("start reassembly");
|
||||
VerifyOrExit((message = NewMessage(0)) != nullptr, error = kErrorNoBufs);
|
||||
VerifyOrExit((message = NewMessage()) != nullptr, error = kErrorNoBufs);
|
||||
mReassemblyList.Enqueue(*message);
|
||||
|
||||
message->SetTimestampToNow();
|
||||
|
||||
+21
-1
@@ -135,6 +135,26 @@ public:
|
||||
*/
|
||||
explicit Ip6(Instance &aInstance);
|
||||
|
||||
/**
|
||||
* This method allocates a new message buffer from the buffer pool with default settings (link security
|
||||
* enabled and `kPriorityMedium`).
|
||||
*
|
||||
* @returns A pointer to the message or `nullptr` if insufficient message buffers are available.
|
||||
*
|
||||
*/
|
||||
Message *NewMessage(void);
|
||||
|
||||
/**
|
||||
* This method allocates a new message buffer from the buffer pool with default settings (link security
|
||||
* enabled and `kPriorityMedium`).
|
||||
*
|
||||
* @param[in] aReserved The number of header bytes to reserve following the IPv6 header.
|
||||
*
|
||||
* @returns A pointer to the message or `nullptr` if insufficient message buffers are available.
|
||||
*
|
||||
*/
|
||||
Message *NewMessage(uint16_t aReserved);
|
||||
|
||||
/**
|
||||
* This method allocates a new message buffer from the buffer pool.
|
||||
*
|
||||
@@ -144,7 +164,7 @@ public:
|
||||
* @returns A pointer to the message or `nullptr` if insufficient message buffers are available.
|
||||
*
|
||||
*/
|
||||
Message *NewMessage(uint16_t aReserved, const Message::Settings &aSettings = Message::Settings::GetDefault());
|
||||
Message *NewMessage(uint16_t aReserved, const Message::Settings &aSettings);
|
||||
|
||||
/**
|
||||
* This method allocates a new message buffer from the buffer pool and writes the IPv6 datagram to the message.
|
||||
|
||||
@@ -744,7 +744,7 @@ void Client::SendUpdate(void)
|
||||
};
|
||||
|
||||
Error error = kErrorNone;
|
||||
Message *message = mSocket.NewMessage(0);
|
||||
Message *message = mSocket.NewMessage();
|
||||
uint32_t length;
|
||||
|
||||
VerifyOrExit(message != nullptr, error = kErrorNoBufs);
|
||||
|
||||
@@ -1202,7 +1202,7 @@ Error Server::VerifySignature(const Dns::Ecdsa256KeyRecord &aKeyRecord,
|
||||
|
||||
// The uncompressed (canonical) form of the signer name should be used for signature
|
||||
// verification. See https://tools.ietf.org/html/rfc2931#section-3.1 for details.
|
||||
signerNameMessage = Get<Ip6::Udp>().NewMessage(0);
|
||||
signerNameMessage = Get<Ip6::Udp>().NewMessage();
|
||||
VerifyOrExit(signerNameMessage != nullptr, error = kErrorNoBufs);
|
||||
SuccessOrExit(error = Dns::Name::AppendName(aSignerName, *signerNameMessage));
|
||||
sha256.Update(*signerNameMessage, signerNameMessage->GetOffset(), signerNameMessage->GetLength());
|
||||
@@ -1399,7 +1399,7 @@ void Server::SendResponse(const Dns::UpdateHeader &aHeader,
|
||||
Message *response = nullptr;
|
||||
Dns::UpdateHeader header;
|
||||
|
||||
response = GetSocket().NewMessage(0);
|
||||
response = GetSocket().NewMessage();
|
||||
VerifyOrExit(response != nullptr, error = kErrorNoBufs);
|
||||
|
||||
header.SetMessageId(aHeader.GetMessageId());
|
||||
@@ -1442,7 +1442,7 @@ void Server::SendResponse(const Dns::UpdateHeader &aHeader,
|
||||
Dns::LeaseOption leaseOption;
|
||||
uint16_t optionSize;
|
||||
|
||||
response = GetSocket().NewMessage(0);
|
||||
response = GetSocket().NewMessage();
|
||||
VerifyOrExit(response != nullptr, error = kErrorNoBufs);
|
||||
|
||||
header.SetMessageId(aHeader.GetMessageId());
|
||||
|
||||
@@ -77,6 +77,10 @@ Udp::Socket::Socket(Instance &aInstance)
|
||||
Clear();
|
||||
}
|
||||
|
||||
Message *Udp::Socket::NewMessage(void) { return NewMessage(0); }
|
||||
|
||||
Message *Udp::Socket::NewMessage(uint16_t aReserved) { return NewMessage(aReserved, Message::Settings::GetDefault()); }
|
||||
|
||||
Message *Udp::Socket::NewMessage(uint16_t aReserved, const Message::Settings &aSettings)
|
||||
{
|
||||
return Get<Udp>().NewMessage(aReserved, aSettings);
|
||||
@@ -414,6 +418,10 @@ uint16_t Udp::GetEphemeralPort(void)
|
||||
return mEphemeralPort;
|
||||
}
|
||||
|
||||
Message *Udp::NewMessage(void) { return NewMessage(0); }
|
||||
|
||||
Message *Udp::NewMessage(uint16_t aReserved) { return NewMessage(aReserved, Message::Settings::GetDefault()); }
|
||||
|
||||
Message *Udp::NewMessage(uint16_t aReserved, const Message::Settings &aSettings)
|
||||
{
|
||||
return Get<Ip6>().NewMessage(sizeof(Header) + aReserved, aSettings);
|
||||
|
||||
+38
-2
@@ -161,6 +161,24 @@ public:
|
||||
*/
|
||||
explicit Socket(Instance &aInstance);
|
||||
|
||||
/**
|
||||
* This method returns a new UDP message with default settings (link security enabled and `kPriorityNormal`)
|
||||
*
|
||||
* @returns A pointer to the message or `nullptr` if no buffers are available.
|
||||
*
|
||||
*/
|
||||
Message *NewMessage(void);
|
||||
|
||||
/**
|
||||
* This method returns a new UDP message with default settings (link security enabled and `kPriorityNormal`)
|
||||
*
|
||||
* @param[in] aReserved The number of header bytes to reserve after the UDP header.
|
||||
*
|
||||
* @returns A pointer to the message or `nullptr` if no buffers are available.
|
||||
*
|
||||
*/
|
||||
Message *NewMessage(uint16_t aReserved);
|
||||
|
||||
/**
|
||||
* This method returns a new UDP message with sufficient header space reserved.
|
||||
*
|
||||
@@ -170,7 +188,7 @@ public:
|
||||
* @returns A pointer to the message or `nullptr` if no buffers are available.
|
||||
*
|
||||
*/
|
||||
Message *NewMessage(uint16_t aReserved, const Message::Settings &aSettings = Message::Settings::GetDefault());
|
||||
Message *NewMessage(uint16_t aReserved, const Message::Settings &aSettings);
|
||||
|
||||
/**
|
||||
* This method opens the UDP socket.
|
||||
@@ -533,6 +551,24 @@ public:
|
||||
*/
|
||||
uint16_t GetEphemeralPort(void);
|
||||
|
||||
/**
|
||||
* This method returns a new UDP message with default settings (link security enabled and `kPriorityNormal`)
|
||||
*
|
||||
* @returns A pointer to the message or `nullptr` if no buffers are available.
|
||||
*
|
||||
*/
|
||||
Message *NewMessage(void);
|
||||
|
||||
/**
|
||||
* This method returns a new UDP message with default settings (link security enabled and `kPriorityNormal`)
|
||||
*
|
||||
* @param[in] aReserved The number of header bytes to reserve after the UDP header.
|
||||
*
|
||||
* @returns A pointer to the message or `nullptr` if no buffers are available.
|
||||
*
|
||||
*/
|
||||
Message *NewMessage(uint16_t aReserved);
|
||||
|
||||
/**
|
||||
* This method returns a new UDP message with sufficient header space reserved.
|
||||
*
|
||||
@@ -542,7 +578,7 @@ public:
|
||||
* @returns A pointer to the message or `nullptr` if no buffers are available.
|
||||
*
|
||||
*/
|
||||
Message *NewMessage(uint16_t aReserved, const Message::Settings &aSettings = Message::Settings::GetDefault());
|
||||
Message *NewMessage(uint16_t aReserved, const Message::Settings &aSettings);
|
||||
|
||||
/**
|
||||
* This method sends an IPv6 datagram.
|
||||
|
||||
@@ -135,7 +135,7 @@ void PingSender::SendPing(void)
|
||||
messageInfo.mHopLimit = mConfig.mHopLimit;
|
||||
messageInfo.mAllowZeroHopLimit = mConfig.mAllowZeroHopLimit;
|
||||
|
||||
message = Get<Ip6::Icmp>().NewMessage(0);
|
||||
message = Get<Ip6::Icmp>().NewMessage();
|
||||
VerifyOrExit(message != nullptr);
|
||||
|
||||
SuccessOrExit(message->Append(HostSwap32(now.GetValue())));
|
||||
|
||||
Reference in New Issue
Block a user