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/server/TetherController.cpp b/server/TetherController.cpp
index 6b5b060..ad6e8a9 100644
--- a/server/TetherController.cpp
+++ b/server/TetherController.cpp
@@ -844,6 +844,9 @@
     if (rule.dstL2Address.size() != sizeof(hdr.h_dest)) {
         return Error(ENXIO) << "Invalid L2 dst address length " << rule.dstL2Address.size();
     }
+    if (rule.pmtu < IPV6_MIN_MTU || rule.pmtu > 0xFFFF) {
+        return Error(EINVAL) << "Invalid IPv6 path mtu " << rule.pmtu;
+    }
     return Result<void>();
 }
 }  // namespace
@@ -867,7 +870,7 @@
     TetherIngressValue value = {
             .oif = static_cast<uint32_t>(rule.outputInterfaceIndex),
             .macHeader = hdr,
-            .pmtu = 1500,  // TODO: don't just blindly use this default
+            .pmtu = static_cast<uint16_t>(rule.pmtu),
     };
 
     return mBpfIngressMap.writeValue(key, value, BPF_ANY);