-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[net-diag] introduce Server
and Client
classes
#8936
Conversation
Size Report of OpenThread
|
Thanks for this enhancement!
What is the resource overhead for the Client? If significant, we could consider enabling by default only on border routers. I'm wondering if the Client is useful on something like a light bulb or smart plug. |
Good point. I will check the code size impact. Checking the impact using existing Will try to add this in next push to this PR. |
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## main #8936 +/- ##
==========================================
- Coverage 82.78% 80.18% -2.61%
==========================================
Files 538 521 -17
Lines 73513 71877 -1636
==========================================
- Hits 60860 57632 -3228
- Misses 12653 14245 +1592
|
7a118ba
to
f26f9aa
Compare
Case(kUriDiagnosticGetAnswer, NetworkDiagnostic::NetworkDiagnostic); | ||
Case(kUriDiagnosticReset, NetworkDiagnostic::NetworkDiagnostic); | ||
#if OPENTHREAD_CONFIG_TMF_NETDIAG_CLIENT_ENABLE | ||
Case(kUriDiagnosticGetRequest, NetworkDiagnostic::Server); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are server-side handlers. Why are they guarded by CLIENT_ENABLE
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. That's not correct. I missed this. Will fix in new push.
This commit introduces `Server` and `Client` classes breaking the `NetworkDiagnostic` module into two components. The `Server` responds to queries and requests (handling Net Diag TMF commands), while `Client` issues queries/requests and processes responses. The `Server` is available under both FTD and MTD (which follows the requirement of Thread spec). The client is enabled using newly added `OPENTHREAD_CONFIG_TMF_NETDIAG_CLIENT_ENABLE` config option which is also available as `OT_NETDIAG_CLIENT` CMake option or the autoconf build switch `NETDIAG_CLIENT`. The client functionality is by default enabled on Border Routers (tied to `CONFIG_BORDER_ROUTING_ENABLE` config). The previous `TMF_NETWORK_DIAG_MTD_ENABLE` config is now removed along with its CMake `OT_MTD_NETDIAG` and autoconf switch. This commit adds checks to trigger build error if the previous config and/or its related CMake option are used.
f26f9aa
to
f2a9f0d
Compare
Bug: b/281629567 * upstream/main: [routing-manager] update OMR prefix def-route flag when publishing `::/0` (openthread#9042) [alarm] update docs to explicitly require 32-bit alarms (openthread#9043) [dns-client] check all responses in `GetHostAddress()` (openthread#9044) [ip6] add new versions of `NewMessage()` (openthread#9038) [log] log the port for backbone (openthread#9039) [ip6] simplify and update `NewMessageFromData()` (openthread#9037) [github-actions] add arm-gcc {10,11,12} checks (openthread#9035) Define posix radio RadioSpinel accessor (openthread#9018) [network-name] consolidate default network name definition (openthread#9036) [topology] track connection time of neighbors (openthread#9007) [string] add `StringParseUint8()` helper function (openthread#9026) [link-metrics] fix compilation errors (openthread#9033) [build] add CMake Android NDK support (openthread#9010) [tcp] remove EXCLUDE_TCPLP_LIB option (openthread#8883) [netdata] add `otNetDataReplacePublishedExternalRoute()` API (openthread#9013) [border-agent] fix BorderAgentId compile and enable it in CI tests (openthread#9030) github-actions: bump codecov/codecov-action from 3.1.1 to 3.1.3 (openthread#9031) [settings] define new Settings key for Border Router ID (openthread#8971) [posix] update upstream DNS addresses after a few minutes (openthread#8972) [link-metrics] refactor link metrics module (openthread#8966) [cli] refactor br command prefix type (openthread#9022) [test] migrate tests to cmake (openthread#8929) [ip6] add `otIp6PrefixFromString()` (openthread#9016) [netdata] prefer BR acting as router over ED (when all other checks are same) (openthread#9012) [net-diag] vendor name, model, and sw version TLVs (openthread#8898) [mle] request "Route TLV" after quick re-attach as FED (openthread#8956) [mle] fix how time per role is tracked after counters are reset (openthread#9011) [posix] vendor support with lib dependencies (openthread#8950) [routing-manager] `RoutePublisher` and new route publishing model (openthread#8986) github-actions: bump actions/setup-python from 4.5.0 to 4.6.0 (openthread#9008) [mle] clear/update address cache entries on promotion of child to router (openthread#8987) [mle] add parent request callback config (openthread#8989) [dns-client] update API docs (openthread#8962) [build] add cmake option for generating .map files (openthread#9006) [diag] implement `diag stream` command (openthread#8975) [otci] fix some style issues (openthread#8996) [cli] store cli user commands in container and support list prepend (openthread#8977) [daemon] remove log of CLI input (openthread#8994) [crypto] allow key reference usage for ECDSA (openthread#8961) github-actions: bump step-security/harden-runner from 2.3.0 to 2.3.1 (openthread#8991) [test] require either mdns or avahi (openthread#8959) [sub-mac] check key-id to match in `SignalFrameCounterUsed()` (openthread#8978) [dns-client] fix finalizing query from `HandleTimer()` (openthread#8982) [github-actions] replace deprecated `set-output` commands (openthread#8976) [mle] enable Inform Previous Parent feature by default (openthread#8969) github-actions: bump github/codeql-action from 2.2.5 to 2.2.12 (openthread#8968) [nat64] add function for parsing IPv4 CIDR (openthread#8954) [mle] simplify parsing of Address Registration TLV entries (openthread#8963) [mle] simplify appending of Address Registration TLV entries (openthread#8958) [net-diags] fix `GetNextDiagTlv()` when skipping over unknown TLVs (openthread#8957) [test] disable INTER_OP_BBR by default (openthread#8952) [mle] simplify `SendChildUpdateRequest()` (openthread#8951) [posix] unify the RCP reset sequence (openthread#8858) [style] fix spelling errors (openthread#8939) github-actions: bump step-security/harden-runner from 2.2.1 to 2.3.0 (openthread#8943) [posix] initialize pointers to avoid potential using uninitialized pointers (openthread#8942) [net-diag] introduce `Server` and `Client` classes (openthread#8936) [tmf] add local IPv6 DSCP values to indicate TMF message priority (openthread#7869) [joiner] use `Clamp()` function to calculate priority from RSS (openthread#8937) [coap] avoid using default parameter values for common methods (openthread#8932) [build] address new warnings with clang-14 (openthread#8924) [posix] reset the signal actions after processing signals (openthread#8934) [tmf] add `UriToString()` for logging (openthread#8930) [spinel] add openthread config header file (openthread#8928) [dns-client] add `ServiceMode` to control service resolution (openthread#8772) [tmf] skip copy of `MessageInfo` for empty ack (openthread#8926) [data-poll-sender] clamp poll period based on child timeout (openthread#8927) github-actions: bump ossf/scorecard-action from 2.1.2 to 2.1.3 (openthread#8925) [csl] take into account radio header for aiming at the CSL phase (openthread#8743) [tmf] allow pan-id query on MTD (openthread#8919) [docs] remove clang-format tags and implement multi-line cparam tags (openthread#8921) [network-data] change 6LoWPAN context ID reuse delay to 5 minutes (openthread#8896) [test] add tests for DNS forwarding (openthread#8847) [sub-mac] prefer scanning and RX after data poll over CSL RX (openthread#8832) [expect] split and extend tests for discovery (openthread#8832) [discovery] allow (S)SED devices to perform MLE Discovery (openthread#8832) [radio] clarify `mTimestamp` meaning in comments (openthread#8894) [netif] add diagnostic log for when no valid route is found (openthread#8907) [docs] disable Doxygen autolink for the word "Joiner" (openthread#8915) [spinel] abort host after receiving unexpected reset from RCP (openthread#8909) [ip6] combine `PassToHost()` calls in `Ip6::HandleDatagram()` (openthread#8908) github-actions: bump actions/setup-go from 3.5.0 to 4.0.0 (openthread#8910) [logging] fix print format for some variables requiring `%u` or `%lu` (openthread#8899) [cli] add docs for `partitionid` through `pollperiod` (openthread#8875) [common] add `Preference` helper methods for 2-bit preference value (openthread#8895) [srp] add support for short (4-bytes) lease option variant (openthread#8879) [tlv] fix `ReadStringTlv()` (openthread#8897) [trel] protect against invalid long TXT data keys from TREL peer (openthread#8891) [mle] add `otDeviceProperties` to calculate local leader weight (openthread#8670) [dua] remove DUA address if network data no longer contains DUA prefix (openthread#8874) [netif] simplify `ThreadNetif` (openthread#8882) [cli] add docs for `networkkey` through `parentpriority` (openthread#8868) [dua] avoid unnecessary time ticker processing (openthread#8872) github-actions: bump step-security/harden-runner from 2.2.0 to 2.2.1 (openthread#8885) [mle] update how we set/get Parent Priority on `ConnectivityTlv` (openthread#8878) [netdata] simplify tracking of lowpan context IDs (openthread#8876) [netdata] new API to get lowpan context IDs (openthread#8870) [dns] implement DNS query over TCP (openthread#8474) [mle] add `IncrementLinkQuality()` to `ConnectivityTlv` (openthread#8877) [mac] add build config for timeout for receiving a Data Frame (openthread#8863) [cli] update dataset to operate directly on TLVs (openthread#8871) [dataset] add `otDatasetUpdateTlvs` API (openthread#8871) [csl] add code comment & explanation for `HandleCslTimer` (openthread#8867) [tcp] update `otTcpConnect()` doc to indicate currently supported behavior (openthread#8835) [mle] update and enhance processing of Route TLV (openthread#8851) [netdata] ensure to free context ID once (openthread#8860) [netdata] update `StartContextReuseTimer()` to start time if not running (openthread#8859) [mesh-diag] update `kMaxTlvsToRequest` constant (openthread#8853) github-actions: bump docker/setup-buildx-action from 2.2.1 to 2.5.0 (openthread#8856) [cli] update `dns` docs (openthread#8831) [dataset] add `otDatasetConvertToTlvs()` API (openthread#8720) [build] fix the `-Wunused-command-line-argument` warning on macOS (openthread#8839) [version] introduce `OT_THREAD_VERSION_1_3_1` (openthread#8849) [srp-server] fix -Werror=maybe-uninitialized (openthread#8848) [net-diag] add Net Diag Version TLV (openthread#8834) [dnssd] change `OT_DNS_QUERY_UPSTREAM` to `OT_DNS_UPSTREAM_QUERY` for consistency (openthread#8846) [github-actions] update otns to python 3.9 (openthread#8845) [rcp] fix `DecodeStreamRawTxRequest()` to handle missing optional fields (openthread#8844) [radio] mechanism to switch to PAN channel more quickly on CSL tx (openthread#8701) [thread-cert] add Low Power test case 7_1_02 (openthread#8807) [netdata] mechanism to track max Network Data length since start/reset (openthread#8826) [mle] add `InitNeighbor()` method (openthread#8836) [mle] send MLE Avd on router promo & accept former child as router (openthread#8307) [docs] dns browse: explain dns-sd proxy zone (openthread#8824) github-actions: bump github/codeql-action from 2.1.39 to 2.2.5 (openthread#8837) [mesh-diag] new module and new API to discover network topology (openthread#8682) [dnssd] add API for getting the upstream query status (openthread#8815) [docs] add plat-dns module to Doxygen menu (openthread#8819) [pretty] fix `script/clang-format` (openthread#8814) [child-supervision] mechanism to inform interval from child to parent (openthread#7993) [mle-router] add common `SetStateRouterOrLeader()` (openthread#8813) [cli] fix bad CLI command tag (openthread#8818) [cli] added documentation for rcp and route (openthread#8800) [mle] smaller enhancements (openthread#8812) [message-pool] track max used buffers (openthread#8796) [time-sync] define cpp enum/types mirroring public definitions (openthread#8811) [routing-manager] new APIs to get state and new CLI commands (openthread#8784) [net-diag] define `AppendDiagTlv()` (openthread#8805) [core] use `Min()` and `Max()` to track next timer fire time (openthread#8808) [backbone-router] define C++ enum/types mirroring public definitions (openthread#8809) [unit] add a README guide for unit tests (openthread#8791) github-actions: bump step-security/harden-runner from 2.1.0 to 2.2.0 (openthread#8810) [cmake] fix `OT_TCP` option (openthread#8804) Add missing dependencies to "openthread-posix" target (openthread#8801) [commissioner] add joiner session timeout (openthread#8776) [cli] update dataset readme with the latest output (openthread#8790) [ip6] simplify `Ip6::HandleDatagram()` (openthread#8787) [dnssd] support forwarding DNS queries to platform upstream (openthread#8668) [docs] add Nabu Casa to supporter list (openthread#8785) [docker] avoid unnecessary copying when building an image for testing (openthread#8780) [build] add CMake option for enabling TCP (openthread#8778) github-actions: bump actions/upload-artifact from 3.1.1 to 3.1.2 (openthread#8781) [routing-manager] use NA target address (openthread#8777) [trel] remove deprecated `otTrelEnable`/`otTrelDisable` APIs (openthread#8775) [test] allow TREL disabled by default (openthread#8774) [csl] fix indirect retransmission of frame previously transmitted via CSL (openthread#8770) [test] update `test_srp_server` to clear the service instances (openthread#8768) [code-utils] use `num_utils` `Min`/`Max` to simplify code (openthread#8762) [tests] add build tests for BR features (openthread#6570) [posix] set link type to none explicitly (openthread#8526) [harness-simulation] keep capture files in sync at runtime (openthread#8138) [bootstrap] install bzip2 to uncompress arm toolchain (openthread#8621) [net] fix typo multicast in comments (openthread#8756) [posix] disable addrconf generating LL address (openthread#8749) [trel] add `otTrelSetEnabled` API (openthread#8731) [tcp] correct misspelling in API docs (openthread#8750) github-actions: bump actions/setup-go from 3.4.0 to 3.5.0 (openthread#8748) [net-diag] simplify `NetworkDiagnostic` (openthread#8746) [simul-platform] enhance radio `nodeidfilter` command (openthread#8740) [history-tracker] track changes to router table (next hop, cost) (openthread#8734) [cmake] guard unit tests with `BUILD_TESTING` (openthread#8739) [github-actions] fix coverage reporting in unit workflow (openthread#8737) [mac] ensure CSL parameters are initialized to zero (openthread#8736) [test] use cmake to run unit tests (openthread#8724) [ncp] remove legacy network support (openthread#8723) [cli] `nexthop` command to output next hop and path cost table (openthread#8729) [router-table] use `Tasklet` to signal changes (openthread#8730) [ip6] add `Option::ParseFrom()` and common `PadOption` (openthread#8719) [cli] add documentation for the DNS CLI commands (openthread#8727) [mle] retransmit link request after router reset (openthread#8704) [coap] copy token from block2 request message to next response token (openthread#8700) github-actions: bump actions/setup-python from 4.3.1 to 4.5.0 (openthread#8725) [tests] declare python dependencies with specific versions (openthread#8721) [link-metrics] simplify `HandleManagementRequest()` (openthread#8714) [ip6] ensure to make room for new header at correct offset (openthread#8717) [ip6] remove default constructor for `Ip6::Option` (openthread#8712) [cli] add documentation for `dns resolve4` command (openthread#8710) [github-actions] update `toranj-ncp` to trigger on pull request only (openthread#8648) [message] add `WriteBytesFromMessage()` and `Remove/InsertHeader()` (openthread#8708) [ip6] refer to correct RFC in comments/docs (openthread#8711) [ip6] rename `Option` sub-classes (openthread#8709) [test] move tcplp tests into unit workflow (openthread#8707) [posix] remove Android.mk (openthread#8706) [mle] add API for changing number of child router links (openthread#8410) [api] include `mLinkMargin` in `otNeighborInfo` (openthread#8697) github-actions: bump step-security/harden-runner from 2.0.0 to 2.1.0 (openthread#8703) [cli-tcp] fix TLS configuration for different platforms (openthread#8693) [core] use `AppendBytesFromMessage()` to copy bytes between messages (openthread#8686) [net-diags] include link quality in child table entry (openthread#8398) [csl] reset tx attempt on `mCslTxChild` when msg is replaced/purged (openthread#8683) [ip6] add `GetSize()` to `ExtensionHeader` and `OptionHeader` (openthread#8684) github-actions: bump github/codeql-action from 2.1.37 to 2.1.39 (openthread#8679) [diag] add power calibration related diag commands (openthread#8584) [cli-tcp] add TLS mode to TCP CLI tool and TLS callbacks to TCP API (openthread#8257) [ip6-mpl] check the length when reading MPL Option (openthread#8672) [github-actions] fix cmake 3.10.3 install (openthread#8671) [radio] new API to update frame counter only if new value is larger (openthread#8607) [ip6] check role to allow forwarding back to Thread (openthread#8666) [ip6] style enhancements and renames (openthread#8665) [logging] fix print format when enabling csl debug (openthread#8667) [mac-frame] update `InitMacHeader()` (openthread#8660) [router-table] new API to get next hop and cost (openthread#8653) github-actions: bump actions/download-artifact from 3.0.1 to 3.0.2 (openthread#8658) [data-poll-sender] faster rtx polling for CSL (openthread#8654) [mle] keep router table next hop and cost on REED to router promotion (openthread#8657) [netdata] update `CompareRouteEntries()` on MTD to prefer self (openthread#8656) [mac] ensure to apply RSS filter on all rx frame including ack (openthread#8651) [trel] use same constant for noise-floor under TREL radio link only (openthread#8650) [router-table] simplify `UpdateRoutes()` and how to reset Adv interval (openthread#8644) [mle] always check for stale parent in `HandleAdv()` (openthread#8646) [mle] update `HandleAdv` to not exit when deciding to promote to router (openthread#8645) [infra-if] add API for querying infra link status (openthread#8619) [mle] simplify `HandleAdvertisement()` (openthread#8643) [router-table] update cost on FED and enhance `GetPathCost()` (openthread#8629) [netdiag] include `netdiag.h` header in `network_diagnostic_tlvs.hpp` (openthread#8639) [radio] refine the definition of SYMBOL_TIME (openthread#8634) [posix] rename and move the configuration of host-rcp time sync interval (openthread#8630) [cli] add csl info in single child info (openthread#8606) [router-table] update `FillRouteTlv()` to use `GetPathCost()` (openthread#8638) [github-actions] fix bootstrap on macos (openthread#8640) github-actions: bump actions/checkout from 3.1.0 to 3.3.0 (openthread#8631) [router-table] simplify `GetNextHop()` (openthread#8624) [router-table] move cost calc and related methods to `RouterTable` (openthread#8623) [rcp] RCP to inform host of its supported RCP API version range (openthread#8617) [toranj] add cli-based test-cases (openthread#8599) [netdata] use `LeaderBase::FindNextMatchingPrefixTlv()` (openthread#8616) [ip6] simplify `SelectSourceAddress()` (openthread#8615) [posix] add posix config file configuration (openthread#8612) [cli] new command to enable/disable discovery request callback (openthread#8579) [mle] define constants (C++ style) for OT configs used in MLE (openthread#8602) [notifier] update to use `Callback<HandlerType>` (openthread#8611) [mle] add helper `RxInfo::IsNeighborStateValid()` (openthread#8610) [docs] fix typo in comment (openthread#8609) [mle] use DUA address directly in `AppendAddressRegistrationTlv()` (openthread#8608) github-actions: bump github/codeql-action from 2.1.36 to 2.1.37 (openthread#8600) [mle] update `GetPathCost()` calculation to handle child dest (openthread#8586) [tcplp] TCP support on 15.4 (openthread#8590) (openthread#8593) [nat64] fix message leak when NAT64 translator is enabled (openthread#8592) [network-data] ensure `ExternalRouteLookup()` picks longest match (openthread#8582) github-actions: bump ossf/scorecard-action from 2.1.0 to 2.1.2 (openthread#8585) [routing-manager] add feature to skip NS probe with router on same device (openthread#8563) [tcplp] fix code scanning alerts relating to integer overflow in multiplication (openthread#8578) [routing-manager] determine RIO preference based on current role (openthread#8574) [cli] add new command `neighbor linkquality` (openthread#8508) [router-table] signal if router is removed from `UpdateRouterIdSet()` (openthread#8573) [mesh-forwarder] use constant for `hopsLeft` in lowpan `MeshHeader` (openthread#8569) [link-metrics] fix build flags for Link Metrics Initiator (openthread#8568) [routing-manager] `GetFavoredOmrPrefix` should return an error when Routing Manager is not running (openthread#8565) [test] update toranj-cli logging to use log to file model (openthread#8547) [common] add `Callback<HandlerType>` class (openthread#8560) [nat64] NAT64 translator should be active only when local prefix is published (openthread#8558) [cli] fix incorrect mask "channel manager" CLI output (openthread#8571) [github-actions] disable `harden-runner` in OTBR workflow (openthread#8572) [core] use `kThreadVersion1pX` constants (openthread#8562) [link-quality] move `CostForLinkQuality()` to `link_quality.hpp` (openthread#8561) [simul-plat] new option to write logs to a given file (openthread#8516) [posix] add power calibration support (openthread#8293) [diag] modify gpio diag functions description (openthread#8538) [netif] add helper to signal fixed multicast address changes (openthread#8559) [spinel] remove incorrect static_cast (openthread#8512) [pretty] combine strings in `node.py` (openthread#8550) [docs] SRP Service Clarification (openthread#8541) [mle] add `ShouldDowngrade()` method (openthread#8543) [mle] define constant for "Child ID Response" timeout (openthread#8536) [test] replace `sprintf` with `snprintf` in `otPlatDiagProcess()` (openthread#8549) [mle] simplify `IsSingleton()` methods (openthread#8548) [cli] add config for log level for emitting cli input/output to logs (openthread#8545) [mle] remove redundant `OPENTHREAD_FTD` checks in `mle_router.cpp` (openthread#8544) github-actions: bump ossf/scorecard-action from 2.0.6 to 2.1.0 (openthread#8552) [posix] make `mInfraIfIndex` non-static for `posix::InfraIf` (openthread#8546) [posix] add build option for posix infra if implementation (openthread#8540) [otci] fix parsing route flags (openthread#8537) [posix] add / delete route to NAT64 CIDR according to NAT64 translator state (openthread#8505) [mle] fix `NeighborHasComparableConnectivity()` (openthread#8535) [rcp] fix transaction ID caching and guard max power table code (openthread#8408) [router-table] add documentation for `{Get/Set}RouterIdRange()` (openthread#8532) [toranj update `build.sh` to use `cmake` for CLI builds (openthread#8529) [cmake] add `OT_15_4` option for `RADIO_LINK_IEEE_802_15_4_ENABLE` (openthread#8529) [mle] avoid multiple `return` in `HasSmallNumberOfChildren()` (openthread#8534) [continuous-integration] remove LGTM.com (openthread#8528) [posix] enable receiving Neighbor Advertisement on infra interface (openthread#8521) [router-table] simplify tracking of routers and allocated IDs (openthread#8483) [test] ensure NAT64 is enabled when running NAT64 tests (openthread#8520) [github-actions] set top-level permissions to `read` (openthread#8518) [tests] verify the RA/RS fields in border routing counters (openthread#8494) [github-actions] apply step-security updates (openthread#8509) [crypto] remove legacy `otCryptoEcdsaSign` (openthread#8514) [simul-plat] fix parsing of "enable-energy-scan" option (openthread#8515) [cli] document `pskcref` (openthread#8511) [crypto] move Pskc generation to platform API (openthread#8468) [github-actions] enable OSSF Scorecards supply-chain security analysis (openthread#8506) [mle] remember current RLOC16 in a member variable (openthread#8499) [tests] verify that SRP services are removed when their host expires (openthread#8493) [mle] allow rx-on/off with no re-attach based on initial attach mode (openthread#8498) [clang-tidy] add missing symlinks to bootstrap (openthread#8507) [clang-format] use `AllowShortFunctionsOnASingleLine: All` (openthread#8502) [shellcheck] fix SC2155 warning (openthread#8490) [clang-tidy] apply v14 changes (openthread#8490) [clang-tidy] update to v14 (openthread#8490) [clang-format] apply v14 changes (openthread#8490) [clang-format] update to v14 (openthread#8490) [docs] add security policy (openthread#8497) [github-actions] add codeql workflow (openthread#8355) [mle] re-attach on FTD/MTD mode changes or from rx-on to sleepy (openthread#8484) [logging] fix print format using `%lu` for `uint32_t` variables (openthread#8495) [mpl] use `TimeTicker` for aging `mSeedSet` entries (openthread#8488) [cli] add `platform` command which returns current platform (openthread#8444) [mpl] smaller enhancements in `Ip6::Mpl` (openthread#8475) [mpl] reset seed entry lifetime on rx/tx (openthread#8482) [netdata] ensure to update version on leader if there is any change (openthread#8472) [nat64] delete nat64_set_enabled() when starting BR in tests (openthread#8476) [mle] rename variables to indicate if they are a TLV (openthread#8465) [csl] ensure current window is not missed when preparing CSL frame (openthread#8464) [mle] update `RouteTlv` to check number of allocated IDs (openthread#8463) [netdata] increase `kInfoStringSize` (openthread#8454) [dependabot] update commit message prefix (openthread#8457) [github-actions] exclude dependabot branches (openthread#8456) [indirect-sender] reset CSL Tx attempts in `DataPollHandler` (openthread#8455) [logging] fix format strings (openthread#8446) [build] fix `LOCAL_EXPORT_CFLAGS` (openthread#8453) [router-table] move `FillRouteTlv()` to `RouterTable` (openthread#8437) [router-table] add new helper methods `FindNextHopOf()` and renames (openthread#8437) github-actions: bump actions/upload-artifact from 1 to 3 (openthread#8448) github-actions: bump docker/setup-buildx-action from 1 to 2 (openthread#8447) [api] include Thread version in neighbor info (openthread#8435) [routing-manager] ensure local prefix is changed on xpanid change (openthread#8436) [nat64] use dbus API for NAT64 tests (openthread#8392) [router-table] remove duplicate method (openthread#8434) [test] `test_routing_manager` to check duplicate PIO/RIO prefixes (openthread#8431) [router-table] fix router next hop change on `Release(aRouterId)` (openthread#8433) [meshcop] update processing of UDP Encapsulation TLV (openthread#8427) [tlv] add private helper methods to parse and find TLVs in a message (openthread#8421) [telemetry] implement RA/RS counters (openthread#8416) github-actions: bump actions/download-artifact from 2 to 3 (openthread#8426) github-actions: bump docker/login-action from 1 to 2 (openthread#8425) github-actions: bump actions/setup-python from 1 to 4 (openthread#8424) github-actions: bump codecov/codecov-action from 2 to 3 (openthread#8423) github-actions: bump actions/setup-go from 1 to 3 (openthread#8422) [github-actions] add Dependabot configuration for GitHub Actions updates (openthread#8418) [spinel] update the updating/adding RCP spinel property guideline (openthread#7937) [tlv] helper methods to read/find/append TLVs with UTF8 string value (openthread#8417) [mle] use `Tlv::FindTlvValueOffset()` instead of `FindTlvOffset()` (openthread#8413) [doc] add doc for coex command (openthread#8415) [commissioner] fix provisioning URL comparison (openthread#8411) [docker] update ubuntu to 22.04 (openthread#8405) [meshcop] simplify `StateTlv` (openthread#8404) [bootstrap] remove brew from apt package installations (openthread#8399) [cli] update `OutputSpaces()` to use literal format string (openthread#8394) [spinel] fix `printf` style output (openthread#8401) [github-actions] fix macos build checks (openthread#8397) [diag] add gpio mode commands (openthread#8391) [tests] add tests for Border Routing Counters (openthread#8341) [build] add build option `OT_BORDER_ROUTING_COUNTERS` (openthread#8389) [spinel] log radio spinel frame (openthread#8342) [cli] add commands for Border Routing counters (openthread#8372) [netdata] update `Notifier` to prepare and send SVR_DATA.ntf msg (openthread#8376) [netdata] add helper method to compare two BR entries (openthread#8375) [tests] fix comparison width warning (openthread#8380) [netdata] simplify `RouteLookup()` methods (openthread#8374) [cli] fix `printf` style output (openthread#8377) [posix] use __GLIBC__ instead of __linux__ in backtrace (openthread#8373) [cli] add compile-time `printf` style arg check in CLI (openthread#8369) [net-diag] simplify processing of TLVs, allow extended TLV (openthread#8368) [cli] add `OutputUint64()` for 64-bit integer value in decimal format (openthread#8354) [clang-tidy] add `readability-redundant-control-flow` (openthread#8365) [clang-tidy] add `modernize-loop-convert` (openthread#8361) [tlv] `ReadTlvValue()` to handle regular or extended TLVs (openthread#8364) [net-diag] add a common `SendDiagnosticCommand()` method (openthread#8357) [posix] add backtrace support (openthread#8358) [telemetry] border routing packet counters (openthread#8280) [crypto] add ECDSA API (openthread#8273) [log] add arg format check to `otLog{Level}Plat()` functions (openthread#8356) [net-diag] reuse similar MLE TLV definitions (openthread#8350) [netif] fix bug in print statement with no corresponding argument (openthread#8353) [log] add compile-time check for `printf` style arg check to log functions (openthread#8339) [cli] update CLI `Output` class (openthread#8343) [diag] add gpio diag command support (openthread#8316) [cli] enhance parsing of flags for `route` commands (openthread#8340) [netif] fix bug in print statement (openthread#8338) [routing-manager] persist deprecating old prefixes in `Settings` (openthread#8330) [network-data] do not process TMF messages if waiting for sync (openthread#8332) [mle] log sending of "Link Accept and Request" (openthread#8328) [test] increase wait time after `ether` re-enable (openthread#8322) [tcplp] fix call to tcplp_sys_accept_ready() (openthread#8327) [address-resolver] allow addr resolution using net data service (openthread#8318) [routing-manager] add Neighbor Solicit probe mechanism (openthread#8090) [mac] add reserved value to source address parsing (openthread#8326) [netif-posix] add an option to persistent interface (openthread#8033) [routing-manager] new mechanism for deprecating old on-link prefixes (openthread#8315) [routing-manager] new mechanism for deprecating old on-link prefixes (openthread#8315) [mle] add time tracking to mle roles (openthread#8312) [string] add compile-time check for `printf` style arg consistency (openthread#8277) [mac] Bugfix: Messages without a source address handled incorrectly (openthread#8321) [android] only set -std=c99 for mbedtls (openthread#8310) [coap] Bugfix: CoAP not sending 4.04 when URI handler is not found (openthread#8297) [github-actions] update `geekyeggo/delete-artifact` to `v2` (openthread#8314) [routing-manager] add `OnLinkPrefixManager` (openthread#8285) [docs] fix build option table format (openthread#8306) [srp-client] inform server on service remove even if not added yet (openthread#8299) [nat64] add runtime switch for NAT64 prefix publisher and translator (openthread#8194) [multicast-forwarding] reduce warn logs (openthread#8292) [heap] move static heap construction to singleton accessor (openthread#8242) [cmake] disable `OPENTHREAD_CONFIG_NCP_HDLC_ENABLE` when `OT_NCP_SPI` is set (openthread#8282) [docs] Doxygen formatting updates (openthread#8286) [cli-tcp] fix bug causing "accept" action for all incoming connections (openthread#8291) [tcplp] fix bad memory access when refusing incoming TCP connection (openthread#8291) [docs] resized Qorvo logo (openthread#8279) [github-actions] migrate to `actions/upload-artifact@v3` (openthread#8278) [docs] who supports OT updates (openthread#8263) [routing-manager] adv local on-link prefix after added in net data (openthread#8119) [dns-client] validate response timeout <= `TimerMilli::kMaxDelay` (openthread#8275) [core] remove `OT_UNREACHABLE_CODE(break)` (openthread#8274) [routing-manager] enhance mechanism to publish/unpublish route prefixes (openthread#8187) [docs] CLI commands ifconfig - linkmetrics (openthread#8253) [link-metrics] update method finding neighbor to validate its version (openthread#8271) [cmake-build] allow specify multiple targets (openthread#8264) [github-actions] migrate to `actions/checkout@v3` (openthread#8269) [nat64] fix build issues related to NAT64 on POSIX (openthread#8167) [cli] fix `log filename` command arg check (openthread#8270) [meshcop] support a zero-length network name for backwards compatibility (openthread#8241) [netdata] update `Publisher` to reserve entries for `RoutingManager` (openthread#8148) [backbone-router] simplify TMF URI resource handling (openthread#8265) [docs] remove versioning note (openthread#8266) [thci] fix `setBbrDataset` (openthread#8261) [border-agent] simplify `ForwardToLeader()` (openthread#8260) [tmf] add `SecureAgent` and simplify URI resource processing (openthread#8260) [dns-types] verify pointer refers to prior occurrence (openthread#8262) [link-metrics] simplify handling of Type IDs (openthread#8246) [log] fix incorrect format strings (openthread#8255) [ip6] fix packets not being forwarded outside of Thread (openthread#8102) [border-agent] fix logging of `RelayTx` URI (openthread#8254) [tmf] new model for handling TMF URI resources (openthread#8233) [srp-client] new feature to allow lease and key lease per service (openthread#8211) [thci] remove unneeded problematic command (openthread#8235) [test] update `AdvanceTime()` in unit tests to handle overflow (openthread#8244) [fuzz] advance time before fuzz input enable to more services (openthread#8243) [meshcop] simplify energy scan client and server (openthread#8230) [dns] allow partial read of TXT data and add config for max size in CLI (openthread#8232) [doxygen] change `inout` to `in,out` (openthread#8231) [cli] update sub-modules to use `Process<Cmd("cmd")>` method (openthread#8224) [timer] add template `TimerMilliIn` to simplify handler functions (openthread#8221) [fuzz] add `set -euxo pipefail` to build script (openthread#8222) [cmake] allow configuring `OPENTHREAD_CONFIG_MLE_MAX_CHILDREN` with a CMake option (openthread#8216) [ip6] define `Ip6::NetifIdentifier` mirroring `otNetifIdentifier` (openthread#8219) [nat64] support using IPv4 DNS server addresses in CLI (openthread#8212) [fuzz] declare `otPlatLog` as weak (openthread#8220) [crypto] update the signature algorithm used for 3.2.0 mbedTLS (openthread#8215) [srp-client] update "single service mode" to handle many removes (openthread#8207) [nat64] add functional tests (openthread#8161) [nat64] fix typo: `synthersize` -> `synthesize` (openthread#8213) [cli] print missing mac counters (openthread#8210) [test] update SRP unit test to prepare service entries in all cases (openthread#8208) [srp-server] lease info for a deleted service or host entry (openthread#8206) [srp-server] update the default min/max lease/key-lease intervals (openthread#8205) [posix] fix OT_DAEMON flag definitions (openthread#8203) [address-cache] increase default to 32 (openthread#8204) [harness-simulation] add the usage of the CLI command `nodeidfilter` (openthread#8196) [equatable] update `Equatable` to ensure CRTP-style use (openthread#8199) [clearable] update `Clearable` to ensure CRTP-style use (openthread#8198) [routing-manager] remove old deprecating prefix on multiple xpanid change (openthread#8151) [cmake] add interface libraries ot-config-(ftd|mtd|radio) (openthread#8190) [routing-manager] allow old deprecating PIOs when checking RA is from router (openthread#8193) [thci] make `OpenThreadTHCI` compatible with Thread reference 20200818 (openthread#8195) [mle] add `RouterTable::LogRouteTable()` (openthread#8189) [routing-manager] fix prefix comparison in `EvaluateOnLinkPrefix()` (openthread#8192) [examples] make built-in otPlatCalloc and otPlatFree definitions weak (openthread#8188) [test] add unit test `test_srp_server` (openthread#8163) [srp-server] add `AutoEnableMode` to give control to BR (openthread#8129) [gh-action] add new case to run unit test with `toranj` config (openthread#8164) [cmake] add separate `tcplp` libraries for `ftd` and `mtd` (openthread#8175) [routing-manager] add `Nat64PrefixManager` nested class. (openthread#8178) [harness-simulation] update `deviceInputFields.xml` automatically (openthread#8177) [harness-simulation] change config format from JSON to YAML (openthread#8176) [cli-tcp] use TCP Circular Send Buffer in TCP CLI tool and test (openthread#7867) [tcp] implement TCP Circular Send Buffer (openthread#7867) [tcp] suppress clang-tidy for re-declared TCPlp functions (openthread#7867) [cc2538] move to openthread/ot-cc2538 (openthread#8169) [thci] wait for connection reset in `powerDown` (openthread#8166) [dtls] fix DTLS connection issues (openthread#8168) [github-actions] use `concurrency` feature to cancel oustanding jobs (openthread#8154) [thci] fix `mdns_query` incorrect `ip6tables` rules (openthread#8159) [nat64] implement functions for NAT64 on the client side (openthread#8126) [thci] allow custom otbr-agent log dumping command via `Param9` (openthread#8137) [cmake] add files allowing direct integration to Zephyr's west (openthread#8143) [harness-simulation] add support for RF enclosure simulation (openthread#8092) [cli] document the `ping async` option (openthread#8158) [github-actions] use external repo for arm build check (openthread#8153) [nat64] implement CLI functions for NAT64 (openthread#8058) [link-metrics] simplify preparation of MLE Data Request (openthread#8142) [tcplp] add test for contiguify functionality (openthread#7868) [config] include `misc.h` in `srp_client.h` (openthread#8146) [fuzz] enable SRP server in fuzz targets (openthread#8145) [fuzz] bump Thread version to 1.3 (openthread#8145) [routing-manager] deprecate previous local on-link prefix on xpanid change (openthread#8112) [routing-manager] add `RsSender` nested class (openthread#8124) [tcp] extend test to cover `otTcpStopListening` API (openthread#8133) [harness-simulation] add multiple-version support (openthread#8075) [srp-server] log the content of processed SRP update message (openthread#8131) [srp-client] update document about selected preferred server (openthread#8125) [github-actions] add gcc-12 to build matrix (openthread#8118) [ncp] fix init order to resolve compiler warning (openthread#8118) [core] do not use `FreeMessageOnError()` on nonnull pointer (openthread#8118) [link-metrics] simplify processing of `SeriesFlags` (openthread#8116) [routing-manager] add `ScheduleRoutingPolicyEvaluation()` (openthread#8115) [discover-scanner] invoke handler when scan is done from a tasklet (openthread#8111) [routing-manager] rename published NAT64 prefix (openthread#8113) [link-metrics] add blocking CLI query command and enhance tests (openthread#8108) [mle] update `DetachGracefully()` to stop BR routing manager (openthread#8105) [thread-cert] import `Crypto` on demand (openthread#8109) [nat64] change `BORDER_ROUTING_NAT64` to `NAT64_BORDER_ROUTING` (openthread#8047) [posix] make base class destructor virtual (openthread#7220) [tlvs] rename method to `ReadTlvValue()` from `ReadTlv()` (openthread#8100) [radio] define `Radio::kInvalidRssi` constant (openthread#8097) [link-metrics] fix reading of Report sub-tlv from message (openthread#8099) [github-actions] migrate to ubuntu 20.04 to 18.04 (openthread#8061) [otci] support ADB connection for OTCI (openthread#8088) [link-quality] helper fn to convert link margin, link quality, RSS (openthread#8081) [link-metrics] simplify sending MLE Mgmt Request (openthread#8073) [docs] CLI Dataset (openthread#7944) [srp-server] update validation of instance and service names (openthread#8080) [routing-manager] advert local on-link prefix if same as discovered prefix (openthread#8079) [link-metrics] update the scaling of link margin and RSSI metrics (openthread#8078) [child-table] check neighbor is in `ChildTable` before cast as `Child` (openthread#8071) [posix] initialize `hints` in `InfraNetif::DiscoverNat64Prefix` (openthread#8070) [harness-simulation] fix `build_docker_image.sh` error (openthread#8072) [mle] add `ParentCandidate` class (openthread#8069) [takelet] add template `TaskeltIn` to simplify handler functions (openthread#8064) [docs] CLI child commands (openthread#8041) [thci] remove unused methods (openthread#7704) [mle] move simple RLOC to Router ID conversion functions to `mle_types.hpp` (openthread#8060) [mac] add `ComputeLinkMargin()` (openthread#8063) [link-metrics] simplify `HandleReport()` (openthread#8054) [nat64] disable discovering NAT64 AIL prefix for OpenWRT (openthread#8065) [mesh-forwarder] fix random ieee frame version 2015 while attaching (openthread#8067) [thci] add support for OTBR simulations (openthread#8015) [core] add generic three-way comparison function (openthread#8050) [link-metrics] define `StatusSubTlv` to simplify appending/parsing it (openthread#8051) [address-resolver] simplify `EntryInfo` and `Iterator` (openthread#8055) [multicast-routing] block egress multicast packets from LLA (openthread#8059) [docs] update Thread version (openthread#8053) [mle] track `LeaderCost` in `Parent` class (openthread#8052) [topology] add `Router::GetTwoWayLinkQuality()` method (openthread#8049) [link-metrics] simplify `AddReport()` (openthread#8042) [nat64] extend wait time between test cases and verify netdata stabilized (openthread#8057) [border-agent] update logging for filtered messages (openthread#8045) [link-metrics] add `link_metrics_types.hpp` (openthread#8040) [tcp] implement otTcpReceiveContiguify (openthread#7634) [tcp] modify cbuf to be able to use all bytes provided by the user (openthread#7634) [mle] define `DetachGraecfuly` variables as `private` (openthread#8044) [link-metrics] fix integer conversions & use of `u8` for offset (openthread#8043) [routing-manager] allow domain prefix to be considered as OMR (openthread#8014) [ip6] add `MessageOrigin` to indicate origin or IPv6 message (openthread#8036) [nat64] implement nat64 translator (ot::Nat64::Translator) (openthread#7836) [multicast-routing] don't add MFC entries using mesh local as the source address (openthread#8025) [api] harmonize nullptr assert check of pointer input parameters (openthread#8031) [mle] add `Parent` class (tracking CSL accuracy info) (openthread#8029) [router-table] simplify `Allocate()` and random selection of ID (openthread#8032) [ip6] simplify `Ip6::HandleDatagram()` - remove `netif` local var (openthread#8035) [ip6] remove extra param from `Ip6::HandleExtensionHeaders()` (openthread#8035) [link-metrics] fix the endian-ness of `mPduCountValue` (openthread#8039) [csl] add `CslAccuracy` type (openthread#8024) [github-actions] upgrade pyshark to 0.4.6 (openthread#8030) [thread] add version consts & use `uint16_t` for `Neighbor::mVersion` (openthread#8027) [ip6] update `HandlePayload()` (avoid msg clone if not needed) (openthread#8023) [mle] define `ParentSearch` class (openthread#8022) [routing-manager] fix call to `StartRoutingPolicyEvaluationJitter()` (openthread#8034) [slaac] only allow SLAAC for prefixes with 64-bit length (openthread#8021) [bbr] reduce the default reregisteration delay (openthread#7996) [routing-manager] increase routing policy evaluation jitters (openthread#7982) [thci] send mdns queries without `dig` (openthread#7954) [doc] fix RCP building information for nRF52840 (openthread#8020) [mle] new API to trigger search for better parent (openthread#8018) [mle] add method to get parent info (openthread#8019) [routing-manager] accept any ULA/GUA with 64-bit len as OMR prefix (openthread#8016) [routing-manager] add `RaInfo` tracking all RA related info (openthread#8013) [core] add new generic `Min()`, `Max()` and `Clamp()` functions (openthread#8017) [meshcop] update deprecated functions for Mbed TLS `v3.2.1` (openthread#7977) [nat64] fetch NAT64 prefix from infrastructure interface and advertise it to netdata (openthread#7619) [routing-manager] use `Ip6::Prefix::IsUniqeLocal()` to check OMR prefix (openthread#8012) [ip6-address] move more complex `Prefix` methods to `cpp` file (openthread#8011) [mle] add `TlvList` to track list of TLV types (openthread#8008) [thci] restore BBR config for 1.2 BR_1/BR_2 roles (openthread#7997) [thci] enhance `mdns_query` to use `ip6tables` to filter mDNS responses (openthread#8000) [tests] add test for Advertising Proxy to publish zero or multiple host addrs (openthread#8003) [docs] CLI bbr (openthread#7986) [csl] update CSL Channel TLV process to allow for unspecified case (openthread#8005) [link-metrics] fix `u32` endian-ness in `ReportSubTlv` (openthread#8006) [mle] fix processing of CSL TLVs (openthread#8004) [mle] add array bound check to avoid overflow in `HandleDataRequest()` (openthread#8002) [mle] helper method appending TLV Request TLV (openthread#8001) [thci] enhance SSH connection (openthread#7981) [thci] generate more logs (openthread#7975) [thci] add SSH keepalive (openthread#7999) [api] allow CSL receiver to gather parent CSL capabilities (openthread#7991) [message] document buffer size needs (openthread#7998) [crypto] allow selecting randomized ECDSA instead of deterministic (openthread#7894) [mesh-forwarder] add `Mac::Addresses` (src and dst address) (openthread#7990) [routing-manager] add `LocalOnLinkPrefix` class (openthread#7989) [thci] change implementation of sniffer simulation from SSH to gRPC (openthread#7983) [otci] wait for 2 seconds before retrying a command (openthread#7995) [cmake] enhance OT CMake config options (allow on/off/unspecified) (openthread#7979) [border-agent] refine meshcop service state bitmap checks (openthread#7950) [lowpan] update `ComputeIid()` and simplify `CompressIid()` (openthread#7973) [ip6] add `ApplyPrefix()` to `Ip6::InterfaceIdentifier` (openthread#7973) [lowpan] update `Context` and add `FindContext()` methods (openthread#7971) [config] add `border_routing.h` and `border_agent.h` (openthread#7968) [docs] CLI channel (openthread#7957) [mesh-forwarder] use `FrameBuidler` in `PrepareDataFrame()` (openthread#7964) [frame-builder] add `Insert()`, `Remove()` and other helper methods (openthread#7964) [docker] upgrade pip before installing cmake (openthread#7970) [github-actions] remove clang-6,7,8 from build check (openthread#7969) [test] update `RoutingManager` unit test to check default-route (openthread#7940) [test] update `RoutingManager` unit test adding new helper methods (openthread#7951) [mle] fix incorrect `StatusTlv` when processing Child Update Response (openthread#7956) [mle] send Link Request immediately if router id was previously allocated (openthread#7947) Change-Id: I527b88eb56fc03995aa1f0585dc4f74d356c26d0
This commit introduces
Server
andClient
classes breaking theNetworkDiagnostic
module into two components. TheServer
respondsto queries and requests (handling Net Diag TMF commands), while
Client
issues queries/requests and processes responses. TheServer
is available under both FTD and MTD (which follows therequirement of Thread spec). The client is enabled using newly added
OPENTHREAD_CONFIG_TMF_NETDIAG_CLIENT_ENABLE
config option which isalso available as
OT_NETDIAG_CLIENT
CMake option or the autoconfbuild switch
NETDIAG_CLIENT
. The client functionality is by defaultenabled on Border Routers (tied to
CONFIG_BORDER_ROUTING_ENABLE
config).
The previous
TMF_NETWORK_DIAG_MTD_ENABLE
config is now removedalong with its CMake
OT_MTD_NETDIAG
and autoconf switch. Thiscommit adds checks to trigger build error if the previous config
and/or its related CMake option are used.
I expect this change will create a conflict for some of other open PRs related to netdiag, but feel better to have this done earlier (we can address the conflicts in other PRs). :)