2010-08-19 20:25:00

by Christopher Piggott

[permalink] [raw]
Subject: scanning a specific ssid

Hi,

I wrote a small C++ program using libdbus-c++ to scan for access
points via wpa_supplicant's dbus interface. It works very well, and I
can retrieve the list just fine.

Now I want to cause it to scan for a specific SSID by issuing a probe,
but the dbus interface fi.epitest.hostap.WPASupplicant.Interface has
only one scan method, and it does not seem to take arguments.
(Looking at the source file ctrl_iface_dbus_handlers.c in function
wpas_dbus_iface_scan() you can see why - it doesn't handle or even
look at the arguments to the message).

Is there another way to accomplish this? I notice that a number of
dbus messages trigger a scan. I don't really want to try to associate
with it, but perhaps that's the only way.

(I guess I could try to trigger the scan via netlink and receive the
results via dbus..... messy).

--Chris


2010-08-20 07:45:41

by Johannes Berg

[permalink] [raw]
Subject: Re: scanning a specific ssid

On Thu, 2010-08-19 at 16:25 -0400, Christopher Piggott wrote:

> Now I want to cause it to scan for a specific SSID by issuing a probe,
> but the dbus interface fi.epitest.hostap.WPASupplicant.Interface has
> only one scan method, and it does not seem to take arguments.
> (Looking at the source file ctrl_iface_dbus_handlers.c in function
> wpas_dbus_iface_scan() you can see why - it doesn't handle or even
> look at the arguments to the message).
>
> Is there another way to accomplish this? I notice that a number of
> dbus messages trigger a scan. I don't really want to try to associate
> with it, but perhaps that's the only way.

You should probably just extend the dbus API to allow passing in the
information you want? But not all drivers can always support that,
afaik.

johannes


2010-08-20 11:31:07

by Johannes Berg

[permalink] [raw]
Subject: Re: scanning a specific ssid

On Fri, 2010-08-20 at 13:13 +0200, Witold Sowa wrote:

> The new DBus API is present only in development (0.7.x) branch of
> wpa_supplicant. 0.6.10 and earlier support only the old API which,
> indeed, has very limited scanning options capabilities.

0.8.x is the development branch now :)

johannes


2010-08-20 11:05:07

by Samuel Ortiz

[permalink] [raw]
Subject: Re: scanning a specific ssid

Hi Christopher,

On Thu, 2010-08-19 at 16:25 -0400, Christopher Piggott wrote:
> Hi,
>
> I wrote a small C++ program using libdbus-c++ to scan for access
> points via wpa_supplicant's dbus interface. It works very well, and I
> can retrieve the list just fine.
>
> Now I want to cause it to scan for a specific SSID by issuing a probe,
> but the dbus interface fi.epitest.hostap.WPASupplicant.Interface has
> only one scan method, and it does not seem to take arguments.
> (Looking at the source file ctrl_iface_dbus_handlers.c in function
> wpas_dbus_iface_scan() you can see why - it doesn't handle or even
> look at the arguments to the message).
>
> Is there another way to accomplish this?
I don't know which version of wpa_supplicant you're using, but the new
D-Bus API (fi.w1.wpa_supplicant1.*) has a much more extended scanning
API. You can pass SSIDs, channels, IEs and the scanning type to it.

Cheers,
Samuel.



2010-08-20 11:13:48

by Witold Sowa

[permalink] [raw]
Subject: Re: scanning a specific ssid

Samuel Ortiz pisze:
> Hi Christopher,
>
> On Thu, 2010-08-19 at 16:25 -0400, Christopher Piggott wrote:
>
>> Hi,
>>
>> I wrote a small C++ program using libdbus-c++ to scan for access
>> points via wpa_supplicant's dbus interface. It works very well, and I
>> can retrieve the list just fine.
>>
>> Now I want to cause it to scan for a specific SSID by issuing a probe,
>> but the dbus interface fi.epitest.hostap.WPASupplicant.Interface has
>> only one scan method, and it does not seem to take arguments.
>> (Looking at the source file ctrl_iface_dbus_handlers.c in function
>> wpas_dbus_iface_scan() you can see why - it doesn't handle or even
>> look at the arguments to the message).
>>
>> Is there another way to accomplish this?
>>
> I don't know which version of wpa_supplicant you're using, but the new
> D-Bus API (fi.w1.wpa_supplicant1.*) has a much more extended scanning
> API. You can pass SSIDs, channels, IEs and the scanning type to it.
>
The new DBus API is present only in development (0.7.x) branch of
wpa_supplicant. 0.6.10 and earlier support only the old API which,
indeed, has very limited scanning options capabilities.

Witek.