summaryrefslogtreecommitdiffstats
path: root/libwifi_system
diff options
context:
space:
mode:
authorLogan Chien <loganchien@google.com>2017-04-21 11:28:41 +0800
committerLogan Chien <loganchien@google.com>2017-04-26 15:57:15 +0800
commit929c0d1d2abb1df2c9997c60da7941d6c44cdb2d (patch)
tree6f32823b88a9bd1b364542c8fa9e17c74d2de31a /libwifi_system
parentde086d4e039df96b64b60a2e7d43378537ac3a7a (diff)
downloadandroid_frameworks_opt_net_wifi-929c0d1d2abb1df2c9997c60da7941d6c44cdb2d.tar.gz
android_frameworks_opt_net_wifi-929c0d1d2abb1df2c9997c60da7941d6c44cdb2d.tar.bz2
android_frameworks_opt_net_wifi-929c0d1d2abb1df2c9997c60da7941d6c44cdb2d.zip
Split InterfaceTool from libwifi-system.so
This commit extracts InterfaceTool from libwifi-system.so into a new library named libwifi-system-iface.so. libwifi-system-iface.so will be vendor_available because it will be used by both wificond and android.hardware.wifi@1.0-service. Bug: 37429084 Test: Sailfish builds, boots, and wifi works. Change-Id: Iad93c6d258507df3bbb97228814ff5ce5cc2a2f9
Diffstat (limited to 'libwifi_system')
-rw-r--r--libwifi_system/Android.bp1
-rw-r--r--libwifi_system/include/wifi_system/interface_tool.h46
-rw-r--r--libwifi_system/interface_tool.cpp107
-rw-r--r--libwifi_system/testlib/include/wifi_system_test/mock_interface_tool.h38
4 files changed, 0 insertions, 192 deletions
diff --git a/libwifi_system/Android.bp b/libwifi_system/Android.bp
index edc84dfc1..877d05f1d 100644
--- a/libwifi_system/Android.bp
+++ b/libwifi_system/Android.bp
@@ -41,7 +41,6 @@ cc_library_shared {
],
srcs: [
"hostapd_manager.cpp",
- "interface_tool.cpp",
"supplicant_manager.cpp",
],
}
diff --git a/libwifi_system/include/wifi_system/interface_tool.h b/libwifi_system/include/wifi_system/interface_tool.h
deleted file mode 100644
index aabdd9a52..000000000
--- a/libwifi_system/include/wifi_system/interface_tool.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_WIFI_SYSTEM_INTERFACE_TOOL_H
-#define ANDROID_WIFI_SYSTEM_INTERFACE_TOOL_H
-
-namespace android {
-namespace wifi_system {
-
-class InterfaceTool {
- public:
- InterfaceTool() = default;
- virtual ~InterfaceTool() = default;
-
- // Get the interface state of |if_name|.
- // Returns true iff the interface is up.
- virtual bool GetUpState(const char* if_name);
-
- // Set the interface named by |if_name| up or down.
- // Returns true on success, false otherwise.
- virtual bool SetUpState(const char* if_name, bool request_up);
-
- // A helpful alias for SetUpState() that assumes there is a single system
- // WiFi interface. Prefer this form if you're hardcoding "wlan0" to help us
- // identify all the places we are hardcoding the name of the wifi interface.
- virtual bool SetWifiUpState(bool request_up);
-
-}; // class InterfaceTool
-
-} // namespace wifi_system
-} // namespace android
-
-#endif // ANDROID_WIFI_SYSTEM_INTERFACE_TOOL_H
diff --git a/libwifi_system/interface_tool.cpp b/libwifi_system/interface_tool.cpp
deleted file mode 100644
index f0d40efd4..000000000
--- a/libwifi_system/interface_tool.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "wifi_system/interface_tool.h"
-
-#include <netinet/in.h>
-#include <sys/socket.h>
-/* We need linux/if.h for flags like IFF_UP. Sadly, it forward declares
- struct sockaddr and must be included after sys/socket.h. */
-#include <linux/if.h>
-
-#include <android-base/logging.h>
-#include <android-base/unique_fd.h>
-
-namespace android {
-namespace wifi_system {
-namespace {
-
-const char kWlan0InterfaceName[] = "wlan0";
-
-bool GetIfState(const char* if_name, int sock, struct ifreq* ifr) {
- memset(ifr, 0, sizeof(*ifr));
- if (strlcpy(ifr->ifr_name, if_name, sizeof(ifr->ifr_name)) >=
- sizeof(ifr->ifr_name)) {
- LOG(ERROR) << "Interface name is too long: " << if_name;
- return false;
- }
-
- if (TEMP_FAILURE_RETRY(ioctl(sock, SIOCGIFFLAGS, ifr)) != 0) {
- LOG(ERROR) << "Could not read interface state for " << if_name
- << " (" << strerror(errno) << ")";
- return false;
- }
-
- return true;
-}
-
-} // namespace
-
-bool InterfaceTool::GetUpState(const char* if_name) {
- base::unique_fd sock(socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0));
- if (sock.get() < 0) {
- LOG(ERROR) << "Failed to open socket to set up/down state ("
- << strerror(errno) << ")";
- return false;
- }
-
- struct ifreq ifr;
- if (!GetIfState(if_name, sock.get(), &ifr)) {
- return false; // logging done internally
- }
-
- return ifr.ifr_flags & IFF_UP;
-}
-
-bool InterfaceTool::SetUpState(const char* if_name, bool request_up) {
- base::unique_fd sock(socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0));
- if (sock.get() < 0) {
- LOG(ERROR) << "Failed to open socket to set up/down state ("
- << strerror(errno) << ")";
- return false;
- }
-
- struct ifreq ifr;
- if (!GetIfState(if_name, sock.get(), &ifr)) {
- return false; // logging done internally
- }
-
- const bool currently_up = ifr.ifr_flags & IFF_UP;
- if (currently_up == request_up) {
- return true;
- }
-
- if (request_up) {
- ifr.ifr_flags |= IFF_UP;
- } else {
- ifr.ifr_flags &= ~IFF_UP;
- }
-
- if (TEMP_FAILURE_RETRY(ioctl(sock.get(), SIOCSIFFLAGS, &ifr)) != 0) {
- LOG(ERROR) << "Could not set interface flags for " << if_name
- << " (" << strerror(errno) << ")";
- return false;
- }
-
- return true;
-}
-
-bool InterfaceTool::SetWifiUpState(bool request_up) {
- return SetUpState(kWlan0InterfaceName, request_up);
-}
-
-} // namespace wifi_system
-} // namespace android
diff --git a/libwifi_system/testlib/include/wifi_system_test/mock_interface_tool.h b/libwifi_system/testlib/include/wifi_system_test/mock_interface_tool.h
deleted file mode 100644
index b9926c938..000000000
--- a/libwifi_system/testlib/include/wifi_system_test/mock_interface_tool.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_WIFI_SYSTEM_TEST_MOCK_INTERFACE_TOOL_H
-#define ANDROID_WIFI_SYSTEM_TEST_MOCK_INTERFACE_TOOL_H
-
-#include <wifi_system/interface_tool.h>
-
-namespace android {
-namespace wifi_system {
-
-class MockInterfaceTool : public InterfaceTool {
- public:
- ~MockInterfaceTool() override = default;
-
- MOCK_METHOD1(GetUpState, bool(const char* if_name));
- MOCK_METHOD2(SetUpState, bool(const char* if_name, bool request_up));
- MOCK_METHOD1(SetWifiUpState, bool(bool request_up));
-
-}; // class MockInterfaceTool
-
-} // namespace wifi_system
-} // namespace android
-
-#endif // ANDROID_WIFI_SYSTEM_TEST_MOCK_INTERFACE_TOOL_H