mirror of
https://github.com/espressif/openthread.git
synced 2026-08-09 12:17:47 +00:00
[telemetry] add upstream DNS metrics (#9729)
This commit is contained in:
@@ -147,20 +147,33 @@ typedef enum
|
||||
OT_DNSSD_QUERY_TYPE_RESOLVE_HOST = 3, ///< Service type resolve hostname.
|
||||
} otDnssdQueryType;
|
||||
|
||||
/**
|
||||
* Represents the count of queries, responses, failures handled by upstream DNS server.
|
||||
*
|
||||
* Requires `OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE`.
|
||||
*/
|
||||
typedef struct otUpstreamDnsCounters
|
||||
{
|
||||
uint32_t mQueries; ///< The number of queries forwarded.
|
||||
uint32_t mResponses; ///< The number of responses forwarded.
|
||||
uint32_t mFailures; ///< The number of upstream DNS failures.
|
||||
} otUpstreamDnsCounters;
|
||||
|
||||
/**
|
||||
* Contains the counters of DNS-SD server.
|
||||
*
|
||||
*/
|
||||
typedef struct otDnssdCounters
|
||||
{
|
||||
uint32_t mSuccessResponse; ///< The number of successful responses
|
||||
uint32_t mServerFailureResponse; ///< The number of server failure responses
|
||||
uint32_t mFormatErrorResponse; ///< The number of format error responses
|
||||
uint32_t mNameErrorResponse; ///< The number of name error responses
|
||||
uint32_t mNotImplementedResponse; ///< The number of 'not implemented' responses
|
||||
uint32_t mOtherResponse; ///< The number of other responses
|
||||
|
||||
uint32_t mResolvedBySrp; ///< The number of queries completely resolved by the local SRP server
|
||||
uint32_t mSuccessResponse; ///< The number of successful responses.
|
||||
uint32_t mServerFailureResponse; ///< The number of server failure responses.
|
||||
uint32_t mFormatErrorResponse; ///< The number of format error responses.
|
||||
uint32_t mNameErrorResponse; ///< The number of name error responses.
|
||||
uint32_t mNotImplementedResponse; ///< The number of 'not implemented' responses.
|
||||
uint32_t mOtherResponse; ///< The number of other responses.
|
||||
uint32_t mResolvedBySrp; ///< The number of queries resolved by the local SRP server.
|
||||
otUpstreamDnsCounters mUpstreamDnsCounters; ///< The number of queries, responses,
|
||||
///< failures handled by upstream DNS server.
|
||||
} otDnssdCounters;
|
||||
|
||||
/**
|
||||
|
||||
@@ -53,7 +53,7 @@ extern "C" {
|
||||
* @note This number versions both OpenThread platform and user APIs.
|
||||
*
|
||||
*/
|
||||
#define OPENTHREAD_API_VERSION (385)
|
||||
#define OPENTHREAD_API_VERSION (386)
|
||||
|
||||
/**
|
||||
* @addtogroup api-instance
|
||||
|
||||
@@ -866,6 +866,10 @@ void Server::OnUpstreamQueryDone(UpstreamQueryTransaction &aQueryTransaction, Me
|
||||
{
|
||||
error = mSocket.SendTo(*aResponseMessage, aQueryTransaction.GetMessageInfo());
|
||||
}
|
||||
else
|
||||
{
|
||||
error = kErrorResponseTimeout;
|
||||
}
|
||||
|
||||
ResetUpstreamQueryTransaction(aQueryTransaction, error);
|
||||
|
||||
@@ -886,7 +890,7 @@ Server::UpstreamQueryTransaction *Server::AllocateUpstreamQueryTransaction(const
|
||||
}
|
||||
}
|
||||
|
||||
VerifyOrExit(newTxn != nullptr);
|
||||
VerifyOrExit(newTxn != nullptr, mCounters.mUpstreamDnsCounters.mFailures++);
|
||||
|
||||
newTxn->Init(aMessageInfo);
|
||||
LogInfo("Upstream query transaction %d initialized.", static_cast<int>(newTxn - mUpstreamQueryTransactions));
|
||||
@@ -905,6 +909,7 @@ Error Server::ResolveByUpstream(const Request &aRequest)
|
||||
VerifyOrExit(txn != nullptr, error = kErrorNoBufs);
|
||||
|
||||
otPlatDnsStartUpstreamQuery(&GetInstance(), txn, aRequest.mMessage);
|
||||
mCounters.mUpstreamDnsCounters.mQueries++;
|
||||
|
||||
exit:
|
||||
return error;
|
||||
@@ -1277,10 +1282,12 @@ void Server::ResetUpstreamQueryTransaction(UpstreamQueryTransaction &aTxn, Error
|
||||
OT_UNUSED_VARIABLE(index);
|
||||
if (aError == kErrorNone)
|
||||
{
|
||||
mCounters.mUpstreamDnsCounters.mResponses++;
|
||||
LogInfo("Upstream query transaction %d completed.", index);
|
||||
}
|
||||
else
|
||||
{
|
||||
mCounters.mUpstreamDnsCounters.mFailures++;
|
||||
LogWarn("Upstream query transaction %d closed: %s.", index, ErrorToString(aError));
|
||||
}
|
||||
aTxn.Reset();
|
||||
|
||||
Reference in New Issue
Block a user