[PATCH 3/3] dbus-signal for EVENT_IBSS_PEER_LOST
Avichal Agarwal
avichal.a at samsung.com
Tue Jul 12 06:04:55 PDT 2016
From 911ac6e1a65532fd9bc52799c8e650db25597f1c Mon Sep 17 00:00:00 2001
From: Avichal Agarwal <avichal.a at samsung.com>
Date: Tue, 12 Jul 2016 18:23:27 +0530
Subject: [PATCH 3/3] dbus-signal for EVENT_IBSS_PEER_LOST
This patch will send a dbsud signal IbssPeerLost when the joined peer will be lost.
this signal will send the address of peer of type array of bytes
Signed-off-by: Avichal Agarwal <avichal.a at samsung.com>
---
wpa_supplicant/dbus/dbus_new.c | 36 +++++++++++++++++++++++++++++++++++-
wpa_supplicant/dbus/dbus_new.h | 2 ++
wpa_supplicant/events.c | 1 +
wpa_supplicant/notify.c | 5 +++++
wpa_supplicant/notify.h | 1 +
5 files changed, 44 insertions(+), 1 deletion(-)
diff --git a/wpa_supplicant/dbus/dbus_new.c b/wpa_supplicant/dbus/dbus_new.c
index 1300ad5..88be2ed 100644
--- a/wpa_supplicant/dbus/dbus_new.c
+++ b/wpa_supplicant/dbus/dbus_new.c
@@ -1954,6 +1954,34 @@ void wpas_dbus_signal_p2p_invitation_received(struct wpa_supplicant *wpa_s,
#endif /* CONFIG_P2P */
+void wpas_dbus_signal_ibss_peer_lost(struct wpa_supplicant *wpa_s,
+ const u8 *peer)
+{
+ struct wpas_dbus_priv *iface;
+ DBusMessage *msg;
+ DBusMessageIter iter,array_iter;
+ iface = wpa_s->global->dbus;
+ /* Do nothing if the control interface is not turned on */
+ if (iface == NULL)
+ return;
+ msg = dbus_message_new_signal(wpa_s->dbus_new_path,
+ WPAS_DBUS_NEW_IFACE_INTERFACE,
+ "IbssPeerLost");
+ if (msg == NULL)
+ return;
+ dbus_message_iter_init_append(msg, &iter);
+ if(!dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
+ DBUS_TYPE_BYTE_AS_STRING,
+ &array_iter) ||
+ !dbus_message_iter_append_fixed_array(&array_iter, DBUS_TYPE_BYTE,
+ &peer, 6) ||
+ !dbus_message_iter_close_container(&iter, &array_iter))
+ goto nomem;
+ dbus_connection_send(iface->con, msg, NULL);
+nomem:
+ dbus_message_unref(msg);
+}
+
#ifdef CONFIG_IBSS_RSN
void wpas_dbus_signal_ibss_rsn_connected(struct wpa_supplicant *wpa_s,
const u8 *peer)
@@ -1971,7 +1999,7 @@ void wpas_dbus_signal_ibss_rsn_connected(struct wpa_supplicant *wpa_s,
if (msg == NULL)
return;
dbus_message_iter_init_append(msg, &iter);
- if(!dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
+ if(!dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
DBUS_TYPE_BYTE_AS_STRING,
&array_iter) ||
!dbus_message_iter_append_fixed_array(&array_iter, DBUS_TYPE_BYTE,
@@ -3585,6 +3613,12 @@ static const struct wpa_dbus_signal_desc wpas_dbus_interface_signals[] = {
}
},
#endif
+ { "IbssPeerLost",WPAS_DBUS_NEW_IFACE_INTERFACE,
+ {
+ { "peer","ay",ARG_OUT },
+ END_ARGS
+ }
+ },
{ NULL, NULL, { END_ARGS } }
};
diff --git a/wpa_supplicant/dbus/dbus_new.h b/wpa_supplicant/dbus/dbus_new.h
index 38f521d..6a8747f 100644
--- a/wpa_supplicant/dbus/dbus_new.h
+++ b/wpa_supplicant/dbus/dbus_new.h
@@ -241,6 +241,8 @@ void wpas_dbus_signal_p2p_invitation_received(struct wpa_supplicant *wpa_s,
void wpas_dbus_signal_ibss_rsn_connected(struct wpa_supplicant *wpa_s,
const u8 *peer);
#endif /*CONFIG_IBSS_RSN*/
+void wpas_dbus_signal_ibss_peer_lost(struct wpa_supplicant *wpa_s,
+ const u8 *peer);
#else /* CONFIG_CTRL_IFACE_DBUS_NEW */
static inline int wpas_dbus_register_interface(struct wpa_supplicant *wpa_s)
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index dffba32..ef4f30b 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -3992,6 +3992,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
#ifdef CONFIG_IBSS_RSN
ibss_rsn_stop(wpa_s->ibss_rsn, data->ibss_peer_lost.peer);
#endif /* CONFIG_IBSS_RSN */
+ wpas_notify_ibss_peer_lost(wpa_s,data->ibss_peer_lost.peer);
break;
case EVENT_DRIVER_GTK_REKEY:
if (os_memcmp(data->driver_gtk_rekey.bssid,
diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c
index 5cce236..3a6f0a8 100644
--- a/wpa_supplicant/notify.c
+++ b/wpa_supplicant/notify.c
@@ -155,6 +155,11 @@ void wpas_notify_ibssrsn_connected(struct wpa_supplicant *wpa_s,const u8 *peer)
}
#endif /*CONFIG_IBSS_RSN*/
+void wpas_notify_ibss_peer_lost(struct wpa_supplicant *wpa_s,const u8 *peer)
+{
+ wpas_dbus_signal_ibss_peer_lost(wpa_s,peer);
+}
+
void wpas_notify_network_changed(struct wpa_supplicant *wpa_s)
{
if (wpa_s->p2p_mgmt)
diff --git a/wpa_supplicant/notify.h b/wpa_supplicant/notify.h
index d90c4f3..7bb8834 100644
--- a/wpa_supplicant/notify.h
+++ b/wpa_supplicant/notify.h
@@ -141,6 +141,7 @@ void wpas_notify_network_type_changed(struct wpa_supplicant *wpa_s,
void wpas_notify_p2p_invitation_received(struct wpa_supplicant *wpa_s,
const u8 *sa, const u8 *go_dev_addr,
const u8 *bssid, int id, int op_freq);
+void wpas_notify_ibss_peer_lost(struct wpa_supplicant *wpa_s,const u8 *peer);
#ifdef CONFIG_IBSS_RSN
void wpas_notify_ibssrsn_connected(struct wpa_supplicant *wpa_s, const u8 *peer);
#endif /*CONFIG_IBSS_RSN*/
--
1.7.9.5
More information about the Hostap
mailing list