]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/network/networkd-wifi.c
1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 #include <net/ethernet.h>
4 #include <linux/nl80211.h>
9 #include "ether-addr-util.h"
10 #include "netlink-internal.h"
11 #include "netlink-util.h"
12 #include "networkd-link.h"
13 #include "networkd-manager.h"
14 #include "networkd-wifi.h"
15 #include "string-util.h"
16 #include "wifi-util.h"
18 int wifi_get_info(Link
*link
) {
27 r
= sd_device_get_devtype(link
->sd_device
, &type
);
33 if (!streq(type
, "wlan"))
36 _cleanup_free_
char *ssid
= NULL
;
37 r
= wifi_get_interface(link
->manager
->genl
, link
->ifindex
, &link
->wlan_iftype
, &ssid
);
40 if (r
> 0 && streq_ptr(link
->ssid
, ssid
))
42 free_and_replace(link
->ssid
, ssid
);
44 if (link
->wlan_iftype
== NL80211_IFTYPE_STATION
) {
45 struct ether_addr old_bssid
= link
->bssid
;
46 s
= wifi_get_station(link
->manager
->genl
, link
->ifindex
, &link
->bssid
);
49 if (s
> 0 && memcmp(&old_bssid
, &link
->bssid
, sizeof old_bssid
) == 0)
54 char buf
[ETHER_ADDR_TO_STRING_MAX
];
56 if (link
->wlan_iftype
== NL80211_IFTYPE_STATION
&& link
->ssid
)
57 log_link_info(link
, "Connected WiFi access point: %s (%s)",
58 link
->ssid
, ether_addr_to_string(&link
->bssid
, buf
));