diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,14 @@
+## Version 2.6.2.1
+
+ * Regenerate configure and HsNetworkConfig.h.in.
+
+ * Better detection of CAN sockets.
+
+## Version 2.6.2.0
+
+ * Add support for TCP_USER_TIMEOUT.
+
+ * Don't conditionally export the SockAddr constructors.
+
+ * Add isSupportSockAddr to allow checking for supported address types
+   at runtime.
diff --git a/Network/Socket/Types.hsc b/Network/Socket/Types.hsc
--- a/Network/Socket/Types.hsc
+++ b/Network/Socket/Types.hsc
@@ -831,7 +831,7 @@
 #if defined(DOMAIN_SOCKET_SUPPORT)
   SockAddrUnix{} -> True
 #endif
-#if defined(AF_CAN)
+#if defined(CAN_SOCKET_SUPPORT)
   SockAddrCan{} -> True
 #endif
   _ -> False
@@ -858,7 +858,7 @@
 #if defined(IPV6_SOCKET_SUPPORT)
 sizeOfSockAddr (SockAddrInet6 _ _ _ _) = #const sizeof(struct sockaddr_in6)
 #endif
-#if defined(AF_CAN)
+#if defined(CAN_SOCKET_SUPPORT)
 sizeOfSockAddr (SockAddrCan _) = #const sizeof(struct sockaddr_can)
 #endif
 
@@ -872,7 +872,7 @@
 sizeOfSockAddrByFamily AF_INET6 = #const sizeof(struct sockaddr_in6)
 #endif
 sizeOfSockAddrByFamily AF_INET  = #const sizeof(struct sockaddr_in)
-#if defined(AF_CAN)
+#if defined(CAN_SOCKET_SUPPORT)
 sizeOfSockAddrByFamily AF_CAN   = #const sizeof(struct sockaddr_can)
 #endif
 
@@ -936,7 +936,7 @@
     (#poke struct sockaddr_in6, sin6_addr) p addr
     (#poke struct sockaddr_in6, sin6_scope_id) p scope
 #endif
-#if defined(AF_CAN)
+#if defined(CAN_SOCKET_SUPPORT)
 pokeSockAddr p (SockAddrCan ifIndex) = do
 #if defined(darwin_HOST_OS)
     zeroMemory p (#const sizeof(struct sockaddr_can))
@@ -966,7 +966,7 @@
         scope <- (#peek struct sockaddr_in6, sin6_scope_id) p
         return (SockAddrInet6 (PortNum port) flow addr scope)
 #endif
-#if defined(AF_CAN)
+#if defined(CAN_SOCKET_SUPPORT)
     (#const AF_CAN) -> do
         ifidx <- (#peek struct sockaddr_can, can_ifindex) p
         return (SockAddrCan ifidx)
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -3624,7 +3624,7 @@
 
 done
 
-for ac_header in arpa/inet.h netdb.h netinet/in.h netinet/tcp.h sys/socket.h sys/uio.h sys/un.h linux/can.h
+for ac_header in arpa/inet.h netdb.h netinet/in.h netinet/tcp.h sys/socket.h sys/uio.h sys/un.h linux/can.h linux/tcp.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
diff --git a/include/HsNet.h b/include/HsNet.h
--- a/include/HsNet.h
+++ b/include/HsNet.h
@@ -94,6 +94,7 @@
 #endif
 #ifdef HAVE_LINUX_CAN_H
 # include <linux/can.h>
+# define CAN_SOCKET_SUPPORT 1
 #endif
 #ifdef HAVE_NET_IF
 # include <net/if.h>
diff --git a/include/HsNetworkConfig.h.in b/include/HsNetworkConfig.h.in
--- a/include/HsNetworkConfig.h.in
+++ b/include/HsNetworkConfig.h.in
@@ -77,6 +77,9 @@
 /* Define to 1 if you have a Linux sendfile(2) implementation. */
 #undef HAVE_LINUX_SENDFILE
 
+/* Define to 1 if you have the <linux/tcp.h> header file. */
+#undef HAVE_LINUX_TCP_H
+
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
diff --git a/network.cabal b/network.cabal
--- a/network.cabal
+++ b/network.cabal
@@ -1,5 +1,5 @@
 name:           network
-version:        2.6.2.0
+version:        2.6.2.1
 license:        BSD3
 license-file:   LICENSE
 maintainer:     Johan Tibell <johan.tibell@gmail.com>
@@ -32,7 +32,8 @@
   config.log config.status autom4te.cache network.buildinfo
   include/HsNetworkConfig.h
 extra-source-files:
-  README.md examples/*.hs tests/*.hs config.guess config.sub install-sh
+  README.md CHANGELOG.md
+  examples/*.hs tests/*.hs config.guess config.sub install-sh
   configure.ac configure network.buildinfo.in
   include/HsNetworkConfig.h.in include/HsNet.h
   -- C sources only used on some systems
