summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Rohr <prohr@google.com>2023-10-10 00:13:02 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-10-10 00:13:02 +0000
commitfc3ba1a8a65fedc575d8bc10ae9028380ed498b6 (patch)
tree3655b33798ef31bdc2137fe4712089c671246a97
parentc2415195bfa004e75774c35e4edf9e024d95a05c (diff)
parent6890bde6d0b858f8dae6ccba100a73b38fb7f084 (diff)
downloadtests-fc3ba1a8a65fedc575d8bc10ae9028380ed498b6.tar.gz
Add tests for ra_honor_pio_life am: 55c763f684 am: 2ddde83b68 am: 9a0052e33a am: 6890bde6d0
Original change: https://android-review.googlesource.com/c/kernel/tests/+/2736034 Change-Id: I4acc25f4d2981ce98e0ce6d3521b1e0bcb28afd0 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-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):