summaryrefslogtreecommitdiffstats
path: root/net/dns
diff options
context:
space:
mode:
authorvitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-26 04:37:51 +0000
committervitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-26 04:37:51 +0000
commit152f9ae8bdf8e828d016d9d1e58530bc8311bb70 (patch)
treeceae12c82dfc0c5dc34a8087106000db179bdb7c /net/dns
parent8609be26ac387460e7035a8422260cdc29486e52 (diff)
downloadchromium_src-152f9ae8bdf8e828d016d9d1e58530bc8311bb70.zip
chromium_src-152f9ae8bdf8e828d016d9d1e58530bc8311bb70.tar.gz
chromium_src-152f9ae8bdf8e828d016d9d1e58530bc8311bb70.tar.bz2
Revert 225303 "Added NetworkInterface::network_prefix."
> Added NetworkInterface::network_prefix. > > BUG=295997 > NOTRY=true > > Review URL: https://codereview.chromium.org/23726043 TBR=vitalybuka@chromium.org Review URL: https://codereview.chromium.org/24530007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@225326 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/dns')
-rw-r--r--net/dns/address_sorter_posix.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/net/dns/address_sorter_posix.cc b/net/dns/address_sorter_posix.cc
index 514a00f..8d87774 100644
--- a/net/dns/address_sorter_posix.cc
+++ b/net/dns/address_sorter_posix.cc
@@ -175,6 +175,30 @@ AddressSorterPosix::PolicyEntry kDefaultIPv4ScopeTable[] = {
{ { }, 0, AddressSorterPosix::SCOPE_GLOBAL },
};
+// Returns number of matching initial bits between the addresses |a1| and |a2|.
+unsigned CommonPrefixLength(const IPAddressNumber& a1,
+ const IPAddressNumber& a2) {
+ DCHECK_EQ(a1.size(), a2.size());
+ for (size_t i = 0; i < a1.size(); ++i) {
+ unsigned diff = a1[i] ^ a2[i];
+ if (!diff)
+ continue;
+ for (unsigned j = 0; j < CHAR_BIT; ++j) {
+ if (diff & (1 << (CHAR_BIT - 1)))
+ return i * CHAR_BIT + j;
+ diff <<= 1;
+ }
+ NOTREACHED();
+ }
+ return a1.size() * CHAR_BIT;
+}
+
+// Computes the number of leading 1-bits in |mask|.
+unsigned MaskPrefixLength(const IPAddressNumber& mask) {
+ IPAddressNumber all_ones(mask.size(), 0xFF);
+ return CommonPrefixLength(mask, all_ones);
+}
+
struct DestinationInfo {
IPAddressNumber address;
AddressSorterPosix::AddressScope scope;