diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-02-15 02:06:29 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-02-15 16:06:43 +0900 |
commit | edb69db2b026678394f47267e87eb5fb163373c5 (patch) | |
tree | 2a85d0d0e1b38dba5aa7ee009ebbdd0a0dc8e418 /src/network/networkd-manager.c | |
parent | 1d4312d5f95edd2a999636abd2e6967a492bbf2c (diff) | |
download | systemd-edb69db2b026678394f47267e87eb5fb163373c5.tar.gz |
network: manage WLAN phy
Diffstat (limited to 'src/network/networkd-manager.c')
-rw-r--r-- | src/network/networkd-manager.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index fab0b4094c..553aa2beb1 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -42,6 +42,7 @@ #include "networkd-speed-meter.h" #include "networkd-state-file.h" #include "networkd-wifi.h" +#include "networkd-wiphy.h" #include "ordered-set.h" #include "path-lookup.h" #include "path-util.h" @@ -554,6 +555,9 @@ Manager* manager_free(Manager *m) { m->netdevs = hashmap_free_with_destructor(m->netdevs, netdev_unref); + m->wiphy_by_name = hashmap_free(m->wiphy_by_name); + m->wiphy_by_index = hashmap_free_with_destructor(m->wiphy_by_index, wiphy_free); + ordered_set_free_free(m->address_pools); hashmap_free(m->route_table_names_by_number); @@ -793,6 +797,20 @@ static int manager_enumerate_nexthop(Manager *m) { return manager_enumerate_internal(m, m->rtnl, req, manager_rtnl_process_nexthop); } +static int manager_enumerate_nl80211_wiphy(Manager *m) { + _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL; + int r; + + assert(m); + assert(m->genl); + + r = sd_genl_message_new(m->genl, NL80211_GENL_NAME, NL80211_CMD_GET_WIPHY, &req); + if (r < 0) + return r; + + return manager_enumerate_internal(m, m->genl, req, manager_genl_process_nl80211_wiphy); +} + static int manager_enumerate_nl80211_config(Manager *m) { _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL; int r; @@ -878,6 +896,12 @@ int manager_enumerate(Manager *m) { else if (r < 0) return log_error_errno(r, "Could not enumerate routing policy rules: %m"); + r = manager_enumerate_nl80211_wiphy(m); + if (r == -EOPNOTSUPP) + log_debug_errno(r, "Could not enumerate wireless LAN phy, ignoring: %m"); + else if (r < 0) + return log_error_errno(r, "Could not enumerate wireless LAN phy: %m"); + r = manager_enumerate_nl80211_config(m); if (r == -EOPNOTSUPP) log_debug_errno(r, "Could not enumerate wireless LAN interfaces, ignoring: %m"); |