[border-router] centralize infra-if management in InfraIf (#12046)

This change moves the management of the infrastructure interface state
out of the `RoutingManager` and centralizes it within the `InfraIf`
class. This makes `InfraIf` a more self-contained component and
simplifies the logic in `RoutingManager`.

The `RoutingManager` now depends on an initialized `InfraIf`. Its
`Init()` method is simplified and is now called from
`InfraIf::Init()`.

The public API `otBorderRoutingInit()` now directly initializes the
`InfraIf`. The `InfraIf::Init()` method is updated to support
re-initialization, allowing to switch to a new interface. When
switching, it ensures that components on the previous interface are
stopped before restarting on the new one.
This commit is contained in:
Abtin Keshavarzian
2025-10-24 06:55:11 +08:00
committed by GitHub
parent 36b14d3ef7
commit b492922a9c
13 changed files with 86 additions and 127 deletions
+1 -1
View File
@@ -111,7 +111,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
otCliInit(&node.GetInstance(), CliOutput, nullptr);
node.GetInstance().Get<BorderRouter::RoutingManager>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::InfraIf>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetEnabled(true);
node.GetInstance().Get<Srp::Server>().SetAutoEnableMode(true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetDhcp6PdEnabled(true);
+1 -1
View File
@@ -100,7 +100,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
node.GetInstance().SetLogLevel(kLogLevelInfo);
node.GetInstance().Get<BorderRouter::RoutingManager>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::InfraIf>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetEnabled(true);
node.GetInstance().Get<Srp::Server>().SetAutoEnableMode(true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetDhcp6PdEnabled(true);
+1 -1
View File
@@ -112,7 +112,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
node.GetInstance().SetLogLevel(kLogLevelInfo);
node.GetInstance().Get<BorderRouter::RoutingManager>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::InfraIf>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetEnabled(true);
node.GetInstance().Get<Srp::Server>().SetAutoEnableMode(true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetDhcp6PdEnabled(true);
+1 -1
View File
@@ -111,7 +111,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
node.GetInstance().SetLogLevel(kLogLevelInfo);
node.GetInstance().Get<BorderRouter::RoutingManager>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::InfraIf>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetEnabled(true);
node.GetInstance().Get<Srp::Server>().SetAutoEnableMode(true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetDhcp6PdEnabled(true);
+1 -1
View File
@@ -110,7 +110,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
node.GetInstance().SetLogLevel(kLogLevelInfo);
node.GetInstance().Get<BorderRouter::RoutingManager>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::InfraIf>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetEnabled(true);
node.GetInstance().Get<Srp::Server>().SetAutoEnableMode(true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetDhcp6PdEnabled(true);
+1 -1
View File
@@ -101,7 +101,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
node.GetInstance().SetLogLevel(kLogLevelInfo);
node.GetInstance().Get<BorderRouter::RoutingManager>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::InfraIf>().Init(/* aInfraIfIndex */ 1, /* aInfraIfIsRunning */ true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetEnabled(true);
node.GetInstance().Get<Srp::Server>().SetAutoEnableMode(true);
node.GetInstance().Get<BorderRouter::RoutingManager>().SetDhcp6PdEnabled(true);