From a94f3676c3acba22da888014f2189ff33588208b Mon Sep 17 00:00:00 2001 From: Davide Pesavento Date: Thu, 18 May 2017 01:18:39 -0400 Subject: [PATCH] face: MulticastEthernetTransport: remove promiscuous mode fallback Change-Id: I040704577e66951ab5d1298ac4f99d98af11f809 Refs: #4081 --- daemon/face/multicast-ethernet-transport.cpp | 17 +++++++---------- daemon/face/multicast-ethernet-transport.hpp | 3 +-- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/daemon/face/multicast-ethernet-transport.cpp b/daemon/face/multicast-ethernet-transport.cpp index 9f1127c8..c8c9b2c3 100644 --- a/daemon/face/multicast-ethernet-transport.cpp +++ b/daemon/face/multicast-ethernet-transport.cpp @@ -26,8 +26,6 @@ #include "multicast-ethernet-transport.hpp" #include "core/global-io.hpp" -#include - #include // for errno #include // for memcpy(), strerror(), strncpy() #include // for struct ifreq @@ -78,13 +76,12 @@ MulticastEthernetTransport::MulticastEthernetTransport(const NetworkInterfaceInf m_srcAddress.toString().data()); m_pcap.setPacketFilter(filter); - if (!m_destAddress.isBroadcast() && !joinMulticastGroup()) { - NFD_LOG_FACE_WARN("Falling back to promiscuous mode"); - pcap_set_promisc(m_pcap, 1); - } + BOOST_ASSERT(m_destAddress.isMulticast()); + if (!m_destAddress.isBroadcast()) + joinMulticastGroup(); } -bool +void MulticastEthernetTransport::joinMulticastGroup() { #if defined(__linux__) @@ -96,7 +93,7 @@ MulticastEthernetTransport::joinMulticastGroup() if (::setsockopt(m_socket.native_handle(), SOL_PACKET, PACKET_ADD_MEMBERSHIP, &mr, sizeof(mr)) == 0) - return true; // success + return; // success NFD_LOG_FACE_WARN("setsockopt(PACKET_ADD_MEMBERSHIP) failed: " << std::strerror(errno)); #endif @@ -141,12 +138,12 @@ MulticastEthernetTransport::joinMulticastGroup() #endif if (::ioctl(fd, SIOCADDMULTI, &ifr) == 0) - return true; // success + return; // success NFD_LOG_FACE_WARN("ioctl(SIOCADDMULTI) failed: " << std::strerror(errno)); #endif - return false; + BOOST_THROW_EXCEPTION(Error("Failed to join multicast group")); } } // namespace face diff --git a/daemon/face/multicast-ethernet-transport.hpp b/daemon/face/multicast-ethernet-transport.hpp index 6ef893b3..b89e88b8 100644 --- a/daemon/face/multicast-ethernet-transport.hpp +++ b/daemon/face/multicast-ethernet-transport.hpp @@ -47,9 +47,8 @@ public: private: /** * @brief Enables receiving frames addressed to our MAC multicast group - * @return true if successful, false otherwise */ - bool + void joinMulticastGroup(); private: