mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-10 22:18:54 +01:00
p2p, refactor: tidy up LookupSubNet()
- consistent param naming between function declaration and definition - brackets, param naming and localvar naming per current standards in doc/developer-notes.md - update/improve doxygen documentation in the declaration - improve comments and other localvar names - constness - named args
This commit is contained in:
@@ -676,40 +676,36 @@ bool ConnectThroughProxy(const proxyType& proxy, const std::string& strDest, uin
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LookupSubNet(const std::string& strSubnet, CSubNet& ret, DNSLookupFn dns_lookup_function)
|
bool LookupSubNet(const std::string& subnet_str, CSubNet& subnet_out, DNSLookupFn dns_lookup_function)
|
||||||
{
|
{
|
||||||
if (!ValidAsCString(strSubnet)) {
|
if (!ValidAsCString(subnet_str)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
size_t slash = strSubnet.find_last_of('/');
|
|
||||||
CNetAddr network;
|
|
||||||
|
|
||||||
std::string strAddress = strSubnet.substr(0, slash);
|
const size_t slash_pos{subnet_str.find_last_of('/')};
|
||||||
if (LookupHost(strAddress, network, false, dns_lookup_function))
|
const std::string str_addr{subnet_str.substr(0, slash_pos)};
|
||||||
{
|
CNetAddr addr;
|
||||||
if (slash != strSubnet.npos)
|
|
||||||
{
|
if (LookupHost(str_addr, addr, /*fAllowLookup=*/false, dns_lookup_function)) {
|
||||||
std::string strNetmask = strSubnet.substr(slash + 1);
|
if (slash_pos != subnet_str.npos) {
|
||||||
uint8_t n;
|
const std::string netmask_str{subnet_str.substr(slash_pos + 1)};
|
||||||
if (ParseUInt8(strNetmask, &n)) {
|
uint8_t netmask;
|
||||||
// If valid number, assume CIDR variable-length subnet masking
|
if (ParseUInt8(netmask_str, &netmask)) {
|
||||||
ret = CSubNet(network, n);
|
// Valid number; assume CIDR variable-length subnet masking.
|
||||||
return ret.IsValid();
|
subnet_out = CSubNet{addr, netmask};
|
||||||
}
|
return subnet_out.IsValid();
|
||||||
else // If not a valid number, try full netmask syntax
|
} else {
|
||||||
{
|
// Invalid number; try full netmask syntax. Never allow lookup for netmask.
|
||||||
CNetAddr netmask;
|
CNetAddr full_netmask;
|
||||||
// Never allow lookup for netmask
|
if (LookupHost(netmask_str, full_netmask, /*fAllowLookup=*/false, dns_lookup_function)) {
|
||||||
if (LookupHost(strNetmask, netmask, false, dns_lookup_function)) {
|
subnet_out = CSubNet{addr, full_netmask};
|
||||||
ret = CSubNet(network, netmask);
|
return subnet_out.IsValid();
|
||||||
return ret.IsValid();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else // Single IP subnet (<ipv4>/32 or <ipv6>/128)
|
// Single IP subnet (<ipv4>/32 or <ipv6>/128).
|
||||||
{
|
subnet_out = CSubNet{addr};
|
||||||
ret = CSubNet(network);
|
return subnet_out.IsValid();
|
||||||
return ret.IsValid();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -169,13 +169,14 @@ CService LookupNumeric(const std::string& name, uint16_t portDefault = 0, DNSLoo
|
|||||||
* Parse and resolve a specified subnet string into the appropriate internal
|
* Parse and resolve a specified subnet string into the appropriate internal
|
||||||
* representation.
|
* representation.
|
||||||
*
|
*
|
||||||
* @param strSubnet A string representation of a subnet of the form `network
|
* @param[in] subnet_str A string representation of a subnet of the form
|
||||||
* address [ "/", ( CIDR-style suffix | netmask ) ]`(e.g.
|
* `network address [ "/", ( CIDR-style suffix | netmask ) ]`
|
||||||
* `2001:db8::/32`, `192.0.2.0/255.255.255.0`, or `8.8.8.8`).
|
* e.g. "2001:db8::/32", "192.0.2.0/255.255.255.0" or "8.8.8.8".
|
||||||
*
|
* @param[out] subnet_out Internal subnet representation, if parsable/resolvable
|
||||||
* @returns Whether the operation succeeded or not.
|
* from `subnet_str`.
|
||||||
|
* @returns whether the operation succeeded or not.
|
||||||
*/
|
*/
|
||||||
bool LookupSubNet(const std::string& strSubnet, CSubNet& subnet, DNSLookupFn dns_lookup_function = g_dns_lookup);
|
bool LookupSubNet(const std::string& subnet_str, CSubNet& subnet_out, DNSLookupFn dns_lookup_function = g_dns_lookup);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a TCP socket in the given address family.
|
* Create a TCP socket in the given address family.
|
||||||
|
|||||||
Reference in New Issue
Block a user