diff options
author | Logan Chien <loganchien@google.com> | 2017-04-21 11:28:41 +0800 |
---|---|---|
committer | Logan Chien <loganchien@google.com> | 2017-04-26 15:57:15 +0800 |
commit | 929c0d1d2abb1df2c9997c60da7941d6c44cdb2d (patch) | |
tree | 6f32823b88a9bd1b364542c8fa9e17c74d2de31a /libwifi_system | |
parent | de086d4e039df96b64b60a2e7d43378537ac3a7a (diff) | |
download | android_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.bp | 1 | ||||
-rw-r--r-- | libwifi_system/include/wifi_system/interface_tool.h | 46 | ||||
-rw-r--r-- | libwifi_system/interface_tool.cpp | 107 | ||||
-rw-r--r-- | libwifi_system/testlib/include/wifi_system_test/mock_interface_tool.h | 38 |
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 |