diff --git a/libc/Android.mk b/libc/Android.mk
index 683dfa9..d94dce2 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -39,7 +39,6 @@
 # Define the common source files for all the libc instances
 # =========================================================
 libc_common_src_files := \
-    bionic/bindresvport.c \
     bionic/ether_aton.c \
     bionic/ether_ntoa.c \
     bionic/fts.c \
@@ -173,6 +172,7 @@
     bionic/mremap.cpp \
     bionic/NetdClientDispatch.cpp \
     bionic/net_if.cpp \
+    bionic/netinet_in.cpp \
     bionic/open.cpp \
     bionic/pathconf.cpp \
     bionic/pause.cpp \
diff --git a/libc/bionic/bindresvport.c b/libc/bionic/netinet_in.cpp
similarity index 63%
rename from libc/bionic/bindresvport.c
rename to libc/bionic/netinet_in.cpp
index 5d9ad2b..dfa5d8d 100644
--- a/libc/bionic/bindresvport.c
+++ b/libc/bionic/netinet_in.cpp
@@ -25,48 +25,46 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
+#include <netinet/in.h>
+
 #include <errno.h>
 #include <sys/types.h>
 #include <sys/socket.h>
-#include <netinet/in.h>
 #include <string.h>
 #include <unistd.h>
 
-#define START_PORT	600
-#define END_PORT	IPPORT_RESERVED
-#define NUM_PORTS	(END_PORT - START_PORT)
+constexpr int START_PORT = 600;
+constexpr int END_PORT = IPPORT_RESERVED;
+constexpr int NUM_PORTS = (END_PORT - START_PORT);
 
-int bindresvport(int sd, struct sockaddr_in *sin)
-{
-    static short        port;
-    struct sockaddr_in  sin0;
-    int                 nn, ret;
+int bindresvport(int sd, struct sockaddr_in* sin) {
+  sockaddr_in sin0;
+  if (sin == nullptr) {
+    memset(&sin0, 0, sizeof(sin0));
+    sin = &sin0;
+    sin->sin_family = AF_INET;
+  }
 
-    if (sin == NULL) {
-        sin = &sin0;
-        memset( sin, 0, sizeof *sin );
-        sin->sin_family = AF_INET;
-    } else if (sin->sin_family != AF_INET) {
-        errno = EPFNOSUPPORT;
-        return -1;
-    }
+  if (sin->sin_family != AF_INET) {
+    errno = EPFNOSUPPORT;
+    return -1;
+  }
 
-    if (port == 0) {
-        port = START_PORT + (getpid() % NUM_PORTS);
-    }
+  // TODO: thread safety!
+  static short port;
+  if (port == 0) {
+    port = START_PORT + (getpid() % NUM_PORTS);
+  }
 
-    for (nn = NUM_PORTS; nn > 0; nn--, port++) 
-    {
-        if (port == END_PORT)
-            port = START_PORT;
-
-        sin->sin_port = htons(port);
-        do {
-            ret = bind(sd, (struct sockaddr*)sin, sizeof(*sin));
-        } while (ret < 0 && errno == EINTR);
-
-        if (!ret)
-            break;
-    }
-    return ret;
+  for (size_t i = NUM_PORTS; i > 0; i--, port++) {
+    if (port == END_PORT) port = START_PORT;
+    sin->sin_port = htons(port);
+    int rc = TEMP_FAILURE_RETRY(bind(sd, reinterpret_cast<sockaddr*>(sin), sizeof(*sin)));
+    if (rc >= 0) return rc;
+  }
+  return -1;
 }
+
+const in6_addr in6addr_any = IN6ADDR_ANY_INIT;
+const in6_addr in6addr_loopback = IN6ADDR_LOOPBACK_INIT;
diff --git a/libc/include/netinet/in.h b/libc/include/netinet/in.h
index 44c7fc1..5f3d11f 100644
--- a/libc/include/netinet/in.h
+++ b/libc/include/netinet/in.h
@@ -47,10 +47,10 @@
 typedef uint16_t in_port_t;
 typedef uint32_t in_addr_t;
 
-extern int bindresvport (int sd, struct sockaddr_in *sin);
+int bindresvport(int, struct sockaddr_in*);
 
-static const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
-static const struct in6_addr in6addr_loopback = IN6ADDR_LOOPBACK_INIT;
+extern const struct in6_addr in6addr_any;
+extern const struct in6_addr in6addr_loopback;
 
 __END_DECLS
 
diff --git a/libc/libc.arm.brillo.map b/libc/libc.arm.brillo.map
index 01541a9..80a88bd 100644
--- a/libc/libc.arm.brillo.map
+++ b/libc/libc.arm.brillo.map
@@ -1240,6 +1240,8 @@
     getifaddrs;
     if_freenameindex;
     if_nameindex;
+    in6addr_any;
+    in6addr_loopback;
     lockf;
     lockf64;
     preadv;
diff --git a/libc/libc.arm.map b/libc/libc.arm.map
index 25f53c9..18e51d4 100644
--- a/libc/libc.arm.map
+++ b/libc/libc.arm.map
@@ -1240,6 +1240,8 @@
     getifaddrs;
     if_freenameindex;
     if_nameindex;
+    in6addr_any;
+    in6addr_loopback;
     lockf;
     lockf64;
     preadv;
diff --git a/libc/libc.arm64.map b/libc/libc.arm64.map
index 93bd94c..e1ccd4e 100644
--- a/libc/libc.arm64.map
+++ b/libc/libc.arm64.map
@@ -1163,6 +1163,8 @@
     getifaddrs;
     if_freenameindex;
     if_nameindex;
+    in6addr_any;
+    in6addr_loopback;
     lockf;
     lockf64;
     preadv;
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index dd0b9c0..b87a5e3 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -1266,6 +1266,8 @@
     getifaddrs;
     if_freenameindex;
     if_nameindex;
+    in6addr_any;
+    in6addr_loopback;
     lockf;
     lockf64;
     preadv;
diff --git a/libc/libc.mips.brillo.map b/libc/libc.mips.brillo.map
index 287c214..57dfd50 100644
--- a/libc/libc.mips.brillo.map
+++ b/libc/libc.mips.brillo.map
@@ -1224,6 +1224,8 @@
     getifaddrs;
     if_freenameindex;
     if_nameindex;
+    in6addr_any;
+    in6addr_loopback;
     lockf;
     lockf64;
     preadv;
diff --git a/libc/libc.mips.map b/libc/libc.mips.map
index 5c15a42..ed72fd4 100644
--- a/libc/libc.mips.map
+++ b/libc/libc.mips.map
@@ -1224,6 +1224,8 @@
     getifaddrs;
     if_freenameindex;
     if_nameindex;
+    in6addr_any;
+    in6addr_loopback;
     lockf;
     lockf64;
     preadv;
diff --git a/libc/libc.mips64.map b/libc/libc.mips64.map
index 93bd94c..e1ccd4e 100644
--- a/libc/libc.mips64.map
+++ b/libc/libc.mips64.map
@@ -1163,6 +1163,8 @@
     getifaddrs;
     if_freenameindex;
     if_nameindex;
+    in6addr_any;
+    in6addr_loopback;
     lockf;
     lockf64;
     preadv;
diff --git a/libc/libc.x86.brillo.map b/libc/libc.x86.brillo.map
index 95fd7b8..3dcf1ea 100644
--- a/libc/libc.x86.brillo.map
+++ b/libc/libc.x86.brillo.map
@@ -1223,6 +1223,8 @@
     getifaddrs;
     if_freenameindex;
     if_nameindex;
+    in6addr_any;
+    in6addr_loopback;
     lockf;
     lockf64;
     preadv;
diff --git a/libc/libc.x86.map b/libc/libc.x86.map
index 6a1acba..1e44e2a 100644
--- a/libc/libc.x86.map
+++ b/libc/libc.x86.map
@@ -1223,6 +1223,8 @@
     getifaddrs;
     if_freenameindex;
     if_nameindex;
+    in6addr_any;
+    in6addr_loopback;
     lockf;
     lockf64;
     preadv;
diff --git a/libc/libc.x86_64.map b/libc/libc.x86_64.map
index 93bd94c..e1ccd4e 100644
--- a/libc/libc.x86_64.map
+++ b/libc/libc.x86_64.map
@@ -1163,6 +1163,8 @@
     getifaddrs;
     if_freenameindex;
     if_nameindex;
+    in6addr_any;
+    in6addr_loopback;
     lockf;
     lockf64;
     preadv;
