Snap for 11381838 from 6d5f59e91dd0ba8f0f658ede6e543cb3ffe11fc1 to mainline-odp-release
Change-Id: I01e24393ff49c0ab55a42f2e586b06546dd6d5dd
diff --git a/Android.bp b/Android.bp
index 30edee7..f3cc85a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -603,7 +603,6 @@
cc_binary {
name: "ot-ctl",
- vendor: true,
defaults: ["ot_posix_cflags_defaults"],
generated_headers: ["ot_version_header"],
diff --git a/src/android/openthread-android-config.h b/src/android/openthread-android-config.h
index a5d4dc2..5ac3fc8 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 28d669d..5cbcfb5 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 f1de827..f8553bb 100644
--- a/src/android/thread_network_hal/hal_interface.cpp
+++ b/src/android/thread_network_hal/hal_interface.cpp
@@ -146,11 +146,7 @@
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 @@
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 ef72d05..c3e9aed 100644
--- a/src/android/thread_network_hal/hal_interface.hpp
+++ b/src/android/thread_network_hal/hal_interface.hpp
@@ -164,7 +164,7 @@
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 5a85b15..403b297 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 @@
}
}
-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 @@
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 @@
}
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 @@
{
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 @@
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 @@
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 4fdd3b3..deba85b 100644
--- a/src/posix/platform/daemon.hpp
+++ b/src/posix/platform/daemon.hpp
@@ -49,6 +49,7 @@
private:
int OutputFormat(const char *aFormat, ...);
int OutputFormatV(const char *aFormat, va_list aArguments);
+ void createListenSocketOrDie(void);
void InitializeSessionSocket(void);
int mListenSocket = -1;