]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-30512: Add CAN Socket support for NetBSD (GH-30066)
authorThomas Klausner <tk@giga.or.at>
Fri, 21 Jan 2022 07:44:05 +0000 (08:44 +0100)
committerGitHub <noreply@github.com>
Fri, 21 Jan 2022 07:44:05 +0000 (09:44 +0200)
Doc/library/socket.rst
Doc/whatsnew/3.11.rst
Misc/NEWS.d/next/Core and Builtins/2021-12-12-00-49-19.bpo-30512.nU9E9V.rst [new file with mode: 0644]
Modules/socketmodule.c
Modules/socketmodule.h
configure
configure.ac
pyconfig.h.in

index d6edc057f5e9cce3df68031ee31f49108c9041ec..679631a7390928d1678a2632dddb9797f662769f 100755 (executable)
@@ -396,10 +396,13 @@ Constants
    Many constants of these forms, documented in the Linux documentation, are
    also defined in the socket module.
 
-   .. availability:: Linux >= 2.6.25.
+   .. availability:: Linux >= 2.6.25, NetBSD >= 8.
 
    .. versionadded:: 3.3
 
+   .. versionchanged:: 3.11
+      NetBSD support was added.
+
 .. data:: CAN_BCM
           CAN_BCM_*
 
index 5563e3d84de6d1a27a7d4491feb7d95429f1afd3..ad421b16fbac3af281216baed6f6788e1424258a 100644 (file)
@@ -264,6 +264,13 @@ os
   (Contributed by Dong-hee Na in :issue:`44611`.)
 
 
+socket
+------
+
+* Add CAN Socket support for NetBSD.
+  (Contributed by Thomas Klausner in :issue:`30512`.)
+
+
 sqlite3
 -------
 
diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-12-12-00-49-19.bpo-30512.nU9E9V.rst b/Misc/NEWS.d/next/Core and Builtins/2021-12-12-00-49-19.bpo-30512.nU9E9V.rst
new file mode 100644 (file)
index 0000000..da2ce12
--- /dev/null
@@ -0,0 +1 @@
+Add CAN Socket support for NetBSD.
index 0e275639967c2957264774789a0007c664b53b08..1c8ef1eb3b5b34ce4f7082acdc6a188711890b48 100644 (file)
@@ -7703,7 +7703,7 @@ PyInit__socket(void)
     PyModule_AddIntMacro(m, SOL_CAN_RAW);
     PyModule_AddIntMacro(m, CAN_RAW);
 #endif
-#ifdef HAVE_LINUX_CAN_H
+#if defined(HAVE_LINUX_CAN_H) || defined(HAVE_NETCAN_CAN_H)
     PyModule_AddIntMacro(m, CAN_EFF_FLAG);
     PyModule_AddIntMacro(m, CAN_RTR_FLAG);
     PyModule_AddIntMacro(m, CAN_ERR_FLAG);
@@ -7718,9 +7718,11 @@ PyInit__socket(void)
     PyModule_AddIntMacro(m, CAN_J1939);
 #endif
 #endif
-#ifdef HAVE_LINUX_CAN_RAW_H
+#if defined(HAVE_LINUX_CAN_RAW_H) || defined(HAVE_NETCAN_CAN_H)
     PyModule_AddIntMacro(m, CAN_RAW_FILTER);
+#ifdef CAN_RAW_ERR_FILTER
     PyModule_AddIntMacro(m, CAN_RAW_ERR_FILTER);
+#endif
     PyModule_AddIntMacro(m, CAN_RAW_LOOPBACK);
     PyModule_AddIntMacro(m, CAN_RAW_RECV_OWN_MSGS);
 #endif
index aea599f0ee6c857126bb3d48fa6f8c687a8822e4..db26c046c363795bd9037def5830fa219ec945be 100644 (file)
@@ -129,6 +129,8 @@ typedef int socklen_t;
 
 #ifdef HAVE_LINUX_CAN_H
 # include <linux/can.h>
+#elif defined(HAVE_NETCAN_CAN_H)
+# include <netcan/can.h>
 #else
 # undef AF_CAN
 # undef PF_CAN
@@ -253,7 +255,7 @@ typedef union sock_addr {
 #ifdef HAVE_NETPACKET_PACKET_H
     struct sockaddr_ll ll;
 #endif
-#ifdef HAVE_LINUX_CAN_H
+#if defined(HAVE_LINUX_CAN_H) || defined(HAVE_NETCAN_CAN_H)
     struct sockaddr_can can;
 #endif
 #ifdef HAVE_SYS_KERN_CONTROL_H
index 402e626b6992d1718fd3af6e67d357b9a470194f..f40d425371dc6d51589ed2549a6fe0a3af8ec3fd 100755 (executable)
--- a/configure
+++ b/configure
@@ -8940,7 +8940,8 @@ done
 
 
 # On Linux, can.h, can/bcm.h, can/j1939.h, can/raw.h require sys/socket.h
-for ac_header in linux/can.h linux/can/bcm.h linux/can/j1939.h linux/can/raw.h
+# On NetBSD, netcan/can.h requires sys/socket.h
+for ac_header in linux/can.h linux/can/bcm.h linux/can/j1939.h linux/can/raw.h netcan/can.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
index 9c9a3385767360155abf09966aaf06632ed79af0..8d140427de48da603d26dd42649a50dea8f97637 100644 (file)
@@ -2411,7 +2411,8 @@ AC_CHECK_HEADERS(linux/vm_sockets.h,,,[
 ])
 
 # On Linux, can.h, can/bcm.h, can/j1939.h, can/raw.h require sys/socket.h
-AC_CHECK_HEADERS(linux/can.h linux/can/bcm.h linux/can/j1939.h linux/can/raw.h,,,[
+# On NetBSD, netcan/can.h requires sys/socket.h
+AC_CHECK_HEADERS(linux/can.h linux/can/bcm.h linux/can/j1939.h linux/can/raw.h netcan/can.h,,,[
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
index 21822197708d3f3817ef7f961a462ce8aa116251..a779ffadf200fe4a52272b7e448680ce9e192788 100644 (file)
 /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
 #undef HAVE_NDIR_H
 
+/* Define to 1 if you have the <netcan/can.h> header file. */
+#undef HAVE_NETCAN_CAN_H
+
 /* Define to 1 if you have the <netinet/in.h> header file. */
 #undef HAVE_NETINET_IN_H