mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-04 15:18:05 +02:00
merge: add new nm-plugin-missing property for devices (bgo #747851)
The property indicates that a device type is supported by NetworkManager, but the plugin for handling the device is missing. The property is accessible through D-Bus API, libnm and nmcli. https://bugzilla.gnome.org/show_bug.cgi?id=747851
This commit is contained in:
commit
80a72a4092
8 changed files with 153 additions and 45 deletions
|
|
@ -58,30 +58,32 @@ static NmcOutputField nmc_fields_dev_show_general[] = {
|
|||
{"NAME", N_("NAME"), 10}, /* 0 */
|
||||
{"DEVICE", N_("DEVICE"), 10}, /* 1 */
|
||||
{"TYPE", N_("TYPE"), 17}, /* 2 */
|
||||
{"VENDOR", N_("VENDOR"), 20}, /* 3 */
|
||||
{"PRODUCT", N_("PRODUCT"), 50}, /* 4 */
|
||||
{"DRIVER", N_("DRIVER"), 9}, /* 5 */
|
||||
{"DRIVER-VERSION", N_("DRIVER-VERSION"), 18}, /* 6 */
|
||||
{"FIRMWARE-VERSION", N_("FIRMWARE-VERSION"), 18}, /* 7 */
|
||||
{"HWADDR", N_("HWADDR"), 19}, /* 8 */
|
||||
{"MTU", N_("MTU"), 10}, /* 9 */
|
||||
{"STATE", N_("STATE"), 14}, /* 10 */
|
||||
{"REASON", N_("REASON"), 25}, /* 11 */
|
||||
{"UDI", N_("UDI"), 64}, /* 12 */
|
||||
{"IP-IFACE", N_("IP-IFACE"), 10}, /* 13 */
|
||||
{"IS-SOFTWARE", N_("IS-SOFTWARE"), 15}, /* 14 */
|
||||
{"NM-MANAGED", N_("NM-MANAGED"), 15}, /* 15 */
|
||||
{"AUTOCONNECT", N_("AUTOCONNECT"), 15}, /* 16 */
|
||||
{"FIRMWARE-MISSING", N_("FIRMWARE-MISSING"), 18}, /* 17 */
|
||||
{"PHYS-PORT-ID", N_("PHYS-PORT-ID"), 18}, /* 18 */
|
||||
{"CONNECTION", N_("CONNECTION"), 20}, /* 19 */
|
||||
{"CON-UUID", N_("CON-UUID"), 38}, /* 20 */
|
||||
{"CON-PATH", N_("CON-PATH"), 51}, /* 21 */
|
||||
{"NM-TYPE", N_("NM-TYPE"), 17}, /* 3 */
|
||||
{"VENDOR", N_("VENDOR"), 20}, /* 4 */
|
||||
{"PRODUCT", N_("PRODUCT"), 50}, /* 5 */
|
||||
{"DRIVER", N_("DRIVER"), 9}, /* 6 */
|
||||
{"DRIVER-VERSION", N_("DRIVER-VERSION"), 18}, /* 7 */
|
||||
{"FIRMWARE-VERSION", N_("FIRMWARE-VERSION"), 18}, /* 8 */
|
||||
{"HWADDR", N_("HWADDR"), 19}, /* 9 */
|
||||
{"MTU", N_("MTU"), 10}, /* 10 */
|
||||
{"STATE", N_("STATE"), 14}, /* 11 */
|
||||
{"REASON", N_("REASON"), 25}, /* 12 */
|
||||
{"UDI", N_("UDI"), 64}, /* 13 */
|
||||
{"IP-IFACE", N_("IP-IFACE"), 10}, /* 14 */
|
||||
{"IS-SOFTWARE", N_("IS-SOFTWARE"), 15}, /* 15 */
|
||||
{"NM-MANAGED", N_("NM-MANAGED"), 15}, /* 16 */
|
||||
{"AUTOCONNECT", N_("AUTOCONNECT"), 15}, /* 17 */
|
||||
{"FIRMWARE-MISSING", N_("FIRMWARE-MISSING"), 18}, /* 18 */
|
||||
{"NM-PLUGIN-MISSING", N_("NM-PLUGIN-MISSING"), 18}, /* 19 */
|
||||
{"PHYS-PORT-ID", N_("PHYS-PORT-ID"), 18}, /* 20 */
|
||||
{"CONNECTION", N_("CONNECTION"), 20}, /* 21 */
|
||||
{"CON-UUID", N_("CON-UUID"), 38}, /* 22 */
|
||||
{"CON-PATH", N_("CON-PATH"), 51}, /* 23 */
|
||||
{NULL, NULL, 0}
|
||||
};
|
||||
#define NMC_FIELDS_DEV_SHOW_GENERAL_ALL "NAME,DEVICE,TYPE,VENDOR,PRODUCT,DRIVER,DRIVER-VERSION,FIRMWARE-VERSION,HWADDR,MTU,STATE,REASON,"\
|
||||
"UDI,IP-IFACE,IS-SOFTWARE,NM-MANAGED,AUTOCONNECT,FIRMWARE-MISSING,PHYS-PORT-ID,"\
|
||||
"CONNECTION,CON-UUID,CON-PATH"
|
||||
#define NMC_FIELDS_DEV_SHOW_GENERAL_ALL "NAME,DEVICE,TYPE,NM-TYPE,VENDOR,PRODUCT,DRIVER,DRIVER-VERSION,FIRMWARE-VERSION,HWADDR,MTU,"\
|
||||
"STATE,REASON,UDI,IP-IFACE,IS-SOFTWARE,NM-MANAGED,AUTOCONNECT,FIRMWARE-MISSING,NM-PLUGIN-MISSING,"\
|
||||
"PHYS-PORT-ID,CONNECTION,CON-UUID,CON-PATH"
|
||||
#define NMC_FIELDS_DEV_SHOW_GENERAL_COMMON "NAME,DEVICE,TYPE,VENDOR,PRODUCT,DRIVER,HWADDR,STATE"
|
||||
|
||||
/* Available fields for 'device show' - CONNECTIONS part */
|
||||
|
|
@ -822,25 +824,27 @@ show_device_info (NMDevice *device, NmCli *nmc)
|
|||
set_val_strc (arr, 0, nmc_fields_dev_show_sections[0].name); /* "GENERAL"*/
|
||||
set_val_strc (arr, 1, nm_device_get_iface (device));
|
||||
set_val_strc (arr, 2, nm_device_get_type_description (device));
|
||||
set_val_strc (arr, 3, nm_device_get_vendor (device));
|
||||
set_val_strc (arr, 4, nm_device_get_product (device));
|
||||
set_val_strc (arr, 5, nm_device_get_driver (device) ? nm_device_get_driver (device) : _("(unknown)"));
|
||||
set_val_strc (arr, 6, nm_device_get_driver_version (device));
|
||||
set_val_strc (arr, 7, nm_device_get_firmware_version (device));
|
||||
set_val_strc (arr, 8, hwaddr ? hwaddr : _("(unknown)"));
|
||||
set_val_str (arr, 9, mtu_str);
|
||||
set_val_str (arr, 10, state_str);
|
||||
set_val_str (arr, 11, reason_str);
|
||||
set_val_strc (arr, 12, nm_device_get_udi (device));
|
||||
set_val_strc (arr, 13, nm_device_get_ip_iface (device));
|
||||
set_val_strc (arr, 14, nm_device_is_software (device) ? _("yes") : _("no"));
|
||||
set_val_strc (arr, 15, nm_device_get_managed (device) ? _("yes") : _("no"));
|
||||
set_val_strc (arr, 16, nm_device_get_autoconnect (device) ? _("yes") : _("no"));
|
||||
set_val_strc (arr, 17, nm_device_get_firmware_missing (device) ? _("yes") : _("no"));
|
||||
set_val_strc (arr, 18, nm_device_get_physical_port_id (device));
|
||||
set_val_strc (arr, 19, get_active_connection_id (device));
|
||||
set_val_strc (arr, 20, acon ? nm_active_connection_get_uuid (acon) : NULL);
|
||||
set_val_strc (arr, 21, acon ? nm_object_get_path (NM_OBJECT (acon)) : NULL);
|
||||
set_val_strc (arr, 3, G_OBJECT_TYPE_NAME (device));
|
||||
set_val_strc (arr, 4, nm_device_get_vendor (device));
|
||||
set_val_strc (arr, 5, nm_device_get_product (device));
|
||||
set_val_strc (arr, 6, nm_device_get_driver (device) ? nm_device_get_driver (device) : _("(unknown)"));
|
||||
set_val_strc (arr, 7, nm_device_get_driver_version (device));
|
||||
set_val_strc (arr, 8, nm_device_get_firmware_version (device));
|
||||
set_val_strc (arr, 9, hwaddr ? hwaddr : _("(unknown)"));
|
||||
set_val_str (arr, 10, mtu_str);
|
||||
set_val_str (arr, 11, state_str);
|
||||
set_val_str (arr, 12, reason_str);
|
||||
set_val_strc (arr, 13, nm_device_get_udi (device));
|
||||
set_val_strc (arr, 14, nm_device_get_ip_iface (device));
|
||||
set_val_strc (arr, 15, nm_device_is_software (device) ? _("yes") : _("no"));
|
||||
set_val_strc (arr, 16, nm_device_get_managed (device) ? _("yes") : _("no"));
|
||||
set_val_strc (arr, 17, nm_device_get_autoconnect (device) ? _("yes") : _("no"));
|
||||
set_val_strc (arr, 18, nm_device_get_firmware_missing (device) ? _("yes") : _("no"));
|
||||
set_val_strc (arr, 19, nm_device_get_nm_plugin_missing (device) ? _("yes") : _("no"));
|
||||
set_val_strc (arr, 20, nm_device_get_physical_port_id (device));
|
||||
set_val_strc (arr, 21, get_active_connection_id (device));
|
||||
set_val_strc (arr, 22, acon ? nm_active_connection_get_uuid (acon) : NULL);
|
||||
set_val_strc (arr, 23, acon ? nm_object_get_path (NM_OBJECT (acon)) : NULL);
|
||||
g_ptr_array_add (nmc->output_data, arr);
|
||||
|
||||
print_data (nmc); /* Print all data */
|
||||
|
|
@ -2043,7 +2047,13 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
|
|||
show_access_point_info (device, nmc);
|
||||
}
|
||||
} else {
|
||||
g_string_printf (nmc->return_text, _("Error: Device '%s' is not a Wi-Fi device."), ifname);
|
||||
const char *err_msg;
|
||||
if ( nm_device_get_device_type (device) == NM_DEVICE_TYPE_GENERIC
|
||||
&& g_strcmp0 (nm_device_get_type_description (device), "wifi") == 0)
|
||||
err_msg = _("Error: Device '%s' was not recognized as a Wi-Fi device, check NetworkManager Wi-Fi plugin.");
|
||||
else
|
||||
err_msg = _("Error: Device '%s' is not a Wi-Fi device.");
|
||||
g_string_printf (nmc->return_text, err_msg, ifname);
|
||||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||
goto error;
|
||||
}
|
||||
|
|
@ -2523,9 +2533,15 @@ do_device_wifi_rescan (NmCli *nmc, int argc, char **argv)
|
|||
device = find_wifi_device_by_iface (devices, ifname, &devices_idx);
|
||||
|
||||
if (!device) {
|
||||
if (ifname)
|
||||
g_string_printf (nmc->return_text, _("Error: Device '%s' is not a Wi-Fi device."), ifname);
|
||||
else
|
||||
if (ifname) {
|
||||
const char *err_msg;
|
||||
if ( nm_device_get_device_type (device) == NM_DEVICE_TYPE_GENERIC
|
||||
&& g_strcmp0 (nm_device_get_type_description (device), "wifi") == 0)
|
||||
err_msg = _("Error: Device '%s' was not recognized as a Wi-Fi device, check NetworkManager Wi-Fi plugin.");
|
||||
else
|
||||
err_msg = _("Error: Device '%s' is not a Wi-Fi device.");
|
||||
g_string_printf (nmc->return_text, err_msg, ifname);
|
||||
} else
|
||||
g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found."));
|
||||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||
goto error;
|
||||
|
|
|
|||
|
|
@ -116,6 +116,12 @@
|
|||
its operation.
|
||||
</tp:docstring>
|
||||
</property>
|
||||
<property name="NmPluginMissing" type="b" access="read">
|
||||
<tp:docstring>
|
||||
If TRUE, indicates the NetworkManager plugin for the device is likely
|
||||
missing or misconfigured.
|
||||
</tp:docstring>
|
||||
</property>
|
||||
<property name="DeviceType" type="u" access="read" tp:type="NM_DEVICE_TYPE">
|
||||
<tp:docstring>
|
||||
The general type of the network device; ie Ethernet, WiFi, etc.
|
||||
|
|
|
|||
|
|
@ -847,6 +847,7 @@ local:
|
|||
|
||||
libnm_1_2_0 {
|
||||
global:
|
||||
nm_device_get_nm_plugin_missing;
|
||||
nm_setting_802_1x_check_cert_scheme;
|
||||
nm_setting_bridge_get_multicast_snooping;
|
||||
nm_setting_wireless_get_powersave;
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@ typedef struct {
|
|||
NMDeviceCapabilities capabilities;
|
||||
gboolean managed;
|
||||
gboolean firmware_missing;
|
||||
gboolean nm_plugin_missing;
|
||||
gboolean autoconnect;
|
||||
NMIPConfig *ip4_config;
|
||||
NMDhcpConfig *dhcp4_config;
|
||||
|
|
@ -116,6 +117,7 @@ enum {
|
|||
PROP_MANAGED,
|
||||
PROP_AUTOCONNECT,
|
||||
PROP_FIRMWARE_MISSING,
|
||||
PROP_NM_PLUGIN_MISSING,
|
||||
PROP_IP4_CONFIG,
|
||||
PROP_DHCP4_CONFIG,
|
||||
PROP_IP6_CONFIG,
|
||||
|
|
@ -183,6 +185,7 @@ init_dbus (NMObject *object)
|
|||
{ NM_DEVICE_MANAGED, &priv->managed },
|
||||
{ NM_DEVICE_AUTOCONNECT, &priv->autoconnect },
|
||||
{ NM_DEVICE_FIRMWARE_MISSING, &priv->firmware_missing },
|
||||
{ NM_DEVICE_NM_PLUGIN_MISSING, &priv->nm_plugin_missing },
|
||||
{ NM_DEVICE_IP4_CONFIG, &priv->ip4_config, NULL, NM_TYPE_IP4_CONFIG },
|
||||
{ NM_DEVICE_DHCP4_CONFIG, &priv->dhcp4_config, NULL, NM_TYPE_DHCP4_CONFIG },
|
||||
{ NM_DEVICE_IP6_CONFIG, &priv->ip6_config, NULL, NM_TYPE_IP6_CONFIG },
|
||||
|
|
@ -413,6 +416,9 @@ get_property (GObject *object,
|
|||
case PROP_FIRMWARE_MISSING:
|
||||
g_value_set_boolean (value, nm_device_get_firmware_missing (device));
|
||||
break;
|
||||
case PROP_NM_PLUGIN_MISSING:
|
||||
g_value_set_boolean (value, nm_device_get_nm_plugin_missing (device));
|
||||
break;
|
||||
case PROP_IP4_CONFIG:
|
||||
g_value_set_object (value, nm_device_get_ip4_config (device));
|
||||
break;
|
||||
|
|
@ -645,6 +651,21 @@ nm_device_class_init (NMDeviceClass *device_class)
|
|||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
|
||||
/**
|
||||
* NMDevice:nm-plugin-missing:
|
||||
*
|
||||
* When %TRUE indicates that the NetworkManager plugin for the device
|
||||
* is not installed.
|
||||
*
|
||||
* Since: 1.2
|
||||
**/
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_NM_PLUGIN_MISSING,
|
||||
g_param_spec_boolean (NM_DEVICE_NM_PLUGIN_MISSING, "", "",
|
||||
FALSE,
|
||||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
|
||||
/**
|
||||
* NMDevice:ip4-config:
|
||||
*
|
||||
|
|
@ -1104,6 +1125,24 @@ nm_device_get_firmware_missing (NMDevice *device)
|
|||
return NM_DEVICE_GET_PRIVATE (device)->firmware_missing;
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_device_get_nm_plugin_missing:
|
||||
* @device: a #NMDevice
|
||||
*
|
||||
* Indicates that the NetworkManager plugin for the device is not installed.
|
||||
*
|
||||
* Returns: %TRUE if the device plugin not installed.
|
||||
*
|
||||
* Since: 1.2
|
||||
**/
|
||||
gboolean
|
||||
nm_device_get_nm_plugin_missing (NMDevice *device)
|
||||
{
|
||||
g_return_val_if_fail (NM_IS_DEVICE (device), FALSE);
|
||||
|
||||
return NM_DEVICE_GET_PRIVATE (device)->nm_plugin_missing;
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_device_get_ip4_config:
|
||||
* @device: a #NMDevice
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ G_BEGIN_DECLS
|
|||
#define NM_DEVICE_MANAGED "managed"
|
||||
#define NM_DEVICE_AUTOCONNECT "autoconnect"
|
||||
#define NM_DEVICE_FIRMWARE_MISSING "firmware-missing"
|
||||
#define NM_DEVICE_NM_PLUGIN_MISSING "nm-plugin-missing"
|
||||
#define NM_DEVICE_IP4_CONFIG "ip4-config"
|
||||
#define NM_DEVICE_DHCP4_CONFIG "dhcp4-config"
|
||||
#define NM_DEVICE_IP6_CONFIG "ip6-config"
|
||||
|
|
@ -104,6 +105,8 @@ gboolean nm_device_get_managed (NMDevice *device);
|
|||
gboolean nm_device_get_autoconnect (NMDevice *device);
|
||||
void nm_device_set_autoconnect (NMDevice *device, gboolean autoconnect);
|
||||
gboolean nm_device_get_firmware_missing (NMDevice *device);
|
||||
NM_AVAILABLE_IN_1_2
|
||||
gboolean nm_device_get_nm_plugin_missing (NMDevice *device);
|
||||
NMIPConfig * nm_device_get_ip4_config (NMDevice *device);
|
||||
NMDhcpConfig * nm_device_get_dhcp4_config (NMDevice *device);
|
||||
NMIPConfig * nm_device_get_ip6_config (NMDevice *device);
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ enum {
|
|||
PROP_MANAGED,
|
||||
PROP_AUTOCONNECT,
|
||||
PROP_FIRMWARE_MISSING,
|
||||
PROP_NM_PLUGIN_MISSING,
|
||||
PROP_TYPE_DESC,
|
||||
PROP_RFKILL_TYPE,
|
||||
PROP_IFINDEX,
|
||||
|
|
@ -197,6 +198,7 @@ typedef struct {
|
|||
char * firmware_version;
|
||||
RfKillType rfkill_type;
|
||||
gboolean firmware_missing;
|
||||
gboolean nm_plugin_missing;
|
||||
GHashTable * available_connections;
|
||||
char * hw_addr;
|
||||
guint hw_addr_len;
|
||||
|
|
@ -6691,6 +6693,26 @@ nm_device_get_firmware_missing (NMDevice *self)
|
|||
return NM_DEVICE_GET_PRIVATE (self)->firmware_missing;
|
||||
}
|
||||
|
||||
void
|
||||
nm_device_set_nm_plugin_missing (NMDevice *self, gboolean new_missing)
|
||||
{
|
||||
NMDevicePrivate *priv;
|
||||
|
||||
g_return_if_fail (NM_IS_DEVICE (self));
|
||||
|
||||
priv = NM_DEVICE_GET_PRIVATE (self);
|
||||
if (priv->nm_plugin_missing != new_missing) {
|
||||
priv->nm_plugin_missing = new_missing;
|
||||
g_object_notify (G_OBJECT (self), NM_DEVICE_NM_PLUGIN_MISSING);
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_device_get_nm_plugin_missing (NMDevice *self)
|
||||
{
|
||||
return NM_DEVICE_GET_PRIVATE (self)->nm_plugin_missing;
|
||||
}
|
||||
|
||||
static NMIP4Config *
|
||||
find_ip4_lease_config (NMDevice *self,
|
||||
NMConnection *connection,
|
||||
|
|
@ -8690,6 +8712,9 @@ set_property (GObject *object, guint prop_id,
|
|||
case PROP_FIRMWARE_MISSING:
|
||||
priv->firmware_missing = g_value_get_boolean (value);
|
||||
break;
|
||||
case PROP_NM_PLUGIN_MISSING:
|
||||
priv->nm_plugin_missing = g_value_get_boolean (value);
|
||||
break;
|
||||
case PROP_DEVICE_TYPE:
|
||||
g_return_if_fail (priv->type == NM_DEVICE_TYPE_UNKNOWN);
|
||||
priv->type = g_value_get_uint (value);
|
||||
|
|
@ -8835,6 +8860,9 @@ get_property (GObject *object, guint prop_id,
|
|||
case PROP_FIRMWARE_MISSING:
|
||||
g_value_set_boolean (value, priv->firmware_missing);
|
||||
break;
|
||||
case PROP_NM_PLUGIN_MISSING:
|
||||
g_value_set_boolean (value, priv->nm_plugin_missing);
|
||||
break;
|
||||
case PROP_TYPE_DESC:
|
||||
g_value_set_string (value, priv->type_desc);
|
||||
break;
|
||||
|
|
@ -9060,6 +9088,13 @@ nm_device_class_init (NMDeviceClass *klass)
|
|||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_NM_PLUGIN_MISSING,
|
||||
g_param_spec_boolean (NM_DEVICE_NM_PLUGIN_MISSING, "", "",
|
||||
FALSE,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_TYPE_DESC,
|
||||
g_param_spec_string (NM_DEVICE_TYPE_DESC, "", "",
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@
|
|||
#define NM_DEVICE_MANAGED "managed"
|
||||
#define NM_DEVICE_AUTOCONNECT "autoconnect"
|
||||
#define NM_DEVICE_FIRMWARE_MISSING "firmware-missing"
|
||||
#define NM_DEVICE_NM_PLUGIN_MISSING "nm-plugin-missing"
|
||||
#define NM_DEVICE_AVAILABLE_CONNECTIONS "available-connections"
|
||||
#define NM_DEVICE_PHYSICAL_PORT_ID "physical-port-id"
|
||||
#define NM_DEVICE_MTU "mtu"
|
||||
|
|
@ -389,6 +390,9 @@ void nm_device_queue_state (NMDevice *self,
|
|||
NMDeviceStateReason reason);
|
||||
|
||||
gboolean nm_device_get_firmware_missing (NMDevice *self);
|
||||
gboolean nm_device_get_nm_plugin_missing (NMDevice *self);
|
||||
void nm_device_set_nm_plugin_missing (NMDevice *self,
|
||||
gboolean missing);
|
||||
|
||||
void nm_device_steal_connection (NMDevice *device, NMConnection *connection);
|
||||
|
||||
|
|
|
|||
|
|
@ -2156,6 +2156,7 @@ platform_link_added (NMManager *self,
|
|||
NMDevice *device = NULL;
|
||||
GSList *iter;
|
||||
GError *error = NULL;
|
||||
gboolean nm_plugin_missing = FALSE;
|
||||
|
||||
g_return_if_fail (ifindex > 0);
|
||||
|
||||
|
|
@ -2205,6 +2206,7 @@ platform_link_added (NMManager *self,
|
|||
case NM_LINK_TYPE_WIFI:
|
||||
nm_log_info (LOGD_HW, "(%s): '%s' plugin not available; creating generic device",
|
||||
plink->name, plink->type_name);
|
||||
nm_plugin_missing = TRUE;
|
||||
/* fall through */
|
||||
default:
|
||||
device = nm_device_generic_new (plink);
|
||||
|
|
@ -2213,6 +2215,8 @@ platform_link_added (NMManager *self,
|
|||
}
|
||||
|
||||
if (device) {
|
||||
if (nm_plugin_missing)
|
||||
nm_device_set_nm_plugin_missing (device, TRUE);
|
||||
add_device (self, device, plink->type != NM_LINK_TYPE_LOOPBACK);
|
||||
g_object_unref (device);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue