Skip to content
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

Upmerge to 6edb06e #121

Merged
merged 103 commits into from
Nov 9, 2023
Merged

Upmerge to 6edb06e #121

merged 103 commits into from
Nov 9, 2023

Conversation

edmont
Copy link
Collaborator

@edmont edmont commented Nov 9, 2023

Regular OpenThread upmerge to commit 6edb06e.

Irving-cl and others added 30 commits September 12, 2023 16:27
The core config file shouldn't be included in public API headers
because they will be included from high level project code (like
ot-br-posix) and the config file cannot be located if included here.
…9411)

This commit updates `AddressResolver::Resolve()` to validate that the
associated RLOC16 is reachable in the sense that a valid next hop can
be found towards it, before using a matching cache entry in
`mCachedList` or `mSnoopedList`. If the RLOC16 is not reachable, the
cache entry is removed to trigger a new address query.
- This commit resolves inconsistency between Host and RCP channel on
  scan energy when network not created.
- Added fix in MAC layer to update the channel on scan energy.
This commit adds methods to parse parameter values directly from the
url, moves the url unit test to the test/unit, and updates the url
processing methods in posix platform.
…412)

This commit adds a separate flag to be able to turn the posix part of
multicast routing implementation off/on.

The new
OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE flag
guards the feature of posix multicast routing using MFC(multicast
forwarding cache) in MRT(multicast routing table).

The existing
OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE continues
to guard the core multicast routing feature, for example handling the
MLR.req message and the multicast listeners table.

In a system where it has its own multicast routing support for packet
forwarding between Thread network and AIL, it should set
OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE to 0.
…t (#9421)

This commit updates `HandleNetworkDataRestoredAfterReset()` which is
called when a leader device is reset and recovers the Network Data
from other routers. With the new code, leader will now check and
remove entries in the restored Network Data that are from any
currently unallocated router ID.

This change acts as a safeguard against an edge case where the leader
is reset at an inopportune time, such as right after it removed an
allocated router ID and sent MLE advertisement but before it got the
chance to send the updated Network Data to other routers.
This commit implements the packet logic in OT core. It aims to have
the same effect as what's already achieved by our iptables-based
firewall. Instead of leveraging iptables, this commit filters the
border routing packets in user space by checking the
source/destination addresses of a packet.

This commit also adds a job to do BR regression test when this feature
is enabled and iptables-based firewall is disabled.
This commit allows developers to set the preferred channel mask and
the supported channel mask in the configuration file. The posix
platform selects channel masks from the configuration file based on
the region code when the region code is updated.
This commit saves the MAC counter to a local variable to avoid calling
the core function Get<Settings>().Read() in radio_spinel_impl.hpp. This
is useful when spinel module is used as a lib in other projects.
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.6.0 to 4.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@f43a0e5...3df4ab1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit contains smaller changes in `BorderAgent` class:

- Define `kUdpPort` as a private constants in `BorderAgent` class.
- Add `SendMessage()` method to send message through `SecureAgent`.
- Add `LogError()` as a method so the correct log module is used.
- Remove unused `mMessageInfo` member variable.
- Harmonize log messages.
…9443)

The default supported channel mask is set to 0x7fff000 in the default
configuration file. The dbus client test case sets the channel to 11
which is not valid in the supported channel mask. It causes the CI test
failures in openthread/ot-br-posix#2027.

This commit updates the default supported and preferred channel masks
in the configuration file to avoid the CI test failures.
…444)

This commit updates `ForwardContext` to be `Heap::Allocatable` and
uses `OwnerPtr` to simplify the ownership (and freeing) of allocated
`ForwardContext` objects.
According to the description of
openwrt/openwrt#11559, libanl is already
included in the musl c library, so we can turn this option on.

We enable OPENTHREAD_POSIX_CONFIG_NAT64_AIL_PREFIX_ENABLE on OpenWrt
platform for better experience.
This commit sets the default value of the configuration
`TMF_ADDRESS_CACHE_MAX_SNOOP_ENTRIES` to `1/16` of the total number
of address cache entries. This ensures that the snoop entries scale
with the total number of entries.
…led (#9450)

This commit changes openthread rcp recovery code to keep `mState` as
`kStateDisabled` if the state before recovery was
`kStateDisabled`. This is needed to avoid otbr-agent crash in the
scenario where rcp recovery is triggered before otbr initialization.
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.21.4 to 2.21.8.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@a09933a...6a28655)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…` (#9460)

Resolves issues when `OPENTHREAD_CONFIG_TMF_ADDRESS_CACHE_ENTRIES` is
too small.
…R docker (#9457)

This commit excludes `ot_testing` and `__pycache__` directories when
copying the files before building the docker.

Such files are usually generated by root user and will cause errors
when copying them as a non-root user.
This commit updates `Ip6::HandlePayload()` to check the `message`
pointer for null in the common flow, instead of in the `if()` block
where the message is cloned when `aMessageOwnership` is set to
`kCopyToUse`. If `aMessageOwnership` is `kTakeCustody` the `message`
is initialized as `&aMessage` already which cannot be `nullptr`.

This protects against code checker warnings that `message` may remain
null if the given `aMessageOwnership` enum value is not one of its
two defined enumerator values.
Added validation to check for the negative value of sMLDMonitorFd, as
setsockopt parameter cannot be negative.
…router (#9445)

An invalid Discovery Response that carries no Joiner UDP Port TLV will
be accepted by the joiner, but we shouldn't qualify it as a valid
joiner router since we can only open a connection with a non-zero
port.
…9465)

This commit simplifies the checks to decide whether or not to call
`ProcessRouteTlv()` in `MleRouter::HandleAdvertisement()`. The whole
check is guarded by `aRxInfo.IsNeighborStateValid()`, which ensures
that we only process Route TLVs for Advertisements received from
valid neighbors. In particular, we can remove the additional checks
in the case where the device is itself `IsChild()` (i.e., acting as
an FED). In this case, `aRxInfo.mNeighbor` will be determined using
`NeighborTable::FindNeighbor()`, which checks and accepts the parent
as the only valid neighbor of the FED child.
abtink and others added 23 commits October 19, 2023 17:36
This commit updates `HandleTmf<kUriCommissionerSet>()`, which is used
to set the Commissioning Dataset. The following changes have been made:
- `Tlv::Find<TlvType>()` methods are used to find and parse TLVs in the
  received request message.
- The existing code required the dataset to contain either Joiner UDP
  or Steering Data TLVs. This check has been removed, making the
  implementation aligned with the Thread specification. This permits a
  commissioner to disallow MeshCoP Joining by not including Steering
  Data.
- A new flavor of `SetCommisioningData()` is added, which reads the
  TLVs directly from a given `aMessage`. This method is now used
  when processing `kUriCommissionerSet` to avoid using temporary
  local buffers to read and copy the TLVs.
- `SetCommisioningData()` and its related methods have been moved to
  `network_data_leader_ftd` since they are limited to and used on
  FTD devices acting as leader.
- A new private `UpdateCommissioningData()` method has been added.
  This method first checks whether or not we can add a Commissioning
  Data TLV with a given length into Network Data, before removing
  the current TLV. This is used as a common method when Commissioning
  Data is set from a message or from a given data buffer.
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@8ade135...b4ffde6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit adds `otNetDataGetCommissioningDataset()` as a public
API to retrieve the Commissioning Dataset from the Network Data.

It also updates CLI `netdata show` command to output the Commissioning
Dataset information. The documentation in `README_NETDATA.md` and
in `cli_network_data` are also updated. The test scripts that parse
`netdata show` output are also updated.
…hanges (#9418)

The current code of the `mac.cpp` caches the supported channel mask to
a local variable. But the supported channel mask may be changed after
the country code is changed. This will cause the supported channel
mask used in `mac.cpp` to be inconsistent with the actual supported
channel mask.

This commit adds an API `otLinkSetRegion()` to set the region code and
then update the cached supported channel mask to avoid the channel
mask inconsistencies. The current Thread channel may be not included
in the new supported channel mask. When the Thread stack detects this
case, it detaches the current Thread network gracefully.
The "assert" and "VerifyOrDie" were checking same condition, so
the second validation was never executed if (rval != sizeof(key)).
Additionally,"aSwapFd" was not freed on assertion.

With this commit,
1. addressed the memory leak to system resources.
2. Replaced VerifyOrDie() or assert() by VerifyOrExit()
3. handle error at exit
This commit adds a new API `otSysSetInfraNetif` to support specifying
the infrastructure network interface for the platform. This can be
useful in following cases:
- The infra link cannot be determined at the start up of
  `otbr-agent`. We can call this API to specify the infra link without
  specifying it in the command line arguments.
- Let Thread Border Router switch to another infra link without
  restarting the whole OpenThread stack.
This commit adds a public OT API to generate hex dump output line by
line. This function is then used for both `LogDump{}()` and frame
capture output by CLI `promiscuous` command (removing repeated
similar code) and harmonize the hex dump outputs.
This commit moves the `instance` module to a newly added folder
`core/instance` (from `core/common`.  Header file `extension.hpp`
and its example is also moved to the same folder.
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.3 to 2.22.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@0116bc2...74483a3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit updates the `NetworkData::Leader` sub-class model,
removing `LeaderBase` (which intended to provide common functions
shared between FTD and MTD) and instead adding all methods directly
in `Leader` class with all `FTD`-specific methods having conditional
`#if` check.
…(#9530)

The lib `openthread-spinel-ncp` is used by the NCP build, it doesn't
need the file `radio_spinel.cpp`. This commit changes the CMake file
to make only the lib `openthread-spinel-rcp` include the file
`radio_spinel.cpp`.
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.2.0 to 2.3.1.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](ossf/scorecard-action@08b4669...0864cf1)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…er (#9582)

The current code won't return a failure error code when a MGMT_SET
request is rejected by the leader, so the client doesn't know whether
the operation succeed or not.

This commit fixes this issue by converting the REJECTED state to the
OT_ERROR_REJECTED error code which is propagated back via the
otDatasetMgmtSetCallback callback.
… (#9568) (#9568)

Allow platforms to reduce the periodic access to `otPlatRadioGetNow`
to calculate CSL synchronization elapsed time in the case when those
radio API calls are costly.
…579)

This commit makes the following smaller enhancements in `Slaac`
class:
- Adds a new `ShouldUseForSlaac()` method to check if a network data
  prefix should be used for SLAAC, checking flags and applying the
  filter if set.
- Introduces separate `RemoveAddresses()` and `AddAddresses()` methods
  to manage SLAAC addresses, replacing the previous `Update()` method.
- Adds helper methods to `RemoveAllAddresses()`, `RemoveAddress()` to
  remove a specific address, and `AddAddressFor(prefix)` to  generate
  and add an address for a given prefix.
- Simplifies `GenerateIid()` by removing unused input parameters.
In `ot::Posix::InfraNetif::GetFlags()`, the OT process would die if
the infra network interface is removed on the POSIX platform. On
Android platform, this is not the desired behavior because the system
server may tell the OT process to switch another infra network
interface. It's fine for OT process to keep running when the previous
infra network interface disappears because later system server will
call `otSysSetInfraNetif()` to specify the new infra network
interface.
@edmont
Copy link
Collaborator Author

edmont commented Nov 9, 2023

CC: @rlubos

@rlubos rlubos merged commit 6edb06e into zephyrproject-rtos:main Nov 9, 2023
@edmont edmont deleted the pr/upmerge branch November 9, 2023 10:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.