This is similar to the control interface event MESH-GROUP-STARTED Signed-off-by: Saurav Babu <saurav.babu@xxxxxxxxxxx> --- doc/dbus.doxygen | 18 ++++++++++++++++++ wpa_supplicant/dbus/dbus_new.c | 41 +++++++++++++++++++++++++++++++++++++++++ wpa_supplicant/dbus/dbus_new.h | 8 ++++++++ wpa_supplicant/notify.c | 11 +++++++++++ wpa_supplicant/notify.h | 2 ++ wpa_supplicant/wpa_supplicant.c | 1 + 6 files changed, 81 insertions(+) diff --git a/doc/dbus.doxygen b/doc/dbus.doxygen index a0e8fe4..42260f9 100644 --- a/doc/dbus.doxygen +++ b/doc/dbus.doxygen @@ -2253,4 +2253,22 @@ Interface implemented by objects representing persistent P2P groups. </li> </ul> +\section dbus_wps fi.w1.wpa_supplicant1.Interface.Mesh + +Interface for performing Mesh operations. + +\subsection dbus_mesh_signals Signals + +<ul> + <li> + <h3>MeshGroupStarted ( a{sv} : args )</h3> + <p></p> + <h4>Arguments</h4> + <dl> + <dt>a{sv} : args</dt> + <dd>A dictionary containing information of started Mesh Group.</dd> + </dl> + </li> +</ul> + */ diff --git a/wpa_supplicant/dbus/dbus_new.c b/wpa_supplicant/dbus/dbus_new.c index 393cdd4..3c30cbc 100644 --- a/wpa_supplicant/dbus/dbus_new.c +++ b/wpa_supplicant/dbus/dbus_new.c @@ -793,6 +793,39 @@ nomem: #endif /* CONFIG_WPS */ +#ifdef CONFIG_MESH +void wpas_dbus_signal_mesh_group_started(struct wpa_supplicant *wpa_s, + struct wpa_ssid *ssid) +{ + struct wpas_dbus_priv *iface; + DBusMessage *msg; + DBusMessageIter iter, dict_iter; + + 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_MESH, + "MeshGroupStarted"); + if (msg == NULL) + return; + + dbus_message_iter_init_append(msg, &iter); + if (!wpa_dbus_dict_open_write(&iter, &dict_iter) || + !wpa_dbus_dict_append_byte_array(&dict_iter, "SSID", + (const char *) ssid->ssid, + ssid->ssid_len) || + !wpa_dbus_dict_close_write(&iter, &dict_iter)) + wpa_printf(MSG_ERROR, "dbus: Failed to construct signal"); + else + dbus_connection_send(iface->con, msg, NULL); + dbus_message_unref(msg); +} +#endif /* CONFIG_MESH */ + void wpas_dbus_signal_certification(struct wpa_supplicant *wpa_s, int depth, const char *subject, const char *altsubject[], @@ -3622,6 +3655,14 @@ static const struct wpa_dbus_signal_desc wpas_dbus_interface_signals[] = { END_ARGS } }, +#ifdef CONFIG_MESH + { "MeshGroupStarted", WPAS_DBUS_NEW_IFACE_MESH, + { + { "args", "a{sv}", ARG_OUT }, + END_ARGS + } + }, +#endif /* CONFIG_MESH */ { NULL, NULL, { END_ARGS } } }; diff --git a/wpa_supplicant/dbus/dbus_new.h b/wpa_supplicant/dbus/dbus_new.h index 86f19be..4c33ac8 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, const u8 *sa, const u8 *dev_addr, const u8 *bssid, int id, int op_freq); +void wpas_dbus_signal_mesh_group_started(struct wpa_supplicant *wpa_s, + struct wpa_ssid *ssid); #else /* CONFIG_CTRL_IFACE_DBUS_NEW */ @@ -556,6 +558,12 @@ void wpas_dbus_signal_p2p_invitation_received(struct wpa_supplicant *wpa_s, { } +static inline +void wpas_dbus_signal_mesh_group_started(struct wpa_supplicant *wpa_s, + struct wpa_ssid *ssid) +{ +} + #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */ #endif /* CTRL_IFACE_DBUS_H_NEW */ diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c index f9c119a..3be1242 100644 --- a/wpa_supplicant/notify.c +++ b/wpa_supplicant/notify.c @@ -850,3 +850,14 @@ void wpas_notify_network_type_changed(struct wpa_supplicant *wpa_s, } #endif /* CONFIG_P2P */ } + +void wpas_notify_mesh_group_started(struct wpa_supplicant *wpa_s, + struct wpa_ssid *ssid) +{ + if (wpa_s->p2p_mgmt) + return; + +#ifdef CONFIG_MESH + wpas_dbus_signal_mesh_group_started(wpa_s, ssid); +#endif /* CONFIG_MESH */ +} diff --git a/wpa_supplicant/notify.h b/wpa_supplicant/notify.h index e4d7fbf..e620dd2 100644 --- a/wpa_supplicant/notify.h +++ b/wpa_supplicant/notify.h @@ -141,5 +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_mesh_group_started(struct wpa_supplicant *wpa_s, + struct wpa_ssid *ssid); #endif /* NOTIFY_H */ diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c index be44787..c41093a 100644 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c @@ -1845,6 +1845,7 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s, wpa_msg(wpa_s, MSG_INFO, MESH_GROUP_STARTED "ssid=\"%s\" id=%d", wpa_ssid_txt(ssid->ssid, ssid->ssid_len), ssid->id); + wpas_notify_mesh_group_started(wpa_s, ssid); #else /* CONFIG_MESH */ wpa_msg(wpa_s, MSG_ERROR, "mesh mode support not included in the build"); -- 1.9.1 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap