diff --git a/quiche/quic/core/quic_udp_socket_posix.cc b/quiche/quic/core/quic_udp_socket_posix.cc
index 248fee3..5335723 100644
--- a/quiche/quic/core/quic_udp_socket_posix.cc
+++ b/quiche/quic/core/quic_udp_socket_posix.cc
@@ -2,6 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#if defined(__APPLE__) && !defined(__APPLE_USE_RFC_3542)
+// This must be defined before including any system headers.
+#define __APPLE_USE_RFC_3542
+#endif  // defined(__APPLE__) && !defined(__APPLE_USE_RFC_3542)
+
 #include <arpa/inet.h>
 #include <fcntl.h>
 #include <net/if.h>
diff --git a/quiche/quic/masque/masque_utils.cc b/quiche/quic/masque/masque_utils.cc
index b432a7a..548f62b 100644
--- a/quiche/quic/masque/masque_utils.cc
+++ b/quiche/quic/masque/masque_utils.cc
@@ -4,10 +4,12 @@
 
 #include "quiche/quic/masque/masque_utils.h"
 
+#if defined(__linux__)
 #include <fcntl.h>
 #include <linux/if.h>
 #include <linux/if_tun.h>
 #include <sys/ioctl.h>
+#endif  // defined(__linux__)
 
 namespace quic {
 
@@ -48,6 +50,7 @@
   return os;
 }
 
+#if defined(__linux__)
 int CreateTunInterface(const QuicIpAddress& client_address, bool server) {
   if (!client_address.IsIPv4()) {
     QUIC_LOG(ERROR) << "CreateTunInterface currently only supports IPv4";
@@ -136,5 +139,12 @@
   }
   return -1;
 }
+#else
+int CreateTunInterface(const QuicIpAddress& /*client_address*/,
+                       bool /*server*/) {
+  // Unsupported.
+  return -1;
+}
+#endif  // defined(__linux__)
 
 }  // namespace quic
diff --git a/quiche/quic/tools/quic_server.cc b/quiche/quic/tools/quic_server.cc
index aace378..738d8c9 100644
--- a/quiche/quic/tools/quic_server.cc
+++ b/quiche/quic/tools/quic_server.cc
@@ -125,9 +125,8 @@
   overflow_supported_ = socket_api.EnableDroppedPacketCount(fd_);
   socket_api.EnableReceiveTimestamp(fd_);
 
-  sockaddr_storage addr = address.generic_address();
-  int rc = bind(fd_, reinterpret_cast<sockaddr*>(&addr), sizeof(addr));
-  if (rc < 0) {
+  bool success = socket_api.Bind(fd_, address);
+  if (!success) {
     QUIC_LOG(ERROR) << "Bind failed: " << strerror(errno);
     return false;
   }
diff --git a/quiche/quic/tools/quic_server_test.cc b/quiche/quic/tools/quic_server_test.cc
index 26075a1..facd42e 100644
--- a/quiche/quic/tools/quic_server_test.cc
+++ b/quiche/quic/tools/quic_server_test.cc
@@ -146,18 +146,21 @@
           DoAll(testing::Assign(&more_chlos, false), testing::Return(false)));
 
   // Send a packet to trigger epoll event.
-  int fd = socket(
-      AddressFamilyUnderTest() == IpAddressFamily::IP_V4 ? AF_INET : AF_INET6,
-      SOCK_DGRAM | SOCK_NONBLOCK, IPPROTO_UDP);
-  ASSERT_LT(0, fd);
+  QuicUdpSocketApi socket_api;
+  SocketFd fd =
+      socket_api.Create(server_address_.host().AddressFamilyToInt(),
+                        /*receive_buffer_size =*/kDefaultSocketReceiveBuffer,
+                        /*send_buffer_size =*/kDefaultSocketReceiveBuffer);
+  ASSERT_NE(fd, kQuicInvalidSocketFd);
 
   char buf[1024];
   memset(buf, 0, ABSL_ARRAYSIZE(buf));
-  sockaddr_storage storage = server_address_.generic_address();
-  int rc = sendto(fd, buf, ABSL_ARRAYSIZE(buf), 0,
-                  reinterpret_cast<sockaddr*>(&storage), sizeof(storage));
-  if (rc < 0) {
-    QUIC_DLOG(INFO) << errno << " " << strerror(errno);
+  QuicUdpPacketInfo packet_info;
+  packet_info.SetPeerAddress(server_address_);
+  WriteResult result =
+      socket_api.WritePacket(fd, buf, sizeof(buf), packet_info);
+  if (result.status != WRITE_STATUS_OK) {
+    QUIC_LOG(ERROR) << "Write error for UDP packet: " << result.error_code;
   }
 
   while (more_chlos) {
