diff --git a/dlls/iphlpapi/ipstats.c b/dlls/iphlpapi/ipstats.c
index 3a537b11bdf0f522d46023b0b922a221dde93543..fa2826df1962af46718a33118cf48a117eb4ef84 100644
--- a/dlls/iphlpapi/ipstats.c
+++ b/dlls/iphlpapi/ipstats.c
@@ -1145,7 +1145,11 @@ DWORD getArpTable(PMIB_IPNETTABLE *ppIpNetTable, HANDLE heap, DWORD flags)
 
 DWORD getNumUdpEntries(void)
 {
+#if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_NETINET_IN_PCB_H)
+   return getNumWithOneHeader ("net.inet.udp.pcblist");
+#else
   return getNumWithOneHeader("/proc/net/udp");
+#endif
 }
 
 DWORD getUdpTable(PMIB_UDPTABLE *ppUdpTable, HANDLE heap, DWORD flags)