diff --git a/ndn-cxx/net/impl/network-monitor-impl-netlink.hpp b/ndn-cxx/net/impl/network-monitor-impl-netlink.hpp index 78501aef..64616a6c 100644 --- a/ndn-cxx/net/impl/network-monitor-impl-netlink.hpp +++ b/ndn-cxx/net/impl/network-monitor-impl-netlink.hpp @@ -37,10 +37,11 @@ namespace ndn::net { -class NetworkMonitorImplNetlink : public NetworkMonitorImpl +class NetworkMonitorImplNetlink final : public NetworkMonitorImpl { public: - /** \brief Initialize netlink socket and start enumerating interfaces. + /** + * \brief Initialize netlink socket and start enumerating interfaces. */ explicit NetworkMonitorImplNetlink(boost::asio::io_service& io); diff --git a/ndn-cxx/net/impl/network-monitor-impl-noop.hpp b/ndn-cxx/net/impl/network-monitor-impl-noop.hpp index d0a0d087..f2f2c416 100644 --- a/ndn-cxx/net/impl/network-monitor-impl-noop.hpp +++ b/ndn-cxx/net/impl/network-monitor-impl-noop.hpp @@ -28,7 +28,7 @@ namespace ndn::net { -class NetworkMonitorImplNoop : public NetworkMonitorImpl +class NetworkMonitorImplNoop final : public NetworkMonitorImpl { public: explicit diff --git a/ndn-cxx/net/impl/network-monitor-impl-osx.cpp b/ndn-cxx/net/impl/network-monitor-impl-osx.cpp index 0b543d7c..44378d58 100644 --- a/ndn-cxx/net/impl/network-monitor-impl-osx.cpp +++ b/ndn-cxx/net/impl/network-monitor-impl-osx.cpp @@ -226,7 +226,13 @@ NetworkMonitorImplOsx::getInterfaceNames() const void NetworkMonitorImplOsx::addNewInterface(const std::string& ifName, const IfAddrs& ifaList) { - shared_ptr interface = makeNetworkInterface(); + // ignore AWDL interfaces (name starting with "awdl" or "llw"), see bug #5074 + if (ifName.rfind("awdl", 0) == 0 || ifName.rfind("llw", 0) == 0) { + NDN_LOG_DEBUG("ignoring " << ifName); + return; + } + + auto interface = makeNetworkInterface(); interface->setName(ifName); interface->setState(getInterfaceState(*interface)); updateInterfaceInfo(*interface, ifaList); @@ -314,12 +320,12 @@ NetworkMonitorImplOsx::updateInterfaceInfo(NetworkInterface& netif, const IfAddr case AF_INET: { addrFamily = AddressFamily::V4; - const sockaddr_in* sin = reinterpret_cast(ifa->ifa_addr); + const auto* sin = reinterpret_cast(ifa->ifa_addr); ip::address_v4::bytes_type bytes; std::copy_n(reinterpret_cast(&sin->sin_addr), bytes.size(), bytes.begin()); ipAddr = ip::address_v4(bytes); - const sockaddr_in* sinMask = reinterpret_cast(ifa->ifa_netmask); + const auto* sinMask = reinterpret_cast(ifa->ifa_netmask); std::copy_n(reinterpret_cast(&sinMask->sin_addr), bytes.size(), bytes.begin()); prefixLength = computePrefixLength(bytes); break; @@ -328,7 +334,7 @@ NetworkMonitorImplOsx::updateInterfaceInfo(NetworkInterface& netif, const IfAddr case AF_INET6: { addrFamily = AddressFamily::V6; - const sockaddr_in6* sin6 = reinterpret_cast(ifa->ifa_addr); + const auto* sin6 = reinterpret_cast(ifa->ifa_addr); ip::address_v6::bytes_type bytes; std::copy_n(reinterpret_cast(&sin6->sin6_addr), bytes.size(), bytes.begin()); ip::address_v6 v6Addr(bytes); @@ -336,14 +342,14 @@ NetworkMonitorImplOsx::updateInterfaceInfo(NetworkInterface& netif, const IfAddr v6Addr.scope_id(if_nametoindex(netif.getName().data())); ipAddr = v6Addr; - const sockaddr_in6* sinMask = reinterpret_cast(ifa->ifa_netmask); + const auto* sinMask = reinterpret_cast(ifa->ifa_netmask); std::copy_n(reinterpret_cast(&sinMask->sin6_addr), bytes.size(), bytes.begin()); prefixLength = computePrefixLength(bytes); break; } case AF_LINK: { - const sockaddr_dl* sdl = reinterpret_cast(ifa->ifa_addr); + const auto* sdl = reinterpret_cast(ifa->ifa_addr); netif.setIndex(sdl->sdl_index); if (sdl->sdl_type == IFT_ETHER && sdl->sdl_alen == ethernet::ADDR_LEN) { @@ -356,6 +362,7 @@ NetworkMonitorImplOsx::updateInterfaceInfo(NetworkInterface& netif, const IfAddr } else { netif.setType(InterfaceType::UNKNOWN); + NDN_LOG_TRACE(netif.getName() << " has unknown type " << sdl->sdl_type); } break; } @@ -365,7 +372,7 @@ NetworkMonitorImplOsx::updateInterfaceInfo(NetworkInterface& netif, const IfAddr netif.setEthernetBroadcastAddress(ethernet::getBroadcastAddress()); if (addrFamily == AddressFamily::V4 && ifa->ifa_broadaddr != nullptr) { - const sockaddr_in* sin = reinterpret_cast(ifa->ifa_broadaddr); + const auto* sin = reinterpret_cast(ifa->ifa_broadaddr); ip::address_v4::bytes_type bytes; std::copy_n(reinterpret_cast(&sin->sin_addr), bytes.size(), bytes.begin()); broadcastAddr = ip::address_v4(bytes); diff --git a/ndn-cxx/net/impl/network-monitor-impl-osx.hpp b/ndn-cxx/net/impl/network-monitor-impl-osx.hpp index 099ae8b0..f1866cab 100644 --- a/ndn-cxx/net/impl/network-monitor-impl-osx.hpp +++ b/ndn-cxx/net/impl/network-monitor-impl-osx.hpp @@ -42,12 +42,12 @@ namespace ndn::net { class IfAddrs; -class NetworkMonitorImplOsx : public NetworkMonitorImpl +class NetworkMonitorImplOsx final : public NetworkMonitorImpl { public: NetworkMonitorImplOsx(boost::asio::io_service& io); - ~NetworkMonitorImplOsx(); + ~NetworkMonitorImplOsx() final; uint32_t getCapabilities() const final diff --git a/ndn-cxx/net/network-monitor-stub.cpp b/ndn-cxx/net/network-monitor-stub.cpp index bb8e49ec..1c079c58 100644 --- a/ndn-cxx/net/network-monitor-stub.cpp +++ b/ndn-cxx/net/network-monitor-stub.cpp @@ -31,7 +31,7 @@ namespace ndn::net { -class NetworkMonitorImplStub : public NetworkMonitorImpl +class NetworkMonitorImplStub final : public NetworkMonitorImpl { public: explicit