wifi/iwd: merge branch 'balrog-kun/iwd-ap-adhoc'

https://github.com/NetworkManager/NetworkManager/pull/221
This commit is contained in:
Thomas Haller 2018-10-11 16:07:25 +02:00
commit c925b72e1f
3 changed files with 719 additions and 284 deletions

File diff suppressed because it is too large Load diff

View file

@ -47,7 +47,7 @@ typedef struct _NMDeviceIwdClass NMDeviceIwdClass;
GType nm_device_iwd_get_type (void);
NMDevice *nm_device_iwd_new (const char *iface, NMDeviceWifiCapabilities capabilities);
NMDevice *nm_device_iwd_new (const char *iface);
void nm_device_iwd_set_dbus_object (NMDeviceIwd *device, GDBusObject *object);

View file

@ -75,8 +75,6 @@ create_device (NMDeviceFactory *factory,
NMConnection *connection,
gboolean *out_ignore)
{
NMDeviceWifiCapabilities capabilities;
NM80211Mode mode;
gs_free char *backend = NULL;
g_return_val_if_fail (iface != NULL, NULL);
@ -84,23 +82,6 @@ create_device (NMDeviceFactory *factory,
g_return_val_if_fail (g_strcmp0 (iface, plink->name) == 0, NULL);
g_return_val_if_fail (NM_IN_SET (plink->type, NM_LINK_TYPE_WIFI, NM_LINK_TYPE_OLPC_MESH), NULL);
if (!nm_platform_wifi_get_capabilities (NM_PLATFORM_GET,
plink->ifindex,
&capabilities)) {
nm_log_warn (LOGD_PLATFORM | LOGD_WIFI, "(%s) failed to initialize Wi-Fi driver for ifindex %d", iface, plink->ifindex);
return NULL;
}
/* Ignore monitor-mode and other unhandled interface types.
* FIXME: keep TYPE_MONITOR devices in UNAVAILABLE state and manage
* them if/when they change to a handled type.
*/
mode = nm_platform_wifi_get_mode (NM_PLATFORM_GET, plink->ifindex);
if (mode == NM_802_11_MODE_UNKNOWN) {
*out_ignore = TRUE;
return NULL;
}
if (plink->type != NM_LINK_TYPE_WIFI)
return nm_device_olpc_mesh_new (iface);
@ -116,11 +97,34 @@ create_device (NMDeviceFactory *factory,
iface,
NM_PRINT_FMT_QUOTE_STRING (backend),
WITH_IWD ? " (iwd support enabled)" : "");
if (!backend || !strcasecmp (backend, "wpa_supplicant"))
if (!backend || !strcasecmp (backend, "wpa_supplicant")) {
NMDeviceWifiCapabilities capabilities;
NM80211Mode mode;
if (!nm_platform_wifi_get_capabilities (NM_PLATFORM_GET,
plink->ifindex,
&capabilities)) {
nm_log_warn (LOGD_PLATFORM | LOGD_WIFI,
"(%s) failed to initialize Wi-Fi driver for ifindex %d",
iface, plink->ifindex);
return NULL;
}
/* Ignore monitor-mode and other unhandled interface types.
* FIXME: keep TYPE_MONITOR devices in UNAVAILABLE state and manage
* them if/when they change to a handled type.
*/
mode = nm_platform_wifi_get_mode (NM_PLATFORM_GET, plink->ifindex);
if (mode == NM_802_11_MODE_UNKNOWN) {
*out_ignore = TRUE;
return NULL;
}
return nm_device_wifi_new (iface, capabilities);
}
#if WITH_IWD
else if (!strcasecmp (backend, "iwd"))
return nm_device_iwd_new (iface, capabilities);
return nm_device_iwd_new (iface);
#endif
nm_log_warn (LOGD_PLATFORM | LOGD_WIFI, "(%s) config: unknown or unsupported wifi-backend %s", iface, backend);