aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-01-25 00:42:30 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-01-25 00:42:30 +0000
commit856b55e9cb4a7c67d822b3b809faa6755a675080 (patch)
tree82c3b3ed37c7d1e3d1b3b5713dee0ecd700f9f6a
parent9cf3ee75538a2d3614add34058c1918614be82c5 (diff)
parent70c677eec4013e3ad19b9383df85a66d224a6986 (diff)
downloadopenthread-856b55e9cb4a7c67d822b3b809faa6755a675080.tar.gz
Snap for 11354161 from 70c677eec4013e3ad19b9383df85a66d224a6986 to mainline-permission-release
Change-Id: Ib83c26ba0652c601a1631ae7eb0a31829803ce94
-rw-r--r--src/android/openthread-android-config.h11
-rw-r--r--src/android/openthread-core-android-config.h5
-rw-r--r--src/android/thread_network_hal/hal_interface.cpp8
-rw-r--r--src/android/thread_network_hal/hal_interface.hpp2
-rw-r--r--src/posix/platform/daemon.cpp47
-rw-r--r--src/posix/platform/daemon.hpp1
6 files changed, 48 insertions, 26 deletions
diff --git a/src/android/openthread-android-config.h b/src/android/openthread-android-config.h
index a5d4dc2a2..5ac3fc8b0 100644
--- a/src/android/openthread-android-config.h
+++ b/src/android/openthread-android-config.h
@@ -63,16 +63,9 @@
#define OPENTHREAD_CONFIG_PLATFORM_UDP_ENABLE 0
/**
- * Disables the DAEMON_CLI feature because the Android build system default is built with "Release"
- * type all build buid variants (user, userdebug and eng), but we want to disable CLI for OT daemon
- * in product.
- *
- * This flag will be overriden in "product_variables.debuggable.cflags" to enable CLI in userdebug
- * or eng build, see "ot-daemon-debuggable-cc-defaults".
+ * Enables CLI for Thread certification.
*/
-#ifndef OPENTHREAD_POSIX_CONFIG_DAEMON_CLI_ENABLE
-#define OPENTHREAD_POSIX_CONFIG_DAEMON_CLI_ENABLE 0
-#endif
+#define OPENTHREAD_POSIX_CONFIG_DAEMON_CLI_ENABLE 1
/**
* @def OPENTHREAD_POSIX_CONFIG_THREAD_NETIF_DEFAULT_NAME
diff --git a/src/android/openthread-core-android-config.h b/src/android/openthread-core-android-config.h
index 28d669d6d..5cbcfb52d 100644
--- a/src/android/openthread-core-android-config.h
+++ b/src/android/openthread-core-android-config.h
@@ -43,7 +43,7 @@
* The run time data path.
*
*/
-#define OPENTHREAD_CONFIG_POSIX_SETTINGS_PATH "/data/misc/threadnetwork"
+#define OPENTHREAD_CONFIG_POSIX_SETTINGS_PATH "/data/misc/apexdata/com.android.tethering/ot-daemon"
/**
* @def OPENTHREAD_POSIX_CONFIG_DAEMON_SOCKET_BASENAME
@@ -51,7 +51,7 @@
* Define socket basename used by POSIX app daemon.
*
*/
-#define OPENTHREAD_POSIX_CONFIG_DAEMON_SOCKET_BASENAME "/data/misc/threadnetwork/openthread-%s"
+#define OPENTHREAD_POSIX_CONFIG_DAEMON_SOCKET_BASENAME "/dev/socket/ot-daemon/%s"
/**
* @def OPENTHREAD_POSIX_CONFIG_RCP_PTY_ENABLE
@@ -274,6 +274,7 @@
#define OPENTHREAD_CONFIG_UDP_FORWARD_ENABLE 0
#define OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE 1
+#define OPENTHREAD_CONFIG_BORDER_AGENT_ID_ENABLE 1
#define OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE 1
#define OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE 1
#define OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE 1
diff --git a/src/android/thread_network_hal/hal_interface.cpp b/src/android/thread_network_hal/hal_interface.cpp
index f1de827f0..f8553bbc6 100644
--- a/src/android/thread_network_hal/hal_interface.cpp
+++ b/src/android/thread_network_hal/hal_interface.cpp
@@ -146,11 +146,7 @@ uint32_t HalInterface::GetBusSpeed(void) const
return kBusSpeed;
}
-otError HalInterface::HardwareReset(void)
-{
- mThreadChip->hardwareReset();
- return OT_ERROR_NONE;
-}
+otError HalInterface::HardwareReset(void) { return StatusToError(mThreadChip->hardwareReset()); }
void HalInterface::UpdateFdSet(void *aMainloopContext)
{
@@ -270,7 +266,7 @@ exit:
return;
}
-otError HalInterface::StatusToError(ScopedAStatus &aStatus)
+otError HalInterface::StatusToError(const ScopedAStatus &aStatus) const
{
otError error = OT_ERROR_FAILED;
diff --git a/src/android/thread_network_hal/hal_interface.hpp b/src/android/thread_network_hal/hal_interface.hpp
index ef72d0545..c3e9aed60 100644
--- a/src/android/thread_network_hal/hal_interface.hpp
+++ b/src/android/thread_network_hal/hal_interface.hpp
@@ -164,7 +164,7 @@ public:
private:
void ReceiveFrameCallback(const std::vector<uint8_t> &aFrame);
static void BinderDeathCallback(void *aContext);
- otError StatusToError(::ndk::ScopedAStatus &aStatus);
+ otError StatusToError(const ::ndk::ScopedAStatus &aStatus) const;
class ThreadChipCallback : public ::aidl::android::hardware::threadnetwork::BnThreadChipCallback
{
diff --git a/src/posix/platform/daemon.cpp b/src/posix/platform/daemon.cpp
index 5a85b15c2..403b29775 100644
--- a/src/posix/platform/daemon.cpp
+++ b/src/posix/platform/daemon.cpp
@@ -28,6 +28,9 @@
#include "posix/platform/daemon.hpp"
+#if defined(__ANDROID__) && !OPENTHREAD_CONFIG_ANDROID_NDK_ENABLE
+#include <cutils/sockets.h>
+#endif
#include <fcntl.h>
#include <signal.h>
#include <stdarg.h>
@@ -169,10 +172,28 @@ exit:
}
}
-void Daemon::SetUp(void)
+#if defined(__ANDROID__) && !OPENTHREAD_CONFIG_ANDROID_NDK_ENABLE
+void Daemon::createListenSocketOrDie(void)
+{
+ Filename socketFile;
+
+ // Don't use OPENTHREAD_POSIX_DAEMON_SOCKET_NAME because android_get_control_socket
+ // below already assumes parent /dev/socket dir
+ GetFilename(socketFile, "ot-daemon/%s.sock");
+
+ // This returns the init-managed stream socket which is already bind to
+ // /dev/socket/ot-daemon/<interface-name>.sock
+ mListenSocket = android_get_control_socket(socketFile);
+ if (mListenSocket == -1)
+ {
+ DieNowWithMessage("android_get_control_socket", OT_EXIT_ERROR_ERRNO);
+ }
+}
+#else
+void Daemon::createListenSocketOrDie(void)
{
struct sockaddr_un sockname;
- int ret;
+ int ret;
class AllowAllGuard
{
@@ -180,7 +201,7 @@ void Daemon::SetUp(void)
AllowAllGuard(void)
{
const char *allowAll = getenv("OT_DAEMON_ALLOW_ALL");
- mAllowAll = (allowAll != nullptr && strcmp("1", allowAll) == 0);
+ mAllowAll = (allowAll != nullptr && strcmp("1", allowAll) == 0);
if (mAllowAll)
{
@@ -196,13 +217,10 @@ void Daemon::SetUp(void)
}
private:
- bool mAllowAll = false;
- mode_t mMode = 0;
+ bool mAllowAll = false;
+ mode_t mMode = 0;
};
- // This allows implementing pseudo reset.
- VerifyOrExit(mListenSocket == -1);
-
mListenSocket = SocketWithCloseExec(AF_UNIX, SOCK_STREAM, 0, kSocketNonBlock);
if (mListenSocket == -1)
@@ -246,6 +264,16 @@ void Daemon::SetUp(void)
{
DieNowWithMessage("bind", OT_EXIT_ERROR_ERRNO);
}
+}
+#endif // defined(__ANDROID__) && !OPENTHREAD_CONFIG_ANDROID_NDK_ENABLE
+
+void Daemon::SetUp(void)
+{
+ int ret;
+
+ // This allows implementing pseudo reset.
+ VerifyOrExit(mListenSocket == -1);
+ createListenSocketOrDie();
//
// only accept 1 connection.
@@ -281,6 +309,8 @@ void Daemon::TearDown(void)
mSessionSocket = -1;
}
+#if !defined(__ANDROID__) || OPENTHREAD_CONFIG_ANDROID_NDK_ENABLE
+ // The `mListenSocket` is managed by `init` on Android
if (mListenSocket != -1)
{
close(mListenSocket);
@@ -302,6 +332,7 @@ void Daemon::TearDown(void)
close(mDaemonLock);
mDaemonLock = -1;
}
+#endif
}
void Daemon::Update(otSysMainloopContext &aContext)
diff --git a/src/posix/platform/daemon.hpp b/src/posix/platform/daemon.hpp
index 4fdd3b3f8..deba85b43 100644
--- a/src/posix/platform/daemon.hpp
+++ b/src/posix/platform/daemon.hpp
@@ -49,6 +49,7 @@ public:
private:
int OutputFormat(const char *aFormat, ...);
int OutputFormatV(const char *aFormat, va_list aArguments);
+ void createListenSocketOrDie(void);
void InitializeSessionSocket(void);
int mListenSocket = -1;