3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-12-23 06:02:37 +01:00

netdev: utilize IWD_MODULE

Since iwd_modules_init is now defered until nl80211_appeared, we can
assume the nl80211 object is available. This removes the need for
netdev_set_nl80211 completely.
This commit is contained in:
James Prestwood 2019-10-11 12:29:23 -07:00 committed by Denis Kenzior
parent df8fc5f918
commit d42c4a57b8
3 changed files with 14 additions and 22 deletions

View File

@ -28,9 +28,6 @@ struct l_genl_family;
const struct l_settings *iwd_get_config(void); const struct l_settings *iwd_get_config(void);
struct l_genl *iwd_get_genl(void); struct l_genl *iwd_get_genl(void);
bool netdev_init(void);
void netdev_exit(void);
void netdev_set_nl80211(struct l_genl_family *nl80211);
void netdev_shutdown(void); void netdev_shutdown(void);
bool manager_init(struct l_genl_family *in, bool manager_init(struct l_genl_family *in,

View File

@ -159,8 +159,6 @@ static void nl80211_appeared(const struct l_genl_family_info *info,
if (!wiphy_init(nl80211, phys, nophys)) if (!wiphy_init(nl80211, phys, nophys))
l_error("Unable to init wiphy functionality"); l_error("Unable to init wiphy functionality");
netdev_set_nl80211(nl80211);
} }
static void request_name_callback(struct l_dbus *dbus, bool success, static void request_name_callback(struct l_dbus *dbus, bool success,
@ -486,15 +484,11 @@ int main(int argc, char *argv[])
eap_init(eap_mtu); eap_init(eap_mtu);
eapol_init(); eapol_init();
if (!netdev_init())
goto fail_netdev;
exit_status = l_main_run_with_signal(signal_handler, NULL); exit_status = l_main_run_with_signal(signal_handler, NULL);
plugin_exit(); plugin_exit();
iwd_modules_exit(); iwd_modules_exit();
netdev_exit();
fail_netdev:
eapol_exit(); eapol_exit();
eap_exit(); eap_exit();

View File

@ -4755,20 +4755,22 @@ bool netdev_watch_remove(uint32_t id)
return watchlist_remove(&netdev_watches, id); return watchlist_remove(&netdev_watches, id);
} }
bool netdev_init(void) static int netdev_init(void)
{ {
struct l_genl *genl = iwd_get_genl(); struct l_genl *genl = iwd_get_genl();
const struct l_settings *settings = iwd_get_config(); const struct l_settings *settings = iwd_get_config();
nl80211 = l_genl_family_new(genl, NL80211_GENL_NAME);
if (rtnl) if (rtnl)
return false; return -EALREADY;
l_debug("Opening route netlink socket"); l_debug("Opening route netlink socket");
rtnl = l_netlink_new(NETLINK_ROUTE); rtnl = l_netlink_new(NETLINK_ROUTE);
if (!rtnl) { if (!rtnl) {
l_error("Failed to open route netlink socket"); l_error("Failed to open route netlink socket");
return false; return -EIO;
} }
if (getenv("IWD_RTNL_DEBUG")) if (getenv("IWD_RTNL_DEBUG"))
@ -4778,7 +4780,7 @@ bool netdev_init(void)
netdev_link_notify, NULL, NULL)) { netdev_link_notify, NULL, NULL)) {
l_error("Failed to register for RTNL link notifications"); l_error("Failed to register for RTNL link notifications");
l_netlink_destroy(rtnl); l_netlink_destroy(rtnl);
return false; return -EIO;
} }
if (!l_settings_get_int(settings, "General", "roam_rssi_threshold", if (!l_settings_get_int(settings, "General", "roam_rssi_threshold",
@ -4801,19 +4803,14 @@ bool netdev_init(void)
if (!unicast_watch) if (!unicast_watch)
l_error("Registering for unicast notification failed"); l_error("Registering for unicast notification failed");
return true;
}
void netdev_set_nl80211(struct l_genl_family *in)
{
nl80211 = in;
if (!l_genl_family_register(nl80211, "mlme", netdev_mlme_notify, if (!l_genl_family_register(nl80211, "mlme", netdev_mlme_notify,
NULL, NULL)) NULL, NULL))
l_error("Registering for MLME notification failed"); l_error("Registering for MLME notification failed");
return 0;
} }
void netdev_exit(void) static void netdev_exit(void)
{ {
struct l_genl *genl = iwd_get_genl(); struct l_genl *genl = iwd_get_genl();
@ -4823,6 +4820,8 @@ void netdev_exit(void)
l_genl_remove_unicast_watch(genl, unicast_watch); l_genl_remove_unicast_watch(genl, unicast_watch);
watchlist_destroy(&netdev_watches); watchlist_destroy(&netdev_watches);
l_genl_family_free(nl80211);
nl80211 = NULL; nl80211 = NULL;
l_debug("Closing route netlink socket"); l_debug("Closing route netlink socket");
@ -4840,3 +4839,5 @@ void netdev_shutdown(void)
l_queue_destroy(netdev_list, netdev_free); l_queue_destroy(netdev_list, netdev_free);
netdev_list = NULL; netdev_list = NULL;
} }
IWD_MODULE(netdev, netdev_init, netdev_exit);