summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2016-01-20 12:45:21 +0100
committerLubomir Rintel <lkundrak@v3.sk>2016-01-21 15:28:44 +0100
commitb95c88284dd58d871c88850cb4570119684f4f06 (patch)
tree0539b3d476875afa907d8b768ff3ee13b270a12a
parentbd27102277e5d7e52d87bd26711ae6c431e08192 (diff)
downloadNetworkManager-b95c88284dd58d871c88850cb4570119684f4f06.tar.gz
linux-platform: treat gadget devices as ethernet devices
Also, don't manage them by default. Whatver created it should take care of management. (cherry picked from commit c1cf3c25c836f5beeecc4589b0aea52da7379587)
-rw-r--r--data/85-nm-unmanaged.rules5
-rw-r--r--src/platform/nm-linux-platform.c20
2 files changed, 18 insertions, 7 deletions
diff --git a/data/85-nm-unmanaged.rules b/data/85-nm-unmanaged.rules
index 887ab84599..edc4ddbe79 100644
--- a/data/85-nm-unmanaged.rules
+++ b/data/85-nm-unmanaged.rules
@@ -26,4 +26,9 @@ ATTR{address}=="00:1c:42:*", ENV{INTERFACE}=="vnic[0-9]*", ENV{NM_UNMANAGED}="1"
# in another net namespace and managed by libvirt, Docker or the like.
ENV{ID_NET_DRIVER}=="veth", ENV{NM_UNMANAGED}="1"
+# USB gadget device. Unmanage by default, since whatever created it
+# might want to set it up itself (e.g. activate an ipv4.method=shared
+# connection).
+ENV{DEVTYPE}=="gadget", ENV{NM_UNMANAGED}="1"
+
LABEL="nm_unmanaged_end"
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index ee6ba421d2..6b9b3573d3 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -989,13 +989,19 @@ link_extract_type (NMPlatform *platform, struct rtnl_link *rtnllink, gboolean *c
if (wifi_utils_is_wifi (ifname, sysfs_path))
return NM_LINK_TYPE_WIFI;
- /* Standard wired ethernet interfaces don't report an rtnl_link_type, so
- * only allow fallback to Ethernet if no type is given. This should
- * prevent future virtual network drivers from being treated as Ethernet
- * when they should be Generic instead.
- */
- if (arptype == ARPHRD_ETHER && !rtnl_type && !devtype)
- return NM_LINK_TYPE_ETHERNET;
+ if (arptype == ARPHRD_ETHER) {
+ /* Standard wired ethernet interfaces don't report an rtnl_link_type, so
+ * only allow fallback to Ethernet if no type is given. This should
+ * prevent future virtual network drivers from being treated as Ethernet
+ * when they should be Generic instead.
+ */
+ if (!rtnl_type && !devtype)
+ return NM_LINK_TYPE_ETHERNET;
+ /* The USB gadget interfaces behave and look like ordinary ethernet devices
+ * aside from the DEVTYPE. */
+ if (!g_strcmp0 (devtype, "gadget"))
+ return NM_LINK_TYPE_ETHERNET;
+ }
}
return NM_LINK_TYPE_UNKNOWN;