32 #include <netinet/in.h> 33 #include <sys/socket.h> 42 ndn::nfd::FacePersistency persistency,
43 time::nanoseconds idleTimeout,
44 optional<ssize_t> overrideMtu)
46 , m_idleTimeout(idleTimeout)
50 this->
setScope(ndn::nfd::FACE_SCOPE_NON_LOCAL);
52 this->
setLinkType(ndn::nfd::LINK_TYPE_POINT_TO_POINT);
77 const int value = IP_PMTUDISC_DONT;
78 if (::setsockopt(
m_socket.native_handle(), IPPROTO_IP,
79 IP_MTU_DISCOVER, &value,
sizeof(value)) < 0) {
80 NFD_LOG_FACE_WARN(
"Failed to disable path MTU discovery: " << std::strerror(errno));
85 m_idleTimeout > time::nanoseconds::zero()) {
86 scheduleClosureWhenIdle();
100 m_idleTimeout > time::nanoseconds::zero()) {
101 scheduleClosureWhenIdle();
104 m_closeIfIdleEvent.cancel();
110 UnicastUdpTransport::scheduleClosureWhenIdle()
119 scheduleClosureWhenIdle();
UnicastUdpTransport(protocol::socket &&socket, ndn::nfd::FacePersistency persistency, time::nanoseconds idleTimeout, optional< ssize_t > overrideMtu={})
void setLocalUri(const FaceUri &uri)
void setScope(ndn::nfd::FaceScope scope)
void resetRecentlyReceived()
protocol::socket m_socket
#define NFD_LOG_MEMBER_INIT_SPECIALIZED(cls, name)
bool hasRecentlyReceived() const
ssize_t computeMtu(const Endpoint &localEndpoint)
computes maximum payload size in a UDP packet
#define NFD_LOG_FACE_WARN(msg)
Log a message at WARN level.
Copyright (c) 2014-2015, Regents of the University of California, Arizona Board of Regents...
void afterChangePersistency(ndn::nfd::FacePersistency oldPersistency) final
invoked after the persistency has been changed
#define NFD_LOG_FACE_INFO(msg)
Log a message at INFO level.
void setLinkType(ndn::nfd::LinkType linkType)
void setPersistency(ndn::nfd::FacePersistency newPersistency)
changes face persistency setting
void close()
request the transport to be closed
ndn::nfd::FacePersistency getPersistency() const
Implements Transport for datagram-based protocols.
EventId schedule(time::nanoseconds after, const EventCallback &event)
Schedule an event.
bool canChangePersistencyToImpl(ndn::nfd::FacePersistency newPersistency) const final
invoked by canChangePersistencyTo to perform the check
void setRemoteUri(const FaceUri &uri)
static constexpr ssize_t MIN_MTU
minimum MTU that may be set on a transport
void setExpirationTime(const time::steady_clock::TimePoint &expirationTime)