[PATCH v2 2/3] dbus: Enabled dpp functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Added dbus signals to report general dpp process.

Signed-off-by: Jeonghwan Yoon <jeonghwan.yoon@xxxxxxx>
---
 doc/dbus.doxygen                |  65 +++++++++++++++
 wpa_supplicant/dbus/dbus_new.c  | 139 ++++++++++++++++++++++++++++++++
 wpa_supplicant/dbus/dbus_new.h  |  33 +++++++-
 wpa_supplicant/dpp_supplicant.c |  18 +++++
 wpa_supplicant/notify.c         |  24 +++++-
 wpa_supplicant/notify.h         |  10 ++-
 6 files changed, 284 insertions(+), 5 deletions(-)

diff --git a/doc/dbus.doxygen b/doc/dbus.doxygen
index 1f754e3f2..610b44cda 100644
--- a/doc/dbus.doxygen
+++ b/doc/dbus.doxygen
@@ -1426,6 +1426,71 @@ Interface for performing DPP (Device Provisioning Protocol) Device operations.
   </li>
 
 </ul>
+
+\subsection dbus_dppdevice_signals Signals
+
+<ul>
+  <li>
+    <h3>DppTx ( s : dst mac, u : frequency, i : type )</h3>
+    <p> Transmission of the dpp action frame was successful.</p>
+    <h4>Arguments</h4>
+    <dl>
+      <dt>s : dst mac</dt>
+      <dd>destination mac address.</dd>
+    </dl>
+    <dl>
+      <dt>u : frequency</dt>
+      <dd>operating frequency.</dd>
+    </dl>
+    <dl>
+      <dt>i : type</dt>
+      <dd>type number of the transmitted public frame</dd>
+    </dl>
+  </li>
+  <li>
+    <h3>DppTxStatus ( s : dst mac, u : frequency, s : status )</h3>
+    <p> Transmission of the dpp action frame was successful.</p>
+    <h4>Arguments</h4>
+    <dl>
+      <dt>s : dst mac</dt>
+      <dd>destination mac address.</dd>
+    </dl>
+    <dl>
+      <dt>u : frequency</dt>
+      <dd>operating frequency.</dd>
+    </dl>
+    <dl>
+      <dt>s : result</dt>
+      <dd>transmission status : "SUCCESS", "no-ACK", "FAILED"</dd>
+    </dl>
+  </li>
+  <li>
+    <h3>DppRx ( s : src mac, u : frequency, i : type )</h3>
+    <p> Received the dpp action frame.</p>
+    <h4>Arguments</h4>
+    <dl>
+      <dt>s : src mac</dt>
+      <dd>source mac address.</dd>
+    </dl>
+    <dl>
+      <dt>u : frequency</dt>
+      <dd>operating frequency.</dd>
+    </dl>
+    <dl>
+      <dt>i : type</dt>
+      <dd>type number of the transmitted public frame</dd>
+    </dl>
+  </li>
+    <h3>DppFailed ( s : message )</h3>
+    <p> Failed in dpp process.</p>
+    <h4>Arguments</h4>
+    <dl>
+      <dt>s : message</dt>
+      <dd>reason of failed.</dd>
+    </dl>
+  </li>
+</ul>
+
 \section dbus_p2pdevice fi.w1.wpa_supplicant1.Interface.P2PDevice
 
 Interface for performing P2P (Wi-Fi Peer-to-Peer) P2P Device operations.
diff --git a/wpa_supplicant/dbus/dbus_new.c b/wpa_supplicant/dbus/dbus_new.c
index d9edf7379..361fba9de 100644
--- a/wpa_supplicant/dbus/dbus_new.c
+++ b/wpa_supplicant/dbus/dbus_new.c
@@ -2108,6 +2108,145 @@ void wpas_dbus_signal_p2p_invitation_received(struct wpa_supplicant *wpa_s,
 
 #endif /* CONFIG_P2P */
 
+#ifdef CONFIG_DPP
+void wpas_dbus_signal_dpp_tx(struct wpa_supplicant *wpa_s,
+						  const u8 *dst, unsigned int freq, int type)
+{
+	DBusMessage *msg;
+	DBusMessageIter iter;
+	struct wpas_dbus_priv *iface;
+	char mac_dst[WPAS_DBUS_OBJECT_PATH_MAX], *mac_dst_p;
+
+	iface = wpa_s->global->dbus;
+
+	/* Do nothing if the control interface is not turned on */
+	if (iface == NULL || !wpa_s->dbus_new_path)
+		return;
+
+	os_snprintf(mac_dst, WPAS_DBUS_OBJECT_PATH_MAX, MACSTR, MAC2STR(dst));
+	mac_dst_p = mac_dst;
+
+	msg = dbus_message_new_signal(wpa_s->dbus_new_path,
+			WPAS_DBUS_NEW_IFACE_DPPDEVICE,
+			"DppTx");
+
+	if (msg == NULL)
+		return;
+
+	dbus_message_iter_init_append(msg, &iter);
+	if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING,
+				&mac_dst_p) ||
+		!dbus_message_iter_append_basic(&iter, DBUS_TYPE_UINT32, &freq) ||
+		!dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &type))
+		wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
+	else
+		dbus_connection_send(iface->con, msg, NULL);
+
+	dbus_message_unref(msg);
+}
+
+void wpas_dbus_signal_dpp_tx_status(struct wpa_supplicant *wpa_s,
+						  const u8 *dst, unsigned int freq, const char *res)
+{
+	DBusMessage *msg;
+	DBusMessageIter iter;
+	struct wpas_dbus_priv *iface;
+	char mac_dst[WPAS_DBUS_OBJECT_PATH_MAX], *mac_dst_p;
+
+	iface = wpa_s->global->dbus;
+
+	/* Do nothing if the control interface is not turned on */
+	if (iface == NULL || !wpa_s->dbus_new_path)
+		return;
+
+	os_snprintf(mac_dst, WPAS_DBUS_OBJECT_PATH_MAX, MACSTR, MAC2STR(dst));
+	mac_dst_p = mac_dst;
+
+	msg = dbus_message_new_signal(wpa_s->dbus_new_path,
+								  WPAS_DBUS_NEW_IFACE_DPPDEVICE,
+								  "DppTxStatus");
+	if (msg == NULL)
+		return;
+
+	dbus_message_iter_init_append(msg, &iter);
+
+	if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING,
+				&mac_dst_p) ||
+		!dbus_message_iter_append_basic(&iter, DBUS_TYPE_UINT32,
+				&freq) ||
+		!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING,
+				&res))
+        wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
+	else
+		dbus_connection_send(iface->con, msg, NULL);
+
+	dbus_message_unref(msg);
+}
+
+void wpas_dbus_signal_dpp_rx(struct wpa_supplicant *wpa_s,
+						  const u8 *src, unsigned int freq, int type)
+{
+	DBusMessage *msg;
+	DBusMessageIter iter;
+	struct wpas_dbus_priv *iface;
+	char mac_src[WPAS_DBUS_OBJECT_PATH_MAX], *mac_src_p;
+
+	iface = wpa_s->global->dbus;
+
+	/* Do nothing if the control interface is not turned on */
+	if (iface == NULL || !wpa_s->dbus_new_path)
+		return;
+
+	os_snprintf(mac_src, WPAS_DBUS_OBJECT_PATH_MAX, MACSTR, MAC2STR(src));
+	mac_src_p = mac_src;
+
+	msg = dbus_message_new_signal(wpa_s->dbus_new_path,
+								  WPAS_DBUS_NEW_IFACE_DPPDEVICE,
+								  "DppRx");
+	if (msg == NULL)
+		return;
+
+	dbus_message_iter_init_append(msg, &iter);
+
+	if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING,
+				&mac_src_p) ||
+		!dbus_message_iter_append_basic(&iter, DBUS_TYPE_UINT32,
+				&freq) ||
+		!dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32,
+				&type))
+		wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
+	else
+		dbus_connection_send(iface->con, msg, NULL);
+
+	dbus_message_unref(msg);
+}
+
+void wpas_dbus_signal_dpp_failed(struct wpa_supplicant *wpa_s, const char *res)
+{
+	struct wpas_dbus_priv *iface;
+	DBusMessage *msg;
+
+	iface = wpa_s->global->dbus;
+
+	/* Do nothing if the control interface is not turned on */
+	if (iface == NULL || !wpa_s->dbus_new_path)
+		return;
+
+	msg = dbus_message_new_signal(wpa_s->dbus_new_path,
+				 WPAS_DBUS_NEW_IFACE_DPPDEVICE, "DppFailed");
+	if (msg == NULL)
+		return;
+
+	if (dbus_message_append_args(msg, DBUS_TYPE_STRING, &res,
+								 DBUS_TYPE_INVALID)){
+		dbus_connection_send(iface->con, msg, NULL);
+	}else{
+		wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
+	}
+
+	dbus_message_unref(msg);
+}
+#endif /* CONFIG_DPP */
 
 /**
  * wpas_dbus_signal_prop_changed - Signals change of property
diff --git a/wpa_supplicant/dbus/dbus_new.h b/wpa_supplicant/dbus/dbus_new.h
index 054afad85..e1962546e 100644
--- a/wpa_supplicant/dbus/dbus_new.h
+++ b/wpa_supplicant/dbus/dbus_new.h
@@ -253,7 +253,15 @@ void wpas_dbus_signal_mesh_peer_connected(struct wpa_supplicant *wpa_s,
 					  const u8 *peer_addr);
 void wpas_dbus_signal_mesh_peer_disconnected(struct wpa_supplicant *wpa_s,
 					     const u8 *peer_addr, int reason);
-
+#ifdef CONFIG_DPP
+void wpas_dbus_signal_dpp_tx(struct wpa_supplicant *wpa_s,
+		const u8 *dst, unsigned int freq, int type);
+void wpas_dbus_signal_dpp_tx_status(struct wpa_supplicant *wpa_s,
+		const u8 *dst, unsigned int freq, const char *res);
+void wpas_dbus_signal_dpp_rx(struct wpa_supplicant *wpa_s,
+		const u8 *src, unsigned int freq, int type);
+void wpas_dbus_signal_dpp_failed(struct wpa_supplicant *wpa_s, const char *res);
+#endif /* CONFIG_DPP */
 #else /* CONFIG_CTRL_IFACE_DBUS_NEW */
 
 static inline int wpas_dbus_register_interface(struct wpa_supplicant *wpa_s)
@@ -592,7 +600,26 @@ void wpas_dbus_signal_mesh_peer_disconnected(struct wpa_supplicant *wpa_s,
 					     const u8 *peer_addr, int reason)
 {
 }
-
+#ifdef CONFIG_DPP
+static inline
+void wpas_dbus_signal_dpp_tx(struct wpa_supplicant *wpa_s,
+		const u8 *dst, unsigned int freq, int type)
+{
+}
+static inline
+void wpas_dbus_signal_dpp_tx_status(struct wpa_supplicant *wpa_s,
+		const u8 *dst, unsigned int freq, const char *res)
+{
+}
+static inline
+void wpas_dbus_signal_dpp_rx(struct wpa_supplicant *wpa_s,
+		const u8 *src, unsigned int freq, int type)
+{
+}
+static inline
+void wpas_dbus_signal_dpp_failed(struct wpa_supplicant *wpa_s, const char *res)
+{
+}
+#endif /* CONFIG_DPP */
 #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
-
 #endif /* CTRL_IFACE_DBUS_H_NEW */
diff --git a/wpa_supplicant/dpp_supplicant.c b/wpa_supplicant/dpp_supplicant.c
index 7bc46610a..621ea3ef7 100644
--- a/wpa_supplicant/dpp_supplicant.c
+++ b/wpa_supplicant/dpp_supplicant.c
@@ -106,6 +106,7 @@ int wpas_dpp_qr_code(struct wpa_supplicant *wpa_s, const char *cmd)
 			" freq=%u type=%d",
 			MAC2STR(auth->peer_mac_addr), auth->curr_freq,
 			DPP_PA_AUTHENTICATION_RESP);
+		wpas_notify_dpp_tx(wpa_s, auth->peer_mac_addr, auth->curr_freq, DPP_PA_AUTHENTICATION_RESP);
 		offchannel_send_action(wpa_s, auth->curr_freq,
 				       auth->peer_mac_addr, wpa_s->own_addr,
 				       broadcast,
@@ -321,6 +322,7 @@ static void wpas_dpp_auth_resp_retry_timeout(void *eloop_ctx, void *timeout_ctx)
 		" freq=%u type=%d",
 		MAC2STR(auth->peer_mac_addr), auth->curr_freq,
 		DPP_PA_AUTHENTICATION_RESP);
+	wpas_notify_dpp_tx(wpa_s, auth->peer_mac_addr, auth->curr_freq, DPP_PA_AUTHENTICATION_RESP);
 	offchannel_send_action(wpa_s, auth->curr_freq, auth->peer_mac_addr,
 			       wpa_s->own_addr, broadcast,
 			       wpabuf_head(auth->resp_msg),
@@ -786,6 +788,7 @@ static int wpas_dpp_auth_init_next(struct wpa_supplicant *wpa_s)
 	}
 	wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d",
 		MAC2STR(dst), freq, DPP_PA_AUTHENTICATION_REQ);
+	wpas_notify_dpp_tx(wpa_s, dst, freq, DPP_PA_AUTHENTICATION_REQ);
 	auth->auth_req_ack = 0;
 	os_get_reltime(&wpa_s->dpp_last_init);
 	return offchannel_send_action(wpa_s, freq, dst,
@@ -1065,6 +1068,7 @@ static void wpas_dpp_rx_auth_req(struct wpa_supplicant *wpa_s, const u8 *src,
 	if (!r_bootstrap || r_bootstrap_len != SHA256_MAC_LEN) {
 		wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL
 			"Missing or invalid required Responder Bootstrapping Key Hash attribute");
+		wpas_notify_dpp_failed(wpa_s, "Missing or invalid required Responder Bootstrapping Key Hash attribute");
 		return;
 	}
 	wpa_hexdump(MSG_MSGDUMP, "DPP: Responder Bootstrapping Key Hash",
@@ -1075,6 +1079,7 @@ static void wpas_dpp_rx_auth_req(struct wpa_supplicant *wpa_s, const u8 *src,
 	if (!i_bootstrap || i_bootstrap_len != SHA256_MAC_LEN) {
 		wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL
 			"Missing or invalid required Initiator Bootstrapping Key Hash attribute");
+		wpas_notify_dpp_failed(wpa_s, "Missing or invalid required Responder Bootstrapping Key Hash attribute");
 		return;
 	}
 	wpa_hexdump(MSG_MSGDUMP, "DPP: Initiator Bootstrapping Key Hash",
@@ -1107,12 +1112,14 @@ static void wpas_dpp_rx_auth_req(struct wpa_supplicant *wpa_s, const u8 *src,
 	if (!own_bi) {
 		wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL
 			"No matching own bootstrapping key found - ignore message");
+		wpas_notify_dpp_failed(wpa_s, "No matching own bootstrapping key found - ignore message");
 		return;
 	}
 
 	if (wpa_s->dpp_auth) {
 		wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_FAIL
 			"Already in DPP authentication exchange - ignore new one");
+		wpas_notify_dpp_failed(wpa_s,"Already in DPP authentication exchange - ignore new one");
 		return;
 	}
 
@@ -1145,6 +1152,7 @@ static void wpas_dpp_rx_auth_req(struct wpa_supplicant *wpa_s, const u8 *src,
 	wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d",
 		MAC2STR(src), wpa_s->dpp_auth->curr_freq,
 		DPP_PA_AUTHENTICATION_RESP);
+	wpas_notify_dpp_tx(wpa_s, src, freq, DPP_PA_AUTHENTICATION_RESP);
 	offchannel_send_action(wpa_s, wpa_s->dpp_auth->curr_freq,
 			       src, wpa_s->own_addr, broadcast,
 			       wpabuf_head(wpa_s->dpp_auth->resp_msg),
@@ -1515,6 +1523,7 @@ static void wpas_dpp_rx_auth_resp(struct wpa_supplicant *wpa_s, const u8 *src,
 
 	wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d",
 		MAC2STR(src), auth->curr_freq, DPP_PA_AUTHENTICATION_CONF);
+	wpas_notify_dpp_tx(wpa_s, src, auth->curr_freq, DPP_PA_AUTHENTICATION_CONF);
 	offchannel_send_action(wpa_s, auth->curr_freq,
 			       src, wpa_s->own_addr, broadcast,
 			       wpabuf_head(msg), wpabuf_len(msg),
@@ -1546,6 +1555,7 @@ static void wpas_dpp_rx_auth_conf(struct wpa_supplicant *wpa_s, const u8 *src,
 
 	if (dpp_auth_conf_rx(auth, hdr, buf, len) < 0) {
 		wpa_printf(MSG_DEBUG, "DPP: Authentication failed");
+		wpas_notify_dpp_failed(wpa_s, "Authentication failed");
 		return;
 	}
 
@@ -1759,6 +1769,7 @@ static void wpas_dpp_pkex_retry_timeout(void *eloop_ctx, void *timeout_ctx)
 		   pkex->exch_req_tries);
 	wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d",
 		MAC2STR(broadcast), pkex->freq, DPP_PA_PKEX_EXCHANGE_REQ);
+	wpas_notify_dpp_tx(wpa_s, broadcast, pkex->freq, DPP_PA_PKEX_EXCHANGE_REQ);
 	offchannel_send_action(wpa_s, pkex->freq, broadcast,
 			       wpa_s->own_addr, broadcast,
 			       wpabuf_head(pkex->exchange_req),
@@ -1786,6 +1797,7 @@ wpas_dpp_tx_pkex_status(struct wpa_supplicant *wpa_s,
 		   freq, MAC2STR(dst), res_txt);
 	wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX_STATUS "dst=" MACSTR
 		" freq=%u result=%s", MAC2STR(dst), freq, res_txt);
+	wpas_notify_dpp_tx_status(wpa_s, dst, freq, res_txt);
 
 	if (!pkex) {
 		wpa_printf(MSG_DEBUG,
@@ -1858,6 +1870,7 @@ wpas_dpp_rx_pkex_exchange_req(struct wpa_supplicant *wpa_s, const u8 *src,
 		wait_time = 2000;
 	wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d",
 		MAC2STR(src), freq, DPP_PA_PKEX_EXCHANGE_RESP);
+	wpas_notify_dpp_tx(wpa_s, src, freq, DPP_PA_PKEX_EXCHANGE_RESP);
 	offchannel_send_action(wpa_s, freq, src, wpa_s->own_addr,
 			       broadcast,
 			       wpabuf_head(msg), wpabuf_len(msg),
@@ -1901,6 +1914,7 @@ wpas_dpp_rx_pkex_exchange_resp(struct wpa_supplicant *wpa_s, const u8 *src,
 		wait_time = 2000;
 	wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d",
 		MAC2STR(src), freq, DPP_PA_PKEX_COMMIT_REVEAL_REQ);
+	wpas_notify_dpp_tx(wpa_s, src, freq, DPP_PA_PKEX_COMMIT_REVEAL_REQ);
 	offchannel_send_action(wpa_s, freq, src, wpa_s->own_addr,
 			       broadcast,
 			       wpabuf_head(msg), wpabuf_len(msg),
@@ -1976,6 +1990,7 @@ wpas_dpp_rx_pkex_commit_reveal_req(struct wpa_supplicant *wpa_s, const u8 *src,
 		wait_time = 2000;
 	wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d",
 		MAC2STR(src), freq, DPP_PA_PKEX_COMMIT_REVEAL_RESP);
+	wpas_notify_dpp_tx(wpa_s, src, freq, DPP_PA_PKEX_COMMIT_REVEAL_RESP);
 	offchannel_send_action(wpa_s, freq, src, wpa_s->own_addr,
 			       broadcast,
 			       wpabuf_head(msg), wpabuf_len(msg),
@@ -2068,6 +2083,7 @@ void wpas_dpp_rx_action(struct wpa_supplicant *wpa_s, const u8 *src,
 	}
 	wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_RX "src=" MACSTR " freq=%u type=%d",
 		MAC2STR(src), freq, type);
+	wpas_notify_dpp_rx(wpa_s, src, freq, type);
 
 	switch (type) {
 	case DPP_PA_AUTHENTICATION_REQ:
@@ -2420,6 +2436,7 @@ skip_connector:
 		wait_time = 2000;
 	wpa_msg(wpa_s, MSG_INFO, DPP_EVENT_TX "dst=" MACSTR " freq=%u type=%d",
 		MAC2STR(bss->bssid), bss->freq, DPP_PA_PEER_DISCOVERY_REQ);
+	wpas_notify_dpp_tx(wpa_s, bss->bssid, bss->freq, DPP_PA_PEER_DISCOVERY_REQ);
 	offchannel_send_action(wpa_s, bss->freq, bss->bssid, wpa_s->own_addr,
 			       broadcast,
 			       wpabuf_head(msg), wpabuf_len(msg),
@@ -2503,6 +2520,7 @@ int wpas_dpp_pkex_add(struct wpa_supplicant *wpa_s, const char *cmd)
 			" freq=%u type=%d",
 			MAC2STR(broadcast), pkex->freq,
 			DPP_PA_PKEX_EXCHANGE_REQ);
+		wpas_notify_dpp_tx(wpa_s, broadcast, pkex->freq, DPP_PA_PKEX_EXCHANGE_REQ);
 		offchannel_send_action(wpa_s, pkex->freq, broadcast,
 				       wpa_s->own_addr, broadcast,
 				       wpabuf_head(msg), wpabuf_len(msg),
diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c
index 83df04f39..82d75baf2 100644
--- a/wpa_supplicant/notify.c
+++ b/wpa_supplicant/notify.c
@@ -900,5 +900,27 @@ void wpas_notify_mesh_peer_disconnected(struct wpa_supplicant *wpa_s,
 
 	wpas_dbus_signal_mesh_peer_disconnected(wpa_s, peer_addr, reason_code);
 }
-
 #endif /* CONFIG_MESH */
+#ifdef CONFIG_DPP
+void wpas_notify_dpp_tx(struct wpa_supplicant *wpa_s, const u8 *dst,
+		unsigned int freq, int type)
+{
+	wpas_dbus_signal_dpp_tx(wpa_s, dst, freq, type);
+}
+
+void wpas_notify_dpp_tx_status(struct wpa_supplicant *wpa_s, const u8 *dst,
+		unsigned int freq, const char *res)
+{
+	wpas_dbus_signal_dpp_tx_status(wpa_s, dst, freq, res);
+}
+
+void wpas_notify_dpp_rx(struct wpa_supplicant *wpa_s, const u8 *dst,
+		unsigned int freq, int type)
+{
+	wpas_dbus_signal_dpp_rx(wpa_s, dst, freq, type);
+}
+void wpas_notify_dpp_failed(struct wpa_supplicant *wpa_s, const char *res)
+{
+	wpas_dbus_signal_dpp_failed(wpa_s, res);
+}
+#endif /* CONFIG_DPP */
diff --git a/wpa_supplicant/notify.h b/wpa_supplicant/notify.h
index 3ca933c76..7f0dfb587 100644
--- a/wpa_supplicant/notify.h
+++ b/wpa_supplicant/notify.h
@@ -151,5 +151,13 @@ void wpas_notify_mesh_peer_connected(struct wpa_supplicant *wpa_s,
 				     const u8 *peer_addr);
 void wpas_notify_mesh_peer_disconnected(struct wpa_supplicant *wpa_s,
 					const u8 *peer_addr, int reason_code);
-
+#ifdef CONFIG_DPP
+void wpas_notify_dpp_tx(struct wpa_supplicant *wpa_s, const u8 *dst,
+		unsigned int freq, int type);
+void wpas_notify_dpp_tx_status(struct wpa_supplicant *wpa_s, const u8 *dst,
+		unsigned int freq, const char *res);
+void wpas_notify_dpp_rx(struct wpa_supplicant *wpa_s, const u8 *src,
+		unsigned int freq, int type);
+void wpas_notify_dpp_failed(struct wpa_supplicant *wpa_s, const char *res);
+#endif /* CONFIG_DPP */
 #endif /* NOTIFY_H */
-- 
2.17.1


_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux