summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-10-11 01:21:21 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-10-11 01:21:21 +0000
commita9a9e8b03b4b6ec51099c267e5ca976aeac1aa2c (patch)
tree3655b33798ef31bdc2137fe4712089c671246a97
parentae4bff929664c69a9d91bbcaa5c05894c4c8f7f4 (diff)
parentd37117f2cb01aa9491bef58979d95b1ecb26c14e (diff)
downloadtests-a9a9e8b03b4b6ec51099c267e5ca976aeac1aa2c.tar.gz
Snap for 10929702 from d37117f2cb01aa9491bef58979d95b1ecb26c14e to 24Q1-release
Change-Id: Ia93feb8d15263e8d84c75bf7c33e3f70e34e8ab0
-rw-r--r--net/test/multinetwork_base.py3
-rwxr-xr-xnet/test/multinetwork_test.py29
2 files changed, 32 insertions, 0 deletions
diff --git a/net/test/multinetwork_base.py b/net/test/multinetwork_base.py
index b02eaa3..5bf9b03 100644
--- a/net/test/multinetwork_base.py
+++ b/net/test/multinetwork_base.py
@@ -56,10 +56,13 @@ ACCEPT_RA_MIN_LFT_SYSCTL = "/proc/sys/net/ipv6/conf/default/accept_ra_min_lft"
AUTOCONF_TABLE_SYSCTL = "/proc/sys/net/ipv6/conf/default/accept_ra_rt_table"
IPV4_MARK_REFLECT_SYSCTL = "/proc/sys/net/ipv4/fwmark_reflect"
IPV6_MARK_REFLECT_SYSCTL = "/proc/sys/net/ipv6/fwmark_reflect"
+RA_HONOR_PIO_LIFE_SYSCTL = "/proc/sys/net/ipv6/conf/default/ra_honor_pio_life"
HAVE_ACCEPT_RA_MIN_LFT = (os.path.isfile(ACCEPT_RA_MIN_LFT_SYSCTL) or
net_test.KernelAtLeast([(6, 6, 0)]))
HAVE_AUTOCONF_TABLE = os.path.isfile(AUTOCONF_TABLE_SYSCTL)
+HAVE_RA_HONOR_PIO_LIFE = (os.path.isfile(RA_HONOR_PIO_LIFE_SYSCTL) or
+ net_test.KernelAtLeast([(6, 7, 0)]))
class ConfigurationError(AssertionError):
diff --git a/net/test/multinetwork_test.py b/net/test/multinetwork_test.py
index ec128b4..d106239 100755
--- a/net/test/multinetwork_test.py
+++ b/net/test/multinetwork_test.py
@@ -599,6 +599,8 @@ class RIOTest(multinetwork_base.MultiNetworkBaseTest):
self.SetAcceptRaRtInfoMaxPlen(0)
if multinetwork_base.HAVE_ACCEPT_RA_MIN_LFT:
self.SetAcceptRaMinLft(0)
+ if multinetwork_base.HAVE_RA_HONOR_PIO_LIFE:
+ self.SetRaHonorPioLife(0)
def GetRoutingTable(self):
return self._TableForNetid(self.NETID)
@@ -629,6 +631,14 @@ class RIOTest(multinetwork_base.MultiNetworkBaseTest):
return int(self.GetSysctl(
"/proc/sys/net/ipv6/conf/%s/accept_ra_min_lft" % self.IFACE))
+ def SetRaHonorPioLife(self, enabled):
+ self.SetSysctl(
+ "/proc/sys/net/ipv6/conf/%s/ra_honor_pio_life" % self.IFACE, enabled)
+
+ def GetRaHonorPioLife(self):
+ return int(self.GetSysctl(
+ "/proc/sys/net/ipv6/conf/%s/ra_honor_pio_life" % self.IFACE))
+
def SendRIO(self, rtlifetime, plen, prefix, prf):
options = scapy.ICMPv6NDOptRouteInfo(rtlifetime=rtlifetime, plen=plen,
prefix=prefix, prf=prf)
@@ -804,6 +814,25 @@ class RIOTest(multinetwork_base.MultiNetworkBaseTest):
self.SetAcceptRaMinLft(500)
self.assertEqual(500, self.GetAcceptRaMinLft())
+ @unittest.skipUnless(multinetwork_base.HAVE_RA_HONOR_PIO_LIFE,
+ "need support for ra_honor_pio_life")
+ def testRaHonorPioLifeReadWrite(self):
+ self.assertEqual(0, self.GetRaHonorPioLife())
+ self.SetRaHonorPioLife(1)
+ self.assertEqual(1, self.GetRaHonorPioLife())
+
+ @unittest.skipUnless(multinetwork_base.HAVE_RA_HONOR_PIO_LIFE,
+ "need support for ra_honor_pio_life")
+ def testRaHonorPioLife(self):
+ self.SetRaHonorPioLife(1)
+
+ # Test setup has sent an initial RA -- expire it.
+ self.SendRA(self.NETID, routerlft=0, piolft=0)
+ time.sleep(0.1) # Give the kernel time to notice our RA
+
+ # Assert that the address was deleted.
+ self.assertIsNone(self.MyAddress(6, self.NETID))
+
@unittest.skipUnless(multinetwork_base.HAVE_ACCEPT_RA_MIN_LFT,
"need support for accept_ra_min_lft")
def testAcceptRaMinLftRouterLifetime(self):