-
Notifications
You must be signed in to change notification settings - Fork 17
otbr 2026.07.0: pending dataset, full NIM cluster data, netifd thread protocol #53
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
Open
LorbusChris
wants to merge
9
commits into
project-chip:main
Choose a base branch
from
LorbusChris:otbr-netifd-thread-proto
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
16a32d7
openthread-br: update to 2026.07.0
LorbusChris 865215e
openthread-br: add ubus support for pending datasets
LorbusChris b146b7b
matter-netman: support pending datasets in the ubus delegate
LorbusChris 7ab6dbe
matter-netman: serve real data on all NIM clusters
LorbusChris c350795
openthread-br: fix the build with GCC 14
LorbusChris e4e6599
openthread-br: drop the avahi variant
LorbusChris 57bdaad
openthread-br: align feature options with the openwrt packaging
LorbusChris ba134d4
openthread-br: integrate with netifd as the thread protocol
LorbusChris 07049b4
openthread-br: let an explicit RCP selector override the product match
LorbusChris File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| config matter 'settings' | ||
| # Share the LAN access point credentials over the Matter Wi-Fi | ||
| # Network Management cluster. Set to 0 to share nothing. | ||
| option wifi_share '1' | ||
| # The netifd network whose access point credentials are shared. | ||
| option wifi_network 'lan' | ||
| # Pin a specific wifi-iface section instead of the automatic choice. | ||
| # option wifi_iface 'default_radio0' | ||
| # The interface this device is reachable on. It is reported first in | ||
| # the network diagnostics, so a controller asking which interface the | ||
| # device uses gets this one, and it names the network the Ethernet | ||
| # diagnostics describe. | ||
| # option primary_interface 'br-lan' | ||
| # The manufacturer reported in Basic Information. Unset, the one the | ||
| # firmware states in /etc/os-release is used. | ||
| # option vendor_name 'CZ.NIC' | ||
| # Interface state and traffic counters are readable by every paired | ||
| # controller. Set to 0 to report none of them. | ||
| # option ethernet_diagnostics '1' | ||
| # Take the Ethernet diagnostics from this interface instead of the | ||
| # primary one, to report the state of a port rather than a bridge. | ||
| # option diagnostics_interface 'eth1' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| #!/bin/sh | ||
| # The daemon's mDNS sockets do not survive the interface they are bound to | ||
| # bouncing, which leaves the node undiscoverable and unreachable for CASE | ||
| # until the daemon restarts. netifd runs these hooks on every interface | ||
| # state change; restart the daemon when a backbone interface of a Thread | ||
| # border router comes back up. | ||
|
|
||
| [ "$ACTION" = "ifup" ] || exit 0 | ||
| /etc/init.d/matter running || exit 0 | ||
|
|
||
| . /lib/functions.sh | ||
|
|
||
| is_backbone=0 | ||
| check_iface() { | ||
| local proto backbone | ||
| config_get proto "$1" proto | ||
| [ "$proto" = "thread" ] || return 0 | ||
| config_get backbone "$1" backbone_network | ||
| [ -n "$backbone" ] && [ "$backbone" = "$INTERFACE" ] && is_backbone=1 | ||
| } | ||
| config_load network | ||
| config_foreach check_iface interface | ||
| [ "$is_backbone" = 1 ] || exit 0 | ||
|
|
||
| logger -t matter "backbone interface $INTERFACE came up, restarting the Matter daemon to rebind mDNS" | ||
| /etc/init.d/matter restart |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
service/matter-netman/patches/011-disable-access-restrictions.patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| The network-manager-app enables the Matter 1.4 Access Restriction List, which | ||
| on Linux is backed by ExampleAccessRestrictionProvider from examples/platform. | ||
| That provider is a demonstration: its review handler drops every restriction on | ||
| the fabric that asked for one. Shipping it means the restriction mechanism is | ||
| defeated by invoking the command it exists to gate. | ||
|
|
||
| Patch 010 already removes the ReviewFabricRestrictions commands from the data | ||
| model so a controller cannot ask. Turn the feature off in the build as well, so | ||
| the example provider is not compiled in and the Access Control cluster drops | ||
| the restriction handling behind it. The two belong together: 010 stops the | ||
| device advertising the commands, this stops it implementing them with example | ||
| code. Advertising without implementing, or implementing with a stub, are both | ||
| worse than not offering the feature. | ||
|
|
||
| A real implementation would need an owner review surface. On a router that is | ||
| the web interface, which is the out-of-band path the specification assumes. | ||
|
|
||
| diff --git a/examples/network-manager-app/linux/args.gni b/examples/network-manager-app/linux/args.gni | ||
| index 2213f8fb38..16826f7395 100644 | ||
| --- a/examples/network-manager-app/linux/args.gni | ||
| +++ b/examples/network-manager-app/linux/args.gni | ||
| @@ -27,5 +27,5 @@ chip_config_network_layer_ble = false | ||
| chip_enable_wifi = false | ||
| chip_enable_thread = false | ||
|
|
||
| -chip_enable_access_restrictions = true | ||
| +chip_enable_access_restrictions = false | ||
| matter_enable_tracing_support = true |
40 changes: 40 additions & 0 deletions
40
service/matter-netman/patches/030-network-manager-fake-revert.patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| From 1b2269948ee34935b55ecf2dc8945cdbb6191363 Mon Sep 17 00:00:00 2001 | ||
| From: Christian Glombek <c.glombek@cosa.systems> | ||
| Date: Mon, 27 Jul 2026 07:34:19 +0200 | ||
| Subject: [PATCH 1/2] [network-manager] implement RevertActiveDataset in the | ||
| fake delegate | ||
|
|
||
| The fake border router returned NOT_IMPLEMENTED, so fail-safe rollback | ||
| could not be exercised without real hardware. | ||
|
|
||
| SetActiveDataset is only accepted when no dataset is configured, so | ||
| reverting means returning to the unconfigured state rather than restoring | ||
| a previous dataset. Clear it and report the timestamp change. | ||
|
|
||
| Assisted-By: Claude Opus 5 | ||
| --- | ||
| examples/network-manager-app/linux/ThreadBRFake.h | 11 ++++++++++- | ||
| 1 file changed, 10 insertions(+), 1 deletion(-) | ||
|
|
||
| diff --git a/examples/network-manager-app/linux/ThreadBRFake.h b/examples/network-manager-app/linux/ThreadBRFake.h | ||
| index 86a92c7c54..4ac56e9455 100644 | ||
| --- a/examples/network-manager-app/linux/ThreadBRFake.h | ||
| +++ b/examples/network-manager-app/linux/ThreadBRFake.h | ||
| @@ -92,7 +92,16 @@ class FakeBorderRouterDelegate final : public app::Clusters::ThreadBorderRouterM | ||
| } | ||
|
|
||
| CHIP_ERROR CommitActiveDataset() override { return CHIP_NO_ERROR; } | ||
| - CHIP_ERROR RevertActiveDataset() override { return CHIP_ERROR_NOT_IMPLEMENTED; } | ||
| + | ||
| + CHIP_ERROR RevertActiveDataset() override | ||
| + { | ||
| + // SetActiveDataset is only accepted when no dataset is configured, so | ||
| + // reverting it means returning to the unconfigured state. | ||
| + mActiveDataset.Clear(); | ||
| + mAttributeChangeCallback->ReportAttributeChanged( | ||
| + app::Clusters::ThreadBorderRouterManagement::Attributes::ActiveDatasetTimestamp::Id); | ||
| + return CHIP_NO_ERROR; | ||
| + } | ||
|
|
||
| CHIP_ERROR SetPendingDataset(const Thread::OperationalDataset & pendingDataset) override | ||
| { |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.