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:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user