summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 f73c228b83..f5166803c8 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -732,13 +732,19 @@ _linktype_get_type (NMPlatform *platform,
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 && !kind && !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 (!kind && !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;