From f5d3f1f515c7252ac898d4c0f0c292f6cb1fd557 Mon Sep 17 00:00:00 2001 From: pyamsoft Date: Wed, 6 Nov 2024 17:22:10 -0800 Subject: [PATCH] Support other prefixes for RNDIS According to #351, its not just "RNDIS", but some devices also appear to use "ncm" as their USB tethering device prefix. I have no idea what the difference is, but whatever, if it works it works :) --- .../server/broadcast/rndis/RNDISServer.kt | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/server/src/main/java/com/pyamsoft/tetherfi/server/broadcast/rndis/RNDISServer.kt b/server/src/main/java/com/pyamsoft/tetherfi/server/broadcast/rndis/RNDISServer.kt index fdd42f28..abc4ba0e 100644 --- a/server/src/main/java/com/pyamsoft/tetherfi/server/broadcast/rndis/RNDISServer.kt +++ b/server/src/main/java/com/pyamsoft/tetherfi/server/broadcast/rndis/RNDISServer.kt @@ -41,11 +41,15 @@ internal class RNDISServer @Inject internal constructor() : BroadcastServerImple val allIfaces: Enumeration? = NetworkInterface.getNetworkInterfaces() if (allIfaces != null) { for (iface in allIfaces) { - if (iface.name.orEmpty().lowercase().startsWith(EXPECTED_RNDIS_NAME_PREFIX)) { - for (address in iface.inetAddresses) { - val hostName = address.hostName.orEmpty() - if (hostName.startsWith(EXPECTED_RNDIS_IP_PREFIX)) { - return@withContext hostName + for (prefix in EXPECTED_RNDIS_NAME_PREFIX_LIST) { + if (iface.name.orEmpty().lowercase().startsWith(prefix)) { + for (address in iface.inetAddresses) { + val hostName = address.hostName.orEmpty() + for (ip in EXPECTED_RNDIS_IP_PREFIX_LIST) { + if (hostName.startsWith(ip)) { + return@withContext hostName + } + } } } } @@ -85,7 +89,16 @@ internal class RNDISServer @Inject internal constructor() : BroadcastServerImple ) {} companion object { - private const val EXPECTED_RNDIS_NAME_PREFIX = "rndis" - private const val EXPECTED_RNDIS_IP_PREFIX = "192.168." + private val EXPECTED_RNDIS_NAME_PREFIX_LIST = + arrayOf( + // Samsung? + "rndis", + + // https://github.com/pyamsoft/tetherfi/issues/351 + "ncm") + private val EXPECTED_RNDIS_IP_PREFIX_LIST = + arrayOf( + // Samsung? and others? + "192.168.") } }