diff --git a/include/tins/network_interface.h b/include/tins/network_interface.h index 3705703..b31308d 100644 --- a/include/tins/network_interface.h +++ b/include/tins/network_interface.h @@ -201,6 +201,31 @@ public: */ bool is_up() const; + /** + * \brief Retrieves the hardware address for this interface. + */ + address_type hw_address() const; + + /** + * \brief Retrieves the IPv4 address for this interface. + */ + IPv4Address ipv4_address() const; + + /** + * \brief Retrieves the IPv4 netmask for this interface. + */ + IPv4Address ipv4_mask() const; + + /** + * \brief Retrieves the broadcast IPv4 address for this interface. + */ + IPv4Address ipv4_broadcast() const; + + /** + * \brief Retrieves the IPv6 addresses for this interface. + */ + std::vector ipv6_addresses() const; + /** * \brief Compares this interface for equality. * diff --git a/src/network_interface.cpp b/src/network_interface.cpp index 3fb5449..3f4264b 100644 --- a/src/network_interface.cpp +++ b/src/network_interface.cpp @@ -319,11 +319,31 @@ NetworkInterface::Info NetworkInterface::info() const { } bool NetworkInterface::is_loopback() const { - return addresses().ip_addr.is_loopback(); + return info().ip_addr.is_loopback(); } bool NetworkInterface::is_up() const { - return addresses().is_up; + return info().is_up; +} + +NetworkInterface::address_type NetworkInterface::hw_address() const { + return info().hw_addr; +} + +IPv4Address NetworkInterface::ipv4_address() const { + return info().ip_addr; +} + +IPv4Address NetworkInterface::ipv4_mask() const { + return info().netmask; +} + +IPv4Address NetworkInterface::ipv4_broadcast() const { + return info().bcast_addr; +} + +vector NetworkInterface::ipv6_addresses() const { + return info().ipv6_addrs; } NetworkInterface::id_type NetworkInterface::resolve_index(const char* name) {