mirror of
https://github.com/espressif/openthread.git
synced 2026-09-17 22:50:07 +00:00
[meshcop] consolidate Open() and Bind() in SecureTransport (#12826)
This commit simplifies the `SecureTransport` API by consolidating the previous `Open()` and `Bind()` methods into two specialized `Open()` flavors. The first flavor, `Open(uint16_t aPort, ...)`, creates and binds a UDP socket to a specific port and network interface. If the port is zero, an ephemeral port is automatically selected. The second flavor, `Open(TransportCallback aCallback, ...)`, enables callback-based transmission, where outgoing messages are sent via the provided callback and received messages are passed in through `HandleReceive()`. This consolidation ensures that the transport is fully initialized and ready for traffic in a single method call. It also prevents the creation of unused UDP sockets when a `TransportCallback` is employed, avoiding unnecessary overhead in the `Udp` class. All core components (`BorderAgent`, `Commissioner`, `Joiner`, and `BleSecure`) and related tests are updated to utilize the new patterns.
This commit is contained in:
@@ -449,7 +449,7 @@ void TestBorderAdmitterEnrollerInteraction(void)
|
||||
|
||||
enroller.Get<Tmf::SecureAgent>().RegisterResourceHandler(HandleResource, &recvContext);
|
||||
|
||||
SuccessOrQuit(enroller.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(enroller.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(enroller.Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(Time::kOneSecondInMsec);
|
||||
@@ -1135,7 +1135,7 @@ void TestBorderAdmitterCommissionerConflictAndPetitionerRetry(void)
|
||||
|
||||
enroller.Get<Tmf::SecureAgent>().RegisterResourceHandler(HandleResource, &recvContext);
|
||||
|
||||
SuccessOrQuit(enroller.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(enroller.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(enroller.Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(Time::kOneSecondInMsec);
|
||||
@@ -1423,7 +1423,7 @@ void TestBorderAdmitterMultipleEnrollers(void)
|
||||
recvContext[i].Clear();
|
||||
enroller->Get<Tmf::SecureAgent>().RegisterResourceHandler(HandleResource, &recvContext[i]);
|
||||
|
||||
SuccessOrQuit(enroller->Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(enroller->Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(enroller->Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(Time::kOneSecondInMsec);
|
||||
@@ -1761,7 +1761,7 @@ void TestBorderAdmitterJoinerEnrollerInteraction(void)
|
||||
recvContext[i].Clear();
|
||||
enroller->Get<Tmf::SecureAgent>().RegisterResourceHandler(HandleResource, &recvContext[i]);
|
||||
|
||||
SuccessOrQuit(enroller->Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(enroller->Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(enroller->Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(Time::kOneSecondInMsec);
|
||||
@@ -3259,7 +3259,7 @@ void TestBorderAdmitterForwardingUdpProxy(void)
|
||||
recvContext[i].Clear();
|
||||
enroller->Get<Tmf::SecureAgent>().RegisterResourceHandler(HandleResource, &recvContext[i]);
|
||||
|
||||
SuccessOrQuit(enroller->Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(enroller->Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(enroller->Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(Time::kOneSecondInMsec);
|
||||
|
||||
@@ -113,7 +113,7 @@ void TestBorderAgent(void)
|
||||
node0.Get<KeyManager>().GetPskc(pskc);
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().SetPsk(pskc.m8, Pskc::kSize));
|
||||
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
@@ -145,7 +145,7 @@ void TestBorderAgent(void)
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
Log("Establish a secure connection again");
|
||||
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
@@ -245,11 +245,11 @@ void TestBorderAgent(void)
|
||||
Log("Establish two more secure sessions while the first session is still active");
|
||||
|
||||
SuccessOrQuit(node2.Get<Tmf::SecureAgent>().SetPsk(pskc.m8, Pskc::kSize));
|
||||
SuccessOrQuit(node2.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(node2.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(node2.Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
SuccessOrQuit(node3.Get<Tmf::SecureAgent>().SetPsk(pskc.m8, Pskc::kSize));
|
||||
SuccessOrQuit(node3.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(node3.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(node3.Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
@@ -313,7 +313,7 @@ void TestBorderAgent(void)
|
||||
|
||||
nexus.AdvanceTime(25 * Time::kOneSecondInMsec);
|
||||
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
@@ -481,7 +481,7 @@ void TestBorderAgentEphemeralKey(void)
|
||||
SuccessOrQuit(
|
||||
node1.Get<Tmf::SecureAgent>().SetPsk(reinterpret_cast<const uint8_t *>(kEphemeralKey), kEphemeralKeySize));
|
||||
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
@@ -521,7 +521,7 @@ void TestBorderAgentEphemeralKey(void)
|
||||
VerifyOrQuit(node0.Get<EphemeralKeyManager>().GetState() == EphemeralKeyManager::kStateStarted);
|
||||
VerifyOrQuit(node0.Get<EphemeralKeyManager>().GetUdpPort() == kUdpPort);
|
||||
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(2 * Time::kOneSecondInMsec);
|
||||
@@ -619,7 +619,7 @@ void TestBorderAgentEphemeralKey(void)
|
||||
SuccessOrQuit(
|
||||
node1.Get<Tmf::SecureAgent>().SetPsk(reinterpret_cast<const uint8_t *>(kEphemeralKey), kEphemeralKeySize));
|
||||
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
@@ -670,7 +670,7 @@ void TestBorderAgentEphemeralKey(void)
|
||||
|
||||
node0.Get<KeyManager>().GetPskc(pskc);
|
||||
SuccessOrQuit(node2.Get<Tmf::SecureAgent>().SetPsk(pskc.m8, Pskc::kSize));
|
||||
SuccessOrQuit(node2.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(node2.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(node2.Get<Tmf::SecureAgent>().Connect(baSockAddr));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
@@ -690,7 +690,7 @@ void TestBorderAgentEphemeralKey(void)
|
||||
SuccessOrQuit(
|
||||
node1.Get<Tmf::SecureAgent>().SetPsk(reinterpret_cast<const uint8_t *>(kEphemeralKey), kEphemeralKeySize));
|
||||
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
@@ -902,7 +902,7 @@ void TestHistoryTrackerBorderAgentEpskcEvent(void)
|
||||
|
||||
nexus.AdvanceTime(0);
|
||||
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open());
|
||||
SuccessOrQuit(node1.Get<Tmf::SecureAgent>().Open(0));
|
||||
SuccessOrQuit(
|
||||
node1.Get<Tmf::SecureAgent>().SetPsk(reinterpret_cast<const uint8_t *>(kEphemeralKey), kEphemeralKeySize - 2));
|
||||
|
||||
|
||||
@@ -274,8 +274,7 @@ void TestDtlsSingleSession(void)
|
||||
SuccessOrQuit(dtls0.SetPsk(kPsk, sizeof(kPsk)));
|
||||
dtls0.SetReceiveCallback(HandleReceive, &node0);
|
||||
dtls0.SetConnectCallback(HandleConnectEvent, &node0);
|
||||
SuccessOrQuit(dtls0.Open());
|
||||
SuccessOrQuit(dtls0.Bind(kUdpPort));
|
||||
SuccessOrQuit(dtls0.Open(kUdpPort));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
|
||||
@@ -291,7 +290,7 @@ void TestDtlsSingleSession(void)
|
||||
SuccessOrQuit(dtls1.SetPsk(kPsk, sizeof(kPsk) - 1));
|
||||
dtls1.SetReceiveCallback(HandleReceive, &node1);
|
||||
dtls1.SetConnectCallback(HandleConnectEvent, &node1);
|
||||
SuccessOrQuit(dtls1.Open());
|
||||
SuccessOrQuit(dtls1.Open(0));
|
||||
|
||||
for (uint16_t iter = 0; iter <= kMaxAttempts + 1; iter++)
|
||||
{
|
||||
@@ -315,7 +314,7 @@ void TestDtlsSingleSession(void)
|
||||
SuccessOrQuit(dtls1.SetPsk(kPsk, sizeof(kPsk)));
|
||||
dtls1.SetReceiveCallback(HandleReceive, &node1);
|
||||
dtls1.SetConnectCallback(HandleConnectEvent, &node1);
|
||||
SuccessOrQuit(dtls1.Open());
|
||||
SuccessOrQuit(dtls1.Open(0));
|
||||
SuccessOrQuit(dtls1.Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
@@ -386,7 +385,7 @@ void TestDtlsSingleSession(void)
|
||||
SuccessOrQuit(dtls2.SetPsk(kPsk, sizeof(kPsk)));
|
||||
dtls2.SetReceiveCallback(HandleReceive, &node2);
|
||||
dtls2.SetReceiveCallback(HandleReceive, &node2);
|
||||
SuccessOrQuit(dtls2.Open());
|
||||
SuccessOrQuit(dtls2.Open(0));
|
||||
SuccessOrQuit(dtls2.Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(20 * Time::kOneSecondInMsec);
|
||||
@@ -425,8 +424,7 @@ void TestDtlsSingleSession(void)
|
||||
SuccessOrQuit(dtls0.SetPsk(kPsk, sizeof(kPsk)));
|
||||
dtls0.SetReceiveCallback(HandleReceive, &node0);
|
||||
dtls0.SetConnectCallback(HandleConnectEvent, &node0);
|
||||
SuccessOrQuit(dtls0.Open());
|
||||
SuccessOrQuit(dtls0.Bind(kUdpPort));
|
||||
SuccessOrQuit(dtls0.Open(kUdpPort));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
|
||||
@@ -439,7 +437,7 @@ void TestDtlsSingleSession(void)
|
||||
SuccessOrQuit(dtls1.SetPsk(kPsk, sizeof(kPsk) - 1));
|
||||
dtls1.SetReceiveCallback(HandleReceive, &node1);
|
||||
dtls1.SetConnectCallback(HandleConnectEvent, &node1);
|
||||
SuccessOrQuit(dtls1.Open());
|
||||
SuccessOrQuit(dtls1.Open(0));
|
||||
|
||||
for (uint16_t iter = 0; iter < kMaxAttempts - 1; iter++)
|
||||
{
|
||||
@@ -513,8 +511,7 @@ void TestDtlsMultiSession(void)
|
||||
Log("Start DTLS (server) on node0 bound to port %u", kUdpPort);
|
||||
|
||||
SuccessOrQuit(dtls0.SetPsk(kPsk, sizeof(kPsk)));
|
||||
SuccessOrQuit(dtls0.Open());
|
||||
SuccessOrQuit(dtls0.Bind(kUdpPort));
|
||||
SuccessOrQuit(dtls0.Open(kUdpPort));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
|
||||
@@ -531,7 +528,7 @@ void TestDtlsMultiSession(void)
|
||||
SuccessOrQuit(dtls1.SetPsk(kPsk, sizeof(kPsk)));
|
||||
dtls1.SetReceiveCallback(HandleReceive, &node1);
|
||||
dtls1.SetConnectCallback(HandleConnectEvent, &node1);
|
||||
SuccessOrQuit(dtls1.Open());
|
||||
SuccessOrQuit(dtls1.Open(0));
|
||||
SuccessOrQuit(dtls1.Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
@@ -560,7 +557,7 @@ void TestDtlsMultiSession(void)
|
||||
SuccessOrQuit(dtls2.SetPsk(kPsk, sizeof(kPsk)));
|
||||
dtls2.SetReceiveCallback(HandleReceive, &node2);
|
||||
dtls2.SetConnectCallback(HandleConnectEvent, &node2);
|
||||
SuccessOrQuit(dtls2.Open());
|
||||
SuccessOrQuit(dtls2.Open(0));
|
||||
SuccessOrQuit(dtls2.Connect(sockAddr));
|
||||
|
||||
nexus.AdvanceTime(1 * Time::kOneSecondInMsec);
|
||||
|
||||
Reference in New Issue
Block a user