]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
D-Bus: Send P2P IP address assignment info with GroupStarted event
authorNishant Chaprana <n.chaprana@samsung.com>
Wed, 2 Nov 2016 10:20:28 +0000 (15:50 +0530)
committerJouni Malinen <j@w1.fi>
Mon, 21 Nov 2016 12:45:13 +0000 (14:45 +0200)
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>
wpa_supplicant/dbus/dbus_new.c
wpa_supplicant/dbus/dbus_new.h
wpa_supplicant/notify.c
wpa_supplicant/notify.h
wpa_supplicant/p2p_supplicant.c

index 27b3012aede8e5073e84f3779d7886afdef7651d..69fb8f48c43207a82fd230e5a578c5396c32242d 100644 (file)
@@ -1256,9 +1256,12 @@ static void peer_groups_changed(struct wpa_supplicant *wpa_s)
  * @wpa_s: %wpa_supplicant network interface data
  * @client: this device is P2P client
  * @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,
-                                       int client, int persistent)
+                                       int client, int persistent,
+                                       const u8 *ip)
 {
        DBusMessage *msg;
        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_object_path(&dict_iter, "group_object",
                                              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_printf(MSG_ERROR, "dbus: Failed to construct signal");
        } else {
index d64fceef718c96918d48f7aa9a8db74e89b3ac8b..2b0b775d33d5a77f672d494fddf2ae65cf4cbdd2 100644 (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,
                                     u8 go_intent);
 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,
                                                  const char *reason);
 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
 wpas_dbus_signal_p2p_group_started(struct wpa_supplicant *wpa_s,
-                                  int client, int persistent)
+                                  int client, int persistent,
+                                  const u8 *ip)
 {
 }
 
index 67e36ae34cb879c7251ff6191a189f53ed92b635..f9c119aa0c71f8ff4863e9abe8fd7825476c7b0d 100644 (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,
                                   struct wpa_ssid *ssid, int persistent,
-                                  int client)
+                                  int client, const u8 *ip)
 {
        /* Notify a group has been started */
        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);
 }
 
 
index 8cce0f30c2a963f1ea087d57829bda4f11358ea5..e4d7fbf254b7ed49c8e5a529f734724c457f2e1b 100644 (file)
@@ -114,7 +114,7 @@ void wpas_notify_p2p_provision_discovery(struct wpa_supplicant *wpa_s,
                                         unsigned int generated_pin);
 void wpas_notify_p2p_group_started(struct wpa_supplicant *wpa_s,
                                   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,
                                             const char *reason);
 void wpas_notify_persistent_group_added(struct wpa_supplicant *wpa_s,
index 6465e2f727e93b5470d1b94b2b80951ba6979745..25e7419b1593783c498242bc429ba2a46dcc8712 100644 (file)
@@ -1383,7 +1383,7 @@ static void wpas_group_formation_completed(struct wpa_supplicant *wpa_s,
        }
 
        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);
        }
 }
@@ -1801,7 +1801,8 @@ static void p2p_go_configured(void *ctx, void *data)
                }
 
                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_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,
                                                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);
 }