diff options
author | Dan Winship <danw@gnome.org> | 2014-11-13 17:17:06 -0500 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2014-11-14 15:36:31 -0500 |
commit | d1faee92288831517f6f5f7baa057c790be3b022 (patch) | |
tree | 9b3a33b2cb636ef92036a87b16e079b9e4239bd7 /src/devices | |
parent | 529092f035680584e38f4fcfa8473876e9b7f86c (diff) | |
download | NetworkManager-d1faee92288831517f6f5f7baa057c790be3b022.tar.gz |
core: fix a spurious warning with non-kernel network devices
NMDevice was warning about not being able to set ifindex even on
devices that we know don't have an ifindex.
https://bugzilla.gnome.org/show_bug.cgi?id=739889
Diffstat (limited to 'src/devices')
-rw-r--r-- | src/devices/adsl/nm-device-adsl.c | 4 | ||||
-rw-r--r-- | src/devices/bluetooth/nm-device-bt.c | 7 | ||||
-rw-r--r-- | src/devices/nm-device-private.h | 3 | ||||
-rw-r--r-- | src/devices/nm-device.c | 15 | ||||
-rw-r--r-- | src/devices/wwan/nm-device-modem.c | 7 |
5 files changed, 23 insertions, 13 deletions
diff --git a/src/devices/adsl/nm-device-adsl.c b/src/devices/adsl/nm-device-adsl.c index fac6ce0e6f..e664ff4850 100644 --- a/src/devices/adsl/nm-device-adsl.c +++ b/src/devices/adsl/nm-device-adsl.c @@ -76,7 +76,9 @@ typedef struct { static guint32 get_generic_capabilities (NMDevice *dev) { - return (NM_DEVICE_CAP_CARRIER_DETECT | NM_DEVICE_CAP_NONSTANDARD_CARRIER); + return ( NM_DEVICE_CAP_CARRIER_DETECT + | NM_DEVICE_CAP_NONSTANDARD_CARRIER + | NM_DEVICE_CAP_IS_NON_KERNEL); } static gboolean diff --git a/src/devices/bluetooth/nm-device-bt.c b/src/devices/bluetooth/nm-device-bt.c index 0a1f591540..2cf2794da6 100644 --- a/src/devices/bluetooth/nm-device-bt.c +++ b/src/devices/bluetooth/nm-device-bt.c @@ -124,6 +124,12 @@ get_connection_bt_type (NMConnection *connection) return NM_BT_CAPABILITY_NONE; } +static guint32 +get_generic_capabilities (NMDevice *device) +{ + return NM_DEVICE_CAP_IS_NON_KERNEL; +} + static gboolean can_auto_connect (NMDevice *device, NMConnection *connection, @@ -1179,6 +1185,7 @@ nm_device_bt_class_init (NMDeviceBtClass *klass) object_class->dispose = dispose; object_class->finalize = finalize; + device_class->get_generic_capabilities = get_generic_capabilities; device_class->can_auto_connect = can_auto_connect; device_class->deactivate = deactivate; device_class->act_stage2_config = act_stage2_config; diff --git a/src/devices/nm-device-private.h b/src/devices/nm-device-private.h index 16c4d03885..fd87fd77a1 100644 --- a/src/devices/nm-device-private.h +++ b/src/devices/nm-device-private.h @@ -37,8 +37,9 @@ enum NMActStageReturn { }; #define NM_DEVICE_CAP_NONSTANDARD_CARRIER 0x80000000 +#define NM_DEVICE_CAP_IS_NON_KERNEL 0x40000000 -#define NM_DEVICE_CAP_INTERNAL_MASK 0x80000000 +#define NM_DEVICE_CAP_INTERNAL_MASK 0xc0000000 void nm_device_set_ip_iface (NMDevice *self, const char *iface); diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 39a9f282b2..eb37b468d6 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -7771,6 +7771,9 @@ constructor (GType type, if (NM_DEVICE_GET_CLASS (self)->get_generic_capabilities) priv->capabilities |= NM_DEVICE_GET_CLASS (self)->get_generic_capabilities (self); + if (priv->ifindex <= 0 && !device_has_capability (self, NM_DEVICE_CAP_IS_NON_KERNEL)) + _LOGW (LOGD_HW, "failed to look up interface index"); + device_get_driver_info (self, priv->iface, &priv->driver_version, &priv->firmware_version); /* Watch for external IP config changes */ @@ -7969,18 +7972,8 @@ set_property (GObject *object, guint prop_id, case PROP_IFACE: if (g_value_get_string (value)) { g_free (priv->iface); - priv->ifindex = 0; priv->iface = g_value_dup_string (value); - - /* Only look up the ifindex if it appears to be an actual kernel - * interface name. eg Bluetooth devices won't have one until we know - * the IP interface. - */ - if (priv->iface && !strchr (priv->iface, ':')) { - priv->ifindex = nm_platform_link_get_ifindex (priv->iface); - if (priv->ifindex <= 0) - _LOGW (LOGD_HW, "failed to look up interface index"); - } + priv->ifindex = nm_platform_link_get_ifindex (priv->iface); } break; case PROP_DRIVER: diff --git a/src/devices/wwan/nm-device-modem.c b/src/devices/wwan/nm-device-modem.c index 3eb570c465..f681e59ca1 100644 --- a/src/devices/wwan/nm-device-modem.c +++ b/src/devices/wwan/nm-device-modem.c @@ -373,6 +373,12 @@ device_state_changed (NMDevice *device, } } +static guint32 +get_generic_capabilities (NMDevice *device) +{ + return NM_DEVICE_CAP_IS_NON_KERNEL; +} + static gboolean check_connection_compatible (NMDevice *device, NMConnection *connection) { @@ -701,6 +707,7 @@ nm_device_modem_class_init (NMDeviceModemClass *mclass) object_class->set_property = set_property; object_class->constructed = constructed; + device_class->get_generic_capabilities = get_generic_capabilities; device_class->check_connection_compatible = check_connection_compatible; device_class->check_connection_available = check_connection_available; device_class->complete_connection = complete_connection; |