From 6078d6edd6b28ffc4b888a41c214a877708ab9a0 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 3 Jun 2022 07:41:53 +0000 Subject: [PATCH] [TestOnly] Replace isRouterAdvertisement with isIcmpv6Type Test: atest EthernetTetheringTest Change-Id: I5dca7a05a982139d8fc6f8272c8b829b74a34722 --- .../android/net/EthernetTetheringTest.java | 25 ++++--------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java b/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java index ad2cbbca2f..97c14019be 100644 --- a/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java +++ b/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java @@ -28,7 +28,6 @@ import static android.net.TetheringManager.CONNECTIVITY_SCOPE_LOCAL; import static android.net.TetheringManager.TETHERING_ETHERNET; import static android.net.TetheringTester.RemoteResponder; import static android.net.TetheringTester.isIcmpv6Type; -import static android.system.OsConstants.IPPROTO_ICMPV6; import static android.system.OsConstants.IPPROTO_IP; import static android.system.OsConstants.IPPROTO_IPV6; import static android.system.OsConstants.IPPROTO_UDP; @@ -85,7 +84,6 @@ import com.android.net.module.util.bpf.Tether4Value; import com.android.net.module.util.bpf.TetherStatsKey; import com.android.net.module.util.bpf.TetherStatsValue; import com.android.net.module.util.structs.EthernetHeader; -import com.android.net.module.util.structs.Icmpv6Header; import com.android.net.module.util.structs.Ipv4Header; import com.android.net.module.util.structs.Ipv6Header; import com.android.net.module.util.structs.UdpHeader; @@ -146,6 +144,7 @@ public class EthernetTetheringTest { // Per TX UDP packet size: ethhdr (14) + iphdr (20) + udphdr (8) + payload (2) = 44 bytes. private static final int TX_UDP_PACKET_SIZE = 44; private static final int TX_UDP_PACKET_COUNT = 123; + private static final long WAIT_RA_TIMEOUT_MS = 2000; private static final LinkAddress TEST_IP4_ADDR = new LinkAddress("10.0.0.1/8"); private static final LinkAddress TEST_IP6_ADDR = new LinkAddress("2001:db8:1::101/64"); @@ -329,27 +328,13 @@ public class EthernetTetheringTest { } - private static boolean isRouterAdvertisement(byte[] pkt) { - if (pkt == null) return false; - - ByteBuffer buf = ByteBuffer.wrap(pkt); - - final EthernetHeader ethHdr = Struct.parse(EthernetHeader.class, buf); - if (ethHdr.etherType != ETHER_TYPE_IPV6) return false; - - final Ipv6Header ipv6Hdr = Struct.parse(Ipv6Header.class, buf); - if (ipv6Hdr.nextHeader != (byte) IPPROTO_ICMPV6) return false; - - final Icmpv6Header icmpv6Hdr = Struct.parse(Icmpv6Header.class, buf); - return icmpv6Hdr.type == (short) ICMPV6_ROUTER_ADVERTISEMENT; - } - - private static void expectRouterAdvertisement(TapPacketReader reader, String iface, + private static void waitForRouterAdvertisement(TapPacketReader reader, String iface, long timeoutMs) { final long deadline = SystemClock.uptimeMillis() + timeoutMs; do { byte[] pkt = reader.popPacket(timeoutMs); - if (isRouterAdvertisement(pkt)) return; + if (isIcmpv6Type(pkt, true /* hasEth */, ICMPV6_ROUTER_ADVERTISEMENT)) return; + timeoutMs = deadline - SystemClock.uptimeMillis(); } while (timeoutMs > 0); fail("Did not receive router advertisement on " + iface + " after " @@ -401,7 +386,7 @@ public class EthernetTetheringTest { // before the reader is started. mDownstreamReader = makePacketReader(mDownstreamIface); - expectRouterAdvertisement(mDownstreamReader, iface, 2000 /* timeoutMs */); + waitForRouterAdvertisement(mDownstreamReader, iface, WAIT_RA_TIMEOUT_MS); expectLocalOnlyAddresses(iface); }