D-Bus: Send P2P IP address assignment info with GroupStarted event

This commit adds IP address information into GroupStarted event on the
P2P client side like it is sent over the control interface.

Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
This commit is contained in:
Nishant Chaprana 2016-11-02 15:50:28 +05:30 committed by Jouni Malinen
parent 046fa6fd11
commit 18f1611797
5 changed files with 22 additions and 9 deletions

View file

@ -1256,9 +1256,12 @@ static void peer_groups_changed(struct wpa_supplicant *wpa_s)
* @wpa_s: %wpa_supplicant network interface data * @wpa_s: %wpa_supplicant network interface data
* @client: this device is P2P client * @client: this device is P2P client
* @persistent: 0 - non persistent group, 1 - persistent group * @persistent: 0 - non persistent group, 1 - persistent group
* @ip: When group role is client, it contains local IP address, netmask, and
* GO's IP address, if assigned; otherwise, NULL
*/ */
void wpas_dbus_signal_p2p_group_started(struct wpa_supplicant *wpa_s, void wpas_dbus_signal_p2p_group_started(struct wpa_supplicant *wpa_s,
int client, int persistent) int client, int persistent,
const u8 *ip)
{ {
DBusMessage *msg; DBusMessage *msg;
DBusMessageIter iter, dict_iter; DBusMessageIter iter, dict_iter;
@ -1300,6 +1303,13 @@ void wpas_dbus_signal_p2p_group_started(struct wpa_supplicant *wpa_s,
!wpa_dbus_dict_append_bool(&dict_iter, "persistent", persistent) || !wpa_dbus_dict_append_bool(&dict_iter, "persistent", persistent) ||
!wpa_dbus_dict_append_object_path(&dict_iter, "group_object", !wpa_dbus_dict_append_object_path(&dict_iter, "group_object",
wpa_s->dbus_groupobj_path) || wpa_s->dbus_groupobj_path) ||
(ip &&
(!wpa_dbus_dict_append_byte_array(&dict_iter, "IpAddr",
(char *) ip, 4) ||
!wpa_dbus_dict_append_byte_array(&dict_iter, "IpAddrMask",
(char *) ip + 4, 4) ||
!wpa_dbus_dict_append_byte_array(&dict_iter, "IpAddrGo",
(char *) ip + 8, 4))) ||
!wpa_dbus_dict_close_write(&iter, &dict_iter)) { !wpa_dbus_dict_close_write(&iter, &dict_iter)) {
wpa_printf(MSG_ERROR, "dbus: Failed to construct signal"); wpa_printf(MSG_ERROR, "dbus: Failed to construct signal");
} else { } else {

View file

@ -190,7 +190,8 @@ void wpas_dbus_signal_p2p_go_neg_req(struct wpa_supplicant *wpa_s,
const u8 *src, u16 dev_passwd_id, const u8 *src, u16 dev_passwd_id,
u8 go_intent); u8 go_intent);
void wpas_dbus_signal_p2p_group_started(struct wpa_supplicant *wpa_s, void wpas_dbus_signal_p2p_group_started(struct wpa_supplicant *wpa_s,
int client, int persistent); int client, int persistent,
const u8 *ip);
void wpas_dbus_signal_p2p_group_formation_failure(struct wpa_supplicant *wpa_s, void wpas_dbus_signal_p2p_group_formation_failure(struct wpa_supplicant *wpa_s,
const char *reason); const char *reason);
void wpas_dbus_register_p2p_group(struct wpa_supplicant *wpa_s, void wpas_dbus_register_p2p_group(struct wpa_supplicant *wpa_s,
@ -400,7 +401,8 @@ static inline void wpas_dbus_signal_p2p_go_neg_req(struct wpa_supplicant *wpa_s,
static inline void static inline void
wpas_dbus_signal_p2p_group_started(struct wpa_supplicant *wpa_s, wpas_dbus_signal_p2p_group_started(struct wpa_supplicant *wpa_s,
int client, int persistent) int client, int persistent,
const u8 *ip)
{ {
} }

View file

@ -669,12 +669,12 @@ void wpas_notify_p2p_provision_discovery(struct wpa_supplicant *wpa_s,
void wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s, void wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s,
struct wpa_ssid *ssid, int persistent, struct wpa_ssid *ssid, int persistent,
int client) int client, const u8 *ip)
{ {
/* Notify a group has been started */ /* Notify a group has been started */
wpas_dbus_register_p2p_group(wpa_s, ssid); wpas_dbus_register_p2p_group(wpa_s, ssid);
wpas_dbus_signal_p2p_group_started(wpa_s, client, persistent); wpas_dbus_signal_p2p_group_started(wpa_s, client, persistent, ip);
} }

View file

@ -114,7 +114,7 @@ void wpas_notify_p2p_provision_discovery(struct wpa_supplicant *wpa_s,
unsigned int generated_pin); unsigned int generated_pin);
void wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s, void wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s,
struct wpa_ssid *ssid, int persistent, struct wpa_ssid *ssid, int persistent,
int client); int client, const u8 *ip);
void wpas_notify_p2p_group_formation_failure(struct wpa_supplicant *wpa_s, void wpas_notify_p2p_group_formation_failure(struct wpa_supplicant *wpa_s,
const char *reason); const char *reason);
void wpas_notify_persistent_group_added(struct wpa_supplicant *wpa_s, void wpas_notify_persistent_group_added(struct wpa_supplicant *wpa_s,

View file

@ -1383,7 +1383,7 @@ static void wpas_group_formation_completed(struct wpa_supplicant *wpa_s,
} }
if (!client) { if (!client) {
wpas_notify_p2p_group_started(wpa_s, ssid, persistent, 0); wpas_notify_p2p_group_started(wpa_s, ssid, persistent, 0, NULL);
os_get_reltime(&wpa_s->global->p2p_go_wait_client); os_get_reltime(&wpa_s->global->p2p_go_wait_client);
} }
} }
@ -1801,7 +1801,8 @@ static void p2p_go_configured(void *ctx, void *data)
} }
wpas_notify_p2p_group_started(wpa_s, ssid, wpas_notify_p2p_group_started(wpa_s, ssid,
params->persistent_group, 0); params->persistent_group, 0,
NULL);
wpas_p2p_cross_connect_setup(wpa_s); wpas_p2p_cross_connect_setup(wpa_s);
wpas_p2p_set_group_idle_timeout(wpa_s); wpas_p2p_set_group_idle_timeout(wpa_s);
@ -7007,7 +7008,7 @@ void wpas_p2p_completed(struct wpa_supplicant *wpa_s)
wpas_p2p_store_persistent_group(wpa_s->p2pdev, wpas_p2p_store_persistent_group(wpa_s->p2pdev,
ssid, go_dev_addr); ssid, go_dev_addr);
wpas_notify_p2p_group_started(wpa_s, ssid, persistent, 1); wpas_notify_p2p_group_started(wpa_s, ssid, persistent, 1, ip);
} }