Base class for Ethernet-based Transports. More...
#include <ethernet-transport.hpp>
Classes | |
class | Error |
Public Member Functions | |
void | receivePayload (const uint8_t *payload, size_t length, const ethernet::Address &sender) |
Processes the payload of an incoming frame. More... | |
Public Member Functions inherited from nfd::face::Transport | |
Transport () | |
constructor More... | |
virtual | ~Transport () |
void | setFaceAndLinkService (Face &face, LinkService &service) |
set Face and LinkService for Transport More... | |
const Face * | getFace () const |
const LinkService * | getLinkService () const |
LinkService * | getLinkService () |
virtual const Counters & | getCounters () const |
void | close () |
request the transport to be closed More... | |
void | send (Packet &&packet) |
send a link-layer packet More... | |
FaceUri | getLocalUri () const |
FaceUri | getRemoteUri () const |
ndn::nfd::FaceScope | getScope () const |
ndn::nfd::FacePersistency | getPersistency () const |
bool | canChangePersistencyTo (ndn::nfd::FacePersistency newPersistency) const |
check whether the face persistency can be changed to newPersistency More... | |
void | setPersistency (ndn::nfd::FacePersistency newPersistency) |
changes face persistency setting More... | |
ndn::nfd::LinkType | getLinkType () const |
ssize_t | getMtu () const |
TransportState | getState () const |
time::steady_clock::TimePoint | getExpirationTime () const |
Protected Member Functions | |
EthernetTransport (const ndn::net::NetworkInterface &localEndpoint, const ethernet::Address &remoteEndpoint) | |
void | doClose () final |
performs Transport specific operations to close the transport More... | |
bool | hasRecentlyReceived () const |
void | resetRecentlyReceived () |
Protected Member Functions inherited from nfd::face::Transport | |
void | receive (Packet &&packet) |
receive a link-layer packet More... | |
void | setLocalUri (const FaceUri &uri) |
void | setRemoteUri (const FaceUri &uri) |
void | setScope (ndn::nfd::FaceScope scope) |
void | setLinkType (ndn::nfd::LinkType linkType) |
void | setMtu (ssize_t mtu) |
void | setState (TransportState newState) |
set transport state More... | |
void | setExpirationTime (const time::steady_clock::TimePoint &expirationTime) |
virtual bool | canChangePersistencyToImpl (ndn::nfd::FacePersistency newPersistency) const |
invoked by canChangePersistencyTo to perform the check More... | |
virtual void | afterChangePersistency (ndn::nfd::FacePersistency oldPersistency) |
invoked after the persistency has been changed More... | |
Protected Attributes | |
boost::asio::posix::stream_descriptor | m_socket |
PcapHelper | m_pcap |
ethernet::Address | m_srcAddress |
ethernet::Address | m_destAddress |
std::string | m_interfaceName |
Protected Attributes inherited from nfd::face::TransportCounters | |
PacketCounter | nInPackets |
count of incoming packets More... | |
PacketCounter | nOutPackets |
count of outgoing packets More... | |
ByteCounter | nInBytes |
total incoming bytes More... | |
ByteCounter | nOutBytes |
total outgoing bytes More... | |
Additional Inherited Members | |
Public Types inherited from nfd::face::Transport | |
typedef uint64_t | EndpointId |
identifies an endpoint on the link More... | |
typedef TransportCounters | Counters |
counters provided by Transport More... | |
Public Attributes inherited from nfd::face::Transport | |
signal::Signal< Transport, TransportState, TransportState > | afterStateChange |
signals when transport state changes More... | |
Base class for Ethernet-based Transports.
Definition at line 40 of file ethernet-transport.hpp.
|
protected |
Definition at line 40 of file ethernet-transport.cpp.
References nfd::face::PcapHelper::activate(), nfd::face::PcapHelper::getFd(), m_pcap, and m_socket.
Referenced by nfd::face::EthernetTransport::Error::Error().
void nfd::face::EthernetTransport::receivePayload | ( | const uint8_t * | payload, |
size_t | length, | ||
const ethernet::Address & | sender | ||
) |
Processes the payload of an incoming frame.
payload | Pointer to the first byte of data after the Ethernet header |
length | Payload length |
sender | Sender address |
Definition at line 178 of file ethernet-transport.cpp.
References ndn::ethernet::ADDR_LEN, doClose(), ndn::nfd::FACE_PERSISTENCY_PERMANENT, nfd::face::FAILED, ndn::Block::fromBuffer(), nfd::face::Transport::getPersistency(), ndn::ethernet::Address::isMulticast(), m_destAddress, NFD_LOG_FACE_DEBUG, NFD_LOG_FACE_ERROR, NFD_LOG_FACE_TRACE, NFD_LOG_FACE_WARN, nfd::face::Transport::receive(), nfd::face::Transport::Packet::remoteEndpoint, and nfd::face::Transport::setState().
Referenced by doClose(), nfd::face::EthernetTransport::Error::Error(), and nfd::face::EthernetChannel::listen().
|
finalprotectedvirtual |
performs Transport specific operations to close the transport
This is invoked once by close()
after changing state to CLOSING. It will not be invoked by Transport class if the transport is already CLOSING or CLOSED.
When the cleanup procedure is complete, this method should change state to CLOSED. This transition can happen synchronously or asynchronously.
Implements nfd::face::Transport.
Definition at line 64 of file ethernet-transport.cpp.
References nfd::ethernet::checkFrameHeader(), nfd::face::PcapHelper::close(), nfd::face::CLOSED, nfd::face::CLOSING, ndn::ethernet::ETHERTYPE_NDN, nfd::face::FAILED, nfd::getGlobalIoService(), nfd::face::PcapHelper::getLastError(), nfd::face::PcapHelper::getNDropped(), nfd::face::Transport::getState(), ndn::ethernet::HDR_LEN, ndn::ethernet::Address::isMulticast(), m_destAddress, m_pcap, m_socket, m_srcAddress, ndn::ethernet::MIN_DATA_LEN, NFD_LOG_FACE_DEBUG, NFD_LOG_FACE_TRACE, NFD_LOG_FACE_WARN, websocketpp::transport::error::operation_aborted, nfd::detail::SimulatorIo::post(), nfd::face::PcapHelper::readNextPacket(), receivePayload(), nfd::face::Transport::setState(), ndn::Block::size(), ndn::to_string(), and ndn::ethernet::TYPE_LEN.
Referenced by nfd::face::EthernetTransport::Error::Error(), and receivePayload().
|
inlineprotected |
Definition at line 71 of file ethernet-transport.hpp.
Referenced by nfd::face::UnicastEthernetTransport::afterChangePersistency().
|
inlineprotected |
Definition at line 77 of file ethernet-transport.hpp.
Referenced by nfd::face::UnicastEthernetTransport::afterChangePersistency().
|
protected |
Definition at line 102 of file ethernet-transport.hpp.
Referenced by doClose(), EthernetTransport(), and nfd::face::MulticastEthernetTransport::MulticastEthernetTransport().
|
protected |
Definition at line 103 of file ethernet-transport.hpp.
Referenced by doClose(), EthernetTransport(), nfd::face::MulticastEthernetTransport::MulticastEthernetTransport(), and nfd::face::UnicastEthernetTransport::UnicastEthernetTransport().
|
protected |
Definition at line 104 of file ethernet-transport.hpp.
Referenced by doClose(), nfd::face::MulticastEthernetTransport::MulticastEthernetTransport(), and nfd::face::UnicastEthernetTransport::UnicastEthernetTransport().
|
protected |
Definition at line 105 of file ethernet-transport.hpp.
Referenced by doClose(), nfd::face::MulticastEthernetTransport::MulticastEthernetTransport(), receivePayload(), and nfd::face::UnicastEthernetTransport::UnicastEthernetTransport().
|
protected |
Definition at line 106 of file ethernet-transport.hpp.
Referenced by nfd::face::MulticastEthernetTransport::MulticastEthernetTransport(), and nfd::face::UnicastEthernetTransport::UnicastEthernetTransport().