Merge "check whether the network interface exists before using it" into main

This commit is contained in:
Zhanglong Xia
2024-11-19 08:16:47 +00:00
committed by Gerrit Code Review

View File

@@ -18,11 +18,11 @@
#include <android-base/logging.h>
#include <android/binder_manager.h>
#include <android/binder_process.h>
#include <netinet/in.h>
#include <net/if.h>
#include <utils/Log.h>
#include <cutils/properties.h>
#include <net/if.h>
#include <netinet/in.h>
#include <sys/stat.h>
#include <utils/Log.h>
#include "service.hpp"
#include "thread_chip.hpp"
@@ -30,13 +30,19 @@
using aidl::android::hardware::threadnetwork::IThreadChip;
using aidl::android::hardware::threadnetwork::ThreadChip;
#define THREADNETWORK_COPROCESSOR_SIMULATION_PATH "/apex/com.android.hardware.threadnetwork/bin/ot-rcp"
#define THREADNETWORK_COPROCESSOR_SIMULATION_PATH \
"/apex/com.android.hardware.threadnetwork/bin/ot-rcp"
namespace {
bool isInterfaceExists(const char* interfaceName) {
return if_nametoindex(interfaceName) != 0;
}
void addThreadChip(int id, const char* url) {
binder_status_t status;
const std::string serviceName(std::string() + IThreadChip::descriptor + "/chip" +
std::to_string(id));
std::to_string(id));
ALOGI("ServiceName: %s, Url: %s", serviceName.c_str(), url);
@@ -50,19 +56,24 @@ void addThreadChip(int id, const char* url) {
void addSimulatedThreadChip() {
char local_interface[PROP_VALUE_MAX];
CHECK_GT(property_get("persist.vendor.otsim.local_interface",
local_interface, "eth1"), 0);
int node_id = property_get_int32("ro.boot.openthread_node_id", 0);
CHECK_GT(node_id,0);
std::string url = std::string("spinel+hdlc+forkpty://" \
THREADNETWORK_COPROCESSOR_SIMULATION_PATH "?forkpty-arg=-L") \
+ local_interface + "&forkpty-arg=" + std::to_string(node_id);
CHECK_GT(node_id, 0);
std::string url = std::string("spinel+hdlc+forkpty://" THREADNETWORK_COPROCESSOR_SIMULATION_PATH
"?forkpty-arg=") +
std::to_string(node_id);
CHECK_GT(property_get("persist.vendor.otsim.local_interface", local_interface, "eth1"), 0);
if (isInterfaceExists(local_interface)) {
url += std::string("&forkpty-arg=-L") + local_interface;
} else {
ALOGI("Interface %s doesn't exist!", local_interface);
}
addThreadChip(0, url.c_str());
}
}
} // namespace
int main(int argc, char* argv[]) {
aidl::android::hardware::threadnetwork::Service service;