]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
dbus: Add vendor specific information element in peer properties
authorNishant Chaprana <n.chaprana@samsung.com>
Fri, 16 Feb 2018 12:02:39 +0000 (17:32 +0530)
committerJouni Malinen <j@w1.fi>
Wed, 2 Jan 2019 11:00:57 +0000 (13:00 +0200)
Make vendor specific information elements (VSIE) available in peer
properties, so that VSIE of a specific peer can be retrieved using
peer's object path.

Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
wpa_supplicant/dbus/dbus_new.c
wpa_supplicant/dbus/dbus_new_handlers_p2p.c
wpa_supplicant/dbus/dbus_new_handlers_p2p.h

index 96ab444d3de771c6e3acced9312b047e30f51014..13b1de8a782fc709c36970ae49ec276fadb2e683 100644 (file)
@@ -4320,6 +4320,11 @@ static const struct wpa_dbus_property_desc wpas_dbus_p2p_peer_properties[] = {
          NULL,
          NULL
        },
+       { "VSIE", WPAS_DBUS_NEW_IFACE_P2P_PEER, "ay",
+         wpas_dbus_getter_p2p_peer_vsie,
+         NULL,
+         NULL
+       },
        { NULL, NULL, NULL, NULL, NULL, NULL }
 };
 
index 33f02a7982b5457714809db60f30c70cab8e944b..137321f6b747d616f77d6eab77590542f4d03d45 100644 (file)
@@ -1916,6 +1916,30 @@ out:
        return success;
 }
 
+dbus_bool_t wpas_dbus_getter_p2p_peer_vsie(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
+{
+       struct peer_handler_args *peer_args = user_data;
+       const struct p2p_peer_info *info;
+
+       info = p2p_get_peer_found(peer_args->wpa_s->global->p2p,
+                                 peer_args->p2p_device_addr, 0);
+       if (!info) {
+               dbus_set_error(error, DBUS_ERROR_FAILED, "failed to find peer");
+               return FALSE;
+       }
+
+       if (!info->vendor_elems)
+               return wpas_dbus_simple_array_property_getter(iter,
+                                                             DBUS_TYPE_BYTE,
+                                                             NULL, 0, error);
+
+       return wpas_dbus_simple_array_property_getter(
+               iter, DBUS_TYPE_BYTE, (char *) info->vendor_elems->buf,
+               info->vendor_elems->used, error);
+}
+
 
 /**
  * wpas_dbus_getter_persistent_groups - Get array of persistent group objects
index c4c02615dbc3d70a7cc71852d5ac23f788c50ba6..b3c45c11012c4d836ab3f31f1bc5b265d39aea18 100644 (file)
@@ -114,6 +114,7 @@ DECLARE_ACCESSOR(wpas_dbus_getter_p2p_peer_vendor_extension);
 DECLARE_ACCESSOR(wpas_dbus_getter_p2p_peer_ies);
 DECLARE_ACCESSOR(wpas_dbus_getter_p2p_peer_device_address);
 DECLARE_ACCESSOR(wpas_dbus_getter_p2p_peer_groups);
+DECLARE_ACCESSOR(wpas_dbus_getter_p2p_peer_vsie);
 
 /*
  * P2P Group properties