aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/dpp.c10
-rw-r--r--src/common/dpp.h3
-rw-r--r--wpa_supplicant/dpp_supplicant.c8
-rw-r--r--wpa_supplicant/hidl/1.3/hidl.cpp140
-rw-r--r--wpa_supplicant/hidl/1.3/hidl.h14
-rw-r--r--wpa_supplicant/hidl/1.3/hidl_manager.cpp69
-rw-r--r--wpa_supplicant/hidl/1.3/hidl_manager.h15
-rw-r--r--wpa_supplicant/hidl/1.3/sta_iface.cpp5
-rw-r--r--wpa_supplicant/notify.c30
-rw-r--r--wpa_supplicant/notify.h7
10 files changed, 249 insertions, 52 deletions
diff --git a/src/common/dpp.c b/src/common/dpp.c
index ab7072cf..44cb9100 100644
--- a/src/common/dpp.c
+++ b/src/common/dpp.c
@@ -5298,17 +5298,23 @@ dpp_conf_req_rx(struct dpp_authentication *auth, const u8 *attr_start,
wpa_printf(MSG_DEBUG, "DPP: mudurl = '%s'", token->string);
token = json_get_member(root, "bandSupport");
+ auth->band_list_size = 0;
if (token && token->type == JSON_ARRAY) {
+ memset(auth->band_list, 0, sizeof(auth->band_list));
wpa_printf(MSG_DEBUG, "DPP: bandSupport");
token = token->child;
while (token) {
- if (token->type != JSON_NUMBER)
+ if (token->type != JSON_NUMBER) {
wpa_printf(MSG_DEBUG,
"DPP: Invalid bandSupport array member type");
- else
+ } else {
+ if (auth->band_list_size < DPP_MAX_CHANNELS) {
+ auth->band_list[auth->band_list_size++] = token->number;
+ }
wpa_printf(MSG_DEBUG,
"DPP: Supported global operating class: %d",
token->number);
+ }
token = token->sibling;
}
}
diff --git a/src/common/dpp.h b/src/common/dpp.h
index 0be26d7e..abed3e4a 100644
--- a/src/common/dpp.h
+++ b/src/common/dpp.h
@@ -185,6 +185,7 @@ struct dpp_configuration {
};
#define DPP_MAX_CONF_OBJ 10
+#define DPP_MAX_CHANNELS 32
struct dpp_authentication {
void *msg_ctx;
@@ -265,6 +266,8 @@ struct dpp_authentication {
char *groups_override;
unsigned int ignore_netaccesskey_mismatch:1;
#endif /* CONFIG_TESTING_OPTIONS */
+ unsigned short band_list[DPP_MAX_CHANNELS];
+ int band_list_size;
};
struct dpp_configurator {
diff --git a/wpa_supplicant/dpp_supplicant.c b/wpa_supplicant/dpp_supplicant.c
index dee8e28a..a436930b 100644
--- a/wpa_supplicant/dpp_supplicant.c
+++ b/wpa_supplicant/dpp_supplicant.c
@@ -1435,6 +1435,7 @@ static void wpas_dpp_config_result_wait_timeout(void *eloop_ctx,
wpa_printf(MSG_DEBUG,
"DPP: Timeout while waiting for Configuration Result");
wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_FAILED);
+ wpas_notify_dpp_configuration_failure(wpa_s);
dpp_auth_deinit(auth);
wpa_s->dpp_auth = NULL;
}
@@ -1452,6 +1453,7 @@ static void wpas_dpp_conn_status_result_wait_timeout(void *eloop_ctx,
wpa_printf(MSG_DEBUG,
"DPP: Timeout while waiting for Connection Status Result");
wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONN_STATUS_RESULT "timeout");
+ wpas_notify_dpp_timeout(wpa_s);
wpas_dpp_listen_stop(wpa_s);
dpp_auth_deinit(auth);
wpa_s->dpp_auth = NULL;
@@ -1485,6 +1487,7 @@ static void wpas_dpp_rx_conf_result(struct wpa_supplicant *wpa_s, const u8 *src,
wpa_msg(wpa_s, MSG_INFO,
DPP_EVENT_CONF_SENT "wait_conn_status=1");
wpa_printf(MSG_DEBUG, "DPP: Wait for Connection Status Result");
+ wpas_notify_dpp_config_accepted(wpa_s);
eloop_cancel_timeout(wpas_dpp_config_result_wait_timeout,
wpa_s, NULL);
auth->waiting_conn_status_result = 1;
@@ -1506,7 +1509,7 @@ static void wpas_dpp_rx_conf_result(struct wpa_supplicant *wpa_s, const u8 *src,
}
else {
wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_CONF_FAILED);
- wpas_notify_dpp_configuration_failure(wpa_s);
+ wpas_notify_dpp_config_rejected(wpa_s);
}
dpp_auth_deinit(auth);
wpa_s->dpp_auth = NULL;
@@ -1538,6 +1541,8 @@ static void wpas_dpp_rx_conn_status_result(struct wpa_supplicant *wpa_s,
"result=%d ssid=%s channel_list=%s",
status, wpa_ssid_txt(ssid, ssid_len),
channel_list ? channel_list : "N/A");
+ wpas_notify_dpp_conn_status(wpa_s, status, wpa_ssid_txt(ssid, ssid_len),
+ channel_list, auth->band_list, auth->band_list_size);
os_free(channel_list);
offchannel_send_action_done(wpa_s);
wpas_dpp_listen_stop(wpa_s);
@@ -2199,6 +2204,7 @@ wpas_dpp_gas_status_handler(void *ctx, struct wpabuf *resp, int ok)
if (ok && auth->peer_version >= 2 &&
auth->conf_resp_status == DPP_STATUS_OK) {
wpa_printf(MSG_DEBUG, "DPP: Wait for Configuration Result");
+ wpas_notify_dpp_config_sent_wait_response(wpa_s);
auth->waiting_conf_result = 1;
auth->conf_resp = NULL;
wpabuf_free(resp);
diff --git a/wpa_supplicant/hidl/1.3/hidl.cpp b/wpa_supplicant/hidl/1.3/hidl.cpp
index a04126dd..a3efde40 100644
--- a/wpa_supplicant/hidl/1.3/hidl.cpp
+++ b/wpa_supplicant/hidl/1.3/hidl.cpp
@@ -19,17 +19,20 @@ extern "C"
#include "utils/common.h"
#include "utils/eloop.h"
#include "utils/includes.h"
+#include "dpp.h"
}
using android::hardware::configureRpcThreadpool;
using android::hardware::handleTransportPoll;
using android::hardware::setupTransportPolling;
-using android::hardware::wifi::supplicant::V1_2::DppFailureCode;
-using android::hardware::wifi::supplicant::V1_2::DppProgressCode;
+using android::hardware::wifi::supplicant::V1_3::DppFailureCode;
+using android::hardware::wifi::supplicant::V1_3::DppProgressCode;
+using android::hardware::wifi::supplicant::V1_3::DppSuccessCode;
using android::hardware::wifi::supplicant::V1_3::implementation::HidlManager;
static void wpas_hidl_notify_dpp_failure(struct wpa_supplicant *wpa_s, DppFailureCode code);
static void wpas_hidl_notify_dpp_progress(struct wpa_supplicant *wpa_s, DppProgressCode code);
+static void wpas_hidl_notify_dpp_success(struct wpa_supplicant *wpa_s, DppSuccessCode code);
void wpas_hidl_sock_handler(
int sock, void * /* eloop_ctx */, void * /* sock_ctx */)
@@ -667,84 +670,56 @@ void wpas_hidl_notify_dpp_config_received(struct wpa_supplicant *wpa_s,
void wpas_hidl_notify_dpp_config_sent(struct wpa_supplicant *wpa_s)
{
- if (!wpa_s)
- return;
-
- wpa_printf(
- MSG_DEBUG,
- "Notifying DPP configuration sent");
-
- HidlManager *hidl_manager = HidlManager::getInstance();
- if (!hidl_manager)
- return;
-
- hidl_manager->notifyDppConfigSent(wpa_s);
+ wpas_hidl_notify_dpp_success(wpa_s, DppSuccessCode::CONFIGURATION_SENT);
}
/* DPP Progress notifications */
void wpas_hidl_notify_dpp_auth_success(struct wpa_supplicant *wpa_s)
{
- if (!wpa_s)
- return;
-
wpas_hidl_notify_dpp_progress(wpa_s, DppProgressCode::AUTHENTICATION_SUCCESS);
}
void wpas_hidl_notify_dpp_resp_pending(struct wpa_supplicant *wpa_s)
{
- if (!wpa_s)
- return;
-
wpas_hidl_notify_dpp_progress(wpa_s, DppProgressCode::RESPONSE_PENDING);
}
/* DPP Failure notifications */
void wpas_hidl_notify_dpp_not_compatible(struct wpa_supplicant *wpa_s)
{
- if (!wpa_s)
- return;
-
wpas_hidl_notify_dpp_failure(wpa_s, DppFailureCode::NOT_COMPATIBLE);
}
void wpas_hidl_notify_dpp_missing_auth(struct wpa_supplicant *wpa_s)
{
- if (!wpa_s)
- return;
+ wpas_hidl_notify_dpp_failure(wpa_s, DppFailureCode::AUTHENTICATION);
}
void wpas_hidl_notify_dpp_configuration_failure(struct wpa_supplicant *wpa_s)
{
- if (!wpa_s)
- return;
-
wpas_hidl_notify_dpp_failure(wpa_s, DppFailureCode::CONFIGURATION);
}
void wpas_hidl_notify_dpp_timeout(struct wpa_supplicant *wpa_s)
{
- if (!wpa_s)
- return;
-
wpas_hidl_notify_dpp_failure(wpa_s, DppFailureCode::TIMEOUT);
}
void wpas_hidl_notify_dpp_auth_failure(struct wpa_supplicant *wpa_s)
{
- if (!wpa_s)
- return;
-
wpas_hidl_notify_dpp_failure(wpa_s, DppFailureCode::AUTHENTICATION);
}
void wpas_hidl_notify_dpp_fail(struct wpa_supplicant *wpa_s)
{
- if (!wpa_s)
- return;
-
wpas_hidl_notify_dpp_failure(wpa_s, DppFailureCode::FAILURE);
}
+void wpas_hidl_notify_dpp_config_sent_wait_response(struct wpa_supplicant *wpa_s)
+{
+ wpas_hidl_notify_dpp_progress(wpa_s, DppProgressCode::CONFIGURATION_SENT_WAITING_RESPONSE);
+}
+
/* DPP notification helper functions */
static void wpas_hidl_notify_dpp_failure(struct wpa_supplicant *wpa_s, DppFailureCode code)
{
@@ -778,6 +753,97 @@ static void wpas_hidl_notify_dpp_progress(struct wpa_supplicant *wpa_s, DppProgr
hidl_manager->notifyDppProgress(wpa_s, code);
}
+void wpas_hidl_notify_dpp_config_accepted(struct wpa_supplicant *wpa_s)
+{
+ wpas_hidl_notify_dpp_progress(wpa_s, DppProgressCode::CONFIGURATION_ACCEPTED);
+}
+
+static void wpas_hidl_notify_dpp_config_applied(struct wpa_supplicant *wpa_s)
+{
+ wpas_hidl_notify_dpp_success(wpa_s, DppSuccessCode::CONFIGURATION_APPLIED);
+}
+
+static void wpas_hidl_notify_dpp_success(struct wpa_supplicant *wpa_s, DppSuccessCode code)
+{
+ if (!wpa_s)
+ return;
+
+ wpa_printf(
+ MSG_DEBUG,
+ "Notifying DPP progress event %d", code);
+
+ HidlManager *hidl_manager = HidlManager::getInstance();
+ if (!hidl_manager)
+ return;
+
+ hidl_manager->notifyDppSuccess(wpa_s, code);
+}
+
+void wpas_hidl_notify_dpp_config_rejected(struct wpa_supplicant *wpa_s)
+{
+ wpas_hidl_notify_dpp_failure(wpa_s, DppFailureCode::CONFIGURATION_REJECTED);
+}
+
+static void wpas_hidl_notify_dpp_no_ap_failure(struct wpa_supplicant *wpa_s,
+ const char *ssid, const char *channel_list, unsigned short band_list[],
+ int size)
+{
+ if (!wpa_s)
+ return;
+
+ wpa_printf(MSG_DEBUG,
+ "Notifying DPP NO AP event for SSID %s\nTried channels: %s",
+ ssid ? ssid : "N/A", channel_list ? channel_list : "N/A");
+
+ HidlManager *hidl_manager = HidlManager::getInstance();
+ if (!hidl_manager)
+ return;
+
+ hidl_manager->notifyDppFailure(wpa_s, DppFailureCode::CANNOT_FIND_NETWORK,
+ ssid, channel_list, band_list, size);
+}
+
+void wpas_hidl_notify_dpp_enrollee_auth_failure(struct wpa_supplicant *wpa_s,
+ const char *ssid, unsigned short band_list[], int size)
+{
+ if (!wpa_s)
+ return;
+
+ wpa_printf(MSG_DEBUG,
+ "Notifying DPP Enrollee authentication failure, SSID %s",
+ ssid ? ssid : "N/A");
+
+ HidlManager *hidl_manager = HidlManager::getInstance();
+ if (!hidl_manager)
+ return;
+
+ hidl_manager->notifyDppFailure(wpa_s, DppFailureCode::ENROLLEE_AUTHENTICATION,
+ ssid, NULL, band_list, size);
+}
+
+
+void wpas_hidl_notify_dpp_conn_status(struct wpa_supplicant *wpa_s, enum dpp_status_error status,
+ const char *ssid, const char *channel_list, unsigned short band_list[], int size)
+{
+ switch (status)
+ {
+ case DPP_STATUS_OK:
+ wpas_hidl_notify_dpp_config_applied(wpa_s);
+ break;
+
+ case DPP_STATUS_NO_AP:
+ wpas_hidl_notify_dpp_no_ap_failure(wpa_s, ssid, channel_list, band_list, size);
+ break;
+
+ case DPP_STATUS_AUTH_FAILURE:
+ wpas_hidl_notify_dpp_enrollee_auth_failure(wpa_s, ssid, band_list, size);
+ break;
+
+ default:
+ break;
+ }
+}
+
void wpas_hidl_notify_pmk_cache_added(
struct wpa_supplicant *wpa_s,
struct rsn_pmksa_cache_entry *pmksa_entry)
diff --git a/wpa_supplicant/hidl/1.3/hidl.h b/wpa_supplicant/hidl/1.3/hidl.h
index ca9980b6..0db90a19 100644
--- a/wpa_supplicant/hidl/1.3/hidl.h
+++ b/wpa_supplicant/hidl/1.3/hidl.h
@@ -111,6 +111,12 @@ extern "C"
void wpas_hidl_notify_dpp_timeout(struct wpa_supplicant *wpa_s);
void wpas_hidl_notify_dpp_auth_failure(struct wpa_supplicant *wpa_s);
void wpas_hidl_notify_dpp_fail(struct wpa_supplicant *wpa_s);
+ void wpas_hidl_notify_dpp_config_sent_wait_response(struct wpa_supplicant *wpa_s);
+ void wpas_hidl_notify_dpp_config_accepted(struct wpa_supplicant *wpa_s);
+ void wpas_hidl_notify_dpp_config_rejected(struct wpa_supplicant *wpa_s);
+ void wpas_hidl_notify_dpp_conn_status(struct wpa_supplicant *wpa_s,
+ enum dpp_status_error status, const char *ssid,
+ const char *channel_list, unsigned short band_list[], int size);
void wpas_hidl_notify_pmk_cache_added(
struct wpa_supplicant *wpas, struct rsn_pmksa_cache_entry *pmksa_entry);
#else // CONFIG_CTRL_IFACE_HIDL
@@ -241,6 +247,14 @@ static void wpas_hidl_notify_dpp_timeout(struct wpa_supplicant *wpa_s)
{}
static void wpas_hidl_notify_dpp_failure(struct wpa_supplicant *wpa_s)
{}
+void wpas_hidl_notify_dpp_config_sent_wait_response(struct wpa_supplicant *wpa_s)
+{}
+void wpas_hidl_notify_dpp_config_accepted(struct wpa_supplicant *wpa_s)
+{}
+void wpas_hidl_notify_dpp_config_applied(struct wpa_supplicant *wpa_s)
+{}
+void wpas_hidl_notify_dpp_config_rejected(struct wpa_supplicant *wpa_s)
+{}
static void wpas_hidl_notify_pmk_cache_added(struct wpa_supplicant *wpas,
struct rsn_pmksa_cache_entry *pmksa_entry)
{}
diff --git a/wpa_supplicant/hidl/1.3/hidl_manager.cpp b/wpa_supplicant/hidl/1.3/hidl_manager.cpp
index 18c1c89f..8b2be11b 100644
--- a/wpa_supplicant/hidl/1.3/hidl_manager.cpp
+++ b/wpa_supplicant/hidl/1.3/hidl_manager.cpp
@@ -402,7 +402,6 @@ namespace wifi {
namespace supplicant {
namespace V1_3 {
namespace implementation {
-
using V1_0::ISupplicantStaIfaceCallback;
HidlManager *HidlManager::instance_ = NULL;
@@ -1477,7 +1476,9 @@ void HidlManager::notifyDppConfigReceived(struct wpa_supplicant *wpa_s,
/* Unsupported AKM */
wpa_printf(MSG_ERROR, "DPP: Error: Unsupported AKM 0x%X",
config->key_mgmt);
- notifyDppFailure(wpa_s, DppFailureCode::NOT_SUPPORTED);
+ notifyDppFailure(wpa_s,
+ android::hardware::wifi::supplicant::V1_3::DppFailureCode
+ ::NOT_SUPPORTED);
return;
}
@@ -1515,13 +1516,29 @@ void HidlManager::notifyDppConfigSent(struct wpa_supplicant *wpa_s)
* @param ifname Interface name
* @param code Status code
*/
-void HidlManager::notifyDppFailure(struct wpa_supplicant *wpa_s, DppFailureCode code)
-{
+void HidlManager::notifyDppFailure(struct wpa_supplicant *wpa_s,
+ android::hardware::wifi::supplicant::V1_3::DppFailureCode code) {
std::string hidl_ifname = wpa_s->ifname;
- callWithEachStaIfaceCallback_1_2(hidl_ifname,
- std::bind(&V1_2::ISupplicantStaIfaceCallback::onDppFailure,
- std::placeholders::_1, code));
+ notifyDppFailure(wpa_s, code, NULL, NULL, NULL, 0);
+}
+
+/**
+ * Notify listener about a DPP failure event
+ *
+ * @param ifname Interface name
+ * @param code Status code
+ */
+void HidlManager::notifyDppFailure(struct wpa_supplicant *wpa_s,
+ android::hardware::wifi::supplicant::V1_3::DppFailureCode code,
+ const char *ssid, const char *channel_list, unsigned short band_list[],
+ int size) {
+ std::string hidl_ifname = wpa_s->ifname;
+ std::vector<uint16_t> band_list_vec(band_list, band_list + size);
+
+ callWithEachStaIfaceCallback_1_3(hidl_ifname,
+ std::bind(&V1_3::ISupplicantStaIfaceCallback::onDppFailure_1_3,
+ std::placeholders::_1, code, ssid, channel_list, band_list_vec));
}
/**
@@ -1530,12 +1547,27 @@ void HidlManager::notifyDppFailure(struct wpa_supplicant *wpa_s, DppFailureCode
* @param ifname Interface name
* @param code Status code
*/
-void HidlManager::notifyDppProgress(struct wpa_supplicant *wpa_s, DppProgressCode code)
+void HidlManager::notifyDppProgress(struct wpa_supplicant *wpa_s,
+ android::hardware::wifi::supplicant::V1_3::DppProgressCode code) {
+ std::string hidl_ifname = wpa_s->ifname;
+
+ callWithEachStaIfaceCallback_1_3(hidl_ifname,
+ std::bind(&V1_3::ISupplicantStaIfaceCallback::onDppProgress_1_3,
+ std::placeholders::_1, code));
+}
+
+/**
+ * Notify listener about a DPP success event
+ *
+ * @param ifname Interface name
+ * @param code Status code
+ */
+void HidlManager::notifyDppSuccess(struct wpa_supplicant *wpa_s, DppSuccessCode code)
{
std::string hidl_ifname = wpa_s->ifname;
- callWithEachStaIfaceCallback_1_2(hidl_ifname,
- std::bind(&V1_2::ISupplicantStaIfaceCallback::onDppProgress,
+ callWithEachStaIfaceCallback_1_3(hidl_ifname,
+ std::bind(&V1_3::ISupplicantStaIfaceCallback::onDppSuccess,
std::placeholders::_1, code));
}
@@ -1929,6 +1961,23 @@ void HidlManager::callWithEachStaIfaceCallback_1_2(
/**
* Helper function to invoke the provided callback method on all the
+ * registered V1.3 interface callback hidl objects for the specified
+ * |ifname|.
+ *
+ * @param ifname Name of the corresponding interface.
+ * @param method Pointer to the required hidl method from
+ * |V1_3::ISupplicantIfaceCallback|.
+ */
+void HidlManager::callWithEachStaIfaceCallback_1_3(
+ const std::string &ifname,
+ const std::function<
+ Return<void>(android::sp<V1_3::ISupplicantStaIfaceCallback>)> &method)
+{
+ callWithEachIfaceCallbackDerived(ifname, method, sta_iface_callbacks_map_);
+}
+
+/**
+ * Helper function to invoke the provided callback method on all the
* registered derived interface callback hidl objects for the specified
* |ifname|.
*
diff --git a/wpa_supplicant/hidl/1.3/hidl_manager.h b/wpa_supplicant/hidl/1.3/hidl_manager.h
index 1040b0cf..3394e4b0 100644
--- a/wpa_supplicant/hidl/1.3/hidl_manager.h
+++ b/wpa_supplicant/hidl/1.3/hidl_manager.h
@@ -133,8 +133,15 @@ public:
void notifyDppConfigReceived(struct wpa_supplicant *wpa_s,
struct wpa_ssid *config);
void notifyDppConfigSent(struct wpa_supplicant *wpa_s);
- void notifyDppFailure(struct wpa_supplicant *wpa_s, DppFailureCode code);
- void notifyDppProgress(struct wpa_supplicant *wpa_s, DppProgressCode code);
+ void notifyDppSuccess(struct wpa_supplicant *wpa_s, DppSuccessCode code);
+ void notifyDppFailure(struct wpa_supplicant *wpa_s,
+ android::hardware::wifi::supplicant::V1_3::DppFailureCode code);
+ void notifyDppFailure(struct wpa_supplicant *wpa_s,
+ android::hardware::wifi::supplicant::V1_3::DppFailureCode code,
+ const char *ssid, const char *channel_list, unsigned short band_list[],
+ int size);
+ void notifyDppProgress(struct wpa_supplicant *wpa_s,
+ android::hardware::wifi::supplicant::V1_3::DppProgressCode code);
void notifyPmkCacheAdded(struct wpa_supplicant *wpa_s,
struct rsn_pmksa_cache_entry *pmksa_entry);
@@ -210,6 +217,10 @@ private:
const std::string &ifname,
const std::function<android::hardware::Return<void>(
android::sp<V1_2::ISupplicantStaIfaceCallback>)> &method);
+ void callWithEachStaIfaceCallback_1_3(
+ const std::string &ifname,
+ const std::function<android::hardware::Return<void>(
+ android::sp<V1_3::ISupplicantStaIfaceCallback>)> &method);
template <class CallbackTypeDerived>
void callWithEachStaIfaceCallbackDerived(
const std::string &ifname,
diff --git a/wpa_supplicant/hidl/1.3/sta_iface.cpp b/wpa_supplicant/hidl/1.3/sta_iface.cpp
index c9e53052..9bea68f1 100644
--- a/wpa_supplicant/hidl/1.3/sta_iface.cpp
+++ b/wpa_supplicant/hidl/1.3/sta_iface.cpp
@@ -1288,6 +1288,11 @@ SupplicantStatus StaIface::startDppConfiguratorInitiatorInternal(
cmd += " conf=";
cmd += role;
+ if (net_role == DppNetRole::STA) {
+ /* DPP R2 connection status request */
+ cmd += " conn_status=1";
+ }
+
wpa_printf(MSG_DEBUG,
"DPP initiator command: %s", cmd.c_str());
diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c
index 2ebe034c..206b4887 100644
--- a/wpa_supplicant/notify.c
+++ b/wpa_supplicant/notify.c
@@ -1165,6 +1165,36 @@ void wpas_notify_dpp_failure(struct wpa_supplicant *wpa_s)
#endif /* CONFIG_DPP */
}
+void wpas_notify_dpp_config_sent_wait_response(struct wpa_supplicant *wpa_s)
+{
+#ifdef CONFIG_DPP2
+ wpas_hidl_notify_dpp_config_sent_wait_response(wpa_s);
+#endif /* CONFIG_DPP2 */
+}
+
+void wpas_notify_dpp_config_accepted(struct wpa_supplicant *wpa_s)
+{
+#ifdef CONFIG_DPP2
+ wpas_hidl_notify_dpp_config_accepted(wpa_s);
+#endif /* CONFIG_DPP2 */
+}
+
+void wpas_notify_dpp_conn_status(struct wpa_supplicant *wpa_s,
+ enum dpp_status_error status, const char *ssid,
+ const char *channel_list, unsigned short band_list[], int size)
+{
+#ifdef CONFIG_DPP2
+ wpas_hidl_notify_dpp_conn_status(wpa_s, status, ssid, channel_list, band_list, size);
+#endif /* CONFIG_DPP2 */
+}
+
+void wpas_notify_dpp_config_rejected(struct wpa_supplicant *wpa_s)
+{
+#ifdef CONFIG_DPP2
+ wpas_hidl_notify_dpp_config_rejected(wpa_s);
+#endif /* CONFIG_DPP2 */
+}
+
void wpas_notify_pmk_cache_added(struct wpa_supplicant *wpa_s,
struct rsn_pmksa_cache_entry *entry)
{
diff --git a/wpa_supplicant/notify.h b/wpa_supplicant/notify.h
index c78ca680..e9e39eec 100644
--- a/wpa_supplicant/notify.h
+++ b/wpa_supplicant/notify.h
@@ -12,6 +12,7 @@
#include "p2p/p2p.h"
#include "bss.h"
#include "rsn_supp/pmksa_cache.h"
+#include "dpp.h"
struct wps_credential;
struct wps_event_m2d;
@@ -184,6 +185,12 @@ void wpas_notify_dpp_configuration_failure(struct wpa_supplicant *wpa_s);
void wpas_notify_dpp_timeout(struct wpa_supplicant *wpa_s);
void wpas_notify_dpp_auth_failure(struct wpa_supplicant *wpa_s);
void wpas_notify_dpp_failure(struct wpa_supplicant *wpa_s);
+void wpas_notify_dpp_config_sent_wait_response(struct wpa_supplicant *wpa_s);
+void wpas_notify_dpp_conn_status(struct wpa_supplicant *wpa_s,
+ enum dpp_status_error status, const char *ssid,
+ const char *channel_list, unsigned short band_list[], int size);
+void wpas_notify_dpp_config_accepted(struct wpa_supplicant *wpa_s);
+void wpas_notify_dpp_config_rejected(struct wpa_supplicant *wpa_s);
void wpas_notify_pmk_cache_added(struct wpa_supplicant *wpa_s,
struct rsn_pmksa_cache_entry *entry);