From 33dde6b0691a636da4470d94d9d9332ac74cce0d Mon Sep 17 00:00:00 2001 From: Patrick Rohr Date: Fri, 21 Feb 2025 14:51:08 -0800 Subject: [PATCH] Allow mDNS on IFF_POINTOPOINT interfaces Instead of disallowing mDNS on interfaces that specify IFF_POINTOPOINT, the code should check for the presence of IFF_MULTICAST instead. It is perfectly valid to support mDNS on point-to-point links, such as IPv6 over BLE networks, if they support multicast. Change-Id: I282a039483ad1d677d31e5169d53bbae25a1c9c4 Test: TH --- .../connectivity/mdns/MdnsSocketProvider.java | 1 - .../connectivity/mdns/MdnsSocketProviderTest.java | 13 +------------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java index 1212e29e7a..d91bd112b3 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java @@ -564,7 +564,6 @@ public class MdnsSocketProvider { // Never try mDNS on cellular, or on interfaces with incompatible flags if (CollectionUtils.contains(transports, TRANSPORT_CELLULAR) || iface.isLoopback() - || iface.isPointToPoint() || iface.isVirtual() || !iface.isUp()) { return false; diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java index 1cc9985a75..f763bae09a 100644 --- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java +++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java @@ -610,6 +610,7 @@ public class MdnsSocketProviderTest { @Test public void testSocketCreatedForMulticastInterface() throws Exception { + doReturn(true).when(mTestNetworkIfaceWrapper).isPointToPoint(); doReturn(true).when(mTestNetworkIfaceWrapper).supportsMulticast(); startMonitoringSockets(); @@ -620,18 +621,6 @@ public class MdnsSocketProviderTest { testCallback.expectedSocketCreatedForNetwork(TEST_NETWORK, List.of(LINKADDRV4)); } - @Test - public void testNoSocketCreatedForPTPInterface() throws Exception { - doReturn(true).when(mTestNetworkIfaceWrapper).isPointToPoint(); - startMonitoringSockets(); - - final TestSocketCallback testCallback = new TestSocketCallback(); - runOnHandler(() -> mSocketProvider.requestSocket(TEST_NETWORK, testCallback)); - - postNetworkAvailable(TRANSPORT_BLUETOOTH); - testCallback.expectedNoCallback(); - } - @Test public void testNoSocketCreatedForVPNInterface() throws Exception { // VPN interfaces generally also have IFF_POINTOPOINT, but even if they don't, they should