mgmt+face: allow MTU of datagram faces to be overridden
refs #4005
Change-Id: I01d98b88cdee41b633f6fb9a5600088efe8de749
diff --git a/daemon/face/unicast-udp-transport.cpp b/daemon/face/unicast-udp-transport.cpp
index 8e3d7d8..062c924 100644
--- a/daemon/face/unicast-udp-transport.cpp
+++ b/daemon/face/unicast-udp-transport.cpp
@@ -40,7 +40,8 @@
UnicastUdpTransport::UnicastUdpTransport(protocol::socket&& socket,
ndn::nfd::FacePersistency persistency,
- time::nanoseconds idleTimeout)
+ time::nanoseconds idleTimeout,
+ optional<ssize_t> overrideMtu)
: DatagramTransport(std::move(socket))
, m_idleTimeout(idleTimeout)
{
@@ -49,7 +50,14 @@
this->setScope(ndn::nfd::FACE_SCOPE_NON_LOCAL);
this->setPersistency(persistency);
this->setLinkType(ndn::nfd::LINK_TYPE_POINT_TO_POINT);
- this->setMtu(udp::computeMtu(m_socket.local_endpoint()));
+
+ if (overrideMtu) {
+ this->setMtu(std::min(udp::computeMtu(m_socket.local_endpoint()), *overrideMtu));
+ }
+ else {
+ this->setMtu(udp::computeMtu(m_socket.local_endpoint()));
+ }
+ BOOST_ASSERT(this->getMtu() >= MIN_MTU);
NFD_LOG_FACE_INFO("Creating transport");