26 #include "../util/logger.hpp" 27 #include "../util/string-helper.hpp" 36 NetworkInterface::NetworkInterface()
48 if (!address.
getIp().is_unspecified()) {
51 bool isNew = m_netAddresses.erase(address) == 0;
52 m_netAddresses.insert(address);
54 NDN_LOG_DEBUG(
"added address " << address <<
" to " << m_name);
55 onAddressAdded(address);
65 if (m_netAddresses.erase(address) > 0) {
66 NDN_LOG_DEBUG(
"removed address " << address <<
" from " << m_name);
67 onAddressRemoved(address);
74 NetworkInterface::setIndex(
int index)
80 NetworkInterface::setName(
const std::string&
name)
82 BOOST_ASSERT(!name.empty());
93 NetworkInterface::setFlags(uint32_t flags)
101 if (m_state != state) {
102 std::swap(m_state, state);
103 onStateChanged(state, m_state);
108 NetworkInterface::setMtu(uint32_t mtu)
111 std::swap(m_mtu, mtu);
112 onMtuChanged(mtu, m_mtu);
119 m_etherAddress = address;
125 m_etherBrdAddress = address;
133 return os <<
"unknown";
134 case InterfaceType::LOOPBACK:
135 return os <<
"loopback";
136 case InterfaceType::ETHERNET:
137 return os <<
"ether";
147 return os <<
"unknown";
148 case InterfaceState::DOWN:
150 case InterfaceState::NO_CARRIER:
151 return os <<
"no-carrier";
152 case InterfaceState::DORMANT:
153 return os <<
"dormant";
154 case InterfaceState::RUNNING:
155 return os <<
"running";
161 printFlag(std::ostream& os, uint32_t& flags, uint32_t flagVal,
const char* flagStr)
163 if (flags & flagVal) {
165 os << flagStr << (flags ?
"," :
"");
176 #define PRINT_IFF(flag) printFlag(os, flags, IFF_##flag, #flag) 182 #if defined(IFF_NOTRAILERS) 190 #if defined(__linux__) 196 #elif defined(__APPLE__) || defined(__FreeBSD__) 203 #if defined(__FreeBSD__) 212 #if defined(__linux__) 213 #define PRINT_IF_FLAG(flag) printFlag(os, flags, linux_if::FLAG_##flag, #flag) 214 PRINT_IF_FLAG(LOWER_UP);
225 os <<
" state " << netif.
getState() <<
" mtu " << netif.
getMtu() <<
"\n" 230 os <<
" " << (addr.getFamily() == AddressFamily::V4 ?
"inet " :
"inet6 ") << addr;
231 if (netif.
canBroadcast() && !addr.getBroadcast().is_unspecified())
232 os <<
" brd " << addr.getBroadcast();
233 os <<
" scope " << addr.getScope() <<
"\n";
Copyright (c) 2011-2015 Regents of the University of California.
interface can be used to send and receive packets
uint32_t getMtu() const
Returns the MTU (maximum transmission unit) of the interface.
Helper class to convert a number to hexadecimal format, for use with stream insertion operators...
boost::asio::ip::address getIp() const
Returns the IP address (v4 or v6)
InterfaceType
Indicates the hardware type of a network interface.
InterfaceState
Indicates the state of a network interface.
ethernet::Address getEthernetBroadcastAddress() const
Returns the link-layer (Ethernet) broadcast address of the interface.
std::ostream & operator<<(std::ostream &os, const NetworkInterface &netif)
Represents one network interface attached to the host.
#define NDN_LOG_INIT(name)
declare a log module
Stores one IP address supported by a network interface.
#define NDN_LOG_DEBUG(expression)
int getIndex() const
Returns an opaque ID that uniquely identifies the interface on the system.
InterfaceType getType() const
Returns the hardware type of the interface.
std::string getName() const
Returns the name of the interface, unique on the system.
const std::set< NetworkAddress > & getNetworkAddresses() const
Returns a list of all network-layer addresses present on the interface.
interface has a carrier but it cannot send or receive normal user traffic yet
represents an Ethernet hardware address
uint32_t getFlags() const
Returns a bitset of platform-specific flags enabled on the interface.
ethernet::Address getEthernetAddress() const
Returns the link-layer (Ethernet) address of the interface.
InterfaceState getState() const
Returns the current state of the interface.
bool canBroadcast() const
Returns true if the interface supports broadcast communication.
static void printFlag(std::ostream &os, uint32_t &flags, uint32_t flagVal, const char *flagStr)