1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-23 02:35:57 +01:00

Move Utils::gateway_from_ip into routing utils files

This commit is contained in:
Matias Fontanini
2017-04-30 13:12:39 -07:00
parent 35e65d018c
commit 4e4f7a2390
4 changed files with 26 additions and 27 deletions

View File

@@ -112,19 +112,6 @@ TINS_API HWAddress<6> resolve_hwaddr(const NetworkInterface& iface,
*/
TINS_API HWAddress<6> resolve_hwaddr(IPv4Address ip, PacketSender& sender);
/**
* \brief Finds the gateway's IP address for the given IP
* address.
*
* \param ip The IP address for which the default gateway will
* be searched.
* \param gw_addr This parameter will contain the gateway's IP
* address in case it is found.
*
* \return bool indicating whether the lookup was successfull.
*/
TINS_API bool gateway_from_ip(IPv4Address ip, IPv4Address& gw_addr);
/**
* \brief Converts a PDUType to a string.
* \param pduType The PDUType to be converted.

View File

@@ -133,6 +133,19 @@ TINS_API std::vector<Route6Entry> route6_entries();
*/
TINS_API std::set<std::string> network_interfaces();
/**
* \brief Finds the gateway's IP address for the given IP
* address.
*
* \param ip The IP address for which the default gateway will
* be searched.
* \param gw_addr This parameter will contain the gateway's IP
* address in case it is found.
*
* \return bool indicating whether the lookup was successfull.
*/
TINS_API bool gateway_from_ip(IPv4Address ip, IPv4Address& gw_addr);
} // Utils
} // Tins

View File

@@ -142,20 +142,6 @@ HWAddress<6> resolve_hwaddr(const NetworkInterface& iface,
HWAddress<6> resolve_hwaddr(IPv4Address ip, PacketSender& sender) {
return resolve_hwaddr(sender.default_interface(), ip, sender);
}
bool gateway_from_ip(IPv4Address ip, IPv4Address& gw_addr) {
typedef vector<RouteEntry> entries_type;
entries_type entries;
uint32_t ip_int = ip;
route_entries(back_inserter(entries));
for (entries_type::const_iterator it(entries.begin()); it != entries.end(); ++it) {
if ((ip_int & it->mask) == it->destination) {
gw_addr = it->gateway;
return true;
}
}
return false;
}
string to_string(PDU::PDUType pduType) {
#define ENUM_TEXT(p) case(PDU::p): return #p;

View File

@@ -425,5 +425,18 @@ set<string> network_interfaces() {
}
#endif // _WIN32
bool gateway_from_ip(IPv4Address ip, IPv4Address& gw_addr) {
typedef vector<RouteEntry> entries_type;
entries_type entries = route_entries();
uint32_t ip_int = ip;
for (entries_type::const_iterator it(entries.begin()); it != entries.end(); ++it) {
if ((ip_int & it->mask) == it->destination) {
gw_addr = it->gateway;
return true;
}
}
return false;
}
} // Utils
} // Tins