Remove disconnected APs from BSS table if likely out-of-range
[mech_eap.git] / wpa_supplicant / dbus / dbus_new_handlers_p2p.c
index e3e2378..73b9e20 100644 (file)
@@ -364,13 +364,14 @@ DBusMessage * wpas_dbus_handler_p2p_group_add(DBusMessage *message,
                        goto inv_args;
 
                if (wpas_p2p_group_add_persistent(wpa_s, ssid, 0, freq, 0, 0, 0,
-                                                 NULL, 0)) {
+                                                 0, 0, NULL, 0, 0)) {
                        reply = wpas_dbus_error_unknown_error(
                                message,
                                "Failed to reinvoke a persistent group");
                        goto out;
                }
-       } else if (wpas_p2p_group_add(wpa_s, persistent_group, freq, 0, 0))
+       } else if (wpas_p2p_group_add(wpa_s, persistent_group, freq, 0, 0, 0,
+                                     0))
                goto inv_args;
 
 out:
@@ -416,6 +417,64 @@ static dbus_bool_t wpa_dbus_p2p_check_enabled(struct wpa_supplicant *wpa_s,
 }
 
 
+DBusMessage * wpas_dbus_handler_p2p_remove_client(DBusMessage *message,
+                                                 struct wpa_supplicant *wpa_s)
+{
+       DBusMessageIter iter_dict;
+       DBusMessage *reply = NULL;
+       DBusMessageIter iter;
+       struct wpa_dbus_dict_entry entry;
+       char *peer_object_path = NULL;
+       char *interface_addr = NULL;
+       u8 peer_addr[ETH_ALEN];
+
+       if (!wpa_dbus_p2p_check_enabled(wpa_s, message, &reply, NULL))
+               return reply;
+
+       dbus_message_iter_init(message, &iter);
+
+       if (!wpa_dbus_dict_open_read(&iter, &iter_dict, NULL))
+               goto err;
+
+       while (wpa_dbus_dict_has_dict_entry(&iter_dict)) {
+               if (!wpa_dbus_dict_get_entry(&iter_dict, &entry))
+                       goto err;
+
+               if (os_strcmp(entry.key, "peer") == 0 &&
+                   entry.type == DBUS_TYPE_OBJECT_PATH) {
+                       os_free(peer_object_path);
+                       peer_object_path = os_strdup(entry.str_value);
+                       wpa_dbus_dict_entry_clear(&entry);
+               } else if (os_strcmp(entry.key, "iface") == 0 &&
+                          entry.type == DBUS_TYPE_STRING) {
+                       os_free(interface_addr);
+                       interface_addr = os_strdup(entry.str_value);
+                       wpa_dbus_dict_entry_clear(&entry);
+               } else {
+                       wpa_dbus_dict_entry_clear(&entry);
+                       goto err;
+               }
+       }
+
+       if ((!peer_object_path && !interface_addr) ||
+           (peer_object_path &&
+            (parse_peer_object_path(peer_object_path, peer_addr) < 0 ||
+             !p2p_peer_known(wpa_s->global->p2p, peer_addr))) ||
+           (interface_addr && hwaddr_aton(interface_addr, peer_addr) < 0))
+               goto err;
+
+       wpas_p2p_remove_client(wpa_s, peer_addr, interface_addr != NULL);
+       reply = NULL;
+out:
+       os_free(peer_object_path);
+       os_free(interface_addr);
+       return reply;
+err:
+       reply = wpas_dbus_error_invalid_args(message, "Invalid address format");
+       goto out;
+}
+
+
 DBusMessage * wpas_dbus_handler_p2p_flush(DBusMessage *message,
                                          struct wpa_supplicant *wpa_s)
 {
@@ -524,7 +583,7 @@ DBusMessage * wpas_dbus_handler_p2p_connect(DBusMessage *message,
 
        new_pin = wpas_p2p_connect(wpa_s, addr, pin, wps_method,
                                   persistent_group, 0, join, authorize_only,
-                                  go_intent, freq, -1, 0, 0, 0);
+                                  go_intent, freq, 0, -1, 0, 0, 0, 0, NULL, 0);
 
        if (new_pin >= 0) {
                char npin[9];
@@ -675,8 +734,8 @@ DBusMessage * wpas_dbus_handler_p2p_invite(DBusMessage *message,
                if (ssid == NULL || ssid->disabled != 2)
                        goto err;
 
-               if (wpas_p2p_invite(wpa_s, peer_addr, ssid, NULL, 0, 0, 0, 0) <
-                   0) {
+               if (wpas_p2p_invite(wpa_s, peer_addr, ssid, NULL, 0, 0, 0, 0, 0,
+                                   0) < 0) {
                        reply = wpas_dbus_error_unknown_error(
                                message,
                                "Failed to reinvoke a persistent group");
@@ -749,9 +808,9 @@ DBusMessage * wpas_dbus_handler_p2p_prov_disc_req(DBusMessage *message,
  * P2P Device property accessor methods.
  */
 
-dbus_bool_t wpas_dbus_getter_p2p_device_config(DBusMessageIter *iter,
-                                              DBusError *error,
-                                              void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_device_config(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        DBusMessageIter variant_iter, dict_iter;
@@ -858,9 +917,9 @@ err_no_mem:
 }
 
 
-dbus_bool_t wpas_dbus_setter_p2p_device_config(DBusMessageIter *iter,
-                                              DBusError *error,
-                                              void *user_data)
+dbus_bool_t wpas_dbus_setter_p2p_device_config(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        DBusMessageIter variant_iter, iter_dict;
@@ -886,7 +945,8 @@ dbus_bool_t wpas_dbus_setter_p2p_device_config(DBusMessageIter *iter,
                if (os_strcmp(entry.key, "DeviceName") == 0) {
                        char *devname;
 
-                       if (entry.type != DBUS_TYPE_STRING)
+                       if (entry.type != DBUS_TYPE_STRING ||
+                           os_strlen(entry.str_value) > WPS_DEV_NAME_MAX_LEN)
                                goto error;
 
                        devname = os_strdup(entry.str_value);
@@ -1029,8 +1089,9 @@ dbus_bool_t wpas_dbus_setter_p2p_device_config(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_peers(DBusMessageIter *iter, DBusError *error,
-                                      void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_peers(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        struct p2p_data *p2p = wpa_s->global->p2p;
@@ -1143,8 +1204,9 @@ static enum wpas_p2p_role wpas_get_p2p_role(struct wpa_supplicant *wpa_s)
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_role(DBusMessageIter *iter, DBusError *error,
-                                     void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_role(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        char *str;
@@ -1166,8 +1228,9 @@ dbus_bool_t wpas_dbus_getter_p2p_role(DBusMessageIter *iter, DBusError *error,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_group(DBusMessageIter *iter, DBusError *error,
-                                      void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_group(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        char path_buf[WPAS_DBUS_OBJECT_PATH_MAX];
@@ -1185,8 +1248,9 @@ dbus_bool_t wpas_dbus_getter_p2p_group(DBusMessageIter *iter, DBusError *error,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_peergo(DBusMessageIter *iter,
-                                       DBusError *error, void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_peergo(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        char go_peer_obj_path[WPAS_DBUS_OBJECT_PATH_MAX], *path;
@@ -1213,9 +1277,9 @@ dbus_bool_t wpas_dbus_getter_p2p_peergo(DBusMessageIter *iter,
  * Peer object properties accessor methods
  */
 
-dbus_bool_t wpas_dbus_getter_p2p_peer_device_name(DBusMessageIter *iter,
-                                                 DBusError *error,
-                                                 void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_peer_device_name(
+       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;
@@ -1251,7 +1315,156 @@ dbus_bool_t wpas_dbus_getter_p2p_peer_device_name(DBusMessageIter *iter,
 }
 
 
+dbus_bool_t wpas_dbus_getter_p2p_peer_manufacturer(
+       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;
+       char *tmp;
+
+       if (!wpa_dbus_p2p_check_enabled(peer_args->wpa_s, NULL, NULL, error))
+               return FALSE;
+
+       /* get the peer info */
+       info = p2p_get_peer_found(peer_args->wpa_s->global->p2p,
+                                 peer_args->p2p_device_addr, 0);
+       if (info == NULL) {
+               dbus_set_error(error, DBUS_ERROR_FAILED, "failed to find peer");
+               return FALSE;
+       }
+
+       tmp = os_strdup(info->manufacturer);
+       if (!tmp) {
+               dbus_set_error_const(error, DBUS_ERROR_NO_MEMORY, "no memory");
+               return FALSE;
+       }
+
+       if (!wpas_dbus_simple_property_getter(iter, DBUS_TYPE_STRING, &tmp,
+                                             error)) {
+               dbus_set_error_const(error, DBUS_ERROR_NO_MEMORY, "no memory");
+               os_free(tmp);
+               return FALSE;
+       }
+
+       os_free(tmp);
+       return TRUE;
+}
+
+
+dbus_bool_t wpas_dbus_getter_p2p_peer_modelname(
+       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;
+       char *tmp;
+
+       if (!wpa_dbus_p2p_check_enabled(peer_args->wpa_s, NULL, NULL, error))
+               return FALSE;
+
+       /* get the peer info */
+       info = p2p_get_peer_found(peer_args->wpa_s->global->p2p,
+                                 peer_args->p2p_device_addr, 0);
+       if (info == NULL) {
+               dbus_set_error(error, DBUS_ERROR_FAILED, "failed to find peer");
+               return FALSE;
+       }
+
+       tmp = os_strdup(info->model_name);
+       if (!tmp) {
+               dbus_set_error_const(error, DBUS_ERROR_NO_MEMORY, "no memory");
+               return FALSE;
+       }
+
+       if (!wpas_dbus_simple_property_getter(iter, DBUS_TYPE_STRING, &tmp,
+                                             error)) {
+               dbus_set_error_const(error, DBUS_ERROR_NO_MEMORY, "no memory");
+               os_free(tmp);
+               return FALSE;
+       }
+
+       os_free(tmp);
+       return TRUE;
+}
+
+
+dbus_bool_t wpas_dbus_getter_p2p_peer_modelnumber(
+       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;
+       char *tmp;
+
+       if (!wpa_dbus_p2p_check_enabled(peer_args->wpa_s, NULL, NULL, error))
+               return FALSE;
+
+       /* get the peer info */
+       info = p2p_get_peer_found(peer_args->wpa_s->global->p2p,
+                                 peer_args->p2p_device_addr, 0);
+       if (info == NULL) {
+               dbus_set_error(error, DBUS_ERROR_FAILED, "failed to find peer");
+               return FALSE;
+       }
+
+       tmp = os_strdup(info->model_number);
+       if (!tmp) {
+               dbus_set_error_const(error, DBUS_ERROR_NO_MEMORY, "no memory");
+               return FALSE;
+       }
+
+       if (!wpas_dbus_simple_property_getter(iter, DBUS_TYPE_STRING, &tmp,
+                                             error)) {
+               dbus_set_error_const(error, DBUS_ERROR_NO_MEMORY, "no memory");
+               os_free(tmp);
+               return FALSE;
+       }
+
+       os_free(tmp);
+       return TRUE;
+}
+
+
+dbus_bool_t wpas_dbus_getter_p2p_peer_serialnumber(
+       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;
+       char *tmp;
+
+       if (!wpa_dbus_p2p_check_enabled(peer_args->wpa_s, NULL, NULL, error))
+               return FALSE;
+
+       /* get the peer info */
+       info = p2p_get_peer_found(peer_args->wpa_s->global->p2p,
+                                 peer_args->p2p_device_addr, 0);
+       if (info == NULL) {
+               dbus_set_error(error, DBUS_ERROR_FAILED, "failed to find peer");
+               return FALSE;
+       }
+
+       tmp = os_strdup(info->serial_number);
+       if (!tmp) {
+               dbus_set_error_const(error, DBUS_ERROR_NO_MEMORY, "no memory");
+               return FALSE;
+       }
+
+       if (!wpas_dbus_simple_property_getter(iter, DBUS_TYPE_STRING, &tmp,
+                                             error)) {
+               dbus_set_error_const(error, DBUS_ERROR_NO_MEMORY, "no memory");
+               os_free(tmp);
+               return FALSE;
+       }
+
+       os_free(tmp);
+       return TRUE;
+}
+
+
 dbus_bool_t wpas_dbus_getter_p2p_peer_primary_device_type(
+       const struct wpa_dbus_property_desc *property_desc,
        DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct peer_handler_args *peer_args = user_data;
@@ -1277,9 +1490,9 @@ dbus_bool_t wpas_dbus_getter_p2p_peer_primary_device_type(
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_peer_config_method(DBusMessageIter *iter,
-                                                   DBusError *error,
-                                                   void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_peer_config_method(
+       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;
@@ -1302,9 +1515,9 @@ dbus_bool_t wpas_dbus_getter_p2p_peer_config_method(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_peer_level(DBusMessageIter *iter,
-                                           DBusError *error,
-                                           void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_peer_level(
+       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;
@@ -1327,9 +1540,9 @@ dbus_bool_t wpas_dbus_getter_p2p_peer_level(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_peer_device_capability(DBusMessageIter *iter,
-                                                       DBusError *error,
-                                                       void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_peer_device_capability(
+       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;
@@ -1352,9 +1565,9 @@ dbus_bool_t wpas_dbus_getter_p2p_peer_device_capability(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_peer_group_capability(DBusMessageIter *iter,
-                                                      DBusError *error,
-                                                      void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_peer_group_capability(
+       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;
@@ -1378,6 +1591,7 @@ dbus_bool_t wpas_dbus_getter_p2p_peer_group_capability(DBusMessageIter *iter,
 
 
 dbus_bool_t wpas_dbus_getter_p2p_peer_secondary_device_types(
+       const struct wpa_dbus_property_desc *property_desc,
        DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct peer_handler_args *peer_args = user_data;
@@ -1443,9 +1657,9 @@ dbus_bool_t wpas_dbus_getter_p2p_peer_secondary_device_types(
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_peer_vendor_extension(DBusMessageIter *iter,
-                                                      DBusError *error,
-                                                      void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_peer_vendor_extension(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpabuf *vendor_extension[P2P_MAX_WPS_VENDOR_EXT];
        unsigned int i, num = 0;
@@ -1478,8 +1692,9 @@ dbus_bool_t wpas_dbus_getter_p2p_peer_vendor_extension(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_peer_ies(DBusMessageIter *iter,
-                                         DBusError *error, void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_peer_ies(
+       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;
@@ -1503,9 +1718,9 @@ dbus_bool_t wpas_dbus_getter_p2p_peer_ies(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_peer_device_address(DBusMessageIter *iter,
-                                                    DBusError *error,
-                                                    void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_peer_device_address(
+       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;
@@ -1568,9 +1783,9 @@ out_of_memory:
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_peer_groups(DBusMessageIter *iter,
-                                            DBusError *error,
-                                            void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_peer_groups(
+       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;
@@ -1636,9 +1851,9 @@ out:
  *
  * Getter for "PersistentGroups" property.
  */
-dbus_bool_t wpas_dbus_getter_persistent_groups(DBusMessageIter *iter,
-                                              DBusError *error,
-                                              void *user_data)
+dbus_bool_t wpas_dbus_getter_persistent_groups(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        struct wpa_ssid *ssid;
@@ -1698,21 +1913,21 @@ out:
  *
  * Getter for "Properties" property of a persistent group.
  */
-dbus_bool_t wpas_dbus_getter_persistent_group_properties(DBusMessageIter *iter,
-                                                        DBusError *error,
-                                                        void *user_data)
+dbus_bool_t wpas_dbus_getter_persistent_group_properties(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct network_handler_args *net = user_data;
 
        /* Leveraging the fact that persistent group object is still
         * represented in same manner as network within.
         */
-       return wpas_dbus_getter_network_properties(iter, error, net);
+       return wpas_dbus_getter_network_properties(property_desc, iter, error, net);
 }
 
 
 /**
- * wpas_dbus_setter_persistent_group_properties - Get options for a persistent
+ * wpas_dbus_setter_persistent_group_properties - Set options for a persistent
  *     group
  * @iter: Pointer to incoming dbus message iter
  * @error: Location to store error on failure
@@ -1721,9 +1936,9 @@ dbus_bool_t wpas_dbus_getter_persistent_group_properties(DBusMessageIter *iter,
  *
  * Setter for "Properties" property of a persistent group.
  */
-dbus_bool_t wpas_dbus_setter_persistent_group_properties(DBusMessageIter *iter,
-                                                        DBusError *error,
-                                                        void *user_data)
+dbus_bool_t wpas_dbus_setter_persistent_group_properties(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct network_handler_args *net = user_data;
        struct wpa_ssid *ssid = net->ssid;
@@ -1936,9 +2151,9 @@ DBusMessage * wpas_dbus_handler_remove_all_persistent_groups(
  * Group object properties accessor methods
  */
 
-dbus_bool_t wpas_dbus_getter_p2p_group_members(DBusMessageIter *iter,
-                                              DBusError *error,
-                                              void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_group_members(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        struct wpa_ssid *ssid;
@@ -2005,8 +2220,9 @@ out_of_memory:
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_group_ssid(DBusMessageIter *iter,
-                                           DBusError *error, void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_group_ssid(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
 
@@ -2018,9 +2234,9 @@ dbus_bool_t wpas_dbus_getter_p2p_group_ssid(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_group_bssid(DBusMessageIter *iter,
-                                            DBusError *error,
-                                            void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_group_bssid(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        u8 role = wpas_get_p2p_role(wpa_s);
@@ -2042,9 +2258,9 @@ dbus_bool_t wpas_dbus_getter_p2p_group_bssid(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_group_frequency(DBusMessageIter *iter,
-                                                DBusError *error,
-                                                void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_group_frequency(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        u16 op_freq;
@@ -2065,9 +2281,9 @@ dbus_bool_t wpas_dbus_getter_p2p_group_frequency(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_group_passphrase(DBusMessageIter *iter,
-                                                 DBusError *error,
-                                                 void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_group_passphrase(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        char *p_pass;
@@ -2086,8 +2302,9 @@ dbus_bool_t wpas_dbus_getter_p2p_group_passphrase(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_group_psk(DBusMessageIter *iter,
-                                          DBusError *error, void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_group_psk(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        u8 *p_psk = NULL;
@@ -2107,9 +2324,9 @@ dbus_bool_t wpas_dbus_getter_p2p_group_psk(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_getter_p2p_group_vendor_ext(DBusMessageIter *iter,
-                                                 DBusError *error,
-                                                 void *user_data)
+dbus_bool_t wpas_dbus_getter_p2p_group_vendor_ext(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        struct hostapd_data *hapd;
@@ -2142,9 +2359,9 @@ dbus_bool_t wpas_dbus_getter_p2p_group_vendor_ext(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_setter_p2p_group_vendor_ext(DBusMessageIter *iter,
-                                                 DBusError *error,
-                                                 void *user_data)
+dbus_bool_t wpas_dbus_setter_p2p_group_vendor_ext(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_supplicant *wpa_s = user_data;
        DBusMessageIter variant_iter, iter_dict, array_iter, sub;
@@ -2670,8 +2887,9 @@ DBusMessage * wpas_dbus_handler_p2p_serv_disc_external(
 
 #ifdef CONFIG_WIFI_DISPLAY
 
-dbus_bool_t wpas_dbus_getter_global_wfd_ies(DBusMessageIter *iter,
-                                           DBusError *error, void *user_data)
+dbus_bool_t wpas_dbus_getter_global_wfd_ies(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_global *global = user_data;
        struct wpabuf *ie;
@@ -2692,8 +2910,9 @@ dbus_bool_t wpas_dbus_getter_global_wfd_ies(DBusMessageIter *iter,
 }
 
 
-dbus_bool_t wpas_dbus_setter_global_wfd_ies(DBusMessageIter *iter,
-                                           DBusError *error, void *user_data)
+dbus_bool_t wpas_dbus_setter_global_wfd_ies(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
 {
        struct wpa_global *global = user_data;
        DBusMessageIter variant, array;