[PATCH 2/3] Added notifications about chenges in BBSIDs list
Witold Sowa
witold.sowa
Wed Oct 21 14:51:19 PDT 2009
Dan Williams pisze:
> On Sun, 2009-10-18 at 03:56 +0200, Witold Sowa wrote:
>> If scan results introduces new BSSs or discards some previously known,
>> new wpas_notify_bss_added or wpas_notify_bss_removed notifications are
>> called
>
> I assume instead of "chenges" you mean "changes"? English sucks :(
>
>
Well, probably my English sucks even more ;) Of course, I meant "changes".
Does such a word like "chenges" exist at all? Jouni, could you correct it
before applying, please.
Witek.
>
>> ---
>> wpa_supplicant/notify.c | 12 ++++++++++++
>> wpa_supplicant/notify.h | 2 ++
>> wpa_supplicant/wpa_supplicant.c | 34 +++++++++++++++++++++++++++++++++-
>> 3 files changed, 47 insertions(+), 1 deletions(-)
>>
>> diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c
>> index 066f5a9..733d251 100644
>> --- a/wpa_supplicant/notify.c
>> +++ b/wpa_supplicant/notify.c
>> @@ -152,6 +152,18 @@ void wpas_notify_network_removed(struct wpa_supplicant *wpa_s,
>> }
>>
>>
>> +void wpas_notify_bss_added(struct wpa_supplicant *wpa_s,
>> + u8 bssid[])
>> +{
>> +}
>> +
>> +
>> +void wpas_notify_bss_removed(struct wpa_supplicant *wpa_s,
>> + u8 bssid[])
>> +{
>> +}
>> +
>> +
>> void wpas_notify_blob_added(struct wpa_supplicant *wpa_s, const char *name)
>> {
>> }
>> diff --git a/wpa_supplicant/notify.h b/wpa_supplicant/notify.h
>> index b8231aa..ca212b3 100644
>> --- a/wpa_supplicant/notify.h
>> +++ b/wpa_supplicant/notify.h
>> @@ -46,6 +46,8 @@ void wpas_notify_network_added(struct wpa_supplicant *wpa_s,
>> struct wpa_ssid *ssid);
>> void wpas_notify_network_removed(struct wpa_supplicant *wpa_s,
>> struct wpa_ssid *ssid);
>> +void wpas_notify_bss_added(struct wpa_supplicant *wpa_s, u8 bssid[]);
>> +void wpas_notify_bss_removed(struct wpa_supplicant *wpa_s, u8 bssid[]);
>> void wpas_notify_blob_added(struct wpa_supplicant *wpa_s, const char *name);
>> void wpas_notify_blob_removed(struct wpa_supplicant *wpa_s, const char *name);
>>
>> diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
>> index 681a9d9..0a2b131 100644
>> --- a/wpa_supplicant/wpa_supplicant.c
>> +++ b/wpa_supplicant/wpa_supplicant.c
>> @@ -1549,6 +1549,36 @@ int wpa_supplicant_set_debug_params(struct wpa_global *global, int debug_level,
>> }
>>
>>
>> +static void notify_about_bssid_chenges(struct wpa_supplicant *wpa_s,
>> + struct wpa_scan_results *prev,
>> + struct wpa_scan_results *new)
>> +{
>> + int prev_num, new_num, i, j;
>> +
>> + prev_num = (prev != NULL ? prev->num : 0);
>> + new_num = (new != NULL ? new->num : 0);
>> +
>> + for (i = 0; i < prev_num; i++) {
>> + for (j = 0; j < new_num; j++) {
>> + if (!os_memcmp(prev->res[i]->bssid, new->res[j]->bssid,
>> + ETH_ALEN))
>> + break;
>> + }
>> + if (j == new_num)
>> + wpas_notify_bss_removed(wpa_s, prev->res[i]->bssid);
>> + }
>> + for (i = 0; i < new_num; i++) {
>> + for (j = 0; j < prev_num; j++) {
>> + if (!os_memcmp(new->res[i]->bssid, prev->res[j]->bssid,
>> + ETH_ALEN))
>> + break;
>> + }
>> + if (j == prev_num)
>> + wpas_notify_bss_added(wpa_s, new->res[i]->bssid);
>> + }
>> +}
>> +
>> +
>> static struct wpa_scan_results * wpa_supplicant_get_scan_results_old(
>> struct wpa_supplicant *wpa_s)
>> {
>> @@ -1665,8 +1695,8 @@ static struct wpa_scan_results * wpa_supplicant_get_scan_results_old(
>> int wpa_supplicant_get_scan_results(struct wpa_supplicant *wpa_s)
>> {
>> int ret;
>> + struct wpa_scan_results *prev_scan_res = wpa_s->scan_res;
>>
>> - wpa_scan_results_free(wpa_s->scan_res);
>> if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_USER_SPACE_MLME)
>> wpa_s->scan_res = ieee80211_sta_get_scan_results(wpa_s);
>> else if (wpa_s->driver->get_scan_results2 == NULL)
>> @@ -1681,6 +1711,8 @@ int wpa_supplicant_get_scan_results(struct wpa_supplicant *wpa_s)
>> wpa_scan_sort_results(wpa_s->scan_res);
>> }
>>
>> + notify_about_bssid_chenges(wpa_s, prev_scan_res, wpa_s->scan_res);
>> + wpa_scan_results_free(prev_scan_res);
>> return ret;
>> }
>>
>
More information about the Hostap
mailing list