25 #include "ndn-cxx/net/impl/linux-if-constants.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);
82 BOOST_ASSERT(!name.empty());
101 if (m_state != state) {
103 onStateChanged(state, m_state);
112 onMtuChanged(mtu, m_mtu);
119 m_etherAddress = address;
125 m_etherBrdAddress = address;
133 return os <<
"unknown";
135 return os <<
"loopback";
137 return os <<
"ether";
147 return os <<
"unknown";
151 return os <<
"no-carrier";
153 return os <<
"dormant";
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";
interface is administratively down
interface can be used to send and receive packets
interface is administratively up but has no carrier
uint32_t getMtu() const
Returns the MTU (maximum transmission unit) of the interface.
void setState(InterfaceState state)
void setMtu(uint32_t mtu)
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.
void setEthernetAddress(const ethernet::Address &address)
#define NDN_LOG_DEBUG(expression)
Log at DEBUG level.
#define NDN_LOG_INIT(name)
Define a non-member log module.
void setEthernetBroadcastAddress(const ethernet::Address &address)
ethernet::Address getEthernetBroadcastAddress() const
Returns the link-layer (Ethernet) broadcast address of the interface.
Represents one network interface attached to the host.
Stores one IP address supported by a network interface.
int getIndex() const
Returns an opaque ID that uniquely identifies the interface on the system.
bool removeNetworkAddress(const NetworkAddress &address)
InterfaceType getType() const
Returns the hardware type of the interface.
void setName(const std::string &name)
void setFlags(uint32_t flags)
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
bool addNetworkAddress(const NetworkAddress &address)
represents an Ethernet hardware address
uint32_t getFlags() const
Returns a bitset of platform-specific flags enabled on the interface.
std::ostream & operator<<(std::ostream &os, AddressScope scope)
void swap(any &x, any &y)
ethernet::Address getEthernetAddress() const
Returns the link-layer (Ethernet) address of the interface.
void setType(InterfaceType type)
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)