Skip to content

Commit

Permalink
Consider ::ffff:127.0.0.1 as a loopback address
Browse files Browse the repository at this point in the history
cpp-httplib  sets IPV6_V6ONLY to false on it's sockets.
On FreeBSD, this makes all ipv4 addresses get get prefixed with ::ffff:
it makes them IPv6 addresses mapped to v4.

This is a partial fix for #2151. The cli will work again.
Something should probably also be adjusted with the httplib.

If you want to, for example, use the `allowManagementFrom` option in
local.conf
you will need to prefix it with "::ffff:", "::ffff:1.2.3.4"
which is a little surprising and inconsistent between BSD and other OSs.
  • Loading branch information
laduke committed Mar 15, 2024
1 parent acaebbd commit 9bde5b9
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions node/InetAddress.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,20 @@ InetAddress::IpScope InetAddress::ipScope() const
return IP_SCOPE_PRIVATE; // fc00::/7
}
}

// :::ffff:127.0.0.1
// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0x7f, 0, 0, 1
unsigned int k = 0;
while ((!ip[k])&&(k < 9)) {
++k;
}
if (k == 9) {
if (ip[10] == 0xff && ip[11] == 0xff && ip[12] == 0x7f) {
return IP_SCOPE_LOOPBACK;
}
}

k = 0;
while ((!ip[k])&&(k < 15)) {
++k;
}
Expand Down

0 comments on commit 9bde5b9

Please sign in to comment.