Commit cc89faa3 authored by Sara Golemon's avatar Sara Golemon

Provide backfill s6_addr16 on BSD platforms

Summary: Extend the MacOS s6_addr16 hack to Net/Open/FreeBSD

Closes #106

Reviewed By: @JoelMarcey

Differential Revision: D2182912
parent 75bad626
...@@ -46,8 +46,12 @@ extern "C" { ...@@ -46,8 +46,12 @@ extern "C" {
#include <folly/Conv.h> #include <folly/Conv.h>
#include <folly/Format.h> #include <folly/Format.h>
#if defined(__APPLE__) && !defined(s6_addr16) // BSDish platforms don't provide standard access to s6_addr16
# define s6_addr16 __u6_addr.__u6_addr16 #ifndef s6_addr16
# if defined(__APPLE__) || defined(__FreeBSD__) || \
defined(__NetBSD__) || defined(__OpenBSD__)
# define s6_addr16 __u6_addr.__u6_addr16
# endif
#endif #endif
namespace folly { namespace detail { namespace folly { namespace detail {
......
...@@ -815,6 +815,19 @@ TEST(IPAddress, InvalidBBitAccess) { ...@@ -815,6 +815,19 @@ TEST(IPAddress, InvalidBBitAccess) {
EXPECT_THROW(asV6.getNthLSBit(-1), std::invalid_argument); EXPECT_THROW(asV6.getNthLSBit(-1), std::invalid_argument);
} }
TEST(IPAddress, StringFormat) {
in6_addr a6;
for (int i = 0; i < 8; ++i) {
a6.s6_addr16[i] = htons(0x0123 + ((i%4) * 0x4444));
}
EXPECT_EQ("0123:4567:89ab:cdef:0123:4567:89ab:cdef",
detail::fastIpv6ToString(a6));
in_addr a4;
a4.s_addr = htonl(0x01020304);
EXPECT_EQ("1.2.3.4", detail::fastIpv4ToString(a4));
}
TEST(IPAddress, LongestCommonPrefix) { TEST(IPAddress, LongestCommonPrefix) {
IPAddress ip10("10.0.0.0"); IPAddress ip10("10.0.0.0");
IPAddress ip11("11.0.0.0"); IPAddress ip11("11.0.0.0");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment