#include "wifi-util.h"
int wifi_get_info(Link *link) {
+ _cleanup_free_ char *ssid = NULL;
+ enum nl80211_iftype iftype;
const char *type;
int r, s = 0;
if (!streq(type, "wlan"))
return 0;
- _cleanup_free_ char *ssid = NULL;
- r = wifi_get_interface(link->manager->genl, link->ifindex, &link->wlan_iftype, &ssid);
+ r = wifi_get_interface(link->manager->genl, link->ifindex, &iftype, &ssid);
if (r < 0)
return r;
- if (r > 0 && streq_ptr(link->ssid, ssid))
+ if (r > 0 && link->wlan_iftype == iftype && streq_ptr(link->ssid, ssid))
r = 0;
+
+ link->wlan_iftype = iftype;
free_and_replace(link->ssid, ssid);
if (link->wlan_iftype == NL80211_IFTYPE_STATION) {
struct ether_addr old_bssid = link->bssid;
+
s = wifi_get_station(link->manager->genl, link->ifindex, &link->bssid);
if (s < 0)
return s;
if (link->wlan_iftype == NL80211_IFTYPE_STATION && link->ssid)
log_link_info(link, "Connected WiFi access point: %s (%s)",
link->ssid, ether_addr_to_string(&link->bssid, buf));
- return 1;
+
+ return 1; /* Some information is updated. */
}
- return 0;
+
+ return 0; /* No new information. */
}