Merge "Add method in wpa_supplicant to call listAliases."
diff --git a/wpa_supplicant/aidl/aidl.cpp b/wpa_supplicant/aidl/aidl.cpp
index 75050c1..5d578dd 100644
--- a/wpa_supplicant/aidl/aidl.cpp
+++ b/wpa_supplicant/aidl/aidl.cpp
@@ -517,7 +517,7 @@
void wpas_aidl_notify_p2p_group_started(
struct wpa_supplicant *wpa_s, const struct wpa_ssid *ssid, int persistent,
- int client)
+ int client, const u8 *ip)
{
if (!wpa_s || !ssid)
return;
@@ -530,7 +530,7 @@
if (!aidl_manager)
return;
- aidl_manager->notifyP2pGroupStarted(wpa_s, ssid, persistent, client);
+ aidl_manager->notifyP2pGroupStarted(wpa_s, ssid, persistent, client, ip);
}
void wpas_aidl_notify_p2p_group_removed(
diff --git a/wpa_supplicant/aidl/aidl.h b/wpa_supplicant/aidl/aidl.h
index bc66b59..f963e61 100644
--- a/wpa_supplicant/aidl/aidl.h
+++ b/wpa_supplicant/aidl/aidl.h
@@ -79,7 +79,7 @@
struct wpa_supplicant *wpa_s, const char *reason);
void wpas_aidl_notify_p2p_group_started(
struct wpa_supplicant *wpa_s, const struct wpa_ssid *ssid,
- int persistent, int client);
+ int persistent, int client, const u8 *ip);
void wpas_aidl_notify_p2p_group_removed(
struct wpa_supplicant *wpa_s, const struct wpa_ssid *ssid,
const char *role);
@@ -228,7 +228,7 @@
{}
static void wpas_aidl_notify_p2p_group_started(
struct wpa_supplicant *wpa_s, const struct wpa_ssid *ssid, int persistent,
- int client)
+ int client, const u8 *ip)
{}
static void wpas_aidl_notify_p2p_group_removed(
struct wpa_supplicant *wpa_s, const struct wpa_ssid *ssid, const char *role)
diff --git a/wpa_supplicant/aidl/aidl_manager.cpp b/wpa_supplicant/aidl/aidl_manager.cpp
index 4833938..bc70532 100644
--- a/wpa_supplicant/aidl/aidl_manager.cpp
+++ b/wpa_supplicant/aidl/aidl_manager.cpp
@@ -1353,7 +1353,7 @@
void AidlManager::notifyP2pGroupStarted(
struct wpa_supplicant *wpa_group_s, const struct wpa_ssid *ssid,
- int persistent, int client)
+ int persistent, int client, const u8 *ip)
{
if (!wpa_group_s || !wpa_group_s->parent || !ssid)
return;
@@ -1394,7 +1394,17 @@
params.goDeviceAddress = macAddrToVec(wpa_group_s->go_dev_addr);
params.goInterfaceAddress = aidl_is_go ? macAddrToVec(wpa_group_s->own_addr) :
macAddrToVec(wpa_group_s->current_bss->bssid);
+ if (NULL != ip && !aidl_is_go) {
+ params.isP2pClientEapolIpAddressInfoPresent = true;
+ os_memcpy(¶ms.p2pClientIpInfo.ipAddressClient, &ip[0], 4);
+ os_memcpy(¶ms.p2pClientIpInfo.ipAddressMask, &ip[4], 4);
+ os_memcpy(¶ms.p2pClientIpInfo.ipAddressGo, &ip[8], 4);
+ wpa_printf(MSG_DEBUG, "P2P: IP Address allocated - CLI: 0x%x MASK: 0x%x GO: 0x%x",
+ params.p2pClientIpInfo.ipAddressClient,
+ params.p2pClientIpInfo.ipAddressMask,
+ params.p2pClientIpInfo.ipAddressGo);
+ }
callWithEachP2pIfaceCallback(
misc_utils::charBufToString(wpa_s->ifname),
std::bind(&ISupplicantP2pIfaceCallback::onGroupStartedWithParams,
diff --git a/wpa_supplicant/aidl/aidl_manager.h b/wpa_supplicant/aidl/aidl_manager.h
index e4af31a..223f4b2 100644
--- a/wpa_supplicant/aidl/aidl_manager.h
+++ b/wpa_supplicant/aidl/aidl_manager.h
@@ -104,7 +104,7 @@
struct wpa_supplicant *wpa_s, const char *reason);
void notifyP2pGroupStarted(
struct wpa_supplicant *wpa_group_s, const struct wpa_ssid *ssid,
- int persistent, int client);
+ int persistent, int client, const u8 *ip);
void notifyP2pGroupRemoved(
struct wpa_supplicant *wpa_group_s, const struct wpa_ssid *ssid,
const char *role);
diff --git a/wpa_supplicant/aidl/p2p_iface.cpp b/wpa_supplicant/aidl/p2p_iface.cpp
index 9eb9fbf..9927ba4 100644
--- a/wpa_supplicant/aidl/p2p_iface.cpp
+++ b/wpa_supplicant/aidl/p2p_iface.cpp
@@ -809,6 +809,16 @@
&P2pIface::setVendorElementsInternal, in_frameTypeMask, in_vendorElemBytes);
}
+::ndk::ScopedAStatus P2pIface::configureEapolIpAddressAllocationParams(
+ int32_t in_ipAddressGo, int32_t in_ipAddressMask,
+ int32_t in_ipAddressStart, int32_t in_ipAddressEnd)
+{
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &P2pIface::configureEapolIpAddressAllocationParamsInternal,
+ in_ipAddressGo, in_ipAddressMask, in_ipAddressStart, in_ipAddressEnd);
+}
+
std::pair<std::string, ndk::ScopedAStatus> P2pIface::getNameInternal()
{
return {ifname_, ndk::ScopedAStatus::ok()};
@@ -1824,6 +1834,23 @@
return ndk::ScopedAStatus::ok();
}
+ndk::ScopedAStatus P2pIface::configureEapolIpAddressAllocationParamsInternal(
+ uint32_t ipAddressGo, uint32_t ipAddressMask,
+ uint32_t ipAddressStart, uint32_t ipAddressEnd)
+{
+ wpa_printf(MSG_DEBUG, "P2P: Configure IP addresses for IP allocation in EAPOL"
+ " ipAddressGo: 0x%x mask: 0x%x Range - Start: 0x%x End: 0x%x",
+ ipAddressGo, ipAddressMask, ipAddressStart, ipAddressEnd);
+ struct wpa_supplicant* wpa_s = retrieveIfacePtr();
+
+ os_memcpy(wpa_s->conf->ip_addr_go, &ipAddressGo, 4);
+ os_memcpy(wpa_s->conf->ip_addr_mask, &ipAddressMask, 4);
+ os_memcpy(wpa_s->conf->ip_addr_start, &ipAddressStart, 4);
+ os_memcpy(wpa_s->conf->ip_addr_end, &ipAddressEnd, 4);
+
+ return ndk::ScopedAStatus::ok();
+}
+
/**
* Retrieve the underlying |wpa_supplicant| struct
* pointer for this iface.
diff --git a/wpa_supplicant/aidl/p2p_iface.h b/wpa_supplicant/aidl/p2p_iface.h
index 5f9903c..61972f2 100644
--- a/wpa_supplicant/aidl/p2p_iface.h
+++ b/wpa_supplicant/aidl/p2p_iface.h
@@ -172,6 +172,9 @@
::ndk::ScopedAStatus setVendorElements(
P2pFrameTypeMask in_frameTypeMask,
const std::vector<uint8_t>& in_vendorElemBytes) override;
+ ::ndk::ScopedAStatus configureEapolIpAddressAllocationParams(
+ int32_t in_ipAddressGo, int32_t in_ipAddressMask,
+ int32_t in_ipAddressStart, int32_t in_ipAddressEnd) override;
private:
// Corresponding worker functions for the AIDL methods.
@@ -292,6 +295,9 @@
ndk::ScopedAStatus setVendorElementsInternal(
P2pFrameTypeMask frameTypeMask,
const std::vector<uint8_t>& vendorElemBytes);
+ ::ndk::ScopedAStatus configureEapolIpAddressAllocationParamsInternal(
+ uint32_t ipAddressGo, uint32_t ipAddressMask,
+ uint32_t ipAddressStart, uint32_t ipAddressEnd);
struct wpa_supplicant* retrieveIfacePtr();
struct wpa_supplicant* retrieveGroupIfacePtr(
diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c
index bb2c0b7..76f2232 100644
--- a/wpa_supplicant/notify.c
+++ b/wpa_supplicant/notify.c
@@ -797,7 +797,7 @@
wpas_dbus_signal_p2p_group_started(wpa_s, client, persistent, ip);
- wpas_aidl_notify_p2p_group_started(wpa_s, ssid, persistent, client);
+ wpas_aidl_notify_p2p_group_started(wpa_s, ssid, persistent, client, ip);
}