use/test pmtu from TetherOffloadRuleParcel
Tested: atest
Bug: 149816401
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Original-Change: https://android-review.googlesource.com/1316720
Merged-In: Id8a91ed5c0176b41c079ede5533af90b8756de6b
Change-Id: Id8a91ed5c0176b41c079ede5533af90b8756de6b
diff --git a/tests/binder_test.cpp b/tests/binder_test.cpp
index 0b62ff0..cd7567a 100644
--- a/tests/binder_test.cpp
+++ b/tests/binder_test.cpp
@@ -3515,7 +3515,7 @@
const std::vector<uint8_t>& destination,
int prefixLength,
const std::vector<uint8_t>& srcL2Address,
- const std::vector<uint8_t>& dstL2Address) {
+ const std::vector<uint8_t>& dstL2Address, int pmtu) {
android::net::TetherOffloadRuleParcel parcel;
parcel.inputInterfaceIndex = inputInterfaceIndex;
parcel.outputInterfaceIndex = outputInterfaceIndex;
@@ -3523,6 +3523,7 @@
parcel.prefixLength = prefixLength;
parcel.srcL2Address = srcL2Address;
parcel.dstL2Address = dstL2Address;
+ parcel.pmtu = pmtu;
return parcel;
}
@@ -3546,32 +3547,34 @@
// Invalid IP address, add rule
TetherOffloadRuleParcel rule = makeTetherOffloadRule(
- kIfaceExt, kIfaceInt, kInvalidAddr4 /*bad*/, 128, kSrcMac, kDstMac);
+ kIfaceExt, kIfaceInt, kInvalidAddr4 /*bad*/, 128, kSrcMac, kDstMac, 1500);
auto status = mNetd->tetherOffloadRuleAdd(rule);
EXPECT_FALSE(status.isOk());
EXPECT_EQ(EAFNOSUPPORT, status.serviceSpecificErrorCode());
// Invalid source L2 address, add rule
- rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kAddr6, 128, kInvalidMac /*bad*/, kDstMac);
+ rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kAddr6, 128, kInvalidMac /*bad*/, kDstMac,
+ 1500);
status = mNetd->tetherOffloadRuleAdd(rule);
EXPECT_FALSE(status.isOk());
EXPECT_EQ(ENXIO, status.serviceSpecificErrorCode());
// Invalid destination L2 address, add rule
- rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kAddr6, 128, kSrcMac, kInvalidMac /*bad*/);
+ rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kAddr6, 128, kSrcMac, kInvalidMac /*bad*/,
+ 1500);
status = mNetd->tetherOffloadRuleAdd(rule);
EXPECT_FALSE(status.isOk());
EXPECT_EQ(ENXIO, status.serviceSpecificErrorCode());
// Invalid IP address, remove rule
- rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kInvalidAddr4 /*bad*/, 128, kSrcMac,
- kDstMac);
+ rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kInvalidAddr4 /*bad*/, 128, kSrcMac, kDstMac,
+ 1500);
status = mNetd->tetherOffloadRuleRemove(rule);
EXPECT_FALSE(status.isOk());
EXPECT_EQ(EAFNOSUPPORT, status.serviceSpecificErrorCode());
// Invalid prefix length
- rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kAddr6, 64 /*bad*/, kSrcMac, kDstMac);
+ rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kAddr6, 64 /*bad*/, kSrcMac, kDstMac, 1500);
status = mNetd->tetherOffloadRuleAdd(rule);
EXPECT_FALSE(status.isOk());
EXPECT_EQ(EINVAL, status.serviceSpecificErrorCode());
@@ -3580,21 +3583,33 @@
EXPECT_EQ(EINVAL, status.serviceSpecificErrorCode());
// Invalid interface index
- rule = makeTetherOffloadRule(kIfaceExt, 0, kAddr6, 128, kSrcMac, kDstMac);
+ rule = makeTetherOffloadRule(kIfaceExt, 0, kAddr6, 128, kSrcMac, kDstMac, 1500);
status = mNetd->tetherOffloadRuleAdd(rule);
EXPECT_FALSE(status.isOk());
EXPECT_EQ(ENODEV, status.serviceSpecificErrorCode());
- rule = makeTetherOffloadRule(0, kIfaceInt, kAddr6, 64, kSrcMac, kDstMac);
+ rule = makeTetherOffloadRule(0, kIfaceInt, kAddr6, 64, kSrcMac, kDstMac, 1500);
status = mNetd->tetherOffloadRuleRemove(rule);
EXPECT_FALSE(status.isOk());
EXPECT_EQ(ENODEV, status.serviceSpecificErrorCode());
+ // Invalid pmtu (too low)
+ rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kAddr6, 128, kSrcMac, kDstMac, 1279);
+ status = mNetd->tetherOffloadRuleAdd(rule);
+ EXPECT_FALSE(status.isOk());
+ EXPECT_EQ(EINVAL, status.serviceSpecificErrorCode());
+
+ // Invalid pmtu (too high)
+ rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kAddr6, 128, kSrcMac, kDstMac, 65536);
+ status = mNetd->tetherOffloadRuleAdd(rule);
+ EXPECT_FALSE(status.isOk());
+ EXPECT_EQ(EINVAL, status.serviceSpecificErrorCode());
+
// Remove non existent rule. Expect that silently return success if the rule did not exist.
- rule = makeTetherOffloadRule(kIfaceNonExistent, kIfaceInt, kAddr6, 128, kSrcMac, kDstMac);
+ rule = makeTetherOffloadRule(kIfaceNonExistent, kIfaceInt, kAddr6, 128, kSrcMac, kDstMac, 1500);
EXPECT_TRUE(mNetd->tetherOffloadRuleRemove(rule).isOk());
// Add and remove rule normally.
- rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kAddr6, 128, kSrcMac, kDstMac);
+ rule = makeTetherOffloadRule(kIfaceExt, kIfaceInt, kAddr6, 128, kSrcMac, kDstMac, 1500);
EXPECT_TRUE(mNetd->tetherOffloadRuleAdd(rule).isOk());
EXPECT_TRUE(mNetd->tetherOffloadRuleRemove(rule).isOk());
}
@@ -3693,7 +3708,7 @@
std::vector<uint8_t> dstAddr(daddr, daddr + sizeof(pkt.hdr.daddr));
TetherOffloadRuleParcel rule = makeTetherOffloadRule(sTun.ifindex(), tap.ifindex(), dstAddr,
- 128, kDummyMac, kDummyMac);
+ 128, kDummyMac, kDummyMac, sizeof(pkt));
status = mNetd->tetherOffloadRuleAdd(rule);
EXPECT_TRUE(status.isOk()) << status.exceptionMessage();