mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 21:22: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:
parent
df8fc5f918
commit
d42c4a57b8
@ -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,
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
25
src/netdev.c
25
src/netdev.c
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user