Snap for 8634534 from 529fa00bd7b622cf3be391dc156f93503829e837 to android12L-tests-release

Change-Id: Ibbf7ee1a6e8d9be8fea4d3741c742db91e8e43e7
diff --git a/net/test/policy_crash_test.py b/net/test/policy_crash_test.py
index 536f96d..ad1b92a 100755
--- a/net/test/policy_crash_test.py
+++ b/net/test/policy_crash_test.py
@@ -107,7 +107,7 @@
     dst = ip6loopback
 
     # 8 byte IPv6 fragmentation header
-    frag_nexthdr = '00'
+    frag_nexthdr = '3b'
     frag_reserved = '00'
     # 13-bit offset, 2-bit reserved, 1-bit M[ore] flag
     pkt1_frag_offset = '0001'
diff --git a/net/test/tcp_fastopen_test.py b/net/test/tcp_fastopen_test.py
index eadae79..9c777c6 100755
--- a/net/test/tcp_fastopen_test.py
+++ b/net/test/tcp_fastopen_test.py
@@ -22,12 +22,14 @@
 
 import multinetwork_base
 import net_test
+import os
 import packets
 import tcp_metrics
 
 
 TCPOPT_FASTOPEN = 34
 TCP_FASTOPEN_CONNECT = 30
+BH_TIMEOUT_SYSCTL = "/proc/sys/net/ipv4/tcp_fastopen_blackhole_timeout_sec"
 
 
 class TcpFastOpenTest(multinetwork_base.MultiNetworkBaseTest):
@@ -63,12 +65,24 @@
     with self.assertRaisesErrno(ENOENT):
       self.tcp_metrics.GetMetrics(saddr, daddr)
 
+  def clearBlackhole(self):
+    if net_test.LINUX_VERSION < (4, 14, 0):
+      return
+    # Prior to 4.15 this sysctl is not namespace aware.
+    if net_test.LINUX_VERSION < (4, 15, 0) and not os.path.exists(BH_TIMEOUT_SYSCTL):
+      return
+    timeout = self.GetSysctl(BH_TIMEOUT_SYSCTL)
+
+    # Write to timeout to clear any pre-existing blackhole condition
+    self.SetSysctl(BH_TIMEOUT_SYSCTL, timeout)
+
   def CheckConnectOption(self, version):
     ip_layer = {4: scapy.IP, 6: scapy.IPv6}[version]
     netid = self.RandomNetid()
     s = self.TFOClientSocket(version, netid)
 
     self.clearTcpMetrics(version, netid)
+    self.clearBlackhole()
 
     # Connect the first time.
     remoteaddr = self.GetRemoteAddress(version)