Browse Source

P2P: Allow wildcard service discovery from DBus API

Using the socket command interface, it is possible to pass a NULL dst to
wpas_p2p_sd_request, however you could not do so using the D-Bus API,
since it required a valid Peer object path. This patch changes the
behavior, so that if the "peer_object" is missing from the parameters,
a NULL dst is passed to wpas_p2p_sd_request.

Signed-hostap: Adrien Bustany <adrien.bustany@nokia.com>
intended-for: hostap-1
Adrien Bustany 13 years ago
parent
commit
e56fc9e81b
1 changed files with 10 additions and 5 deletions
  1. 10 5
      wpa_supplicant/dbus/dbus_new_handlers_p2p.c

+ 10 - 5
wpa_supplicant/dbus/dbus_new_handlers_p2p.c

@@ -2265,7 +2265,7 @@ DBusMessage * wpas_dbus_handler_p2p_service_sd_req(
 	struct wpabuf *tlv = NULL;
 	struct wpabuf *tlv = NULL;
 	u8 version = 0;
 	u8 version = 0;
 	u64 ref = 0;
 	u64 ref = 0;
-	u8 addr[ETH_ALEN];
+	u8 addr_buf[ETH_ALEN], *addr;
 
 
 	dbus_message_iter_init(message, &iter);
 	dbus_message_iter_init(message, &iter);
 
 
@@ -2302,10 +2302,15 @@ DBusMessage * wpas_dbus_handler_p2p_service_sd_req(
 		wpa_dbus_dict_entry_clear(&entry);
 		wpa_dbus_dict_entry_clear(&entry);
 	}
 	}
 
 
-	if (!peer_object_path ||
+	if (!peer_object_path) {
-	    (parse_peer_object_path(peer_object_path, addr) < 0) ||
+		addr = NULL;
-	    !p2p_peer_known(wpa_s->global->p2p, addr))
+	} else {
-		goto error;
+		if (parse_peer_object_path(peer_object_path, addr_buf) < 0 ||
+		    !p2p_peer_known(wpa_s->global->p2p, addr_buf))
+			goto error;
+
+		addr = addr_buf;
+	}
 
 
 	if (upnp == 1) {
 	if (upnp == 1) {
 		if (version <= 0 || service == NULL)
 		if (version <= 0 || service == NULL)