Allow socketmodule to compile on NetBSD -current, whose bluetooth API
differs from both Linux and FreeBSD. Accepted by Neal Norwitz.
diff --git a/Misc/ACKS b/Misc/ACKS
index f6803bb..5998bca 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -203,6 +203,7 @@
 Russell Finn
 Nils Fischbeck
 Frederik Fix
+Matt Fleming
 Hernán Martínez Foffani
 Doug Fort
 John Fouhy
diff --git a/Misc/NEWS b/Misc/NEWS
index 663203b..ff46fa4 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -132,6 +132,9 @@
   methods now allow their database parameter to be None as the
   sleepycat API allows.
 
+- Bug #1526460: Fix socketmodule compile on NetBSD as it has a different
+  bluetooth API compared with Linux and FreeBSD.
+
 Tests
 -----
 
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index d07ce35..55539ca 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -367,6 +367,14 @@
 #define _BT_SOCKADDR_MEMB(s, proto) &((s)->sock_addr)
 #define _BT_L2_MEMB(sa, memb) ((sa)->l2cap_##memb)
 #define _BT_RC_MEMB(sa, memb) ((sa)->rfcomm_##memb)
+#elif defined(__NetBSD__)
+#define sockaddr_l2 sockaddr_bt
+#define sockaddr_rc sockaddr_bt
+#define sockaddr_sco sockaddr_bt
+#define _BT_SOCKADDR_MEMB(s, proto) &((s)->sock_addr)
+#define _BT_L2_MEMB(sa, memb) ((sa)->bt_##memb)
+#define _BT_RC_MEMB(sa, memb) ((sa)->bt_##memb)
+#define _BT_SCO_MEMB(sa, memb) ((sa)->bt_##memb)
 #else
 #define _BT_SOCKADDR_MEMB(s, proto) (&((s)->sock_addr).bt_##proto)
 #define _BT_L2_MEMB(sa, memb) ((sa)->l2_##memb)