binder: Use ifname as key in BinderManager |IIface| map
Since ifname is unique, its probably a better key to lookup the
corresponding |IIface| binder object than using raw pointer.
This deprecates the usage |binder_object_key| added in |wpa_supplicant|
struct.
While there,
1. Change all comments in |BinderManager| to c++ style.
2. Add braces for all one line if statements.
BUG: 29998764
Change-Id: Ie0b571204b8363ac49c5db7666249b9a39006f31
TEST: Ran the integration tests under |wificond|.
Signed-off-by: Roshan Pius <rpius@google.com>
diff --git a/wpa_supplicant/binder/supplicant.cpp b/wpa_supplicant/binder/supplicant.cpp
index d85f2cf..5a0db75 100644
--- a/wpa_supplicant/binder/supplicant.cpp
+++ b/wpa_supplicant/binder/supplicant.cpp
@@ -21,10 +21,11 @@
android::String16 driver, ifname, confname, bridge_ifname;
/* Check if required Ifname argument is missing */
- if (!params.getString(android::String16("Ifname"), &ifname))
+ if (!params.getString(android::String16("Ifname"), &ifname)) {
return android::binder::Status::fromExceptionCode(
android::binder::Status::EX_ILLEGAL_ARGUMENT,
"Ifname missing in params.");
+ }
/* Retrieve the remaining params from the dictionary */
params.getString(android::String16("Driver"), &driver);
params.getString(android::String16("ConfigFile"), &confname);
@@ -35,10 +36,11 @@
* an error if we already control it.
*/
if (wpa_supplicant_get_iface(
- wpa_global_, android::String8(ifname).string()) != NULL)
+ wpa_global_, android::String8(ifname).string()) != NULL) {
return android::binder::Status::fromServiceSpecificError(
ERROR_IFACE_EXISTS,
"wpa_supplicant already controls this interface.");
+ }
android::binder::Status status;
struct wpa_supplicant *wpa_s = NULL;
@@ -54,7 +56,7 @@
wpa_s = wpa_supplicant_add_iface(wpa_global_, &iface, NULL);
/* The supplicant core creates a corresponding binder object via
* BinderManager when |wpa_supplicant_add_iface| is called. */
- if (!wpa_s || !wpa_s->binder_object_key) {
+ if (!wpa_s) {
status = android::binder::Status::fromServiceSpecificError(
ERROR_GENERIC,
"wpa_supplicant couldn't grab this interface.");
@@ -62,14 +64,15 @@
BinderManager *binder_manager = BinderManager::getInstance();
if (!binder_manager ||
- binder_manager->getIfaceBinderObjectByKey(
- wpa_s->binder_object_key, aidl_return))
+ binder_manager->getIfaceBinderObjectByIfname(
+ wpa_s->ifname, aidl_return)) {
status =
android::binder::Status::fromServiceSpecificError(
ERROR_GENERIC,
"wpa_supplicant encountered a binder error.");
- else
+ } else {
status = android::binder::Status::ok();
+ }
}
os_free((void *)iface.driver);
os_free((void *)iface.ifname);
@@ -83,14 +86,16 @@
struct wpa_supplicant *wpa_s;
wpa_s = wpa_supplicant_get_iface(wpa_global_, ifname.c_str());
- if (!wpa_s || !wpa_s->binder_object_key)
+ if (!wpa_s) {
return android::binder::Status::fromServiceSpecificError(
ERROR_IFACE_UNKNOWN,
"wpa_supplicant does not control this interface.");
- if (wpa_supplicant_remove_iface(wpa_global_, wpa_s, 0))
+ }
+ if (wpa_supplicant_remove_iface(wpa_global_, wpa_s, 0)) {
return android::binder::Status::fromServiceSpecificError(
ERROR_GENERIC,
"wpa_supplicant couldn't remove this interface.");
+ }
return android::binder::Status::ok();
}
@@ -101,18 +106,20 @@
struct wpa_supplicant *wpa_s;
wpa_s = wpa_supplicant_get_iface(wpa_global_, ifname.c_str());
- if (!wpa_s || !wpa_s->binder_object_key)
+ if (!wpa_s) {
return android::binder::Status::fromServiceSpecificError(
ERROR_IFACE_UNKNOWN,
"wpa_supplicant does not control this interface.");
+ }
BinderManager *binder_manager = BinderManager::getInstance();
if (!binder_manager ||
- binder_manager->getIfaceBinderObjectByKey(
- wpa_s->binder_object_key, aidl_return))
+ binder_manager->getIfaceBinderObjectByIfname(
+ wpa_s->ifname, aidl_return)) {
return android::binder::Status::fromServiceSpecificError(
ERROR_GENERIC,
"wpa_supplicant encountered a binder error.");
+ }
return android::binder::Status::ok();
}