diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-01-25 00:42:30 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-01-25 00:42:30 +0000 |
commit | 856b55e9cb4a7c67d822b3b809faa6755a675080 (patch) | |
tree | 82c3b3ed37c7d1e3d1b3b5713dee0ecd700f9f6a | |
parent | 9cf3ee75538a2d3614add34058c1918614be82c5 (diff) | |
parent | 70c677eec4013e3ad19b9383df85a66d224a6986 (diff) | |
download | openthread-856b55e9cb4a7c67d822b3b809faa6755a675080.tar.gz |
Snap for 11354161 from 70c677eec4013e3ad19b9383df85a66d224a6986 to mainline-permission-release
Change-Id: Ib83c26ba0652c601a1631ae7eb0a31829803ce94
-rw-r--r-- | src/android/openthread-android-config.h | 11 | ||||
-rw-r--r-- | src/android/openthread-core-android-config.h | 5 | ||||
-rw-r--r-- | src/android/thread_network_hal/hal_interface.cpp | 8 | ||||
-rw-r--r-- | src/android/thread_network_hal/hal_interface.hpp | 2 | ||||
-rw-r--r-- | src/posix/platform/daemon.cpp | 47 | ||||
-rw-r--r-- | src/posix/platform/daemon.hpp | 1 |
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; |