summaryrefslogtreecommitdiff
path: root/server/TetherController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/TetherController.cpp')
-rw-r--r--server/TetherController.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/server/TetherController.cpp b/server/TetherController.cpp
index 50ae9661..6dfb041a 100644
--- a/server/TetherController.cpp
+++ b/server/TetherController.cpp
@@ -849,6 +849,9 @@ Result<void> validateOffloadRule(const TetherOffloadRuleParcel& rule) {
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
@@ -872,7 +875,7 @@ Result<void> TetherController::addOffloadRule(const TetherOffloadRuleParcel& rul
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);